Summary...
Modernize the cmdlet by adding OpenApiWithOpenIdConnect implementation next to already implemented and working WcfSoapWithOpenIdConnect/WcfSoapWithWsTrust. The only experimental implementation we have is in AddIshFolder.cs where we have a switch (IshSession.Protocol) sample to show side-by-side implementation.
The idea is that the existing cmdlet and its parameter groups remain exactly the same, so backward compatible. It is only an internal change to enable an extra backend. This also means that the ISHRemote objects structures like IshFields, IshMetadataFilterField, IshRequestedMetadataField need to be mapped internally to the new OpenAPI. Also the output objects like IshObjects, IshMetadataField remain the same. Users of the ISHRemote library should not see the difference, and do not get any breaking change.
Actions...
Start with the below so we can have a debug working call to OpenAPI
Once we have the working call, human approved, we can further and adapt the conversion to IshObject pipeline objects.
Summary...
Modernize the cmdlet by adding
OpenApiWithOpenIdConnectimplementation next to already implemented and workingWcfSoapWithOpenIdConnect/WcfSoapWithWsTrust. The only experimental implementation we have is inAddIshFolder.cswhere we have aswitch (IshSession.Protocol)sample to show side-by-side implementation.The idea is that the existing cmdlet and its parameter groups remain exactly the same, so backward compatible. It is only an internal change to enable an extra backend. This also means that the ISHRemote objects structures like
IshFields,IshMetadataFilterField,IshRequestedMetadataFieldneed to be mapped internally to the new OpenAPI. Also the output objects likeIshObjects,IshMetadataFieldremain the same. Users of the ISHRemote library should not see the difference, and do not get any breaking change.Actions...
Start with the below so we can have a debug working call to OpenAPI
GetIshDocumentObj.csand potentiallyOpenApiISH30EnumerationsExtensions.cssection for enumeration conversions to do the request. Same forIshFieldsExtensions.csIshSession.OpenApiISH30Client.GetDocumentObjectListByLogicalIdAsyncfunction as alternative for already usedIshSession.DocumentObj25.RetrieveMetadataOnce we have the working call, human approved, we can further and adapt the conversion to IshObject pipeline objects.
new IshObjects(ISHType, xmlIshObjects);with an overload that can convert the OpenAPI (json) objects returned by the API into the ISHRemote public pipeline objects.IshSession.OpenApiISH30Client.GetDocumentObjectListByLanguageCardIdAsyncfunction as alternative for already usedIshSession.DocumentObj25.RetrieveObjectsByIshLngRefsGetIshDocumentObj.Tests.ps1with comparison tests. Dynamically changing from$ishSession.Protocol=WcfSoapWithOpenIdConnectto$ishSession.Protocol=OpenApiWithOpenIdConnectand back allows to test the result of both code paths, so both the Soap and Rest/OpenAPI backend. There should be a shallow result compare and perhaps a performance test variation.