Private/Document/ConvertTo-OpenApiSchemaStub.ps1
|
function ConvertTo-OpenApiSchemaStub { <# .SYNOPSIS Returns a reference stub of a normalised schema: a copy with its scalar keywords (Type, Format, Enum, Nullable, ...) and RefName but no nested structure. .DESCRIPTION Used for a $ref to a named component schema inside another named schema. Properties, Required, AdditionalProperties (when it is a schema), AllOf/OneOf/AnyOf and Discriminator are dropped; Items is replaced by its own stub, so array element types and enums are kept. The full schema is Document.Schemas[RefName]. Stubs keep the serialised model linear in size. #> [CmdletBinding()] [OutputType([pscustomobject])] param( [Parameter(Mandatory)] [pscustomobject]$Schema ) $stub = $Schema.PSObject.Copy() $stub.Properties = $null $stub.Required = @() if ($stub.AdditionalProperties -isnot [bool]) { $stub.AdditionalProperties = $null } $stub.AllOf = $null $stub.OneOf = $null $stub.AnyOf = $null $stub.Discriminator = $null if ($null -ne $Schema.Items) { $stub.Items = ConvertTo-OpenApiSchemaStub -Schema $Schema.Items } return $stub } |