microsoft / microsoft/OpenAPI.NET.OData
Action bound to abstract entity type is not present in OpenAPI output when using hidi to convert from CSDL
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C#
- Estrellas
- 240
- Forks
- 70
- Merge medio
- 7 h 59 min
- PR fusionados (30 d)
- 13
Descripción
Describe the bug
When generating the OpenAPI description for Microsoft Graph Beta the offboard and cancelOffboard routes are not generated for the protectionUnit entity
Reproduction Steps
In a PowerShell terminal with dotnet 9
dotnet tool install --global Microsoft.OpenApi.Hidi
git clone https://github.com/microsoftgraph/msgraph-metadata.git
hidi transform --csdl .\msgraph-metadata\clean_beta_metadata\cleanMetadata.xml --output .\beta-enhanced-restore.yaml --co --version "3.0" --metadata-version "beta" --log-level Trace --format yaml --settings-path .\msgraph-metadata\conversion-settings\openapi.json
Alternatively if you clone the internal AD-AggregatorService-Workloads you can use a smaller source csdl file:
hidi transform --csdl .\AD-AggregatorService-Workloads\Workloads\Microsoft.EnhancedRestore\override\schema-Prod-beta.csdl --output .\beta-enhanced-restore-3.1.yaml --co --version "3.1" --metadata-version "beta" --log-level Trace --format yaml
When opening the newly created beta-enhanced-restore.yaml you will not find a path that includes /cancelOffboard
When examining the smaller CSDL fragment for the Microsoft.EnhancedRestore I can see that the impacted Actions are all bound to an abstract type.
<EntityType Name="protectionUnitBase" BaseType="microsoft.graph.entity" Abstract="true" >
<Property Name="policyId" Type="Edm.String" />
<Property Name="status" Type="self.protectionUnitStatus" />
<Property Name="createdDateTime" Type="Edm.DateTimeOffset" />
<Property Name="createdBy" Type="microsoft.graph.identitySet" />
<Property Name="lastModifiedDateTime" Type="Edm.DateTimeOffset" />
<Property Name="lastModifiedBy" Type="microsoft.graph.identitySet" />
<Property Name="protectionSources" Type="self.protectionSource" Nullable="false" />
<Property Name="error" Type="microsoft.graph.publicError" />
<Property Name="offboardRequestedDateTime" Type="Edm.DateTimeOffset" />
</EntityType>
<EntityType Name="protectionRuleBase" BaseType="microsoft.graph.entity" Abstract="true" >
<Property Name="status" Type="self.protectionRuleStatus" />
<Property Name="createdDateTime" Type="Edm.DateTimeOffset" />
<Property Name="createdBy" Type="microsoft.graph.identitySet" />
<Property Name="lastModifiedDateTime" Type="Edm.DateTimeOffset" />
<Property Name="lastModifiedBy" Type="microsoft.graph.identitySet" />
<Property Name="error" Type="microsoft.graph.publicError" />
<Property Name="isAutoApplyEnabled" Type="Edm.Boolean" />
</EntityType>
<Action Name="run" IsBound="true">
<Parameter Name="bindingParameter" Type="self.protectionRuleBase"/>
<ReturnType Type="self.protectionRuleBase"/>
</Action>
<Action Name="deleteAndUnprotect" IsBound="true" >
<Parameter Name="bindingParameter" Type="self.protectionRuleBase"/>
<ReturnType Type="self.protectionRuleBase"/>
</Action>
<Action Name="offboard" IsBound="true">
<Parameter Name="bindingParameter" Type="self.protectionUnitBase"/>
<ReturnType Type="self.protectionUnitBase"/>
</Action>
<Action Name="cancelOffboard" IsBound="true" >
<Parameter Name="bindingParameter" Type="self.protectionUnitBase"/>
<ReturnType Type="self.protectionUnitBase"/>
</Action>
Expected behavior
the /offboard and /cancelOffboard request URIs are described in the OpenAPI output.
Additional context
This is an issue preventing the generated SDKs for Microsoft Graph from including these requests.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el problema con el comando Hidi usando la entrada CSDL referenciada y conversion-settings/openapi.json. Compara el YAML generado con las acciones abstractas de protectionUnitBase y verifica si /offboard y /cancelOffboard están ausentes. Se considera terminado cuando ambas URI de solicitud aparecen en la salida de OpenAPI.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- csharp, openapi
- Área
- api, backend-api-design
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100