Skip to content

fix: merge conflicting integration ID/name path into one path item#364

Merged
eberle1080 merged 1 commit into
mainfrom
fix/integration-path-conflict
Jun 16, 2026
Merged

fix: merge conflicting integration ID/name path into one path item#364
eberle1080 merged 1 commit into
mainfrom
fix/integration-path-conflict

Conversation

@eberle1080

Copy link
Copy Markdown
Contributor

Problem

The API spec declared two separate path items that are identical except for the path-parameter name:

GET    /projects/{projectIdOrName}/integrations/{integrationIdOrName}   # getIntegration
DELETE /projects/{projectIdOrName}/integrations/{integrationId}          # deleteIntegration

Per the OpenAPI specification, two paths that differ only by parameter name are ambiguous and not allowed. Older versions of kin-openapi silently tolerated this, but v0.140.0 correctly rejects it:

invalid paths: conflicting paths
"/projects/{projectIdOrName}/integrations/{integrationId}" and
"/projects/{projectIdOrName}/integrations/{integrationIdOrName}"

This broke OpenAPI schema validation in server's builder-mcp openapi tools once kin-openapi was bumped to 0.140.0 (the builder-mcp/tools/operations test suite).

Fix

Merge both operations under a single path item keyed on {integrationIdOrName}.

This is also more accurate: both operations resolve identically on the server. DeleteIntegration uses GetIntegrationIdFromCtx, which accepts an ID or a name — confirmed by the passing TestDeleteIntegration_ByName test in server. So the delete parameter is renamed integrationIdintegrationIdOrName and its description updated to "The integration ID or name."

Note on consumers

This changes the deleteIntegration path parameter name in generated SDKs (integrationIdintegrationIdOrName). The actual route and behavior are unchanged.

🤖 Generated with Claude Code

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) <noreply@anthropic.com>
@eberle1080 eberle1080 merged commit 2aeae81 into main Jun 16, 2026
2 checks passed
@eberle1080 eberle1080 deleted the fix/integration-path-conflict branch June 16, 2026 22:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants