api-schema icon indicating copy to clipboard operation
api-schema copied to clipboard

This API is valid, but it cannot be shown because it contains circular references

Open daveneeley opened this issue 2 years ago • 1 comments

Using the apitools.dev online swagger parser, to parse the REST/openapiv3.json spec, we receive the following:

This API is valid, but it cannot be shown because it contains circular references

TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'Object'
    |     property 'properties' -> object with constructor 'Object'
    |     property 'children' -> object with constructor 'Object'
    --- property 'items' closes the circle
    at JSON.stringify (<anonymous>)
    at toText (https://apitools.dev/swagger-parser/online/js/bundle.min.js:29:40049)
    at editors.addResult (https://apitools.dev/swagger-parser/online/js/bundle.min.js:29:41185)
    at editors.showResult (https://apitools.dev/swagger-parser/online/js/bundle.min.js:29:40466)
    at https://apitools.dev/swagger-parser/online/js/bundle.min.js:29:44991
    at Array.forEach (<anonymous>)
    at https://apitools.dev/swagger-parser/online/js/bundle.min.js:29:44971

If we disable following circular references in the tool, we get

Circular $ref pointer found at https://raw.githubusercontent.com/PagerDuty/api-schema/main/reference/REST/openapiv3.json#/components/schemas/MatchPredicate/properties/children/items

Error: Circular $ref pointer found at https://raw.githubusercontent.com/PagerDuty/api-schema/main/reference/REST/openapiv3.json#/components/schemas/MatchPredicate/properties/children/items
    at o (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:95564)
    at https://apitools.dev/swagger-parser/online/js/bundle.min.js:29:45042

ReferenceError: Circular $ref pointer found at https://raw.githubusercontent.com/PagerDuty/api-schema/main/reference/REST/openapiv3.json#/components/schemas/MatchPredicate/properties/children/items
    at Function.o [as reference] (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:95564)
    at foundCircularReference (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14971)
    at dereference$Ref (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14667)
    at crawl (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14259)
    at crawl (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14354)
    at crawl (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14354)
    at dereference$Ref (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14744)
    at crawl (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14259)
    at crawl (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14354)
    at dereference$Ref (https://apitools.dev/swagger-parser/online/js/bundle.min.js:1:14744)

Related: https://github.com/microsoft/kiota/issues/3213

daveneeley avatar Aug 29 '23 15:08 daveneeley

Here is the list of issues I detected in reference/REST/openapiv3.json , including the circular reference.

Line 5945: required field id is not defined in properties Line 5946: required field type is not defined in properties Line 6222: required field id is not defined in properties Line 6223: required field type is not defined in properties Line 6320: required field id is not defined in properties Line 6321: required field type is not defined in properties Line 8004: required field name is not defined in properties Line 8005: required field src is not defined in properties Line 8201: object contains required fields but no properties Line 11229: required field type is not defined in properties Line 11443: required field value is not defined in properties Line 11496: required field value is not defined in properties Line 13482: infinite circular reference detected: MatchPredicate: MatchPredicate -> MatchPredicate [13482:25] Line 15343: object contains required fields but no properties Line 30128: required field id is not defined in properties Line 38703: object contains required fields but no properties Line 46754: required field post_update is not defined in properties

gregvinyard avatar Jul 25 '24 19:07 gregvinyard