sendgrid-oai icon indicating copy to clipboard operation
sendgrid-oai copied to clipboard

"Duplicate parameter name found in the endpoint" errors on v3.1 definition (parameters 'list_id', 'segment_id', 'recipient_id')

Open julealgon opened this issue 1 year ago • 1 comments

Issue Summary

When running validation from ApiMatic, several 'duplicate parameter name' errors are thrown:

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Lists[3] > GET_contactdb-lists-list_id [GET, /v3/contactdb/lists/{list_id}] > Parameters[1] > list_id.
Duplicate Parameter Name: list_id
Endpoint Name: GET_contactdb-lists-list_id.

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Lists[4] > PATCH_contactdb-lists-list_id [PATCH, /v3/contactdb/lists/{list_id}] > Parameters[1] > list_id.
Duplicate Parameter Name: list_id
Endpoint Name: PATCH_contactdb-lists-list_id.

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Lists[6] > GET_contactdb-lists-list_id-recipients [GET, /v3/contactdb/lists/{list_id}/recipients] > Parameters[1] > list_id.
Duplicate Parameter Name: list_id
Endpoint Name: GET_contactdb-lists-list_id-recipients.

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Lists[9] > DELETE_contactdb-lists-list_id-recipients-recipient_id [DELETE, /v3/contactdb/lists/{list_id}/recipients/{recipient_id}] > Parameters[1] > list_id.
Duplicate Parameter Name: list_id
Endpoint Name: DELETE_contactdb-lists-list_id-recipients-recipient_id.

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Lists[9] > DELETE_contactdb-lists-list_id-recipients-recipient_id [DELETE, /v3/contactdb/lists/{list_id}/recipients/{recipient_id}] > Parameters[3] > recipient_id.
Duplicate Parameter Name: recipient_id
Endpoint Name: DELETE_contactdb-lists-list_id-recipients-recipient_id.

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Segments[2] > GET_contactdb-segments-segment_id [GET, /v3/contactdb/segments/{segment_id}] > Parameters[1] > segment_id.
Duplicate Parameter Name: segment_id
Endpoint Name: GET_contactdb-segments-segment_id.

Duplicate parameter name found in the endpoint. ([View Details](https://docs.apimatic.io/rulesets/apimatic-codegen-validation/unique-endpoint-parameter-name))
Source: API > Endpoints > Contacts API - Segments[3] > PATCH_contactdb-segments-segment_id [PATCH, /v3/contactdb/segments/{segment_id}] > Parameters[2] > segment_id.
Duplicate Parameter Name: segment_id
Endpoint Name: PATCH_contactdb-segments-segment_id.

All of these errors occur for parameters that are present both as a segment, as well as a query string parameter. For example, from https://raw.githubusercontent.com/sendgrid/sendgrid-oai/main/spec/paths/legacy_marketing_campaigns/contacts_api_lists.json

image

Notice the first "global" parameter called list_id used as a path value, and then, on the GET definition, there is another instance of parameter list_id, but now from the query area.

The exact same issue exists for the other errors above: a global segment parameter is redefined as a specific query parameter in the individual endpoints.

Here are the 2 places in the example above:

https://github.com/sendgrid/sendgrid-oai/blob/072cebebfb3f3139a34727593a9a4241cb4cc80d/spec/paths/legacy_marketing_campaigns/contacts_api_lists.json#L265-L272

https://github.com/sendgrid/sendgrid-oai/blob/072cebebfb3f3139a34727593a9a4241cb4cc80d/spec/paths/legacy_marketing_campaigns/contacts_api_lists.json#L282-L289

These errors prevent us from loading the definition in ApiMatic and converting it to v3.0, which is a requirement for us since our client generation tool doesn't support v3.1 OpenAPI definition files.

Could this be fixed in the source, so that the same parameter name is not used across multiple areas?

julealgon avatar Dec 14 '23 23:12 julealgon

Ahoy! Thank you for opening your first issue here! If this request is regarding troubleshooting your application, please reach out to the support team via https://support.twilio.com. Please note that this repo accepts Issues; however external Pull Requests cannot be accepted because the code is generated using Twilio SendGrid's tooling.

github-actions[bot] avatar Dec 14 '23 23:12 github-actions[bot]