From 7d9f3399b3ae50e1a055d2b68c77c42265aa277a Mon Sep 17 00:00:00 2001 From: Chris Eberle Date: Tue, 16 Jun 2026 15:27:51 -0700 Subject: [PATCH] fix: merge conflicting integration ID/name path into one path item The spec declared two separate path items that are identical except for the path-parameter name: GET /projects/{projectIdOrName}/integrations/{integrationIdOrName} DELETE /projects/{projectIdOrName}/integrations/{integrationId} Per the OpenAPI spec, two paths that differ only by parameter name are ambiguous and invalid. Older kin-openapi tolerated this; v0.140.0 correctly rejects it ("conflicting paths"), which broke schema validation in server's builder-mcp openapi tools. Both operations actually resolve the same way on the server: DeleteIntegration uses GetIntegrationIdFromCtx, which accepts an ID or a name (covered by TestDeleteIntegration_ByName). So this merges both operations under a single path item keyed on {integrationIdOrName} and updates the delete parameter's name/description to match the real behavior. Co-Authored-By: Claude Opus 4.8 (1M context) --- api/api.yaml | 5 ++--- api/generated/api.json | 8 +++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/api/api.yaml b/api/api.yaml index 707bd78..89ce3c9 100644 --- a/api/api.yaml +++ b/api/api.yaml @@ -747,7 +747,6 @@ paths: application/problem+json: schema: $ref: "../problem/problem.yaml#/components/schemas/ApiProblem" - /projects/{projectIdOrName}/integrations/{integrationId}: delete: summary: Delete an integration operationId: deleteIntegration @@ -761,10 +760,10 @@ paths: schema: type: string example: my-project - - name: integrationId + - name: integrationIdOrName in: path required: true - description: The integration ID. + description: The integration ID or name. schema: type: string example: 123e4567-e89b-12d3-a456-426614174000 diff --git a/api/generated/api.json b/api/generated/api.json index 8285de0..e0da881 100644 --- a/api/generated/api.json +++ b/api/generated/api.json @@ -8720,9 +8720,7 @@ } } } - } - }, - "/projects/{projectIdOrName}/integrations/{integrationId}": { + }, "delete": { "summary": "Delete an integration", "operationId": "deleteIntegration", @@ -8742,10 +8740,10 @@ "example": "my-project" }, { - "name": "integrationId", + "name": "integrationIdOrName", "in": "path", "required": true, - "description": "The integration ID.", + "description": "The integration ID or name.", "schema": { "type": "string" },