Skip to content

[REQ] List of generators that will first support openapi 3.1.0 features #13073

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
spacether opened this issue Aug 3, 2022 · 23 comments
Open

Comments

@spacether
Copy link
Contributor

spacether commented Aug 3, 2022

Is your feature request related to a problem? Please describe.

This ticket is a record of which generator will first support opeanpi 3.1.0 specs and feature

The issue tracking 3.1.0 spec support is here: #9083

Note:
One could track the supported features by adding features to our supported feature matrix like we see here:
https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/python.md#schema-support-feature
It may also be useful to run unit tests specs on generated servers/clients like python does in these 3.0.3 json schema tests.
Which run on node4 here

For generators to be able to implement 3.1.0 unevaluatedProperties they need to have properties, patternProperties + additionalProperties working. Not all generators have additionalProperties working for all schema use cases.
There is a java property supportsAdditionalPropertiesWithComposedSchema which indicates broader support for the addditionalProperties keyword on composition use cases (which are usually type unset=AnyType schemas)
The generators which have this set to true are:

  • python
  • python-prior
  • java

Generators

Generator Reason Included in the 3.1.0 list
python - it supports inline schemas of any depth
- it is very compliant with json schema 3.0.3 per 3.0.3 unit tests
- it already supports schema type arrays under the hood because it converts type: nullable X to type X + type null
- it is structured in a way that new validations like prefixItems/contains etc can be easily added

Please vote on Generators that you want

Please vote on generators that you want added by adding +s to the generator name in a comment.

If you want a feature, how about you write a PR adding it?

This is an open source project, so if you want a generator to support the new features please consider writing a PR adding the feature that you want. We are all volunteers here and we can all improve and contribute to this project.

@spacether
Copy link
Contributor Author

spacether commented Aug 3, 2022

python (python-experimental before 6.2.0)
Development of this generator is continuing in this different repo

Update: openapi v3.1.0 document ingestion is supported in the new repo and includes these new/updated keywords:

  • type (array of types or non-array value)
  • const
  • contains
  • dependentRequired
  • dependentSchemas
  • maxContains
  • minContains
  • patternProperties
  • prefixItems
  • propertyNames
  • unevaluatedItems
  • unevaluatedProperties
  • if
  • then
  • else

And > 66% of the 3.1.0 new json schema keywords have been implemented in the above repo

@spacether spacether changed the title [REQ] List of generators that will support openapi 3.1.0 features [REQ] List of generators that will first support openapi 3.1.0 features Aug 3, 2022
@d-mo
Copy link

d-mo commented Aug 28, 2022

python-flask

@sjacek
Copy link

sjacek commented Aug 29, 2022

java

@akhan5
Copy link

akhan5 commented Aug 29, 2022

typescript-fetch

@nmalfroy
Copy link
Contributor

nmalfroy commented Sep 7, 2022

typescript-axios

@jbezuk
Copy link

jbezuk commented Sep 20, 2022

typescript-angular

@sam-distler
Copy link

sam-distler commented Nov 3, 2022

kotlin-spring

@mr-ayyagari
Copy link

mr-ayyagari commented Nov 7, 2022

Rust

@vekunz
Copy link

vekunz commented Nov 8, 2022

go

@mattoni
Copy link

mattoni commented Nov 8, 2022

Rust

@ThomasKoppensteiner
Copy link

Ruby

@valentin-braun
Copy link

kotlin, typescript-angular, swift5

@bryanmehall
Copy link

bryanmehall commented Nov 22, 2022

Rust (Specifically rust server. I don't know how much code it shares with rust client) I am willing to put some work into it but don't really know where to get started.

@hyunoosung
Copy link

typescript-swr

@gerak-cz
Copy link

gerak-cz commented Jan 9, 2023

kotlin

@rovkinmax
Copy link

rovkinmax commented Feb 9, 2023

kotlin+s

@zacharypuulsedev
Copy link

dart-dio

@doctorpangloss
Copy link
Contributor

doctorpangloss commented Mar 28, 2023

csharp-netcore

@snowe2010
Copy link
Contributor

adoc

@cpoole
Copy link

cpoole commented Jul 19, 2023

kotlin-server

@b-jsshapiro
Copy link

It’s simply goofy that the JavaScript and typescript platforms wouldn’t be a priority given that web clients are all in JavaScript.

@bkis
Copy link

bkis commented Aug 31, 2023

Kinda OFF-TOPIC, sorry:

For anyone like me who urgently needs a TS-Fetch or TS-Axios generator that's able to handle 3.1 schemas: I recently worked through the handful of available projects that fit the requirements and went with drwpow/openapi-typescript, which generates a TS-based fetch clients (one for each HTTP verb). I am not a huge fan of the resulting API (it doesn't throw errors but gives you const {data, error, response} = await GET(...); instead and you have to address your operations through the endpoint path as a string), but it works! So if you need something for the time being, it might be worth a try.
Also: For people who need an easy way to implement request/response interceptors: It's actually not that difficult to implement that in a wrapped fetch function that you can pass on to the library:

// custom, monkeypatched "fetch" for implementing request/response interceptors
const customFetch = async (input: RequestInfo | URL, init?: RequestInit | undefined) => {

  // --- request interceptors go here... ---
  // ...

  // --- perform request ---
  const response = await globalThis.fetch(input, init);

  // --- response interceptors go here... ---
  //...

  return response;
};

@spacether
Copy link
Contributor Author

java

openapi 3.1.0 support for java has been added in my separate project here:
https://github.com/openapi-json-schema-tools/openapi-json-schema-generator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests