Skip to content

Conversation

@HeikoTheissen
Copy link
Contributor

@HeikoTheissen HeikoTheissen commented Jun 6, 2025

This Swagger UI displays a create payload for entity type A, which has a navigation property to entity type B, which has a navigation property to entity type A.

In the "Schema" view, you can expand "A (for create)" > "B (for create)" > "A (for create)" > ... ad infinitum, but in the "Example Value", the inner A is misleadingly represented as a "string".

Is this the way Swagger constructs example values for such potentially infinite nestings?

(See also https://stackoverflow.com/questions/79655654.)

Addendum: The answer given on StackOverflow confirms that this cannot be solved without giving up the reuse of schemas in the OpenAPI definition: Different kinds of schemas for B must be used for

  • creating an A (or any other entity) with related B
  • creating a B.

In a schema of the first kind, all related entities are represented with an example value of {}. In a schema of the second kind, related entities are represented by a $ref to a schema of the first kind.

@HeikoTheissen HeikoTheissen marked this pull request as draft June 6, 2025 07:28
@HeikoTheissen
Copy link
Contributor Author

In the "Schema" view, you can expand "A (for create)" > "B (for create)" > "A (for create)" > ... ad infinitum

This is true for this Swagger UI generated from the OpenAPI description.

But in this Swagger UI generated from the Swagger description, you can only expand "A (for create)" > "B (for create)" > "https://raw.githubusercontent.com/oasis-tcs/odata-openapi/refs/heads/infinite-recursion/tools/tests/A-B-A.swagger.json#/definitions/ABA.A-create".

The petstore-internal conversion OpenAPI-to-Swagger differs from the conversion performed by the tool in this repo.

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.

1 participant