swagger-api / swagger-api/swagger-parser

Resolve fully does not resolve composed schemas or requestBodies schemas with options.setResolve(true); options.setResolveFully(true); options.setResolveCombinators(true)

Open
#2,101 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
867
Forks
560
Avg merge
2d 21h
Merged PRs (30d)
7

Description

openapi: 3.0.0
info:
  title: Example API
  version: 1.0.0
paths:
  /example/{id}:
    parameters:
      - $ref: '#/components/parameters/ExampleParam'
    get:
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExampleSchema'
  /example2:
    post:
      requestBody:
        $ref: '#/components/requestBodies/ExampleBody'
      responses:
        '201':
          description: Resource created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
components:
  parameters:
    ExampleParam:
      name: id
      in: path
      description: ID parameter in the path
      required: true
      schema:
        type: integer
  requestBodies:
    ExampleBody:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExampleRequestBody'
  responses:
    ExampleResponse:
      description: Example response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExampleResponse'
  schemas:
    ExampleSchema:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    ExampleRequestBody:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
    ExampleResponse:
      type: object
      properties:
        message:
          type: string
          
          

returns:

{ "openapi" : "3.0.0", "info" : { "title" : "Example API", "description" : null, "termsOfService" : null, "contact" : null, "license" : null, "version" : "1.0.0", "extensions" : null }, "externalDocs" : null, "servers" : [ { "url" : "/", "description" : null, "variables" : null, "extensions" : null } ], "security" : null, "tags" : null, "paths" : { "/example/{id}" : { "summary" : null, "description" : null, "get" : { "tags" : null, "summary" : null, "description" : null, "externalDocs" : null, "operationId" : null, "parameters" : [ { "name" : "id", "in" : "path", "description" : "ID parameter in the path", "required" : true, "deprecated" : null, "allowEmptyValue" : null, "$ref" : null, "style" : "SIMPLE", "explode" : false, "allowReserved" : null, "schema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "integer", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : "int32", "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "examples" : null, "example" : null, "content" : null, "extensions" : null } ], "requestBody" : null, "responses" : { "200" : { "description" : "Successful response", "headers" : null, "content" : { "application/json" : { "schema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "object", "not" : null, "properties" : { "id" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "integer", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : "int32", "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "name" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "examples" : null, "example" : null, "encoding" : null, "extensions" : null } }, "links" : null, "extensions" : null, "$ref" : null } }, "callbacks" : null, "deprecated" : null, "security" : null, "servers" : null, "extensions" : null }, "put" : null, "post" : null, "delete" : null, "options" : null, "head" : null, "patch" : null, "trace" : null, "servers" : null, "parameters" : null, "$ref" : null, "extensions" : null }, "/example2" : { "summary" : null, "description" : null, "get" : null, "put" : null, "post" : { "tags" : null, "summary" : null, "description" : null, "externalDocs" : null, "operationId" : null, "parameters" : null, "requestBody" : { "description" : null, "content" : null, "required" : null, "extensions" : null, "$ref" : "#/components/requestBodies/ExampleBody" }, "responses" : { "201" : { "description" : "Resource created successfully", "headers" : null, "content" : { "application/json" : { "schema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "object", "not" : null, "properties" : { "message" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "examples" : null, "example" : null, "encoding" : null, "extensions" : null } }, "links" : null, "extensions" : null, "$ref" : null } }, "callbacks" : null, "deprecated" : null, "security" : null, "servers" : null, "extensions" : null }, "delete" : null, "options" : null, "head" : null, "patch" : null, "trace" : null, "servers" : null, "parameters" : null, "$ref" : null, "extensions" : null } }, "components" : { "schemas" : { "ExampleSchema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "object", "not" : null, "properties" : { "id" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "integer", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : "int32", "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "name" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "ExampleRequestBody" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "object", "not" : null, "properties" : { "username" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "password" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "ExampleResponse" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "object", "not" : null, "properties" : { "message" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "responses" : { "ExampleResponse" : { "description" : "Example response", "headers" : null, "content" : { "application/json" : { "schema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : null, "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : "#/components/schemas/ExampleResponse", "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "examples" : null, "example" : null, "encoding" : null, "extensions" : null } }, "links" : null, "extensions" : null, "$ref" : null } }, "parameters" : { "ExampleParam" : { "name" : "id", "in" : "path", "description" : "ID parameter in the path", "required" : true, "deprecated" : null, "allowEmptyValue" : null, "$ref" : null, "style" : "SIMPLE", "explode" : false, "allowReserved" : null, "schema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "integer", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : "int32", "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "examples" : null, "example" : null, "content" : null, "extensions" : null } }, "examples" : null, "requestBodies" : { "ExampleBody" : { "description" : null, "content" : { "application/json" : { "schema" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "object", "not" : null, "properties" : { "username" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "password" : { "title" : null, "multipleOf" : null, "maximum" : null, "exclusiveMaximum" : null, "minimum" : null, "exclusiveMinimum" : null, "maxLength" : null, "minLength" : null, "pattern" : null, "maxItems" : null, "minItems" : null, "uniqueItems" : null, "maxProperties" : null, "minProperties" : null, "required" : null, "type" : "string", "not" : null, "properties" : null, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null } }, "additionalProperties" : null, "description" : null, "format" : null, "$ref" : null, "nullable" : null, "readOnly" : null, "writeOnly" : null, "example" : null, "externalDocs" : null, "deprecated" : null, "xml" : null, "extensions" : null, "discriminator" : null, "default" : null, "enum" : null }, "examples" : null, "example" : null, "encoding" : null, "extensions" : null } }, "required" : null, "extensions" : null, "$ref" : null } }, "headers" : null, "securitySchemes" : null, "links" : null, "callbacks" : null, "extensions" : { } }, "extensions" : null }

Is this expected?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with the supplied OpenAPI document and the three resolver options: setResolve(true), setResolveFully(true), and setResolveCombinators(true). Trace the resolver entry point handling component schemas and requestBodies, then verify that composed schemas and the requestBody schema are fully resolved rather than retaining their references.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.