path-params
Path Parameters are pretty easy to get wrong.
Sometimes, they can be defined, but never used, or used but never defined. Sometimes they are duplicated, or set to required, but then are not defined.
There is a whole raft of issues that can appear with Path Parameters, so this rule is one of the more complex ones.
Why did this violation appear?
An operation has used path parameters, but has incorrectly implemented them.
What is this rule checking for?
- Unique paths (no duplicate parameters)
- Duplicate parameter names in paths
- Unknown (un-named) parameters
- Compliance with ‘required’ state
- All parameters must be defined
Bad examples
Duplicate paths (different param names, but conflicting path definitions)
paths:
/pizza/{cake}/{icecream}:
parameters:
- in: path
name: cake
get:
parameters:
- in: path
name: icecream
/pizza/{soda}/{candy}:
parameters:
- in: path
name: soda
get:
parameters:
- in: path
name: candy
...
Missing parameters (in path, but not defined)
paths:
/pizza/{type}/{toppings}:
parameters:
- in: path
name: type
get:
'200':
...
Using invalid required
type
paths:
/musical/{melody}/{beats}:
parameters:
- in: path
name: melody
required: NOT_VALID_SHOULD_BE_BOOL
get:
parameters:
- in: path
name: beats
required: true
Parameter has been defined multiple times
paths:
/musical/{melody}/{beats}:
parameters:
- in: path
name: melody
- in: path
name: melody
get:
parameters:
- in: path
name: beats
- in: path
name: beats
How do I fix this violation?
Ensure all path params are used, they are unique and accounted for.
Spectral Equivalent
The rule is equivalent to path-params