Skip to content

Examples with same ID causes error #773

Closed
@HairyMike

Description

@HairyMike

Describe the bug
Seems like examples rely on an internal 'id' field to identify them within the express-openapi-validator lib. If you have multiple examples, and they share the same ID - requests to your API error out.

Example open-api doc here: https://github.com/HairyMike/bug-express-openapi-validator/blob/master/openapi.yaml

You will get a response like this:

Error: reference "1234" resolves to more than one schema

To Reproduce

git clone [email protected]:HairyMike/bug-express-openapi-validator.git
cd bug-express-openapi-validator.git & npm i & node index.js &
curl http://localhost:3000/v1/test

Actual behavior
I get the following message:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Error: reference &quot;1234&quot; resolves to more than one schema<br> &nbsp; &nbsp;at ambiguos (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/ajv/dist/compile/resolve.js:151:16)<br> &nbsp; &nbsp;at Ajv.addRef (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/ajv/dist/compile/resolve.js:118:23)<br> &nbsp; &nbsp;at /Users/michael.eller/nodejs/bug-open-api-validator/node_modules/ajv/dist/compile/resolve.js:109:29<br> &nbsp; &nbsp;at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:69:5)<br> &nbsp; &nbsp;at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)<br> &nbsp; &nbsp;at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)<br> &nbsp; &nbsp;at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)<br> &nbsp; &nbsp;at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)<br> &nbsp; &nbsp;at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)<br> &nbsp; &nbsp;at module.exports (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:14:3)</pre>
</body>
</html>
Error: reference "1234" resolves to more than one schema
    at ambiguos (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/ajv/dist/compile/resolve.js:151:16)
    at Ajv.addRef (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/ajv/dist/compile/resolve.js:118:23)
    at /Users/michael.eller/nodejs/bug-open-api-validator/node_modules/ajv/dist/compile/resolve.js:109:29
    at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:69:5)
    at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)
    at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)
    at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)
    at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)
    at _traverse (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:83:9)
    at module.exports (/Users/michael.eller/nodejs/bug-open-api-validator/node_modules/json-schema-traverse/index.js:14:3)

Expected behavior
Should see:

hello world

Examples and context
This is the open-api snippet that is causing the issue. Note the identical IDs:

components:
  schemas:
    ExampleResponse:
      type: object
  examples:
    FirstExample:
      value:
        title: Bug Example
        description: Error example (same ID as other example), but valid open-api document
        content:
          id: '1234'
    SecondExample:
      value:
        title: Bug Example
        description: Error example (same ID as other example), but valid open-api document
        content:
          id: '1234'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions