Resolve fully does not resolve composed schemas or requestBodies schemas with options.setResolve(true); options.setResolveFully(true); options.setResolveCombinators(true)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
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.
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?
- Dominant language
- Java
- Stars
- 867
- Forks
- 560
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 7
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from swagger-api/swagger-parser
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
swagger-api/swagger-parser#2386 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
swagger-api/swagger-parser#2168 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
swagger-api/swagger-parser#1922 · 2 comments · 1 reaction ·
-
[Bug]: Regression: resolveFully fails when components key does not match external file basename OpenBug
Difficulty 4/5 3-5 days Newbie friendliness 58/100
swagger-api/swagger-parser#2399 · 3 comments ·
-
Bug
Difficulty 4/5 3-5 days Newbie friendliness 48/100
swagger-api/swagger-parser#2395 ·
All issues in swagger-api/swagger-parser
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100