openapi-generators / openapi-python-client

Generate modern Python clients from OpenAPI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Spec errors

macmoritz opened this issue · comments

Describe the bug
I am trying to create a python client for the sentry api by using this generator.
Not sure if this issue belongs here or to sentry (cause of they created the schema).
Other generators work fine with this schema. See below.

OpenAPI Spec File
https://github.com/getsentry/sentry-api-schema/blob/main/openapi-derefed.json

Desktop (please complete the following information):

  • OS: Linux 6.6.8
  • Python Version: 3.11.6
  • openapi-python-client Version: 0.17.0

Additional context
Log

ERROR:root:52 validation errors for OpenAPI
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.Reference.$ref
  Field required [type=missing, input_value={'type': 'array', 'items'...alProperties': False}]}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.Reference.$ref
  Field required [type=missing, input_value={'oneOf': [{'type': 'obje...nalProperties': False}]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.0.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.1.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.2.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].items.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.get.responses.200.Reference.$ref
  Field required [type=missing, input_value={'content': {'application...}}}}, 'description': ''}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.Reference.$ref
  Field required [type=missing, input_value={'oneOf': [{'type': 'obje...nalProperties': False}]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.put.responses.200.Reference.$ref
  Field required [type=missing, input_value={'content': {'application...}}}}, 'description': ''}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.Reference.$ref
  Field required [type=missing, input_value={'oneOf': [{'type': 'obje...nalProperties': False}]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.0.function-after[handle_nullable(), Schema].properties.password.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.1.function-after[handle_nullable(), Schema].properties.secret_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...ionalProperties': False}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.Reference.$ref
  Field required [type=missing, input_value={'type': 'object', 'prope...lean', 'enum': [True]}}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.Reference.$ref
  Field required [type=missing, input_value={'type': 'boolean', 'enum': [True]}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[int]].0
  Input should be a valid integer [type=int_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/int_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Response.content.application/json.schema.function-after[handle_nullable(), Schema].oneOf.2.function-after[handle_nullable(), Schema].properties.private_key.function-after[handle_nullable(), Schema].properties.hidden-secret.function-after[handle_nullable(), Schema].enum.list[nullable[str]].0
  Input should be a valid string [type=string_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type
paths./api/0/projects/{organization_slug}/{project_slug}/symbol-sources/.post.responses.201.Reference.$ref
  Field required [type=missing, input_value={'content': {'application...}}}}, 'description': ''}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.5/v/missing

Working generator
OpenAPITools/openapi-generator
docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate -i /local/openapi.json -g python -o /local/out/python

@benedikt-bartscher

If I remove the path /api/0/projects/{organization_slug}/{project_slug}/symbol-sources/ from the schema file (which is the only path with errors), I get this error:
ERROR:root:Incorrect path templating for /api/0/organizations/{organization_slug}/monitors/{monitor_slug}/checkins/ (Path parameters do not match with path)

Don't know how this works/sticks together.

Alright, there are at least 3 issues I've found so far 😁:

  1. The spec uses boolean enums, these are valid OpenAPI but not supported by this generator yet. These shouldn't be parsing errors, though, that's a bug. It should just skip the endpoint that requires them and move on. So that's one thing to fix 🐛
  2. The path templating is actually wrong—that endpoint declares a checkin_id path parameter, but there's nowhere in the path to put it. There may be some edge case with OpenAPI about what you're supposed to do with extra path parameters, I'll have to poke around at the spec to be confident, but it seems like an error in the document.
  3. /components/schemas/OrganizationMemberWithRoles has both an is_global and isGlobal property. I think this is an error in the document even though it's technically valid OpenAPI. This appears in several other places as well. However, instead of producing an error, the generator is producing duplicate properties, which is invalid Python code. So that's another bug for me to fix 🐛

So, if you remove the bits that cause errors for 2 & 3 (like the modified attached spec), you can use the new branch on #923 (which somewhat supports bool enums) to generate the client now 😁.

modified-openapi.json

Nice! Thanks for fixing boolean enums, works like a charm.
Regarding topic 2: At the first sight this looks like an error in the document. I will reinvestigate more before reporting it in the upstream project.

In total, the interesting point is, that the other generator mentioned above can work with both remaining issues. Maybe we can get some information there.

I checked the openapi spec of sentry again and ensured that case 2 only occures in this endpoint. I opened an upstream issue for that (getsentry/sentry#62717).
This is a huge repository and I dont expect a fast solution. Lets wait a few days, maybe one week. Maybe we can find an other solution for this temporarily by implementing a overwrite, whichs refactors unused parameters to not-required or query params.

Regarding point 3: It seems that is_global is not equal to isGlobal in the sentry "cosmos". Here you can find the docs for one of the failing parts: Retrieve an Organization Member.
Would be great if we could respect there crazy naming and handle it as seperate as well.

FYI: Sounds like Sentry will fix the schema, which resolves our point 2 (see above).

I believe the only remaining issue (3 above, is_global vs isGlobal) will be fixed by #972