openapi-python-client icon indicating copy to clipboard operation
openapi-python-client copied to clipboard

Unable to parse schema Errors

Open jsciame opened this issue 2 years ago • 2 comments

Describe the bug I'm attempting to convert a rather large open api schema to Pyhton bindings and am running across warnings that are dropping endpoints on the floor. I believe there is a couple of issues.

  1. Refs not supported: Do you know if there are plans to add support for references in request body? I'll look at ways to flatten this schema out without references and try this again
"requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MetadataFieldGroupType"
                            }
                        },
                        "application/xml": {
                            "schema": {
                                "$ref": "#/components/schemas/MetadataFieldGroupType"
                            }
                        }
                    },
                    "required": true,
                    "description": ""
                }
WARNING` parsing PUT /collection within collection. Endpoint will not be generated.
Could not find reference in parsed models or enums

Reference(ref='#/components/schemas/ItemSearchType')
WARNING parsing POST /collection within collection. Endpoint will not be generated.

Could not find reference in parsed models or enums
Reference(ref='#/components/schemas/CollectionType')
  1. Parth parameters not match with path. I believe this may be due to the open "in path" vs "in query" issue.
WARNING parsing GET /collection/{collection-id}/item within collection. Endpoint will not be generated.

Incorrect path templating for /collection/{collection-id}/item (Path parameters do not match with path)
{
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "in": "path",
                        "name": "collection-id",
                        "description": "The collection id."
                    }
  1. Generic cannot parse parameter of endpoint getAccessGraphDot

cannot parse parameter of endpoint getAccessGraphDot

Schema(title=None, multipleOf=None, maximum=None, exclusiveMaximum=None, minimum=None, exclusiveMinimum=None, maxLength=None, minLength=None, pattern=None, maxItems=None, minItems=None, uniqueItems=None, maxProperties=None, minProperties=None, required=None, enum=['ancestor', 'grant'], type=<DataType.STRING: 'string'>, allOf=[], oneOf=[], anyOf=[], schema_not=None, items=None, properties=None, additionalProperties=None, description=None, schema_format=None, default=None, nullable=False, discriminator=None, readOnly=None, writeOnly=None, xml=None, externalDocs=None, example=None, deprecated=None)

To Reproduce Steps to reproduce the behavior:

  1. Run openapi-python-client generate --path openapi/spec.json
  2. Run openapi-python-client generate --path openapi/spec.yaml

Expected behavior A full python client should be generated without warnings.

OpenAPI Spec File Standby. Making sure I have approval to share this schema since its coming from a 3rd party vendor.

Desktop (please complete the following information):

  • OS: macOS 12.4
  • Python Version: 3.8.9
  • openapi-python-client version: 0.11.4

jsciame avatar Aug 05 '22 20:08 jsciame

Refs not supported: Do you know if there are plans to add support for references in request body? I'll look at ways to flatten this schema out without references and try this again

I think all references of the form #/components/schemas/ should already be supported. There are other types of references that aren't, but schemas should be. That error could be due to missing references or references that, themselves could not be generated for some reason. The most common reason is that circular and recursive references are not supported.

dbanty avatar Aug 08 '22 01:08 dbanty

I do confirm that, refs are supported. Ex: from https://codebeamer.com/cb/api-docs/v3.json

 "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportProject"
              }
            }
          }
        },

The above is fully supported and generated python code is working.

bakkiaraj avatar Aug 15 '22 13:08 bakkiaraj