Summary...
Get-IshPublicationOutputContent (see #126) currently only implements WcfSoapWithWsTrust/WcfSoapWithOpenIdConnect calling Baseline25.ExpandBaseline and Baseline25.CompleteBaselineByCandidateAndMode. Modernize the cmdlet by adding an OpenApiWithOpenIdConnect implementation next to it, following the switch (IshSession.Protocol) sample in AddIshFolder.cs.
The existing cmdlet and its IshObjectGroup parameter set, including -AutoCompleteMode, -Language and -Resolution, remain exactly the same, so this is backward compatible. It is only an internal change to enable an extra backend. The output objects (IshDocumentObj via IshObjects/IshMetadataField) remain the same; users of the ISHRemote library should not see a difference and get no breaking change.
Actions...
Phase 3 - REST parity for plain expand (no -AutoCompleteMode)
Phase 4 - REST parity for -AutoCompleteMode
Once both phases have a working OpenAPI call, human approved:
Summary...
Get-IshPublicationOutputContent(see #126) currently only implementsWcfSoapWithWsTrust/WcfSoapWithOpenIdConnectcallingBaseline25.ExpandBaselineandBaseline25.CompleteBaselineByCandidateAndMode. Modernize the cmdlet by adding anOpenApiWithOpenIdConnectimplementation next to it, following theswitch (IshSession.Protocol)sample inAddIshFolder.cs.The existing cmdlet and its
IshObjectGroupparameter set, including-AutoCompleteMode,-Languageand-Resolution, remain exactly the same, so this is backward compatible. It is only an internal change to enable an extra backend. The output objects (IshDocumentObjviaIshObjects/IshMetadataField) remain the same; users of the ISHRemote library should not see a difference and get no breaking change.Actions...
Phase 3 - REST parity for plain expand (no
-AutoCompleteMode)GetIshPublicationOutputContent.csto branch onIshSession.Protocoland call the OpenAPI equivalent ofBaseline25.ExpandBaseline(POST /v3/Baselines/{Id}/Report/ExpandinOpenApiISH30.json) whenProtocol == OpenApiWithOpenIdConnectIshFields/IshRequestedMetadataFieldsilent metadata fetch (publication output + output format) to their OpenAPI equivalents (OpenApiISH30Client.GetPublicationOutputByLanguageCardIdAsyncor similar, and the output format metadata call)allLngRefs/reportitem walking logic used today for the SOAP xml reportDocumentObj25-equivalent batch hydrate call (see Augment Get-IshDocumentObj with protocol OpenApiWithOpenIdConnect implementation #229) for the finalIshDocumentObjretrieval, or add the OpenAPI variant if Augment Get-IshDocumentObj with protocol OpenApiWithOpenIdConnect implementation #229 is not yet mergedPhase 4 - REST parity for
-AutoCompleteModePOST /v3/Baselines/{Id}/Report/Complete(CompleteBaselineinOpenApiISH30.json) when-AutoCompleteModeis bound andProtocol == OpenApiWithOpenIdConnectEnumerations.BaselineAutoCompleteModeto the REST enum (none/firstVersion/latestReleased/latestAvailable) usingEnumConverter.ToBaselineAutoCompleteModeRest<TResult>(already added in Add cmdlet Get-IshPublicationOutputContent to return directly linked content objects of this publication #126)CompleteBaselineendpoint exposes an additionalpersistflag not currently surfaced by this cmdlet; that belongs to Extend Set-IshBaselineItem to update a baseline using the incoming IshDocumentObj versions #222, not this issueOnce both phases have a working OpenAPI call, human approved:
GetIshPublicationOutputContent.Tests.ps1with comparison tests, dynamically switching$ishSession.ProtocolbetweenWcfSoapWithOpenIdConnectandOpenApiWithOpenIdConnectand back, to exercise both the SOAP and REST/OpenAPI backend with a shallow result compare