Skip to content

Multiple Verbs in OperationIds for OData Cast Paths That Call /$count #382

@peombwa

Description

@peombwa

OData cast paths that call /$count have multiple verbs in their OperationIds. This leads to naming inconsistencies when generating SDKs based on OperationIds. For example:

'/servicePrincipals/{servicePrincipal-id}/transitiveMemberOf/graph.administrativeUnit/$count':
  get:
    operationId: servicePrincipals.ListTransitiveMemberOf.GetCount.AsAdministrativeUnit-4450 # List and Get are present.
    parameters:
      - name: ConsistencyLevel
        in: header
    responses:
      2XX:
        $ref: '#/components/responses/ODataCountResponse'

vs

'/servicePrincipals/{servicePrincipal-id}/transitiveMemberOf/$count':
  get:
    operationId: servicePrincipals.transitiveMemberOf.GetCount-4794 # Only Get is present
    parameters:
      - name: ConsistencyLevel
        in: header
    responses:
      2XX:
        $ref: '#/components/responses/ODataCountResponse'

Assemblies affected

Microsoft.OpenApi.OData v1.4.0

Steps to reproduce

Inspect converted OpenAPI document at https://github.com/microsoftgraph/msgraph-metadata/tree/master/openapi/v1.0.

Expected result

'/servicePrincipals/{servicePrincipal-id}/transitiveMemberOf/graph.administrativeUnit/$count':
  get:
    operationId: servicePrincipals.TransitiveMemberOf.GetCount.AsAdministrativeUnit-4450 # Only Get should be present.
    parameters:
      - name: ConsistencyLevel
        in: header
    responses:
      2XX:
        $ref: '#/components/responses/ODataCountResponse'

Additional Notes:

operation.OperationId = $"{EdmModelHelper.GenerateODataTypeCastPathOperationIdPrefix(Path)}.GetCount.As{Utils.UpperFirstChar(targetStructuredType.Name)}-{Path.GetPathHash(Context.Settings)}";

Metadata

Metadata

Assignees

Labels

priority:p1High priority but not blocking. Causes major but not critical loss of functionality SLA <=7daystype:bugA broken experience

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions