Skip to main content

no-ambiguous-paths

Finds pairs of path templates that can resolve to the same URL.

AttributeValue
CategoryOperations
MaturitySilver
OpenAPISwagger 2.0; OpenAPI 3.0, 3.1, 3.2
Starter–StrictWarning
CompleteError

Intent

Ambiguous routes can be dispatched differently across frameworks and may make a literal endpoint unreachable.

Flags

The later path in each pair when both paths have the same number of segments and every position either matches literally or is a path-template variable on at least one side.

Does not flag

Paths with different segment counts or at least one position containing two different literal segments. HTTP methods do not affect this comparison.

See it fail

paths:
/orders/{status}:
get:
responses:
'200': {description: OK}
/orders/pending:
get:
responses:
'200': {description: OK}

pending can also be captured as {status}.

Fix it

Give the dynamic route a distinct literal prefix:

paths:
/orders/by-status/{status}:
get:
responses:
'200': {description: OK}
/orders/pending:
get:
responses:
'200': {description: OK}

Configure

profiles:
default:
rules:
extends: [recommended]
override:
no-ambiguous-paths: error

Nearby: no-identical-paths, path-declaration-must-exist.