[Bug]: sharedRoute openapi operationId issue #5513
Labels
emitter:openapi3
Issues for @typespec/openapi3 emitter
feature
New feature or request
needs-info
Mark an issue that needs reply from the author or it will be closed automatically
Describe the bug
We have a use case where you can create assets in our system; the source of an asset can differ.
So for the same endpoint, we support both "multipart/form-data" and "application/json" as content types.
The two operations are slightly different from each other, so we are leveraging the
@sharedRoute
operator.The issue comes from the open API emitter. It concatenates the
operationIds
, and the resultingoperationId
is rarely unusable for the client code generation.typespec/packages/openapi3/src/openapi.ts
Line 687 in fef1c39
As you can see in the playground, it will result in the following shared operationId:
Assets_createAsset_Assets_createAssetWithUpload
orcreateAsset_createAsset
if you had set the individual operations tocreateAsset
.Afterward, this will result in something similar in the generated code as well.
I see 2 solutions to this problem:
unique
on thatoperations.map
, so if all the shared operations have the same operationId, the shared id will be the same.operationId
and it joins the the ones that have some, or if there is none, it generates the one that it does right now (mostly will result in the same json as it does now, backward compatible)Reproduction
I tried to reduce the code to the minimum, but I couldn't make the
operationId
decorator work, it should be part of the@typespec/openapi3
lib, so I'm not sure, what I am missing:playground
Checklist
The text was updated successfully, but these errors were encountered: