Added a Julia client and server (#14520)

* Added a Julia client and server

This PR adds two new generators for the [Julia language](https://julialang.org/)
- `julia-client` to generate a client from specifications
- `julia-server` to generate a server with stubs that can be used to host a server conforming to the specifications

The generated code uses the Julia [OpenAPI.jl](https://github.com/JuliaComputing/OpenAPI.jl) package that includes support functions for both client and server.

* fix javadoc generation

* add changes after ensure-up-to-date run
This commit is contained in:
Tanmay Mohapatra 2023-01-30 14:10:33 +05:30 committed by GitHub
parent 28493dfa95
commit 4bc16ea6bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 6132 additions and 6 deletions

View File

@ -60,6 +60,7 @@ Code change should conform to the programming style guide of the respective lang
- Haskell: https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md
- Java: https://google.github.io/styleguide/javaguide.html
- JavaScript: https://github.com/airbnb/javascript/
- Julia: https://docs.julialang.org/en/v1/manual/style-guide/
- Kotlin: https://kotlinlang.org/docs/reference/coding-conventions.html
- ObjC: https://github.com/NYTimes/objective-c-style-guide
- Perl: http://perldoc.perl.org/perlstyle.html

View File

@ -79,8 +79,8 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se
| | Languages/Frameworks |
| -------------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.1, .NET Core 3.1, .NET 5.0. Libraries: RestSharp, GenericHost, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Apache HttpClient, Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client, Helidon), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 13.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) |
| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/), [Helidon](https://helidon.io/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** ([rust-server](https://openapi-generator.tech/docs/generators/rust-server/)), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) |
| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.1, .NET Core 3.1, .NET 5.0. Libraries: RestSharp, GenericHost, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Apache HttpClient, Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client, Helidon), **Julia**, **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 13.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) |
| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/), [Helidon](https://helidon.io/)), **Julia**, **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** ([rust-server](https://openapi-generator.tech/docs/generators/rust-server/)), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) |
| **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** |
| **Configuration files** | [**Apache2**](https://httpd.apache.org/) |
| **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Protocol Buffer**, **WSDL** |

View File

@ -0,0 +1,7 @@
generatorName: julia-client
outputDir: samples/client/petstore/julia
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/julia-client
additionalProperties:
hideGenerationTimestamp: "true"
packageName: PetStoreClient

View File

@ -0,0 +1,7 @@
generatorName: julia-server
outputDir: samples/server/petstore/julia
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/julia-server
additionalProperties:
hideGenerationTimestamp: "true"
packageName: PetStoreServer

View File

@ -64,6 +64,7 @@ Code change should conform to the programming style guide of the respective lang
- Haskell: https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md
- Java: https://google.github.io/styleguide/javaguide.html
- JavaScript: https://github.com/airbnb/javascript/
- Julia: https://docs.julialang.org/en/v1/manual/style-guide/
- Kotlin: https://kotlinlang.org/docs/reference/coding-conventions.html
- ObjC: https://github.com/NYTimes/objective-c-style-guide
- Perl: http://perldoc.perl.org/perlstyle.html

View File

@ -40,6 +40,7 @@ The following generators are available:
* [javascript-flowtyped](generators/javascript-flowtyped.md)
* [jaxrs-cxf-client](generators/jaxrs-cxf-client.md)
* [jmeter](generators/jmeter.md)
* [julia-client](generators/julia-client.md)
* [k6 (beta)](generators/k6.md)
* [kotlin](generators/kotlin.md)
* [lua (beta)](generators/lua.md)
@ -110,6 +111,7 @@ The following generators are available:
* [jaxrs-resteasy](generators/jaxrs-resteasy.md)
* [jaxrs-resteasy-eap](generators/jaxrs-resteasy-eap.md)
* [jaxrs-spec](generators/jaxrs-spec.md)
* [julia-server](generators/julia-server.md)
* [kotlin-server](generators/kotlin-server.md)
* [kotlin-spring](generators/kotlin-spring.md)
* [kotlin-vertx (beta)](generators/kotlin-vertx.md)

View File

@ -65,7 +65,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sourceFolder|source folder for generated code| |src/gen/java|
|testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi|
|useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false|
|useBeanValidation|Use BeanValidation API annotations| |false|
|useGenericResponse|Use generic response| |false|
|useGzipFeatureForTests|Use Gzip Feature for tests| |false|

View File

@ -78,7 +78,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|testDataFile|JSON file to contain generated test data| |null|
|testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi|
|title|a title describing the application| |OpenAPI Server|
|useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false|
|useAnnotatedBasePath|Use @Path annotations for basePath| |false|
|useBeanValidation|Use BeanValidation API annotations| |true|
|useBeanValidationFeature|Use BeanValidation Feature| |false|

View File

@ -73,7 +73,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|sourceFolder|source folder for generated code| |src/gen/java|
|testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi|
|title|a title describing the application| |OpenAPI Server|
|useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false|
|useAnnotatedBasePath|Use @Path annotations for basePath| |false|
|useBeanValidation|Use BeanValidation API annotations| |true|
|useBeanValidationFeature|Use BeanValidation Feature| |false|

View File

@ -0,0 +1,219 @@
---
title: Documentation for the julia-client Generator
---
## METADATA
| Property | Value | Notes |
| -------- | ----- | ----- |
| generator name | julia-client | pass this to the generate command after -g |
| generator stability | STABLE | |
| generator type | CLIENT | |
| generator language | Julia | |
| generator default templating engine | mustache | |
| helpTxt | Generates a julia client. | |
## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|exportModels|Whether to generate code to export model names.| |false|
|exportOperations|Whether to generate code to export operation names.| |false|
|packageName|Julia client package name.| |APIClient|
## IMPORT MAPPING
| Type/Alias | Imports |
| ---------- | ------- |
## INSTANTIATION TYPES
| Type/Alias | Instantiated By |
| ---------- | --------------- |
## LANGUAGE PRIMITIVES
<ul class="column-ul">
<li>Any</li>
<li>Bool</li>
<li>Char</li>
<li>Date</li>
<li>DateTime</li>
<li>Dict</li>
<li>Float16</li>
<li>Float32</li>
<li>Float64</li>
<li>Int128</li>
<li>Int16</li>
<li>Int32</li>
<li>Int64</li>
<li>Int8</li>
<li>Integer</li>
<li>Nothing</li>
<li>String</li>
<li>UInt128</li>
<li>UInt16</li>
<li>UInt32</li>
<li>UInt64</li>
<li>UInt8</li>
<li>Vector</li>
<li>Vector{UInt8}</li>
<li>ZonedDateTime</li>
</ul>
## RESERVED WORDS
<ul class="column-ul">
<li>Any</li>
<li>Base</li>
<li>DataType</li>
<li>Enum</li>
<li>Type</li>
<li>baremodule</li>
<li>begin</li>
<li>break</li>
<li>catch</li>
<li>ccall</li>
<li>const</li>
<li>continue</li>
<li>do</li>
<li>else</li>
<li>elseif</li>
<li>end</li>
<li>export</li>
<li>finally</li>
<li>for</li>
<li>function</li>
<li>global</li>
<li>if</li>
<li>import</li>
<li>let</li>
<li>local</li>
<li>macro</li>
<li>module</li>
<li>quote</li>
<li>return</li>
<li>try</li>
<li>using</li>
<li>while</li>
</ul>
## FEATURE SET
### Client Modification Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasePath|✓|ToolingExtension
|Authorizations|✗|ToolingExtension
|UserAgent|✓|ToolingExtension
|MockServer|✗|ToolingExtension
### Data Type Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Custom|✗|OAS2,OAS3
|Int32|✓|OAS2,OAS3
|Int64|✓|OAS2,OAS3
|Float|✓|OAS2,OAS3
|Double|✓|OAS2,OAS3
|Decimal|✓|ToolingExtension
|String|✓|OAS2,OAS3
|Byte|✓|OAS2,OAS3
|Binary|✓|OAS2,OAS3
|Boolean|✓|OAS2,OAS3
|Date|✓|OAS2,OAS3
|DateTime|✓|OAS2,OAS3
|Password|✓|OAS2,OAS3
|File|✓|OAS2
|Uuid|✗|
|Array|✓|OAS2,OAS3
|Null|✗|OAS3
|AnyType|✗|OAS2,OAS3
|Object|✓|OAS2,OAS3
|Maps|✓|ToolingExtension
|CollectionFormat|✓|OAS2
|CollectionFormatMulti|✓|OAS2
|Enum|✓|OAS2,OAS3
|ArrayOfEnum|✓|ToolingExtension
|ArrayOfModel|✓|ToolingExtension
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|ArrayOfCollectionOfModel|✓|ToolingExtension
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|MapOfEnum|✓|ToolingExtension
|MapOfModel|✓|ToolingExtension
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|MapOfCollectionOfModel|✓|ToolingExtension
|MapOfCollectionOfEnum|✓|ToolingExtension
### Documentation Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Readme|✓|ToolingExtension
|Model|✓|ToolingExtension
|Api|✓|ToolingExtension
### Global Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Host|✓|OAS2,OAS3
|BasePath|✓|OAS2,OAS3
|Info|✓|OAS2,OAS3
|Schemes|✗|OAS2,OAS3
|PartialSchemes|✓|OAS2,OAS3
|Consumes|✗|OAS2
|Produces|✗|OAS2
|ExternalDocumentation|✓|OAS2,OAS3
|Examples|✗|OAS2,OAS3
|XMLStructureDefinitions|✗|OAS2,OAS3
|MultiServer|✗|OAS3
|ParameterizedServer|✗|OAS3
|ParameterStyling|✗|OAS3
|Callbacks|✗|OAS3
|LinkObjects|✗|OAS3
### Parameter Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Path|✓|OAS2,OAS3
|Query|✓|OAS2,OAS3
|Header|✓|OAS2,OAS3
|Body|✓|OAS2
|FormUnencoded|✓|OAS2
|FormMultipart|✓|OAS2
|Cookie|✗|OAS3
### Schema Support Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Simple|✓|OAS2,OAS3
|Composite|✓|OAS2,OAS3
|Polymorphism|✓|OAS2,OAS3
|Union|✓|OAS3
|allOf|✓|OAS2,OAS3
|anyOf|✓|OAS3
|oneOf|✓|OAS3
|not|✗|OAS3
### Security Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasicAuth|✓|OAS2,OAS3
|ApiKey|✓|OAS2,OAS3
|OpenIDConnect|✗|OAS3
|BearerToken|✓|OAS3
|OAuth2_Implicit|✗|OAS2,OAS3
|OAuth2_Password|✗|OAS2,OAS3
|OAuth2_ClientCredentials|✗|OAS2,OAS3
|OAuth2_AuthorizationCode|✗|OAS2,OAS3
### Wire Format Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|JSON|✓|OAS2,OAS3
|XML|✗|OAS2,OAS3
|PROTOBUF|✗|ToolingExtension
|Custom|✗|OAS2,OAS3

View File

@ -0,0 +1,218 @@
---
title: Documentation for the julia-server Generator
---
## METADATA
| Property | Value | Notes |
| -------- | ----- | ----- |
| generator name | julia-server | pass this to the generate command after -g |
| generator stability | STABLE | |
| generator type | SERVER | |
| generator language | Julia | |
| generator default templating engine | mustache | |
| helpTxt | Generates a julia server. | |
## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|exportModels|Whether to generate code to export model names.| |false|
|packageName|Julia server package name.| |APIServer|
## IMPORT MAPPING
| Type/Alias | Imports |
| ---------- | ------- |
## INSTANTIATION TYPES
| Type/Alias | Instantiated By |
| ---------- | --------------- |
## LANGUAGE PRIMITIVES
<ul class="column-ul">
<li>Any</li>
<li>Bool</li>
<li>Char</li>
<li>Date</li>
<li>DateTime</li>
<li>Dict</li>
<li>Float16</li>
<li>Float32</li>
<li>Float64</li>
<li>Int128</li>
<li>Int16</li>
<li>Int32</li>
<li>Int64</li>
<li>Int8</li>
<li>Integer</li>
<li>Nothing</li>
<li>String</li>
<li>UInt128</li>
<li>UInt16</li>
<li>UInt32</li>
<li>UInt64</li>
<li>UInt8</li>
<li>Vector</li>
<li>Vector{UInt8}</li>
<li>ZonedDateTime</li>
</ul>
## RESERVED WORDS
<ul class="column-ul">
<li>Any</li>
<li>Base</li>
<li>DataType</li>
<li>Enum</li>
<li>Type</li>
<li>baremodule</li>
<li>begin</li>
<li>break</li>
<li>catch</li>
<li>ccall</li>
<li>const</li>
<li>continue</li>
<li>do</li>
<li>else</li>
<li>elseif</li>
<li>end</li>
<li>export</li>
<li>finally</li>
<li>for</li>
<li>function</li>
<li>global</li>
<li>if</li>
<li>import</li>
<li>let</li>
<li>local</li>
<li>macro</li>
<li>module</li>
<li>quote</li>
<li>return</li>
<li>try</li>
<li>using</li>
<li>while</li>
</ul>
## FEATURE SET
### Client Modification Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasePath|✓|ToolingExtension
|Authorizations|✗|ToolingExtension
|UserAgent|✓|ToolingExtension
|MockServer|✗|ToolingExtension
### Data Type Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Custom|✗|OAS2,OAS3
|Int32|✓|OAS2,OAS3
|Int64|✓|OAS2,OAS3
|Float|✓|OAS2,OAS3
|Double|✓|OAS2,OAS3
|Decimal|✓|ToolingExtension
|String|✓|OAS2,OAS3
|Byte|✓|OAS2,OAS3
|Binary|✓|OAS2,OAS3
|Boolean|✓|OAS2,OAS3
|Date|✓|OAS2,OAS3
|DateTime|✓|OAS2,OAS3
|Password|✓|OAS2,OAS3
|File|✓|OAS2
|Uuid|✗|
|Array|✓|OAS2,OAS3
|Null|✗|OAS3
|AnyType|✗|OAS2,OAS3
|Object|✓|OAS2,OAS3
|Maps|✓|ToolingExtension
|CollectionFormat|✓|OAS2
|CollectionFormatMulti|✓|OAS2
|Enum|✓|OAS2,OAS3
|ArrayOfEnum|✓|ToolingExtension
|ArrayOfModel|✓|ToolingExtension
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|ArrayOfCollectionOfModel|✓|ToolingExtension
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|MapOfEnum|✓|ToolingExtension
|MapOfModel|✓|ToolingExtension
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|MapOfCollectionOfModel|✓|ToolingExtension
|MapOfCollectionOfEnum|✓|ToolingExtension
### Documentation Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Readme|✓|ToolingExtension
|Model|✓|ToolingExtension
|Api|✓|ToolingExtension
### Global Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Host|✓|OAS2,OAS3
|BasePath|✓|OAS2,OAS3
|Info|✓|OAS2,OAS3
|Schemes|✗|OAS2,OAS3
|PartialSchemes|✓|OAS2,OAS3
|Consumes|✗|OAS2
|Produces|✗|OAS2
|ExternalDocumentation|✓|OAS2,OAS3
|Examples|✗|OAS2,OAS3
|XMLStructureDefinitions|✗|OAS2,OAS3
|MultiServer|✗|OAS3
|ParameterizedServer|✗|OAS3
|ParameterStyling|✗|OAS3
|Callbacks|✗|OAS3
|LinkObjects|✗|OAS3
### Parameter Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Path|✓|OAS2,OAS3
|Query|✓|OAS2,OAS3
|Header|✓|OAS2,OAS3
|Body|✓|OAS2
|FormUnencoded|✓|OAS2
|FormMultipart|✓|OAS2
|Cookie|✗|OAS3
### Schema Support Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Simple|✓|OAS2,OAS3
|Composite|✓|OAS2,OAS3
|Polymorphism|✓|OAS2,OAS3
|Union|✓|OAS3
|allOf|✓|OAS2,OAS3
|anyOf|✓|OAS3
|oneOf|✓|OAS3
|not|✗|OAS3
### Security Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasicAuth|✓|OAS2,OAS3
|ApiKey|✓|OAS2,OAS3
|OpenIDConnect|✗|OAS3
|BearerToken|✓|OAS3
|OAuth2_Implicit|✗|OAS2,OAS3
|OAuth2_Password|✗|OAS2,OAS3
|OAuth2_ClientCredentials|✗|OAS2,OAS3
|OAuth2_AuthorizationCode|✗|OAS2,OAS3
### Wire Format Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|JSON|✓|OAS2,OAS3
|XML|✗|OAS2,OAS3
|PROTOBUF|✗|ToolingExtension
|Custom|✗|OAS2,OAS3

212
docs/generators/julia.md Normal file
View File

@ -0,0 +1,212 @@
---
title: Documentation for the julia Generator
---
## METADATA
| Property | Value | Notes |
| -------- | ----- | ----- |
| generator name | julia | pass this to the generate command after -g |
| generator stability | STABLE | |
| generator type | CLIENT | |
| generator language | Java | |
| generator default templating engine | mustache | |
| helpTxt | Generates a julia client. | |
## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|packageName|Julia package name.| |APIClient|
## IMPORT MAPPING
| Type/Alias | Imports |
| ---------- | ------- |
## INSTANTIATION TYPES
| Type/Alias | Instantiated By |
| ---------- | --------------- |
## LANGUAGE PRIMITIVES
<ul class="column-ul">
<li>Array</li>
<li>Bool</li>
<li>Char</li>
<li>Float16</li>
<li>Float32</li>
<li>Float64</li>
<li>Int128</li>
<li>Int16</li>
<li>Int32</li>
<li>Int64</li>
<li>Int8</li>
<li>Integer</li>
<li>Nothing</li>
<li>String</li>
<li>UInt128</li>
<li>UInt16</li>
<li>UInt32</li>
<li>UInt64</li>
<li>UInt8</li>
<li>Vector</li>
</ul>
## RESERVED WORDS
<ul class="column-ul">
<li>Any</li>
<li>Base</li>
<li>DataType</li>
<li>Enum</li>
<li>Type</li>
<li>baremodule</li>
<li>begin</li>
<li>break</li>
<li>catch</li>
<li>ccall</li>
<li>const</li>
<li>continue</li>
<li>do</li>
<li>else</li>
<li>elseif</li>
<li>end</li>
<li>export</li>
<li>finally</li>
<li>for</li>
<li>function</li>
<li>global</li>
<li>if</li>
<li>import</li>
<li>let</li>
<li>local</li>
<li>macro</li>
<li>module</li>
<li>quote</li>
<li>return</li>
<li>try</li>
<li>using</li>
<li>while</li>
</ul>
## FEATURE SET
### Client Modification Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasePath|✗|ToolingExtension
|Authorizations|✗|ToolingExtension
|UserAgent|✗|ToolingExtension
|MockServer|✗|ToolingExtension
### Data Type Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Custom|✗|OAS2,OAS3
|Int32|✓|OAS2,OAS3
|Int64|✓|OAS2,OAS3
|Float|✓|OAS2,OAS3
|Double|✓|OAS2,OAS3
|Decimal|✓|ToolingExtension
|String|✓|OAS2,OAS3
|Byte|✓|OAS2,OAS3
|Binary|✓|OAS2,OAS3
|Boolean|✓|OAS2,OAS3
|Date|✓|OAS2,OAS3
|DateTime|✓|OAS2,OAS3
|Password|✓|OAS2,OAS3
|File|✓|OAS2
|Uuid|✗|
|Array|✓|OAS2,OAS3
|Null|✗|OAS3
|AnyType|✗|OAS2,OAS3
|Object|✓|OAS2,OAS3
|Maps|✓|ToolingExtension
|CollectionFormat|✓|OAS2
|CollectionFormatMulti|✓|OAS2
|Enum|✓|OAS2,OAS3
|ArrayOfEnum|✓|ToolingExtension
|ArrayOfModel|✓|ToolingExtension
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|ArrayOfCollectionOfModel|✓|ToolingExtension
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|MapOfEnum|✓|ToolingExtension
|MapOfModel|✓|ToolingExtension
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|MapOfCollectionOfModel|✓|ToolingExtension
|MapOfCollectionOfEnum|✓|ToolingExtension
### Documentation Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Readme|✗|ToolingExtension
|Model|✓|ToolingExtension
|Api|✓|ToolingExtension
### Global Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Host|✓|OAS2,OAS3
|BasePath|✓|OAS2,OAS3
|Info|✓|OAS2,OAS3
|Schemes|✗|OAS2,OAS3
|PartialSchemes|✓|OAS2,OAS3
|Consumes|✓|OAS2
|Produces|✓|OAS2
|ExternalDocumentation|✓|OAS2,OAS3
|Examples|✓|OAS2,OAS3
|XMLStructureDefinitions|✗|OAS2,OAS3
|MultiServer|✗|OAS3
|ParameterizedServer|✗|OAS3
|ParameterStyling|✗|OAS3
|Callbacks|✓|OAS3
|LinkObjects|✗|OAS3
### Parameter Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Path|✓|OAS2,OAS3
|Query|✓|OAS2,OAS3
|Header|✓|OAS2,OAS3
|Body|✓|OAS2
|FormUnencoded|✓|OAS2
|FormMultipart|✓|OAS2
|Cookie|✓|OAS3
### Schema Support Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Simple|✓|OAS2,OAS3
|Composite|✓|OAS2,OAS3
|Polymorphism|✓|OAS2,OAS3
|Union|✗|OAS3
|allOf|✗|OAS2,OAS3
|anyOf|✗|OAS3
|oneOf|✗|OAS3
|not|✗|OAS3
### Security Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasicAuth|✓|OAS2,OAS3
|ApiKey|✓|OAS2,OAS3
|OpenIDConnect|✗|OAS3
|BearerToken|✓|OAS3
|OAuth2_Implicit|✓|OAS2,OAS3
|OAuth2_Password|✓|OAS2,OAS3
|OAuth2_ClientCredentials|✓|OAS2,OAS3
|OAuth2_AuthorizationCode|✓|OAS2,OAS3
### Wire Format Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|JSON|✓|OAS2,OAS3
|XML|✓|OAS2,OAS3
|PROTOBUF|✗|ToolingExtension
|Custom|✗|OAS2,OAS3

View File

@ -33,7 +33,7 @@ public enum GeneratorLanguage {
OBJECTIVE_C("Objective-C"), OCAML("OCaml"), PERL("Perl"), PHP("PHP"),
POWERSHELL("PowerShell"), PROTOBUF("Protocol Buffers (Protobuf)"), PYTHON("Python"),
R("R"), RUBY("Ruby"), RUST("Rust"), SCALA("Scala"), SWIFT("Swift"),
WSDL("Web Services Description Language (WSDL)");
WSDL("Web Services Description Language (WSDL)"), JULIA("Julia");
private final String label;

View File

@ -0,0 +1,507 @@
package org.openapitools.codegen.languages;
import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.ClientModificationFeature;
import org.openapitools.codegen.meta.features.ClientModificationFeature;
import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.meta.features.GlobalFeature;
import org.openapitools.codegen.meta.features.ParameterFeature;
import org.openapitools.codegen.meta.features.SchemaSupportFeature;
import org.openapitools.codegen.meta.features.SecurityFeature;
import org.openapitools.codegen.meta.features.WireFormatFeature;
import java.io.File;
import java.util.*;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.servers.Server;
import org.apache.commons.lang3.StringUtils;
import static org.openapitools.codegen.utils.StringUtils.camelize;
import org.openapitools.codegen.utils.CamelizeOption;
import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.CaseFormat;
import com.google.common.collect.ImmutableMap;
import com.samskivert.mustache.Mustache.Lambda;
import org.openapitools.codegen.templating.mustache.EscapeChar;
public abstract class AbstractJuliaCodegen extends DefaultCodegen {
protected final Logger LOGGER = LoggerFactory.getLogger(AbstractJuliaCodegen.class);
protected String srcPath = "src";
protected String apiSrcPath = srcPath + "/apis/";
protected String modelSrcPath = srcPath + "/models/";
protected String apiDocPath = "docs/";
protected String modelDocPath = "docs/";
protected String packageName;
protected Boolean exportModels;
protected Boolean exportOperations;
public AbstractJuliaCodegen() {
super();
modifyFeatureSet(features -> features
.includeDocumentationFeatures(DocumentationFeature.Readme)
.includeSchemaSupportFeatures(
SchemaSupportFeature.Union, SchemaSupportFeature.allOf,
SchemaSupportFeature.anyOf, SchemaSupportFeature.oneOf
)
.excludeWireFormatFeatures(
WireFormatFeature.XML
)
.excludeSecurityFeatures(
SecurityFeature.OAuth2_Implicit, SecurityFeature.OAuth2_Password,
SecurityFeature.OAuth2_ClientCredentials, SecurityFeature.OAuth2_AuthorizationCode
)
.excludeParameterFeatures(
ParameterFeature.Cookie
)
.excludeGlobalFeatures(
GlobalFeature.Callbacks, GlobalFeature.Examples,
GlobalFeature.Produces, GlobalFeature.Consumes
)
.includeClientModificationFeatures(
ClientModificationFeature.BasePath, ClientModificationFeature.UserAgent
)
);
reservedWords = new HashSet<String> (
Arrays.asList(
"if", "else", "elseif", "while", "for", "begin", "end", "quote",
"try", "catch", "return", "local", "function", "macro", "ccall", "finally", "break", "continue",
"global", "module", "using", "import", "export", "const", "let", "do", "baremodule",
"Type", "Enum", "Any", "DataType", "Base"
)
);
// Language Specific Primitives. These types will not trigger imports by the client generator
languageSpecificPrimitives = new HashSet<String>(
Arrays.asList("Integer", "Int128", "Int64", "Int32", "Int16", "Int8", "UInt128", "UInt64", "UInt32", "UInt16", "UInt8", "Float64", "Float32", "Float16", "Char", "Vector", "Dict", "Vector{UInt8}", "Bool", "String", "Date", "DateTime", "ZonedDateTime", "Nothing", "Any")
);
typeMapping.clear();
typeMapping.put("int", "Int64");
typeMapping.put("integer", "Int64");
typeMapping.put("long", "Int64");
typeMapping.put("short", "Int32");
typeMapping.put("byte", "UInt8");
typeMapping.put("float", "Float32");
typeMapping.put("double", "Float64");
typeMapping.put("string", "String");
typeMapping.put("char", "String");
typeMapping.put("binary", "Vector{UInt8}");
typeMapping.put("boolean", "Bool");
typeMapping.put("number", "Float64");
typeMapping.put("decimal", "Float64");
typeMapping.put("array", "Vector");
typeMapping.put("set", "Vector");
typeMapping.put("map", "Dict");
typeMapping.put("date", "Date");
typeMapping.put("DateTime", "ZonedDateTime");
typeMapping.put("File", "String");
typeMapping.put("file", "String");
typeMapping.put("UUID", "String");
typeMapping.put("URI", "String");
typeMapping.put("ByteArray", "Vector{UInt8}");
typeMapping.put("object", "Any");
typeMapping.put("Object", "Any");
typeMapping.put("AnyType", "Any");
}
@Override
public GeneratorLanguage generatorLanguage() {
return GeneratorLanguage.JULIA;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public void setExportModels(Boolean exportModels) {
this.exportModels = exportModels;
}
public void setExportOperations(Boolean exportOperations) {
this.exportOperations = exportOperations;
}
protected static String dropDots(String str) {
return str.replaceAll("\\.", "_");
}
/**
* Escapes a reserved word as defined in the `reservedWords` array. Handle escaping
* those terms here. This logic is only called if a variable matches the reseved words
*
* @return the escaped term
*/
@Override
public String escapeReservedWord(String name) {
if (reservedWords.contains(name)) {
return "__" + name + "__"; // add underscores to reserved words, and also to obscure it to lessen chances of clashing with any other names
} else {
return name;
}
}
/**
* Location to write model files.
*/
@Override
public String modelFileFolder() {
return (outputFolder + "/" + modelSrcPath).replace('/', File.separatorChar);
}
/**
* Location to write api files.
*/
@Override
public String apiFileFolder() {
return (outputFolder + "/" + apiSrcPath).replace('/', File.separatorChar);
}
@Override
public String apiDocFileFolder() {
return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar);
}
@Override
public String modelDocFileFolder() {
return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar);
}
@Override
public String toModelFilename(String name) {
return "model_" + toModelName(name);
}
@Override
public String toApiFilename(String name) {
name = name.replaceAll("-", "_");
return "api_" + camelize(name) + "Api";
}
@Override
public String toApiName(String name) {
if (name.length() == 0) {
return "DefaultApi";
}
// e.g. phone_number_api => PhoneNumberApi
return camelize(name) + "Api";
}
@Override
public String toParamName(String name) {
CamelizeOption camelizeOption = CamelizeOption.UPPERCASE_FIRST_CHAR;
name = camelize(sanitizeName(name), camelizeOption);
name = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name);
return escapeReservedWord(name);
}
@Override
public String toApiVarName(String name) {
CamelizeOption camelizeOption = CamelizeOption.UPPERCASE_FIRST_CHAR;
name = camelize(sanitizeName(name), camelizeOption);
name = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name);
return escapeReservedWord(name);
}
@Override
public String toVarName(String name) {
return name;
}
/**
* Sanitize name (parameter, property, method, etc)
*
* @param name string to be sanitize
* @return sanitized string
*/
@Override
@SuppressWarnings("static-method")
public String sanitizeName(String name) {
if (name == null) {
LOGGER.error("String to be sanitized is null. Default to ERROR_UNKNOWN");
return "ERROR_UNKNOWN";
}
// if the name is just '$', map it to 'value', as that's sometimes used in the spec
if ("$".equals(name)) {
return "value";
}
name = name.replaceAll("\\[\\]", "");
name = name.replaceAll("\\[", "_");
name = name.replaceAll("\\]", "");
name = name.replaceAll("\\(", "_");
name = name.replaceAll("\\)", "");
name = name.replaceAll("\\.", "_");
name = name.replaceAll("-", "_");
name = name.replaceAll(" ", "_");
name = name.replaceAll("/", "_");
return name.replaceAll("[^a-zA-Z0-9_{}]", "");
}
protected boolean needsVarEscape(String name) {
return (!name.matches("[a-zA-Z0-9_]*") && !name.matches("var\".*\"")) || reservedWords.contains(name);
}
/**
* Output the proper Julia model name.
*
* @param name the name of the model
* @return Julia model name
*/
@Override
public String toModelName(final String name) {
String result = sanitizeName(name);
// remove dollar sign
result = result.replaceAll("$", "");
// model name cannot use reserved keyword, e.g. return
if (isReservedWord(result)) {
LOGGER.warn(result + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + result));
result = "model_" + result; // e.g. return => ModelReturn (after camelize)
}
// model name starts with number
if (result.matches("^\\d.*")) {
LOGGER.warn(result + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + result));
result = "model_" + result; // e.g. 200Response => Model200Response (after camelize)
}
if (!StringUtils.isEmpty(modelNamePrefix)) {
result = modelNamePrefix + "_" + result;
}
if (!StringUtils.isEmpty(modelNameSuffix)) {
result = result + "_" + modelNameSuffix;
}
result = dropDots(result);
// camelize the model name
// phone_number => PhoneNumber
result = camelize(result);
return result;
}
@Override
public String getTypeDeclaration(Schema schema) {
if (ModelUtils.isArraySchema(schema)) {
ArraySchema ap = (ArraySchema) schema;
Schema inner = ap.getItems();
return getSchemaType(schema) + "{" + getTypeDeclaration(inner) + "}";
} else if (ModelUtils.isSet(schema)) {
Schema inner = getAdditionalProperties(schema);
return getSchemaType(schema) + "{" + getTypeDeclaration(inner) + "}";
} else if (ModelUtils.isMapSchema(schema)) {
Schema inner = getAdditionalProperties(schema);
return getSchemaType(schema) + "{String, " + getTypeDeclaration(inner) + "}";
}
return super.getTypeDeclaration(schema);
}
/**
* Return the type declaration for a given schema
*
* @param schema the schema
* @return the type declaration
*/
@Override
public String getSchemaType(Schema schema) {
String openAPIType = super.getSchemaType(schema);
String type = null;
if (openAPIType == null) {
LOGGER.error("OpenAPI Type for {} is null. Default to Object instead.", schema.getName());
openAPIType = "Object";
}
if (typeMapping.containsKey(openAPIType)) {
type = typeMapping.get(openAPIType);
if(languageSpecificPrimitives.contains(type)) {
return type;
}
} else {
type = openAPIType;
}
return toModelName(type);
}
/**
* Return the default value of the property
* @param schema OpenAPI property object
* @return string presentation of the default value of the property
*/
@Override
public String toDefaultValue(Schema schema) {
if (ModelUtils.isBooleanSchema(schema)) {
if (schema.getDefault() != null) {
return schema.getDefault().toString();
}
} else if (ModelUtils.isDateSchema(schema)) {
// TODO
} else if (ModelUtils.isDateTimeSchema(schema)) {
// TODO
} else if (ModelUtils.isIntegerSchema(schema) || ModelUtils.isLongSchema(schema) || ModelUtils.isNumberSchema(schema)) {
if (schema.getDefault() != null) {
return schema.getDefault().toString();
}
} else if (ModelUtils.isStringSchema(schema)) {
if (schema.getDefault() != null) {
String _default = (String) schema.getDefault();
if (schema.getEnum() == null) {
return "\"" + _default + "\"";
} else {
// convert to enum var name later in postProcessModels
return _default;
}
}
}
return "nothing";
}
@Override
public String escapeUnsafeCharacters(String input) {
return input.replace("#=", "#_=").replace("=#", "=_#");
}
/**
* Escape single and/or double quote to avoid code injection
* @param input String to be cleaned up
* @return string with quotation mark removed or escaped
*/
public String escapeQuotationMark(String input) {
return input.replace("\"", "\\\"");
}
protected String escapeRegex(String pattern) {
pattern = pattern.replaceAll("\\\\\\\\", "\\\\");
pattern = pattern.replaceAll("^/", "");
pattern = pattern.replaceAll("/$", "");
return pattern;
}
/**
* Convert OpenAPI Parameter object to Codegen Parameter object
*
* @param imports set of imports for library/package/module
* @param param OpenAPI parameter object
* @return Codegen Parameter object
*/
@Override
public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
CodegenParameter parameter = super.fromParameter(param, imports);
if (parameter.pattern != null) {
parameter.pattern = escapeRegex(parameter.pattern);
}
return parameter;
}
/**
* Convert OAS Property schema to Codegen Property object.
* <p>
* The return value is cached. An internal cache is looked up to determine
* if the CodegenProperty return value has already been instantiated for
* the (String name, Schema schema) arguments.
* Any subsequent processing of the CodegenModel return value must be idempotent
* for a given (String name, Schema schema).
*
* @param name name of the property
* @param schema OAS property schema
* @param required true if the property is required in the next higher object schema, false otherwise
* @return Codegen Property object
*/
@Override
public CodegenProperty fromProperty(String name, Schema schema, boolean required) {
CodegenProperty property = super.fromProperty(name, schema, required);
// if the name needs any escaping, we set it to var"name"
if (needsVarEscape(property.name)) {
property.name = "var\"" + property.name + "\"";
}
if (property.pattern != null) {
property.pattern = escapeRegex(property.pattern);
}
return property;
}
/**
* Return the operation ID (method name)
*
* @param operationId operation ID
* @return the sanitized method name
*/
@SuppressWarnings("static-method")
public String toOperationId(String operationId) {
CamelizeOption camelizeOption = CamelizeOption.UPPERCASE_FIRST_CHAR;
operationId = camelize(super.toOperationId(operationId), camelizeOption);
operationId = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, operationId);
return sanitizeName(operationId);
}
private void changeParamNames(List<CodegenParameter> paramsList, HashSet<String> reservedNames) {
// check if any param name clashes with type name and rename it
for (CodegenParameter param : paramsList) {
if (reservedNames.contains(param.paramName)) {
do {
param.paramName = param.paramName + "_";
} while (reservedNames.contains(param.paramName + "param"));
param.paramName = param.paramName + "param";
}
}
}
/**
* Convert OAS Operation object to Codegen Operation object
*
* @param httpMethod HTTP method
* @param operation OAS operation object
* @param path the path of the operation
* @param servers list of servers
* @return Codegen Operation object
*/
@Override
public CodegenOperation fromOperation(String path,
String httpMethod,
Operation operation,
List<Server> servers) {
CodegenOperation op = super.fromOperation(path, httpMethod, operation, servers);
// collect all reserved names
HashSet<String> reservedNames = new HashSet<String>();
reservedNames.add(op.returnType);
reservedNames.add(op.operationId);
for (CodegenParameter param : op.allParams) {
reservedNames.add(param.dataType);
}
changeParamNames(op.allParams, reservedNames);
changeParamNames(op.bodyParams, reservedNames);
changeParamNames(op.headerParams, reservedNames);
changeParamNames(op.pathParams, reservedNames);
changeParamNames(op.queryParams, reservedNames);
changeParamNames(op.formParams, reservedNames);
return op;
}
@Override
protected ImmutableMap.Builder<String, Lambda> addMustacheLambdas() {
return super.addMustacheLambdas()
.put("escapeDollar", new EscapeChar("(?<!\\\\)\\$", "\\\\\\$"));
}
}

View File

@ -0,0 +1,85 @@
package org.openapitools.codegen.languages;
import org.openapitools.codegen.*;
import java.io.File;
public class JuliaClientCodegen extends AbstractJuliaCodegen {
/**
* Configures the type of generator.
*
* @return the CodegenType for this generator
* @see org.openapitools.codegen.CodegenType
*/
public CodegenType getTag() {
return CodegenType.CLIENT;
}
/**
* Configures the name of the generator.
* This will be used to refer to the generator when configuration is read from config files.
*
* @return the name of the generator
*/
public String getName() {
return "julia-client";
}
/**
* Configures a help message for the generator.
* TODO: add parameters, tips here
*
* @return the help message for the generator
*/
public String getHelp() {
return "Generates a julia client.";
}
public JuliaClientCodegen() {
super();
outputFolder = "generated-code" + File.separator + "julia-client";
modelTemplateFiles.put("model.mustache", ".jl");
apiTemplateFiles.put("api.mustache", ".jl");
embeddedTemplateDir = templateDir = "julia-client";
modelDocTemplateFiles.put("model_doc.mustache", ".md");
apiDocTemplateFiles.put("api_doc.mustache", ".md");
// apiPackage = "Apis";
// modelPackage = "Models";
supportingFiles.clear();
supportingFiles.add(new SupportingFile("README.mustache", "README.md"));
cliOptions.clear();
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "Julia client package name.").defaultValue("APIClient"));
cliOptions.add(new CliOption("exportModels", "Whether to generate code to export model names.").defaultValue("false"));
cliOptions.add(new CliOption("exportOperations", "Whether to generate code to export operation names.").defaultValue("false"));
}
@Override
public void processOpts() {
super.processOpts();
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME));
}
else {
setPackageName("APIClient");
additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName);
}
if (additionalProperties.containsKey("exportModels")) {
setExportModels(Boolean.parseBoolean((String) additionalProperties.get("exportModels")));
}
additionalProperties.put("exportModels", exportModels);
if (additionalProperties.containsKey("exportOperations")) {
setExportModels(Boolean.parseBoolean((String) additionalProperties.get("exportOperations")));
}
additionalProperties.put("exportOperations", exportModels);
additionalProperties.put("apiDocPath", apiDocPath);
additionalProperties.put("modelDocPath", modelDocPath);
supportingFiles.add(new SupportingFile("client.mustache", srcPath, packageName + ".jl"));
supportingFiles.add(new SupportingFile("modelincludes.mustache", srcPath, "modelincludes.jl"));
}
}

View File

@ -0,0 +1,77 @@
package org.openapitools.codegen.languages;
import org.openapitools.codegen.*;
import java.io.File;
public class JuliaServerCodegen extends AbstractJuliaCodegen {
/**
* Configures the type of generator.
*
* @return the CodegenType for this generator
* @see org.openapitools.codegen.CodegenType
*/
public CodegenType getTag() {
return CodegenType.SERVER;
}
/**
* Configures the name of the generator.
* This will be used to refer to the generator when configuration is read from config files.
*
* @return the name of the generator
*/
public String getName() {
return "julia-server";
}
/**
* Configures a help message for the generator.
* TODO: add parameters, tips here
*
* @return the help message for the generator
*/
public String getHelp() {
return "Generates a julia server.";
}
public JuliaServerCodegen() {
super();
outputFolder = "generated-code" + File.separator + "julia-server";
modelTemplateFiles.put("model.mustache", ".jl");
apiTemplateFiles.put("api.mustache", ".jl");
embeddedTemplateDir = templateDir = "julia-server";
modelDocTemplateFiles.put("model_doc.mustache", ".md");
apiDocTemplateFiles.put("api_doc.mustache", ".md");
supportingFiles.clear();
supportingFiles.add(new SupportingFile("README.mustache", "README.md"));
cliOptions.clear();
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "Julia server package name.").defaultValue("APIServer"));
cliOptions.add(new CliOption("exportModels", "Whether to generate code to export model names.").defaultValue("false"));
}
@Override
public void processOpts() {
super.processOpts();
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME));
}
else {
setPackageName("APIServer");
additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName);
}
if (additionalProperties.containsKey("exportModels")) {
setExportModels(Boolean.parseBoolean((String) additionalProperties.get("exportModels")));
}
additionalProperties.put("exportModels", exportModels);
additionalProperties.put("apiDocPath", apiDocPath);
additionalProperties.put("modelDocPath", modelDocPath);
supportingFiles.add(new SupportingFile("server.mustache", srcPath, packageName + ".jl"));
supportingFiles.add(new SupportingFile("modelincludes.mustache", srcPath, "modelincludes.jl"));
}
}

View File

@ -0,0 +1,56 @@
/*
* Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
* Copyright 2018 SmartBear Software
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openapitools.codegen.templating.mustache;
import com.samskivert.mustache.Mustache;
import com.samskivert.mustache.Template;
import java.io.IOException;
import java.io.Writer;
/**
* Escapes the desired character if not escaped already, e.g. {@code $ => \$}.
*
* Register:
* {@code additionalProperties.put("escapeDollar", new EscapeChar("(?<!\\\\)\\$", "\\\\\\$")); }
*
* Use:
* {@code {{#lambda.escapeDollar}}{{name}}{{/lambda.escapeDollar}} }
*/
public class EscapeChar implements Mustache.Lambda {
private String matchPattern;
private String replacement;
/**
* Constructs a new instance of {@link EscapeChar}, with the desired character to escape
*
* @param matchPattern the character to escape
* @param replacement the escaped character
*/
public EscapeChar(String matchPattern, String replacement) {
this.matchPattern = matchPattern;
this.replacement = replacement;
}
@Override
public void execute(Template.Fragment fragment, Writer writer) throws IOException {
String text = fragment.execute();
text = text.replaceAll(matchPattern, replacement);
writer.write(text);
}
}

View File

@ -138,3 +138,6 @@ org.openapitools.codegen.languages.TypeScriptNodeClientCodegen
org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen
org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen
org.openapitools.codegen.languages.WsdlSchemaCodegen
org.openapitools.codegen.languages.JuliaClientCodegen
org.openapitools.codegen.languages.JuliaServerCodegen

View File

@ -0,0 +1,92 @@
# Julia API client for {{packageName}}
{{#appDescriptionWithNewLines}}
{{{.}}}
{{/appDescriptionWithNewLines}}
## Overview
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client.
- API version: {{appVersion}}
{{^hideGenerationTimestamp}}
- Build date: {{generatedDate}}
{{/hideGenerationTimestamp}}
- Build package: {{generatorClass}}
{{#infoUrl}}
For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}})
{{/infoUrl}}
## Installation
Place the Julia files generated under the `src` folder in your Julia project. Include {{packageName}}.jl in the project code.
It would include the module named {{packageName}}.
Documentation is generated as markdown files under the `docs` folder. You can include them in your project documentation.
Documentation is also embedded in Julia which can be used with a Julia specific documentation generator.
## API Endpoints
Class | Method
------------ | -------------
{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}})<br/>**{{httpMethod}}** {{path}}<br/>{{summary}}
{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}}
## Models
{{#models}}{{#model}} - [{{{classname}}}]({{modelDocPath}}{{{classname}}}.md)
{{/model}}{{/models}}
## Authorization
{{^authMethods}} Endpoints do not require authorization.
{{/authMethods}}{{#authMethods}}{{#last}} Authentication schemes defined for the API:{{/last}}{{/authMethods}}
{{#authMethods}}
## {{{name}}}
{{#isApiKey}}- **Type**: API key
Example
```
using OpenAPI
using OpenAPI.Clients
import OpenAPI.Clients: Client
client = Client(server_uri)
api = MyApi(client)
result = callApi(api, args...; api_key)
```
{{/isApiKey}}
{{#isBasic}}- **Type**: HTTP basic authentication
Example
```
using OpenAPI
using OpenAPI.Clients
import OpenAPI.Clients: Client, set_header
client = Client(server_uri)
set_header(client, "Authorization", "Basic $basic_auth")
api = MyApi(client)
result = callApi(api, args...; api_key)
```
{{/isBasic}}
{{#isOAuth}}- **Type**: OAuth
- **Flow**: {{{flow}}}
- **Authorization URL**: {{{authorizationUrl}}}
- **Scopes**: {{^scopes}}N/A{{/scopes}}
{{#scopes}} - **{{{scope}}}**: {{{description}}}
{{/scopes}}
Example
```
using OpenAPI
using OpenAPI.Clients
import OpenAPI.Clients: Client, set_header
client = Client(server_uri)
set_header(client, "Authorization", "Bearer $bearer_auth")
api = MyApi(client)
result = callApi(api, args...; api_key)
```
{{/isOAuth}}
{{/authMethods}}
## Author
{{#apiInfo}}{{#apis}}{{#-last}}{{infoEmail}}
{{/-last}}{{/apis}}{{/apiInfo}}

View File

@ -0,0 +1,96 @@
{{>partial_header}}
{{#operations}}
struct {{classname}} <: OpenAPI.APIClientImpl
client::OpenAPI.Clients.Client
end
"""
The default API base path for APIs in `{{classname}}`.
This can be used to construct the `OpenAPI.Clients.Client` instance.
"""
basepath(::Type{ {{classname}} }) = "{{basePath}}"
{{#operation}}
const _returntypes_{{operationId}}_{{classname}} = Dict{Regex,Type}(
{{#responses}}
{{#dataType}}
Regex("^" * replace("{{{code}}}", "x"=>".") * "\$") => {{{dataType}}},
{{/dataType}}
{{^dataType}}
Regex("^" * replace("{{{code}}}", "x"=>".") * "\$") => Nothing,
{{/dataType}}
{{/responses}}
)
function _oacinternal_{{operationId}}(_api::{{classname}}{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}} _mediaType=nothing)
{{#allParams}}
{{#hasValidation}}
{{#maxLength}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :maxLength, {{paramName}}, {{maxLength}})
{{/maxLength}}
{{#minLength}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minLength, {{paramName}}, {{minLength}})
{{/minLength}}
{{#maximum}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :maximum, {{paramName}}, {{maximum}}, {{#exclusiveMaximum}}true{{/exclusiveMaximum}}{{^exclusiveMaximum}}false{{/exclusiveMaximum}})
{{/maximum}}
{{#minimum}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minimum, {{paramName}}, {{minimum}}, {{#exclusiveMinimum}}true{{/exclusiveMinimum}}{{^exclusiveMinimum}}false{{/exclusiveMinimum}})
{{/minimum}}
{{#maxItems}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :maxItems, {{paramName}}, {{maxItems}})
{{/maxItems}}
{{#minItems}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minItems, {{paramName}}, {{minItems}})
{{/minItems}}
{{/hasValidation}}
{{/allParams}}
_ctx = OpenAPI.Clients.Ctx(_api.client, "{{httpMethod}}", _returntypes_{{operationId}}_{{classname}}, "{{path}}", [{{#authMethods}}"{{name}}", {{/authMethods}}]{{#bodyParam}}, {{paramName}}{{/bodyParam}})
{{#pathParams}}
OpenAPI.Clients.set_param(_ctx.path, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{paramName}}{{#isListContainer}}; collection_format="{{collectionFormat}}"{{/isListContainer}}) # type {{dataType}}
{{/pathParams}}
{{#queryParams}}
OpenAPI.Clients.set_param(_ctx.query, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{paramName}}{{#isListContainer}}; collection_format="{{collectionFormat}}"{{/isListContainer}}) # type {{dataType}}
{{/queryParams}}
{{#headerParams}}
OpenAPI.Clients.set_param(_ctx.header, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{paramName}}{{#isListContainer}}; collection_format="{{collectionFormat}}"{{/isListContainer}}) # type {{dataType}}
{{/headerParams}}
{{#formParams}}
{{^isFile}}
OpenAPI.Clients.set_param(_ctx.form, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{paramName}}{{#isListContainer}}; collection_format="{{collectionFormat}}"{{/isListContainer}}) # type {{dataType}}
{{/isFile}}
{{#isFile}}
OpenAPI.Clients.set_param(_ctx.file, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{paramName}}) # type {{dataType}}
{{/isFile}}
{{/formParams}}
OpenAPI.Clients.set_header_accept(_ctx, [{{#produces}}"{{{mediaType}}}", {{/produces}}])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [{{#consumes}}"{{{mediaType}}}", {{/consumes}}] : [_mediaType])
return _ctx
end
@doc raw"""{{#summary.length}}{{{summary}}}
{{/summary.length}}{{#notes.length}}{{{notes}}}
{{/notes.length}}Params:
{{#allParams}}- {{paramName}}::{{dataType}}{{#required}} (required){{/required}}
{{/allParams}}
Return: {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}, OpenAPI.Clients.ApiResponse
"""
function {{operationId}}(_api::{{classname}}{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}} _mediaType=nothing)
_ctx = _oacinternal_{{operationId}}(_api{{#allParams}}{{#required}}, {{paramName}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}={{paramName}},{{/required}}{{/allParams}} _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function {{operationId}}(_api::{{classname}}, response_stream::Channel{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}} _mediaType=nothing)
_ctx = _oacinternal_{{operationId}}(_api{{#allParams}}{{#required}}, {{paramName}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}={{paramName}},{{/required}}{{/allParams}} _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
{{/operation}}
{{#operation}}
export {{operationId}}
{{/operation}}
{{/operations}}

View File

@ -0,0 +1,50 @@
# {{classname}}{{#description}}
{{.}}{{/description}}
All URIs are relative to *{{basePath}}*
Method | HTTP request | Description
------------- | ------------- | -------------
{{#operations}}{{#operation}}[**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{summary}}
{{/operation}}{{/operations}}
{{#operations}}
{{#operation}}
# **{{{operationId}}}**
> {{operationId}}(_api::{{classname}}{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}} _mediaType=nothing) -> {{#returnType}}{{{.}}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}, OpenAPI.Clients.ApiResponse <br/>
> {{operationId}}(_api::{{classname}}, response_stream::Channel{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}} _mediaType=nothing) -> Channel{ {{#returnType}}{{{.}}}{{/returnType}}{{^returnType}}Nothing{{/returnType}} }, OpenAPI.Clients.ApiResponse
{{{summary}}}{{#notes}}
{{{.}}}{{/notes}}
### Required Parameters
{{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}}
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **{{classname}}** | API context | {{/-last}}{{/allParams}}{{#allParams}}{{#required}}
**{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{^isFile}}[**{{dataType}}**]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}}| {{description}} | {{#defaultValue}}[default to {{.}}]{{/defaultValue}}{{/required}}{{/allParams}}{{#hasOptionalParams}}
### Optional Parameters
{{#allParams}}{{#-last}}
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}}{{#allParams}}{{^required}}
**{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{^isFile}}[**{{dataType}}**]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}}| {{description}} | {{#defaultValue}}[default to {{.}}]{{/defaultValue}}{{/required}}{{/allParams}}{{/hasOptionalParams}}
### Return type
{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}
### Authorization
{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{{name}}}](../README.md#{{{name}}}){{^-last}}, {{/-last}}{{/authMethods}}
### HTTP request headers
- **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}}
- **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}}
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
{{/operation}}
{{/operations}}

View File

@ -0,0 +1,24 @@
{{>partial_header}}
module {{packageName}}
using Dates, TimeZones
using OpenAPI
using OpenAPI.Clients
const API_VERSION = "{{appVersion}}"
include("modelincludes.jl")
{{#apiInfo}}{{#apis}}
include("apis/api_{{classname}}.jl"){{/apis}}{{/apiInfo}}
{{#exportModels}}
# export models
{{#models}}{{#model}}export {{classname}}
{{/model}}{{/models}}
{{/exportModels}}
{{#exportOperations}}
# export operations
{{#apiInfo}}{{#apis}}export {{classname}}
{{/apis}}{{/apiInfo}}
{{/exportOperations}}
end # module {{packageName}}

View File

@ -0,0 +1,15 @@
{{>partial_header}}
{{#models}}
{{#model}}
{{#isAlias}}
{{>partial_model_alias}}
{{/isAlias}}{{^isAlias}}{{#oneOf}}{{#-first}}
{{>partial_model_oneof}}
{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}
{{>partial_model_anyof}}
{{/-first}}{{/anyOf}}{{^anyOf}}{{#hasVars}}
{{>partial_model_single}}
{{/hasVars}}{{^hasVars}}
{{>partial_model_alias}}
{{/hasVars}}
{{/anyOf}}{{/oneOf}}{{/isAlias}}{{/model}}{{/models}}

View File

@ -0,0 +1,17 @@
{{#models}}{{#model}}# {{classname}}
{{#oneOf}}{{#-first}}
{{>partial_model_doc_oneof}}
{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}
{{>partial_model_doc_anyof}}
{{/-first}}{{/anyOf}}{{^anyOf}}
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isDateTime}}**{{{dataType}}}**{{/isDateTime}}{{^isDateTime}}[**{{^isContainer}}*{{/isContainer}}{{{dataType}}}**]({{complexType}}.md){{/isDateTime}}{{/isPrimitiveType}} | {{description}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}}
{{/vars}}
{{/anyOf}}{{/oneOf}}
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)
{{/model}}{{/models}}

View File

@ -0,0 +1,4 @@
{{>partial_header}}
{{#models}}
{{#model}}include("models/model_{{classname}}.jl"){{/model}}
{{/models}}

View File

@ -0,0 +1,2 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.

View File

@ -0,0 +1,5 @@
if !isdefined(@__MODULE__, :{{classname}})
const {{classname}} = {{dataType}}
else
@warn("Skipping redefinition of {{classname}} to {{dataType}}")
end

View File

@ -0,0 +1,23 @@
{{#anyOf}}{{#-first}}
@doc raw"""{{name}}{{#description}}
{{description}}{{/description}}
{{classname}}(; value=nothing)
"""
mutable struct {{classname}} <: OpenAPI.AnyOfAPIModel
value::Any # Union{ {{/-first}}{{/anyOf}}{{#anyOf}}{{^-first}}, {{/-first}}{{{.}}}{{/anyOf}}{{#anyOf}}{{#-last}} }
{{classname}}() = new()
{{classname}}(value) = new(value)
end # type {{classname}}{{/-last}}{{/anyOf}}
function OpenAPI.property_type(::Type{ {{classname}} }, name::Symbol, json::Dict{String,Any})
{{#discriminator}}discriminator = json["{{propertyName}}"]
{{#hasDiscriminatorWithNonEmptyMapping}}{{#mappedModels}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{mappingName}}"
return eval(Base.Meta.parse("{{modelName}}"))
{{#-last}}end{{/-last}}{{/mappedModels}}{{/hasDiscriminatorWithNonEmptyMapping}}{{^hasDiscriminatorWithNonEmptyMapping}}{{#anyOf}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{.}}"
return eval(Base.Meta.parse("{{.}}"))
{{#-last}}end{{/-last}}{{/anyOf}}{{/hasDiscriminatorWithNonEmptyMapping}}
throw(OpenAPI.ValidationException("Invalid discriminator value: $discriminator for {{classname}}")){{/discriminator}}{{^discriminator}}
# no discriminator specified, can't determine the exact type
return fieldtype({{classname}}, name){{/discriminator}}
end

View File

@ -0,0 +1,11 @@
{{#anyOf}}{{#-first}}
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**value** | This is a anyOf model. The value must be any of the following types: {{/-first}}{{/anyOf}}{{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}} | {{description}} | {{^required}}[optional] {{/required}}
{{#discriminator}}The discriminator field is `{{propertyName}}`{{#hasDiscriminatorWithNonEmptyMapping}} with the following mapping:
{{#mappedModels}}
- `{{mappingName}}`: `{{modelName}}`
{{/mappedModels}}
{{/hasDiscriminatorWithNonEmptyMapping}}{{/discriminator}}

View File

@ -0,0 +1,11 @@
{{#oneOf}}{{#-first}}
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**value** | This is a oneOf model. The value must be exactly one of the following types: {{/-first}}{{/oneOf}}{{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}} | {{description}} | {{^required}}[optional] {{/required}}
{{#discriminator}}The discriminator field is `{{propertyName}}`{{#hasDiscriminatorWithNonEmptyMapping}} with the following mapping:
{{#mappedModels}}
- `{{mappingName}}`: `{{modelName}}`
{{/mappedModels}}
{{/hasDiscriminatorWithNonEmptyMapping}}{{/discriminator}}

View File

@ -0,0 +1,23 @@
{{#oneOf}}{{#-first}}
@doc raw"""{{name}}{{#description}}
{{description}}{{/description}}
{{classname}}(; value=nothing)
"""
mutable struct {{classname}} <: OpenAPI.OneOfAPIModel
value::Any # Union{ {{/-first}}{{/oneOf}}{{#oneOf}}{{^-first}}, {{/-first}}{{{.}}}{{/oneOf}}{{#oneOf}}{{#-last}} }
{{classname}}() = new()
{{classname}}(value) = new(value)
end # type {{classname}}{{/-last}}{{/oneOf}}
function OpenAPI.property_type(::Type{ {{classname}} }, name::Symbol, json::Dict{String,Any})
{{#discriminator}}discriminator = json["{{propertyName}}"]
{{#hasDiscriminatorWithNonEmptyMapping}}{{#mappedModels}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{mappingName}}"
return eval(Base.Meta.parse("{{modelName}}"))
{{#-last}}end{{/-last}}{{/mappedModels}}{{/hasDiscriminatorWithNonEmptyMapping}}{{^hasDiscriminatorWithNonEmptyMapping}}{{#oneOf}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{.}}"
return eval(Base.Meta.parse("{{.}}"))
{{#-last}}end{{/-last}}{{/oneOf}}{{/hasDiscriminatorWithNonEmptyMapping}}
throw(OpenAPI.ValidationException("Invalid discriminator value: $discriminator for {{classname}}")){{/discriminator}}{{^discriminator}}
# no discriminator specified, can't determine the exact type
return fieldtype({{classname}}, name){{/discriminator}}
end

View File

@ -0,0 +1,91 @@
@doc raw"""{{name}}{{#description}}
{{description}}{{/description}}
{{classname}}(;
{{#allVars}}
{{{name}}}={{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}nothing{{/defaultValue}},
{{/allVars}}
)
{{#allVars}}
- {{{name}}}::{{datatype}}{{#description}} : {{description}}{{/description}}
{{/allVars}}
"""
Base.@kwdef mutable struct {{classname}} <: OpenAPI.APIModel
{{#allVars}}
{{{name}}}{{#isPrimitiveType}}::Union{Nothing, {{{datatype}}}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isContainer}}::Union{Nothing, {{#isMap}}Dict{{/isMap}}{{^isMap}}Vector{{/isMap}}}{{/isContainer}}{{/isPrimitiveType}} = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}nothing{{/defaultValue}}{{^isPrimitiveType}} # spec type: Union{ Nothing, {{datatype}} }{{/isPrimitiveType}}
{{/allVars}}
function {{classname}}({{#allVars}}{{{name}}}, {{/allVars}})
{{#allVars}}
OpenAPI.validate_property({{classname}}, Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"), {{{name}}})
{{/allVars}}
return new({{#allVars}}{{{name}}}, {{/allVars}})
end
end # type {{classname}}
const _property_types_{{classname}} = Dict{Symbol,String}({{#allVars}}Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")=>"{{datatype}}", {{/allVars}})
OpenAPI.property_type(::Type{ {{classname}} }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_{{classname}}[name]))}
function check_required(o::{{classname}})
{{#allVars}}
{{#required}}
o.{{{name}}} === nothing && (return false)
{{/required}}
{{/allVars}}
true
end
function OpenAPI.validate_property(::Type{ {{classname}} }, name::Symbol, val)
{{#allVars}}
{{#isEnum}}
if name === Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")
OpenAPI.validate_param(name, "{{classname}}", :enum, val, [{{#_enum}}"{{.}}"{{^-last}}, {{/-last}}{{/_enum}}])
end
{{/isEnum}}
{{^isEnum}}
{{#format}}
if name === Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")
OpenAPI.validate_param(name, "{{classname}}", :format, val, "{{format}}")
end
{{/format}}
{{#hasValidation}}
if name === Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")
{{#maxLength}}
OpenAPI.validate_param(name, "{{classname}}", :maxLength, val, {{maxLength}})
{{/maxLength}}
{{#minLength}}
OpenAPI.validate_param(name, "{{classname}}", :minLength, val, {{minLength}})
{{/minLength}}
{{#maximum}}
OpenAPI.validate_param(name, "{{classname}}", :maximum, val, {{maximum}}, {{#exclusiveMaximum}}true{{/exclusiveMaximum}}{{^exclusiveMaximum}}false{{/exclusiveMaximum}})
{{/maximum}}
{{#minimum}}
OpenAPI.validate_param(name, "{{classname}}", :minimum, val, {{minimum}}, {{#exclusiveMinimum}}true{{/exclusiveMinimum}}{{^exclusiveMinimum}}false{{/exclusiveMinimum}})
{{/minimum}}
{{#maxItems}}
OpenAPI.validate_param(name, "{{classname}}", :maxItems, val, {{maxItems}})
{{/maxItems}}
{{#minItems}}
OpenAPI.validate_param(name, "{{classname}}", :minItems, val, {{minItems}})
{{/minItems}}
{{#uniqueItems}}
OpenAPI.validate_param(name, "{{classname}}", :uniqueItems, val, {{uniqueItems}})
{{/uniqueItems}}
{{#maxProperties}}
OpenAPI.validate_param(name, "{{classname}}", :maxProperties, val, {{maxProperties}})
{{/maxProperties}}
{{#minProperties}}
OpenAPI.validate_param(name, "{{classname}}", :minProperties, val, {{minProperties}})
{{/minProperties}}
{{#pattern}}
OpenAPI.validate_param(name, "{{classname}}", :pattern, val, r"{{{pattern}}}")
{{/pattern}}
{{#multipleOf}}
OpenAPI.validate_param(name, "{{classname}}", :multipleOf, val, {{multipleOf}})
{{/multipleOf}}
end
{{/hasValidation}}
{{/isEnum}}
{{/allVars}}
end

View File

@ -0,0 +1,65 @@
# Julia API server for {{packageName}}
{{#appDescriptionWithNewLines}}
{{{.}}}
{{/appDescriptionWithNewLines}}
## Overview
This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client.
- API version: {{appVersion}}
{{^hideGenerationTimestamp}}
- Build date: {{generatedDate}}
{{/hideGenerationTimestamp}}
- Build package: {{generatorClass}}
{{#infoUrl}}
For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}})
{{/infoUrl}}
## Installation
Place the Julia files generated under the `src` folder in your Julia project. Include {{packageName}}.jl in the project code.
It would include the module named {{packageName}}.
Implement the server methods as listed below. They are also documented with the {{packageName}} module.
Launch a HTTP server with a router that has all handlers registered. A `register` method is provided in {{packageName}} module for convenience.
```julia
register(
router::HTTP.Router, # Router to register handlers in
impl; # Module that implements the server methods
path_prefix::String="", # Prefix to be applied to all paths
optional_middlewares... # Optional middlewares to be applied to all handlers
)
```
Optional middlewares can be one or more of:
- `init`: called before the request is processed
- `pre_validation`: called after the request is parsed but before validation
- `pre_invoke`: called after validation but before the handler is invoked
- `post_invoke`: called after the handler is invoked but before the response is sent
The order in which middlewares are invoked are:
`init |> read |> pre_validation |> validate |> pre_invoke |> invoke |> post_invoke`
## API Endpoints
The following server methods must be implemented:
Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{summary}}
{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}}
## Models
{{#models}}{{#model}} - [{{{classname}}}]({{modelDocPath}}{{{classname}}}.md)
{{/model}}{{/models}}
## Author
{{#apiInfo}}{{#apis}}{{#-last}}{{infoEmail}}
{{/-last}}{{/apis}}{{/apiInfo}}

View File

@ -0,0 +1,67 @@
{{>partial_header}}
{{#operations}}
{{#operation}}
function {{operationId}}_read(handler)
function {{operationId}}_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}(){{#hasPathParams}}
path_params = HTTP.getparams(req){{#pathParams}}
openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"] = OpenAPI.Servers.to_param({{dataType}}, path_params, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{#required}}required=true, {{/required}}{{#isListContainer}}collection_format="{{collectionFormat}}", {{/isListContainer}}){{/pathParams}}{{/hasPathParams}}{{#hasQueryParams}}
query_params = HTTP.queryparams(URIs.URI(req.target)){{#queryParams}}
openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"] = OpenAPI.Servers.to_param({{dataType}}, query_params, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{#required}}required=true, {{/required}}{{#isListContainer}}collection_format="{{collectionFormat}}", {{/isListContainer}}){{/queryParams}}{{/hasQueryParams}}{{#hasHeaderParams}}
headers = Dict{String,String}(HTTP.headers(req)){{#headerParams}}
openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"] = OpenAPI.Servers.to_param({{dataType}}, headers, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", {{#required}}required=true, {{/required}}{{#isListContainer}}collection_format="{{collectionFormat}}", {{/isListContainer}}){{/headerParams}}{{/hasHeaderParams}}{{#hasBodyParam}}{{#bodyParams}}
openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"] = OpenAPI.Servers.to_param_type({{dataType}}, String(req.body)){{/bodyParams}}{{/hasBodyParam}}{{#hasFormParams}}
form_data = HTTP.parse_multipart_form(req){{#formParams}}
openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"] = OpenAPI.Servers.to_param({{dataType}}, form_data, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"; multipart=true, isfile={{#isFile}}true{{/isFile}}{{^isFile}}false{{/isFile}}, {{#required}}required=true, {{/required}}{{#isListContainer}}collection_format="{{collectionFormat}}", {{/isListContainer}}){{/formParams}}{{/hasFormParams}}
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function {{operationId}}_validate(handler)
function {{operationId}}_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
{{#allParams}}{{#hasValidation}}
{{#maxLength}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :maxLength, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{maxLength}})
{{/maxLength}}
{{#minLength}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minLength, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minLength}})
{{/minLength}}
{{#maximum}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :maximum, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{maximum}}, {{#exclusiveMaximum}}true{{/exclusiveMaximum}}{{^exclusiveMaximum}}false{{/exclusiveMaximum}})
{{/maximum}}
{{#minimum}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minimum, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minimum}}, {{#exclusiveMinimum}}true{{/exclusiveMinimum}}{{^exclusiveMinimum}}false{{/exclusiveMinimum}})
{{/minimum}}
{{#maxItems}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :maxItems, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{maxItems}})
{{/maxItems}}
{{#minItems}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minItems, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minItems}})
{{/minItems}}
{{/hasValidation}}{{/allParams}}
return handler(req)
end
end
function {{operationId}}_invoke(impl; post_invoke=nothing)
function {{operationId}}_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.{{operationId}}(req::HTTP.Request{{#allParams}}{{#required}}, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"]{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=get(openapi_params, "{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", nothing),{{/required}}{{/allParams}})
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
{{/operation}}
function register{{classname}}(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
{{#operation}}
HTTP.register!(router, "{{httpMethod}}", path_prefix * "{{path}}", OpenAPI.Servers.middleware(impl, {{operationId}}_read, {{operationId}}_validate, {{operationId}}_invoke; optional_middlewares...))
{{/operation}}
return router
end
{{/operations}}

View File

@ -0,0 +1,49 @@
# {{classname}}{{#description}}
{{.}}{{/description}}
All URIs are relative to *{{basePath}}*
Method | HTTP request | Description
------------- | ------------- | -------------
{{#operations}}{{#operation}}[**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{summary}}
{{/operation}}{{/operations}}
{{#operations}}
{{#operation}}
# **{{{operationId}}}**
> {{operationId}}(req::HTTP.Request{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}}) -> {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}
{{{summary}}}{{#notes}}
{{{.}}}{{/notes}}
### Required Parameters
{{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}}
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object | {{/-last}}{{/allParams}}{{#allParams}}{{#required}}
**{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{^isFile}}[**{{dataType}}**]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}}| {{description}} | {{#defaultValue}}[default to {{.}}]{{/defaultValue}}{{/required}}{{/allParams}}{{#hasOptionalParams}}
### Optional Parameters
{{#allParams}}{{#-last}}
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}}{{#allParams}}{{^required}}
**{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{^isFile}}[**{{dataType}}**]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}}| {{description}} | {{#defaultValue}}[default to {{.}}]{{/defaultValue}}{{/required}}{{/allParams}}{{/hasOptionalParams}}
### Return type
{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}
### Authorization
{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{{name}}}](../README.md#{{{name}}}){{^-last}}, {{/-last}}{{/authMethods}}
### HTTP request headers
- **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}}
- **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}}
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
{{/operation}}
{{/operations}}

View File

@ -0,0 +1,16 @@
{{>partial_header}}
{{#models}}
{{#model}}
{{#isAlias}}
if !isdefined(@__MODULE__, :{{classname}})
const {{classname}} = {{dataType}}
else
@warn("Skipping redefinition of {{classname}} to {{dataType}}")
end
{{/isAlias}}{{^isAlias}}{{#oneOf}}{{#-first}}
{{>partial_model_oneof}}
{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}
{{>partial_model_anyof}}
{{/-first}}{{/anyOf}}{{^anyOf}}
{{>partial_model_single}}
{{/anyOf}}{{/oneOf}}{{/isAlias}}{{/model}}{{/models}}

View File

@ -0,0 +1,17 @@
{{#models}}{{#model}}# {{classname}}
{{#oneOf}}{{#-first}}
{{>partial_model_doc_oneof}}
{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}
{{>partial_model_doc_anyof}}
{{/-first}}{{/anyOf}}{{^anyOf}}
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isDateTime}}**{{{dataType}}}**{{/isDateTime}}{{^isDateTime}}[**{{^isContainer}}*{{/isContainer}}{{{dataType}}}**]({{complexType}}.md){{/isDateTime}}{{/isPrimitiveType}} | {{description}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}}
{{/vars}}
{{/anyOf}}{{/oneOf}}
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)
{{/model}}{{/models}}

View File

@ -0,0 +1,4 @@
{{>partial_header}}
{{#models}}
{{#model}}include("models/model_{{classname}}.jl"){{/model}}
{{/models}}

View File

@ -0,0 +1,2 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.

View File

@ -0,0 +1,23 @@
{{#anyOf}}{{#-first}}
@doc raw"""{{#description}}{{description}}
{{/description}}
{{classname}}(; value=nothing)
"""
mutable struct {{classname}} <: OpenAPI.AnyOfAPIModel
value::Any # Union{ {{/-first}}{{/anyOf}}{{#anyOf}}{{^-first}}, {{/-first}}{{{.}}}{{/anyOf}}{{#anyOf}}{{#-last}} }
{{classname}}() = new()
{{classname}}(value) = new(value)
end # type {{classname}}{{/-last}}{{/anyOf}}
function OpenAPI.property_type(::Type{ {{classname}} }, name::Symbol, json::Dict{String,Any})
{{#discriminator}}discriminator = json["{{propertyName}}"]
{{#hasDiscriminatorWithNonEmptyMapping}}{{#mappedModels}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{mappingName}}"
return eval(Base.Meta.parse("{{modelName}}"))
{{#-last}}end{{/-last}}{{/mappedModels}}{{/hasDiscriminatorWithNonEmptyMapping}}{{^hasDiscriminatorWithNonEmptyMapping}}{{#anyOf}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{.}}"
return eval(Base.Meta.parse("{{.}}"))
{{#-last}}end{{/-last}}{{/anyOf}}{{/hasDiscriminatorWithNonEmptyMapping}}
throw(OpenAPI.ValidationException("Invalid discriminator value: $discriminator for {{classname}}")){{/discriminator}}{{^discriminator}}
# no discriminator specified, can't determine the exact type
return fieldtype({{classname}}, name){{/discriminator}}
end

View File

@ -0,0 +1,11 @@
{{#anyOf}}{{#-first}}
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**value** | This is a anyOf model. The value must be any of the following types: {{/-first}}{{/anyOf}}{{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}} | {{description}} | {{^required}}[optional] {{/required}}
{{#discriminator}}The discriminator field is `{{propertyName}}`{{#hasDiscriminatorWithNonEmptyMapping}} with the following mapping:
{{#mappedModels}}
- `{{mappingName}}`: `{{modelName}}`
{{/mappedModels}}
{{/hasDiscriminatorWithNonEmptyMapping}}{{/discriminator}}

View File

@ -0,0 +1,11 @@
{{#oneOf}}{{#-first}}
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**value** | This is a oneOf model. The value must be exactly one of the following types: {{/-first}}{{/oneOf}}{{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}} | {{description}} | {{^required}}[optional] {{/required}}
{{#discriminator}}The discriminator field is `{{propertyName}}`{{#hasDiscriminatorWithNonEmptyMapping}} with the following mapping:
{{#mappedModels}}
- `{{mappingName}}`: `{{modelName}}`
{{/mappedModels}}
{{/hasDiscriminatorWithNonEmptyMapping}}{{/discriminator}}

View File

@ -0,0 +1,23 @@
{{#oneOf}}{{#-first}}
@doc raw"""{{#description}}{{description}}
{{/description}}
{{classname}}(; value=nothing)
"""
mutable struct {{classname}} <: OpenAPI.OneOfAPIModel
value::Any # Union{ {{/-first}}{{/oneOf}}{{#oneOf}}{{^-first}}, {{/-first}}{{{.}}}{{/oneOf}}{{#oneOf}}{{#-last}} }
{{classname}}() = new()
{{classname}}(value) = new(value)
end # type {{classname}}{{/-last}}{{/oneOf}}
function OpenAPI.property_type(::Type{ {{classname}} }, name::Symbol, json::Dict{String,Any})
{{#discriminator}}discriminator = json["{{propertyName}}"]
{{#hasDiscriminatorWithNonEmptyMapping}}{{#mappedModels}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{mappingName}}"
return eval(Base.Meta.parse("{{modelName}}"))
{{#-last}}end{{/-last}}{{/mappedModels}}{{/hasDiscriminatorWithNonEmptyMapping}}{{^hasDiscriminatorWithNonEmptyMapping}}{{#oneOf}}{{#-first}}if{{/-first}}{{^-first}}elseif{{/-first}} discriminator == "{{.}}"
return eval(Base.Meta.parse("{{.}}"))
{{#-last}}end{{/-last}}{{/oneOf}}{{/hasDiscriminatorWithNonEmptyMapping}}
throw(OpenAPI.ValidationException("Invalid discriminator value: $discriminator for {{classname}}")){{/discriminator}}{{^discriminator}}
# no discriminator specified, can't determine the exact type
return fieldtype({{classname}}, name){{/discriminator}}
end

View File

@ -0,0 +1,91 @@
@doc raw"""{{#description}}{{description}}
{{/description}}
{{classname}}(;
{{#allVars}}
{{{name}}}={{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}nothing{{/defaultValue}},
{{/allVars}}
)
{{#allVars}}
- {{{name}}}::{{datatype}}{{#description}} : {{description}}{{/description}}
{{/allVars}}
"""
Base.@kwdef mutable struct {{classname}} <: OpenAPI.APIModel
{{#allVars}}
{{{name}}}{{#isPrimitiveType}}::Union{Nothing, {{{datatype}}}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isContainer}}::Union{Nothing, {{#isMap}}Dict{{/isMap}}{{^isMap}}Vector{{/isMap}}}{{/isContainer}}{{/isPrimitiveType}} = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}nothing{{/defaultValue}}{{^isPrimitiveType}} # spec type: Union{ Nothing, {{datatype}} }{{/isPrimitiveType}}
{{/allVars}}
function {{classname}}({{#allVars}}{{{name}}}, {{/allVars}})
{{#allVars}}
OpenAPI.validate_property({{classname}}, Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"), {{{name}}})
{{/allVars}}
return new({{#allVars}}{{{name}}}, {{/allVars}})
end
end # type {{classname}}
const _property_types_{{classname}} = Dict{Symbol,String}({{#allVars}}Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")=>"{{datatype}}", {{/allVars}})
OpenAPI.property_type(::Type{ {{classname}} }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_{{classname}}[name]))}
function check_required(o::{{classname}})
{{#allVars}}
{{#required}}
o.{{{name}}} === nothing && (return false)
{{/required}}
{{/allVars}}
true
end
function OpenAPI.validate_property(::Type{ {{classname}} }, name::Symbol, val)
{{#allVars}}
{{#isEnum}}
if name === Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")
OpenAPI.validate_param(name, "{{classname}}", :enum, val, [{{#allowableValues}}{{#values}}"{{{this}}}"{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}])
end
{{/isEnum}}
{{^isEnum}}
{{#format}}
if name === Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")
OpenAPI.validate_param(name, "{{classname}}", :format, val, "{{format}}")
end
{{/format}}
{{#hasValidation}}
if name === Symbol("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}")
{{#maxLength}}
OpenAPI.validate_param(name, "{{classname}}", :maxLength, val, {{maxLength}})
{{/maxLength}}
{{#minLength}}
OpenAPI.validate_param(name, "{{classname}}", :minLength, val, {{minLength}})
{{/minLength}}
{{#maximum}}
OpenAPI.validate_param(name, "{{classname}}", :maximum, val, {{maximum}}, {{#exclusiveMaximum}}true{{/exclusiveMaximum}}{{^exclusiveMaximum}}false{{/exclusiveMaximum}})
{{/maximum}}
{{#minimum}}
OpenAPI.validate_param(name, "{{classname}}", :minimum, val, {{minimum}}, {{#exclusiveMinimum}}true{{/exclusiveMinimum}}{{^exclusiveMinimum}}false{{/exclusiveMinimum}})
{{/minimum}}
{{#maxItems}}
OpenAPI.validate_param(name, "{{classname}}", :maxItems, val, {{maxItems}})
{{/maxItems}}
{{#minItems}}
OpenAPI.validate_param(name, "{{classname}}", :minItems, val, {{minItems}})
{{/minItems}}
{{#uniqueItems}}
OpenAPI.validate_param(name, "{{classname}}", :uniqueItems, val, {{uniqueItems}})
{{/uniqueItems}}
{{#maxProperties}}
OpenAPI.validate_param(name, "{{classname}}", :maxProperties, val, {{maxProperties}})
{{/maxProperties}}
{{#minProperties}}
OpenAPI.validate_param(name, "{{classname}}", :minProperties, val, {{minProperties}})
{{/minProperties}}
{{#pattern}}
OpenAPI.validate_param(name, "{{classname}}", :pattern, val, r"{{{pattern}}}")
{{/pattern}}
{{#multipleOf}}
OpenAPI.validate_param(name, "{{classname}}", :multipleOf, val, {{multipleOf}})
{{/multipleOf}}
end
{{/hasValidation}}
{{/isEnum}}
{{/allVars}}
end

View File

@ -0,0 +1,69 @@
{{>partial_header}}
@doc raw"""
Encapsulates generated server code for {{packageName}}
The following server methods must be implemented:
{{#apiInfo}}
{{#apis}}
{{#operations}}
{{#operation}}
- **{{operationId}}**
- *invocation:* {{httpMethod}} {{path}}
- *signature:* {{operationId}}(req::HTTP.Request{{#allParams}}{{#required}}, {{paramName}}::{{dataType}}{{/required}}{{/allParams}};{{#allParams}}{{^required}} {{paramName}}=nothing,{{/required}}{{/allParams}}) -> {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}
{{/operation}}
{{/operations}}
{{/apis}}
{{/apiInfo}}
"""
module {{packageName}}
using HTTP
using URIs
using Dates
using TimeZones
using OpenAPI
using OpenAPI.Servers
const API_VERSION = "{{appVersion}}"
include("modelincludes.jl")
{{#apiInfo}}{{#apis}}
include("apis/api_{{classname}}.jl"){{/apis}}{{/apiInfo}}
"""
Register handlers for all APIs in this module in the supplied `Router` instance.
Paramerets:
- `router`: Router to register handlers in
- `impl`: module that implements the server methods
Optional parameters:
- `path_prefix`: prefix to be applied to all paths
- `optional_middlewares`: Register one or more optional middlewares to be applied to all requests.
Optional middlewares can be one or more of:
- `init`: called before the request is processed
- `pre_validation`: called after the request is parsed but before validation
- `pre_invoke`: called after validation but before the handler is invoked
- `post_invoke`: called after the handler is invoked but before the response is sent
The order in which middlewares are invoked are:
`init |> read |> pre_validation |> validate |> pre_invoke |> invoke |> post_invoke`
"""
function register(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
{{#apiInfo}}
{{#apis}}
register{{classname}}(router, impl; path_prefix=path_prefix, optional_middlewares...)
{{/apis}}
{{/apiInfo}}
return router
end
{{#exportModels}}
# export models
{{#models}}{{#model}}export {{classname}}
{{/model}}{{/models}}
{{/exportModels}}
end # module {{packageName}}

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1,21 @@
README.md
docs/ApiResponse.md
docs/Category.md
docs/Order.md
docs/Pet.md
docs/PetApi.md
docs/StoreApi.md
docs/Tag.md
docs/User.md
docs/UserApi.md
src/PetStoreClient.jl
src/apis/api_PetApi.jl
src/apis/api_StoreApi.jl
src/apis/api_UserApi.jl
src/modelincludes.jl
src/models/model_ApiResponse.jl
src/models/model_Category.jl
src/models/model_Order.jl
src/models/model_Pet.jl
src/models/model_Tag.jl
src/models/model_User.jl

View File

@ -0,0 +1 @@
6.3.0-SNAPSHOT

View File

@ -0,0 +1,91 @@
# Julia API client for PetStoreClient
This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
## Overview
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client.
- API version: 1.0.0
- Build package: org.openapitools.codegen.languages.JuliaClientCodegen
## Installation
Place the Julia files generated under the `src` folder in your Julia project. Include PetStoreClient.jl in the project code.
It would include the module named PetStoreClient.
Documentation is generated as markdown files under the `docs` folder. You can include them in your project documentation.
Documentation is also embedded in Julia which can be used with a Julia specific documentation generator.
## API Endpoints
Class | Method
------------ | -------------
*PetApi* | [**add_pet**](docs/PetApi.md#add_pet)<br/>**POST** /pet<br/>Add a new pet to the store
*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet)<br/>**DELETE** /pet/{petId}<br/>Deletes a pet
*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status)<br/>**GET** /pet/findByStatus<br/>Finds Pets by status
*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags)<br/>**GET** /pet/findByTags<br/>Finds Pets by tags
*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id)<br/>**GET** /pet/{petId}<br/>Find pet by ID
*PetApi* | [**update_pet**](docs/PetApi.md#update_pet)<br/>**PUT** /pet<br/>Update an existing pet
*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form)<br/>**POST** /pet/{petId}<br/>Updates a pet in the store with form data
*PetApi* | [**upload_file**](docs/PetApi.md#upload_file)<br/>**POST** /pet/{petId}/uploadImage<br/>uploads an image
*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order)<br/>**DELETE** /store/order/{orderId}<br/>Delete purchase order by ID
*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory)<br/>**GET** /store/inventory<br/>Returns pet inventories by status
*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id)<br/>**GET** /store/order/{orderId}<br/>Find purchase order by ID
*StoreApi* | [**place_order**](docs/StoreApi.md#place_order)<br/>**POST** /store/order<br/>Place an order for a pet
*UserApi* | [**create_user**](docs/UserApi.md#create_user)<br/>**POST** /user<br/>Create user
*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input)<br/>**POST** /user/createWithArray<br/>Creates list of users with given input array
*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input)<br/>**POST** /user/createWithList<br/>Creates list of users with given input array
*UserApi* | [**delete_user**](docs/UserApi.md#delete_user)<br/>**DELETE** /user/{username}<br/>Delete user
*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name)<br/>**GET** /user/{username}<br/>Get user by user name
*UserApi* | [**login_user**](docs/UserApi.md#login_user)<br/>**GET** /user/login<br/>Logs user into the system
*UserApi* | [**logout_user**](docs/UserApi.md#logout_user)<br/>**GET** /user/logout<br/>Logs out current logged in user session
*UserApi* | [**update_user**](docs/UserApi.md#update_user)<br/>**PUT** /user/{username}<br/>Updated user
## Models
- [ApiResponse](docs/ApiResponse.md)
- [Category](docs/Category.md)
- [Order](docs/Order.md)
- [Pet](docs/Pet.md)
- [Tag](docs/Tag.md)
- [User](docs/User.md)
## Authorization
## api_key
- **Type**: API key
Example
```
using OpenAPI
using OpenAPI.Clients
import OpenAPI.Clients: Client
client = Client(server_uri)
api = MyApi(client)
result = callApi(api, args...; api_key)
```
## petstore_auth
- **Type**: OAuth
- **Flow**: implicit
- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog
- **Scopes**:
- **write:pets**: modify pets in your account
- **read:pets**: read your pets
Example
```
using OpenAPI
using OpenAPI.Clients
import OpenAPI.Clients: Client, set_header
client = Client(server_uri)
set_header(client, "Authorization", "Bearer $bearer_auth")
api = MyApi(client)
result = callApi(api, args...; api_key)
```
## Author

View File

@ -0,0 +1,14 @@
# ApiResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**code** | **Int64** | | [optional] [default to nothing]
**type** | **String** | | [optional] [default to nothing]
**message** | **String** | | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,13 @@
# Category
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**name** | **String** | | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,17 @@
# Order
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**petId** | **Int64** | | [optional] [default to nothing]
**quantity** | **Int64** | | [optional] [default to nothing]
**shipDate** | **ZonedDateTime** | | [optional] [default to nothing]
**status** | **String** | Order Status | [optional] [default to nothing]
**complete** | **Bool** | | [optional] [default to false]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,17 @@
# Pet
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**category** | [***Category**](Category.md) | | [optional] [default to nothing]
**name** | **String** | | [default to nothing]
**photoUrls** | **Vector{String}** | | [default to nothing]
**tags** | [**Vector{Tag}**](Tag.md) | | [optional] [default to nothing]
**status** | **String** | pet status in the store | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,276 @@
# PetApi
All URIs are relative to *http://petstore.swagger.io/v2*
Method | HTTP request | Description
------------- | ------------- | -------------
[**add_pet**](PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store
[**delete_pet**](PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet
[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status
[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags
[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID
[**update_pet**](PetApi.md#update_pet) | **PUT** /pet | Update an existing pet
[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data
[**upload_file**](PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image
# **add_pet**
> add_pet(_api::PetApi, pet::Pet; _mediaType=nothing) -> Pet, OpenAPI.Clients.ApiResponse <br/>
> add_pet(_api::PetApi, response_stream::Channel, pet::Pet; _mediaType=nothing) -> Channel{ Pet }, OpenAPI.Clients.ApiResponse
Add a new pet to the store
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
### Return type
[**Pet**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: application/json, application/xml
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **delete_pet**
> delete_pet(_api::PetApi, pet_id::Int64; api_key=nothing, _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> delete_pet(_api::PetApi, response_stream::Channel, pet_id::Int64; api_key=nothing, _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Deletes a pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**pet_id** | **Int64**| Pet id to delete | [default to nothing]
### Optional Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**api_key** | **String**| | [default to nothing]
### Return type
Nothing
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **find_pets_by_status**
> find_pets_by_status(_api::PetApi, status::Vector{String}; _mediaType=nothing) -> Vector{Pet}, OpenAPI.Clients.ApiResponse <br/>
> find_pets_by_status(_api::PetApi, response_stream::Channel, status::Vector{String}; _mediaType=nothing) -> Channel{ Vector{Pet} }, OpenAPI.Clients.ApiResponse
Finds Pets by status
Multiple status values can be provided with comma separated strings
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing]
### Return type
[**Vector{Pet}**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **find_pets_by_tags**
> find_pets_by_tags(_api::PetApi, tags::Vector{String}; _mediaType=nothing) -> Vector{Pet}, OpenAPI.Clients.ApiResponse <br/>
> find_pets_by_tags(_api::PetApi, response_stream::Channel, tags::Vector{String}; _mediaType=nothing) -> Channel{ Vector{Pet} }, OpenAPI.Clients.ApiResponse
Finds Pets by tags
Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing]
### Return type
[**Vector{Pet}**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **get_pet_by_id**
> get_pet_by_id(_api::PetApi, pet_id::Int64; _mediaType=nothing) -> Pet, OpenAPI.Clients.ApiResponse <br/>
> get_pet_by_id(_api::PetApi, response_stream::Channel, pet_id::Int64; _mediaType=nothing) -> Channel{ Pet }, OpenAPI.Clients.ApiResponse
Find pet by ID
Returns a single pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**pet_id** | **Int64**| ID of pet to return | [default to nothing]
### Return type
[**Pet**](Pet.md)
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **update_pet**
> update_pet(_api::PetApi, pet::Pet; _mediaType=nothing) -> Pet, OpenAPI.Clients.ApiResponse <br/>
> update_pet(_api::PetApi, response_stream::Channel, pet::Pet; _mediaType=nothing) -> Channel{ Pet }, OpenAPI.Clients.ApiResponse
Update an existing pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
### Return type
[**Pet**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: application/json, application/xml
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **update_pet_with_form**
> update_pet_with_form(_api::PetApi, pet_id::Int64; name=nothing, status=nothing, _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> update_pet_with_form(_api::PetApi, response_stream::Channel, pet_id::Int64; name=nothing, status=nothing, _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Updates a pet in the store with form data
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing]
### Optional Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**name** | **String**| Updated name of the pet | [default to nothing]
**status** | **String**| Updated status of the pet | [default to nothing]
### Return type
Nothing
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: application/x-www-form-urlencoded
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **upload_file**
> upload_file(_api::PetApi, pet_id::Int64; additional_metadata=nothing, file=nothing, _mediaType=nothing) -> ApiResponse, OpenAPI.Clients.ApiResponse <br/>
> upload_file(_api::PetApi, response_stream::Channel, pet_id::Int64; additional_metadata=nothing, file=nothing, _mediaType=nothing) -> Channel{ ApiResponse }, OpenAPI.Clients.ApiResponse
uploads an image
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **PetApi** | API context |
**pet_id** | **Int64**| ID of pet to update | [default to nothing]
### Optional Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**additional_metadata** | **String**| Additional data to pass to server | [default to nothing]
**file** | **String****String**| file to upload | [default to nothing]
### Return type
[**ApiResponse**](ApiResponse.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: multipart/form-data
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)

View File

@ -0,0 +1,128 @@
# StoreApi
All URIs are relative to *http://petstore.swagger.io/v2*
Method | HTTP request | Description
------------- | ------------- | -------------
[**delete_order**](StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
[**get_inventory**](StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status
[**get_order_by_id**](StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID
[**place_order**](StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet
# **delete_order**
> delete_order(_api::StoreApi, order_id::String; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> delete_order(_api::StoreApi, response_stream::Channel, order_id::String; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Delete purchase order by ID
For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **StoreApi** | API context |
**order_id** | **String**| ID of the order that needs to be deleted | [default to nothing]
### Return type
Nothing
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **get_inventory**
> get_inventory(_api::StoreApi; _mediaType=nothing) -> Dict{String, Int64}, OpenAPI.Clients.ApiResponse <br/>
> get_inventory(_api::StoreApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Dict{String, Int64} }, OpenAPI.Clients.ApiResponse
Returns pet inventories by status
Returns a map of status codes to quantities
### Required Parameters
This endpoint does not need any parameter.
### Return type
**Dict{String, Int64}**
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **get_order_by_id**
> get_order_by_id(_api::StoreApi, order_id::Int64; _mediaType=nothing) -> Order, OpenAPI.Clients.ApiResponse <br/>
> get_order_by_id(_api::StoreApi, response_stream::Channel, order_id::Int64; _mediaType=nothing) -> Channel{ Order }, OpenAPI.Clients.ApiResponse
Find purchase order by ID
For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **StoreApi** | API context |
**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing]
### Return type
[**Order**](Order.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **place_order**
> place_order(_api::StoreApi, order::Order; _mediaType=nothing) -> Order, OpenAPI.Clients.ApiResponse <br/>
> place_order(_api::StoreApi, response_stream::Channel, order::Order; _mediaType=nothing) -> Channel{ Order }, OpenAPI.Clients.ApiResponse
Place an order for a pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **StoreApi** | API context |
**order** | [**Order**](Order.md)| order placed for purchasing the pet |
### Return type
[**Order**](Order.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)

View File

@ -0,0 +1,13 @@
# Tag
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**name** | **String** | | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,19 @@
# User
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**username** | **String** | | [optional] [default to nothing]
**firstName** | **String** | | [optional] [default to nothing]
**lastName** | **String** | | [optional] [default to nothing]
**email** | **String** | | [optional] [default to nothing]
**password** | **String** | | [optional] [default to nothing]
**phone** | **String** | | [optional] [default to nothing]
**userStatus** | **Int64** | User Status | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,254 @@
# UserApi
All URIs are relative to *http://petstore.swagger.io/v2*
Method | HTTP request | Description
------------- | ------------- | -------------
[**create_user**](UserApi.md#create_user) | **POST** /user | Create user
[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array
[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array
[**delete_user**](UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user
[**get_user_by_name**](UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name
[**login_user**](UserApi.md#login_user) | **GET** /user/login | Logs user into the system
[**logout_user**](UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session
[**update_user**](UserApi.md#update_user) | **PUT** /user/{username} | Updated user
# **create_user**
> create_user(_api::UserApi, user::User; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> create_user(_api::UserApi, response_stream::Channel, user::User; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Create user
This can only be done by the logged in user.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**user** | [**User**](User.md)| Created user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **create_users_with_array_input**
> create_users_with_array_input(_api::UserApi, user::Vector{User}; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> create_users_with_array_input(_api::UserApi, response_stream::Channel, user::Vector{User}; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Creates list of users with given input array
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**user** | [**Vector{User}**](User.md)| List of user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **create_users_with_list_input**
> create_users_with_list_input(_api::UserApi, user::Vector{User}; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> create_users_with_list_input(_api::UserApi, response_stream::Channel, user::Vector{User}; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Creates list of users with given input array
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**user** | [**Vector{User}**](User.md)| List of user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **delete_user**
> delete_user(_api::UserApi, username::String; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> delete_user(_api::UserApi, response_stream::Channel, username::String; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Delete user
This can only be done by the logged in user.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**username** | **String**| The name that needs to be deleted | [default to nothing]
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **get_user_by_name**
> get_user_by_name(_api::UserApi, username::String; _mediaType=nothing) -> User, OpenAPI.Clients.ApiResponse <br/>
> get_user_by_name(_api::UserApi, response_stream::Channel, username::String; _mediaType=nothing) -> Channel{ User }, OpenAPI.Clients.ApiResponse
Get user by user name
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing]
### Return type
[**User**](User.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **login_user**
> login_user(_api::UserApi, username::String, password::String; _mediaType=nothing) -> String, OpenAPI.Clients.ApiResponse <br/>
> login_user(_api::UserApi, response_stream::Channel, username::String, password::String; _mediaType=nothing) -> Channel{ String }, OpenAPI.Clients.ApiResponse
Logs user into the system
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**username** | **String**| The user name for login | [default to nothing]
**password** | **String**| The password for login in clear text | [default to nothing]
### Return type
**String**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **logout_user**
> logout_user(_api::UserApi; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> logout_user(_api::UserApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Logs out current logged in user session
### Required Parameters
This endpoint does not need any parameter.
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
# **update_user**
> update_user(_api::UserApi, username::String, user::User; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse <br/>
> update_user(_api::UserApi, response_stream::Channel, username::String, user::User; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse
Updated user
This can only be done by the logged in user.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**_api** | **UserApi** | API context |
**username** | **String**| name that need to be deleted | [default to nothing]
**user** | [**User**](User.md)| Updated user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)

View File

@ -0,0 +1,18 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
module PetStoreClient
using Dates, TimeZones
using OpenAPI
using OpenAPI.Clients
const API_VERSION = "1.0.0"
include("modelincludes.jl")
include("apis/api_PetApi.jl")
include("apis/api_StoreApi.jl")
include("apis/api_UserApi.jl")
end # module PetStoreClient

View File

@ -0,0 +1,285 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
struct PetApi <: OpenAPI.APIClientImpl
client::OpenAPI.Clients.Client
end
"""
The default API base path for APIs in `PetApi`.
This can be used to construct the `OpenAPI.Clients.Client` instance.
"""
basepath(::Type{ PetApi }) = "http://petstore.swagger.io/v2"
const _returntypes_add_pet_PetApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Pet,
Regex("^" * replace("405", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_add_pet(_api::PetApi, pet::Pet; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_add_pet_PetApi, "/pet", ["petstore_auth", ], pet)
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", "application/xml", ] : [_mediaType])
return _ctx
end
@doc raw"""Add a new pet to the store
Params:
- pet::Pet (required)
Return: Pet, OpenAPI.Clients.ApiResponse
"""
function add_pet(_api::PetApi, pet::Pet; _mediaType=nothing)
_ctx = _oacinternal_add_pet(_api, pet; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function add_pet(_api::PetApi, response_stream::Channel, pet::Pet; _mediaType=nothing)
_ctx = _oacinternal_add_pet(_api, pet; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_delete_pet_PetApi = Dict{Regex,Type}(
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_delete_pet(_api::PetApi, pet_id::Int64; api_key=nothing, _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "DELETE", _returntypes_delete_pet_PetApi, "/pet/{petId}", ["petstore_auth", ])
OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64
OpenAPI.Clients.set_param(_ctx.header, "api_key", api_key) # type String
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Deletes a pet
Params:
- pet_id::Int64 (required)
- api_key::String
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function delete_pet(_api::PetApi, pet_id::Int64; api_key=nothing, _mediaType=nothing)
_ctx = _oacinternal_delete_pet(_api, pet_id; api_key=api_key, _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function delete_pet(_api::PetApi, response_stream::Channel, pet_id::Int64; api_key=nothing, _mediaType=nothing)
_ctx = _oacinternal_delete_pet(_api, pet_id; api_key=api_key, _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_find_pets_by_status_PetApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Vector{Pet},
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_find_pets_by_status(_api::PetApi, status::Vector{String}; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_status_PetApi, "/pet/findByStatus", ["petstore_auth", ])
OpenAPI.Clients.set_param(_ctx.query, "status", status) # type Vector{String}
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Finds Pets by status
Multiple status values can be provided with comma separated strings
Params:
- status::Vector{String} (required)
Return: Vector{Pet}, OpenAPI.Clients.ApiResponse
"""
function find_pets_by_status(_api::PetApi, status::Vector{String}; _mediaType=nothing)
_ctx = _oacinternal_find_pets_by_status(_api, status; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function find_pets_by_status(_api::PetApi, response_stream::Channel, status::Vector{String}; _mediaType=nothing)
_ctx = _oacinternal_find_pets_by_status(_api, status; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_find_pets_by_tags_PetApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Vector{Pet},
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_find_pets_by_tags(_api::PetApi, tags::Vector{String}; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_tags_PetApi, "/pet/findByTags", ["petstore_auth", ])
OpenAPI.Clients.set_param(_ctx.query, "tags", tags) # type Vector{String}
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Finds Pets by tags
Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
Params:
- tags::Vector{String} (required)
Return: Vector{Pet}, OpenAPI.Clients.ApiResponse
"""
function find_pets_by_tags(_api::PetApi, tags::Vector{String}; _mediaType=nothing)
_ctx = _oacinternal_find_pets_by_tags(_api, tags; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function find_pets_by_tags(_api::PetApi, response_stream::Channel, tags::Vector{String}; _mediaType=nothing)
_ctx = _oacinternal_find_pets_by_tags(_api, tags; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_get_pet_by_id_PetApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Pet,
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_get_pet_by_id(_api::PetApi, pet_id::Int64; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_get_pet_by_id_PetApi, "/pet/{petId}", ["api_key", ])
OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Find pet by ID
Returns a single pet
Params:
- pet_id::Int64 (required)
Return: Pet, OpenAPI.Clients.ApiResponse
"""
function get_pet_by_id(_api::PetApi, pet_id::Int64; _mediaType=nothing)
_ctx = _oacinternal_get_pet_by_id(_api, pet_id; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function get_pet_by_id(_api::PetApi, response_stream::Channel, pet_id::Int64; _mediaType=nothing)
_ctx = _oacinternal_get_pet_by_id(_api, pet_id; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_update_pet_PetApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Pet,
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("405", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_update_pet(_api::PetApi, pet::Pet; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "PUT", _returntypes_update_pet_PetApi, "/pet", ["petstore_auth", ], pet)
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", "application/xml", ] : [_mediaType])
return _ctx
end
@doc raw"""Update an existing pet
Params:
- pet::Pet (required)
Return: Pet, OpenAPI.Clients.ApiResponse
"""
function update_pet(_api::PetApi, pet::Pet; _mediaType=nothing)
_ctx = _oacinternal_update_pet(_api, pet; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function update_pet(_api::PetApi, response_stream::Channel, pet::Pet; _mediaType=nothing)
_ctx = _oacinternal_update_pet(_api, pet; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_update_pet_with_form_PetApi = Dict{Regex,Type}(
Regex("^" * replace("405", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_update_pet_with_form(_api::PetApi, pet_id::Int64; name=nothing, status=nothing, _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_update_pet_with_form_PetApi, "/pet/{petId}", ["petstore_auth", ])
OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64
OpenAPI.Clients.set_param(_ctx.form, "name", name) # type String
OpenAPI.Clients.set_param(_ctx.form, "status", status) # type String
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/x-www-form-urlencoded", ] : [_mediaType])
return _ctx
end
@doc raw"""Updates a pet in the store with form data
Params:
- pet_id::Int64 (required)
- name::String
- status::String
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function update_pet_with_form(_api::PetApi, pet_id::Int64; name=nothing, status=nothing, _mediaType=nothing)
_ctx = _oacinternal_update_pet_with_form(_api, pet_id; name=name, status=status, _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function update_pet_with_form(_api::PetApi, response_stream::Channel, pet_id::Int64; name=nothing, status=nothing, _mediaType=nothing)
_ctx = _oacinternal_update_pet_with_form(_api, pet_id; name=name, status=status, _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_upload_file_PetApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => ApiResponse,
)
function _oacinternal_upload_file(_api::PetApi, pet_id::Int64; additional_metadata=nothing, file=nothing, _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_upload_file_PetApi, "/pet/{petId}/uploadImage", ["petstore_auth", ])
OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64
OpenAPI.Clients.set_param(_ctx.form, "additionalMetadata", additional_metadata) # type String
OpenAPI.Clients.set_param(_ctx.file, "file", file) # type String
OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["multipart/form-data", ] : [_mediaType])
return _ctx
end
@doc raw"""uploads an image
Params:
- pet_id::Int64 (required)
- additional_metadata::String
- file::String
Return: ApiResponse, OpenAPI.Clients.ApiResponse
"""
function upload_file(_api::PetApi, pet_id::Int64; additional_metadata=nothing, file=nothing, _mediaType=nothing)
_ctx = _oacinternal_upload_file(_api, pet_id; additional_metadata=additional_metadata, file=file, _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function upload_file(_api::PetApi, response_stream::Channel, pet_id::Int64; additional_metadata=nothing, file=nothing, _mediaType=nothing)
_ctx = _oacinternal_upload_file(_api, pet_id; additional_metadata=additional_metadata, file=file, _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
export add_pet
export delete_pet
export find_pets_by_status
export find_pets_by_tags
export get_pet_by_id
export update_pet
export update_pet_with_form
export upload_file

View File

@ -0,0 +1,145 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
struct StoreApi <: OpenAPI.APIClientImpl
client::OpenAPI.Clients.Client
end
"""
The default API base path for APIs in `StoreApi`.
This can be used to construct the `OpenAPI.Clients.Client` instance.
"""
basepath(::Type{ StoreApi }) = "http://petstore.swagger.io/v2"
const _returntypes_delete_order_StoreApi = Dict{Regex,Type}(
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_delete_order(_api::StoreApi, order_id::String; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "DELETE", _returntypes_delete_order_StoreApi, "/store/order/{orderId}", [])
OpenAPI.Clients.set_param(_ctx.path, "orderId", order_id) # type String
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Delete purchase order by ID
For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
Params:
- order_id::String (required)
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function delete_order(_api::StoreApi, order_id::String; _mediaType=nothing)
_ctx = _oacinternal_delete_order(_api, order_id; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function delete_order(_api::StoreApi, response_stream::Channel, order_id::String; _mediaType=nothing)
_ctx = _oacinternal_delete_order(_api, order_id; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_get_inventory_StoreApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Dict{String, Int64},
)
function _oacinternal_get_inventory(_api::StoreApi; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_get_inventory_StoreApi, "/store/inventory", ["api_key", ])
OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Returns pet inventories by status
Returns a map of status codes to quantities
Params:
Return: Dict{String, Int64}, OpenAPI.Clients.ApiResponse
"""
function get_inventory(_api::StoreApi; _mediaType=nothing)
_ctx = _oacinternal_get_inventory(_api; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function get_inventory(_api::StoreApi, response_stream::Channel; _mediaType=nothing)
_ctx = _oacinternal_get_inventory(_api; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_get_order_by_id_StoreApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Order,
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_get_order_by_id(_api::StoreApi, order_id::Int64; _mediaType=nothing)
OpenAPI.validate_param("order_id", "get_order_by_id", :maximum, order_id, 5, false)
OpenAPI.validate_param("order_id", "get_order_by_id", :minimum, order_id, 1, false)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_get_order_by_id_StoreApi, "/store/order/{orderId}", [])
OpenAPI.Clients.set_param(_ctx.path, "orderId", order_id) # type Int64
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Find purchase order by ID
For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
Params:
- order_id::Int64 (required)
Return: Order, OpenAPI.Clients.ApiResponse
"""
function get_order_by_id(_api::StoreApi, order_id::Int64; _mediaType=nothing)
_ctx = _oacinternal_get_order_by_id(_api, order_id; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function get_order_by_id(_api::StoreApi, response_stream::Channel, order_id::Int64; _mediaType=nothing)
_ctx = _oacinternal_get_order_by_id(_api, order_id; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_place_order_StoreApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => Order,
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_place_order(_api::StoreApi, order::Order; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_place_order_StoreApi, "/store/order", [], order)
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", ] : [_mediaType])
return _ctx
end
@doc raw"""Place an order for a pet
Params:
- order::Order (required)
Return: Order, OpenAPI.Clients.ApiResponse
"""
function place_order(_api::StoreApi, order::Order; _mediaType=nothing)
_ctx = _oacinternal_place_order(_api, order; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function place_order(_api::StoreApi, response_stream::Channel, order::Order; _mediaType=nothing)
_ctx = _oacinternal_place_order(_api, order; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
export delete_order
export get_inventory
export get_order_by_id
export place_order

View File

@ -0,0 +1,273 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
struct UserApi <: OpenAPI.APIClientImpl
client::OpenAPI.Clients.Client
end
"""
The default API base path for APIs in `UserApi`.
This can be used to construct the `OpenAPI.Clients.Client` instance.
"""
basepath(::Type{ UserApi }) = "http://petstore.swagger.io/v2"
const _returntypes_create_user_UserApi = Dict{Regex,Type}(
Regex("^" * replace("0", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_create_user(_api::UserApi, user::User; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_create_user_UserApi, "/user", ["api_key", ], user)
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", ] : [_mediaType])
return _ctx
end
@doc raw"""Create user
This can only be done by the logged in user.
Params:
- user::User (required)
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function create_user(_api::UserApi, user::User; _mediaType=nothing)
_ctx = _oacinternal_create_user(_api, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function create_user(_api::UserApi, response_stream::Channel, user::User; _mediaType=nothing)
_ctx = _oacinternal_create_user(_api, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_create_users_with_array_input_UserApi = Dict{Regex,Type}(
Regex("^" * replace("0", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_create_users_with_array_input(_api::UserApi, user::Vector{User}; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_create_users_with_array_input_UserApi, "/user/createWithArray", ["api_key", ], user)
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", ] : [_mediaType])
return _ctx
end
@doc raw"""Creates list of users with given input array
Params:
- user::Vector{User} (required)
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function create_users_with_array_input(_api::UserApi, user::Vector{User}; _mediaType=nothing)
_ctx = _oacinternal_create_users_with_array_input(_api, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function create_users_with_array_input(_api::UserApi, response_stream::Channel, user::Vector{User}; _mediaType=nothing)
_ctx = _oacinternal_create_users_with_array_input(_api, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_create_users_with_list_input_UserApi = Dict{Regex,Type}(
Regex("^" * replace("0", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_create_users_with_list_input(_api::UserApi, user::Vector{User}; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_create_users_with_list_input_UserApi, "/user/createWithList", ["api_key", ], user)
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", ] : [_mediaType])
return _ctx
end
@doc raw"""Creates list of users with given input array
Params:
- user::Vector{User} (required)
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function create_users_with_list_input(_api::UserApi, user::Vector{User}; _mediaType=nothing)
_ctx = _oacinternal_create_users_with_list_input(_api, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function create_users_with_list_input(_api::UserApi, response_stream::Channel, user::Vector{User}; _mediaType=nothing)
_ctx = _oacinternal_create_users_with_list_input(_api, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_delete_user_UserApi = Dict{Regex,Type}(
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_delete_user(_api::UserApi, username::String; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "DELETE", _returntypes_delete_user_UserApi, "/user/{username}", ["api_key", ])
OpenAPI.Clients.set_param(_ctx.path, "username", username) # type String
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Delete user
This can only be done by the logged in user.
Params:
- username::String (required)
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function delete_user(_api::UserApi, username::String; _mediaType=nothing)
_ctx = _oacinternal_delete_user(_api, username; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function delete_user(_api::UserApi, response_stream::Channel, username::String; _mediaType=nothing)
_ctx = _oacinternal_delete_user(_api, username; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_get_user_by_name_UserApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => User,
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_get_user_by_name(_api::UserApi, username::String; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_get_user_by_name_UserApi, "/user/{username}", [])
OpenAPI.Clients.set_param(_ctx.path, "username", username) # type String
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Get user by user name
Params:
- username::String (required)
Return: User, OpenAPI.Clients.ApiResponse
"""
function get_user_by_name(_api::UserApi, username::String; _mediaType=nothing)
_ctx = _oacinternal_get_user_by_name(_api, username; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function get_user_by_name(_api::UserApi, response_stream::Channel, username::String; _mediaType=nothing)
_ctx = _oacinternal_get_user_by_name(_api, username; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_login_user_UserApi = Dict{Regex,Type}(
Regex("^" * replace("200", "x"=>".") * "\$") => String,
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_login_user(_api::UserApi, username::String, password::String; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_login_user_UserApi, "/user/login", [])
OpenAPI.Clients.set_param(_ctx.query, "username", username) # type String
OpenAPI.Clients.set_param(_ctx.query, "password", password) # type String
OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Logs user into the system
Params:
- username::String (required)
- password::String (required)
Return: String, OpenAPI.Clients.ApiResponse
"""
function login_user(_api::UserApi, username::String, password::String; _mediaType=nothing)
_ctx = _oacinternal_login_user(_api, username, password; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function login_user(_api::UserApi, response_stream::Channel, username::String, password::String; _mediaType=nothing)
_ctx = _oacinternal_login_user(_api, username, password; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_logout_user_UserApi = Dict{Regex,Type}(
Regex("^" * replace("0", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_logout_user(_api::UserApi; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_logout_user_UserApi, "/user/logout", ["api_key", ])
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType])
return _ctx
end
@doc raw"""Logs out current logged in user session
Params:
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function logout_user(_api::UserApi; _mediaType=nothing)
_ctx = _oacinternal_logout_user(_api; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function logout_user(_api::UserApi, response_stream::Channel; _mediaType=nothing)
_ctx = _oacinternal_logout_user(_api; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
const _returntypes_update_user_UserApi = Dict{Regex,Type}(
Regex("^" * replace("400", "x"=>".") * "\$") => Nothing,
Regex("^" * replace("404", "x"=>".") * "\$") => Nothing,
)
function _oacinternal_update_user(_api::UserApi, username::String, user::User; _mediaType=nothing)
_ctx = OpenAPI.Clients.Ctx(_api.client, "PUT", _returntypes_update_user_UserApi, "/user/{username}", ["api_key", ], user)
OpenAPI.Clients.set_param(_ctx.path, "username", username) # type String
OpenAPI.Clients.set_header_accept(_ctx, [])
OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json", ] : [_mediaType])
return _ctx
end
@doc raw"""Updated user
This can only be done by the logged in user.
Params:
- username::String (required)
- user::User (required)
Return: Nothing, OpenAPI.Clients.ApiResponse
"""
function update_user(_api::UserApi, username::String, user::User; _mediaType=nothing)
_ctx = _oacinternal_update_user(_api, username, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx)
end
function update_user(_api::UserApi, response_stream::Channel, username::String, user::User; _mediaType=nothing)
_ctx = _oacinternal_update_user(_api, username, user; _mediaType=_mediaType)
return OpenAPI.Clients.exec(_ctx, response_stream)
end
export create_user
export create_users_with_array_input
export create_users_with_list_input
export delete_user
export get_user_by_name
export login_user
export logout_user
export update_user

View File

@ -0,0 +1,9 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
include("models/model_ApiResponse.jl")
include("models/model_Category.jl")
include("models/model_Order.jl")
include("models/model_Pet.jl")
include("models/model_Tag.jl")
include("models/model_User.jl")

View File

@ -0,0 +1,42 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""ApiResponse
Describes the result of uploading an image resource
ApiResponse(;
code=nothing,
type=nothing,
message=nothing,
)
- code::Int64
- type::String
- message::String
"""
Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel
code::Union{Nothing, Int64} = nothing
type::Union{Nothing, String} = nothing
message::Union{Nothing, String} = nothing
function ApiResponse(code, type, message, )
OpenAPI.validate_property(ApiResponse, Symbol("code"), code)
OpenAPI.validate_property(ApiResponse, Symbol("type"), type)
OpenAPI.validate_property(ApiResponse, Symbol("message"), message)
return new(code, type, message, )
end
end # type ApiResponse
const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("code")=>"Int64", Symbol("type")=>"String", Symbol("message")=>"String", )
OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))}
function check_required(o::ApiResponse)
true
end
function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val)
if name === Symbol("code")
OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32")
end
end

View File

@ -0,0 +1,41 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""Category
A category for a pet
Category(;
id=nothing,
name=nothing,
)
- id::Int64
- name::String
"""
Base.@kwdef mutable struct Category <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
name::Union{Nothing, String} = nothing
function Category(id, name, )
OpenAPI.validate_property(Category, Symbol("id"), id)
OpenAPI.validate_property(Category, Symbol("name"), name)
return new(id, name, )
end
end # type Category
const _property_types_Category = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", )
OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))}
function check_required(o::Category)
true
end
function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Category", :format, val, "int64")
end
if name === Symbol("name")
OpenAPI.validate_param(name, "Category", :pattern, val, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$")
end
end

View File

@ -0,0 +1,66 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""Order
An order for a pets from the pet store
Order(;
id=nothing,
petId=nothing,
quantity=nothing,
shipDate=nothing,
status=nothing,
complete=false,
)
- id::Int64
- petId::Int64
- quantity::Int64
- shipDate::ZonedDateTime
- status::String : Order Status
- complete::Bool
"""
Base.@kwdef mutable struct Order <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
petId::Union{Nothing, Int64} = nothing
quantity::Union{Nothing, Int64} = nothing
shipDate::Union{Nothing, ZonedDateTime} = nothing
status::Union{Nothing, String} = nothing
complete::Union{Nothing, Bool} = false
function Order(id, petId, quantity, shipDate, status, complete, )
OpenAPI.validate_property(Order, Symbol("id"), id)
OpenAPI.validate_property(Order, Symbol("petId"), petId)
OpenAPI.validate_property(Order, Symbol("quantity"), quantity)
OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate)
OpenAPI.validate_property(Order, Symbol("status"), status)
OpenAPI.validate_property(Order, Symbol("complete"), complete)
return new(id, petId, quantity, shipDate, status, complete, )
end
end # type Order
const _property_types_Order = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("petId")=>"Int64", Symbol("quantity")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("complete")=>"Bool", )
OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))}
function check_required(o::Order)
true
end
function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Order", :format, val, "int64")
end
if name === Symbol("petId")
OpenAPI.validate_param(name, "Order", :format, val, "int64")
end
if name === Symbol("quantity")
OpenAPI.validate_param(name, "Order", :format, val, "int32")
end
if name === Symbol("shipDate")
OpenAPI.validate_param(name, "Order", :format, val, "date-time")
end
if name === Symbol("status")
OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"])
end
end

View File

@ -0,0 +1,59 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""Pet
A pet for sale in the pet store
Pet(;
id=nothing,
category=nothing,
name=nothing,
photoUrls=nothing,
tags=nothing,
status=nothing,
)
- id::Int64
- category::Category
- name::String
- photoUrls::Vector{String}
- tags::Vector{Tag}
- status::String : pet status in the store
"""
Base.@kwdef mutable struct Pet <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
category = nothing # spec type: Union{ Nothing, Category }
name::Union{Nothing, String} = nothing
photoUrls::Union{Nothing, Vector{String}} = nothing
tags::Union{Nothing, Vector} = nothing # spec type: Union{ Nothing, Vector{Tag} }
status::Union{Nothing, String} = nothing
function Pet(id, category, name, photoUrls, tags, status, )
OpenAPI.validate_property(Pet, Symbol("id"), id)
OpenAPI.validate_property(Pet, Symbol("category"), category)
OpenAPI.validate_property(Pet, Symbol("name"), name)
OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls)
OpenAPI.validate_property(Pet, Symbol("tags"), tags)
OpenAPI.validate_property(Pet, Symbol("status"), status)
return new(id, category, name, photoUrls, tags, status, )
end
end # type Pet
const _property_types_Pet = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("category")=>"Category", Symbol("name")=>"String", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("status")=>"String", )
OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))}
function check_required(o::Pet)
o.name === nothing && (return false)
o.photoUrls === nothing && (return false)
true
end
function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Pet", :format, val, "int64")
end
if name === Symbol("status")
OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"])
end
end

View File

@ -0,0 +1,38 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""Tag
A tag for a pet
Tag(;
id=nothing,
name=nothing,
)
- id::Int64
- name::String
"""
Base.@kwdef mutable struct Tag <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
name::Union{Nothing, String} = nothing
function Tag(id, name, )
OpenAPI.validate_property(Tag, Symbol("id"), id)
OpenAPI.validate_property(Tag, Symbol("name"), name)
return new(id, name, )
end
end # type Tag
const _property_types_Tag = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", )
OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))}
function check_required(o::Tag)
true
end
function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Tag", :format, val, "int64")
end
end

View File

@ -0,0 +1,65 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""User
A User who is purchasing from the pet store
User(;
id=nothing,
username=nothing,
firstName=nothing,
lastName=nothing,
email=nothing,
password=nothing,
phone=nothing,
userStatus=nothing,
)
- id::Int64
- username::String
- firstName::String
- lastName::String
- email::String
- password::String
- phone::String
- userStatus::Int64 : User Status
"""
Base.@kwdef mutable struct User <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
username::Union{Nothing, String} = nothing
firstName::Union{Nothing, String} = nothing
lastName::Union{Nothing, String} = nothing
email::Union{Nothing, String} = nothing
password::Union{Nothing, String} = nothing
phone::Union{Nothing, String} = nothing
userStatus::Union{Nothing, Int64} = nothing
function User(id, username, firstName, lastName, email, password, phone, userStatus, )
OpenAPI.validate_property(User, Symbol("id"), id)
OpenAPI.validate_property(User, Symbol("username"), username)
OpenAPI.validate_property(User, Symbol("firstName"), firstName)
OpenAPI.validate_property(User, Symbol("lastName"), lastName)
OpenAPI.validate_property(User, Symbol("email"), email)
OpenAPI.validate_property(User, Symbol("password"), password)
OpenAPI.validate_property(User, Symbol("phone"), phone)
OpenAPI.validate_property(User, Symbol("userStatus"), userStatus)
return new(id, username, firstName, lastName, email, password, phone, userStatus, )
end
end # type User
const _property_types_User = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("email")=>"String", Symbol("password")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", )
OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))}
function check_required(o::User)
true
end
function OpenAPI.validate_property(::Type{ User }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "User", :format, val, "int64")
end
if name === Symbol("userStatus")
OpenAPI.validate_param(name, "User", :format, val, "int32")
end
end

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1,21 @@
README.md
docs/ApiResponse.md
docs/Category.md
docs/Order.md
docs/Pet.md
docs/PetApi.md
docs/StoreApi.md
docs/Tag.md
docs/User.md
docs/UserApi.md
src/PetStoreServer.jl
src/apis/api_PetApi.jl
src/apis/api_StoreApi.jl
src/apis/api_UserApi.jl
src/modelincludes.jl
src/models/model_ApiResponse.jl
src/models/model_Category.jl
src/models/model_Order.jl
src/models/model_Pet.jl
src/models/model_Tag.jl
src/models/model_User.jl

View File

@ -0,0 +1 @@
6.3.0-SNAPSHOT

View File

@ -0,0 +1,81 @@
# Julia API server for PetStoreServer
This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
## Overview
This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client.
- API version: 1.0.0
- Build package: org.openapitools.codegen.languages.JuliaServerCodegen
## Installation
Place the Julia files generated under the `src` folder in your Julia project. Include PetStoreServer.jl in the project code.
It would include the module named PetStoreServer.
Implement the server methods as listed below. They are also documented with the PetStoreServer module.
Launch a HTTP server with a router that has all handlers registered. A `register` method is provided in PetStoreServer module for convenience.
```julia
register(
router::HTTP.Router, # Router to register handlers in
impl; # Module that implements the server methods
path_prefix::String="", # Prefix to be applied to all paths
optional_middlewares... # Optional middlewares to be applied to all handlers
)
```
Optional middlewares can be one or more of:
- `init`: called before the request is processed
- `pre_validation`: called after the request is parsed but before validation
- `pre_invoke`: called after validation but before the handler is invoked
- `post_invoke`: called after the handler is invoked but before the response is sent
The order in which middlewares are invoked are:
`init |> read |> pre_validation |> validate |> pre_invoke |> invoke |> post_invoke`
## API Endpoints
The following server methods must be implemented:
Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*PetApi* | [**add_pet**](docs/PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store
*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet
*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status
*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags
*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID
*PetApi* | [**update_pet**](docs/PetApi.md#update_pet) | **PUT** /pet | Update an existing pet
*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data
*PetApi* | [**upload_file**](docs/PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image
*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status
*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID
*StoreApi* | [**place_order**](docs/StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet
*UserApi* | [**create_user**](docs/UserApi.md#create_user) | **POST** /user | Create user
*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array
*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array
*UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user
*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name
*UserApi* | [**login_user**](docs/UserApi.md#login_user) | **GET** /user/login | Logs user into the system
*UserApi* | [**logout_user**](docs/UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session
*UserApi* | [**update_user**](docs/UserApi.md#update_user) | **PUT** /user/{username} | Updated user
## Models
- [ApiResponse](docs/ApiResponse.md)
- [Category](docs/Category.md)
- [Order](docs/Order.md)
- [Pet](docs/Pet.md)
- [Tag](docs/Tag.md)
- [User](docs/User.md)
## Author

View File

@ -0,0 +1,14 @@
# ApiResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**code** | **Int64** | | [optional] [default to nothing]
**type** | **String** | | [optional] [default to nothing]
**message** | **String** | | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,13 @@
# Category
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**name** | **String** | | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,17 @@
# Order
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**petId** | **Int64** | | [optional] [default to nothing]
**quantity** | **Int64** | | [optional] [default to nothing]
**shipDate** | **ZonedDateTime** | | [optional] [default to nothing]
**status** | **String** | Order Status | [optional] [default to nothing]
**complete** | **Bool** | | [optional] [default to false]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,17 @@
# Pet
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**category** | [***Category**](Category.md) | | [optional] [default to nothing]
**name** | **String** | | [default to nothing]
**photoUrls** | **Vector{String}** | | [default to nothing]
**tags** | [**Vector{Tag}**](Tag.md) | | [optional] [default to nothing]
**status** | **String** | pet status in the store | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,268 @@
# PetApi
All URIs are relative to *http://petstore.swagger.io/v2*
Method | HTTP request | Description
------------- | ------------- | -------------
[**add_pet**](PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store
[**delete_pet**](PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet
[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status
[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags
[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID
[**update_pet**](PetApi.md#update_pet) | **PUT** /pet | Update an existing pet
[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data
[**upload_file**](PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image
# **add_pet**
> add_pet(req::HTTP.Request, pet::Pet;) -> Pet
Add a new pet to the store
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
### Return type
[**Pet**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: application/json, application/xml
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **delete_pet**
> delete_pet(req::HTTP.Request, pet_id::Int64; api_key=nothing,) -> Nothing
Deletes a pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**pet_id** | **Int64**| Pet id to delete | [default to nothing]
### Optional Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**api_key** | **String**| | [default to nothing]
### Return type
Nothing
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **find_pets_by_status**
> find_pets_by_status(req::HTTP.Request, status::Vector{String};) -> Vector{Pet}
Finds Pets by status
Multiple status values can be provided with comma separated strings
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing]
### Return type
[**Vector{Pet}**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **find_pets_by_tags**
> find_pets_by_tags(req::HTTP.Request, tags::Vector{String};) -> Vector{Pet}
Finds Pets by tags
Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing]
### Return type
[**Vector{Pet}**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **get_pet_by_id**
> get_pet_by_id(req::HTTP.Request, pet_id::Int64;) -> Pet
Find pet by ID
Returns a single pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**pet_id** | **Int64**| ID of pet to return | [default to nothing]
### Return type
[**Pet**](Pet.md)
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **update_pet**
> update_pet(req::HTTP.Request, pet::Pet;) -> Pet
Update an existing pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
### Return type
[**Pet**](Pet.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: application/json, application/xml
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **update_pet_with_form**
> update_pet_with_form(req::HTTP.Request, pet_id::Int64; name=nothing, status=nothing,) -> Nothing
Updates a pet in the store with form data
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing]
### Optional Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**name** | **String**| Updated name of the pet | [default to nothing]
**status** | **String**| Updated status of the pet | [default to nothing]
### Return type
Nothing
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: application/x-www-form-urlencoded
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **upload_file**
> upload_file(req::HTTP.Request, pet_id::Int64; additional_metadata=nothing, file=nothing,) -> ApiResponse
uploads an image
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**pet_id** | **Int64**| ID of pet to update | [default to nothing]
### Optional Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**additional_metadata** | **String**| Additional data to pass to server | [default to nothing]
**file** | **String****String**| file to upload | [default to nothing]
### Return type
[**ApiResponse**](ApiResponse.md)
### Authorization
[petstore_auth](../README.md#petstore_auth)
### HTTP request headers
- **Content-Type**: multipart/form-data
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)

View File

@ -0,0 +1,124 @@
# StoreApi
All URIs are relative to *http://petstore.swagger.io/v2*
Method | HTTP request | Description
------------- | ------------- | -------------
[**delete_order**](StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
[**get_inventory**](StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status
[**get_order_by_id**](StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID
[**place_order**](StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet
# **delete_order**
> delete_order(req::HTTP.Request, order_id::String;) -> Nothing
Delete purchase order by ID
For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**order_id** | **String**| ID of the order that needs to be deleted | [default to nothing]
### Return type
Nothing
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **get_inventory**
> get_inventory(req::HTTP.Request;) -> Dict{String, Int64}
Returns pet inventories by status
Returns a map of status codes to quantities
### Required Parameters
This endpoint does not need any parameter.
### Return type
**Dict{String, Int64}**
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **get_order_by_id**
> get_order_by_id(req::HTTP.Request, order_id::Int64;) -> Order
Find purchase order by ID
For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing]
### Return type
[**Order**](Order.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **place_order**
> place_order(req::HTTP.Request, order::Order;) -> Order
Place an order for a pet
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**order** | [**Order**](Order.md)| order placed for purchasing the pet |
### Return type
[**Order**](Order.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)

View File

@ -0,0 +1,13 @@
# Tag
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**name** | **String** | | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,19 @@
# User
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **Int64** | | [optional] [default to nothing]
**username** | **String** | | [optional] [default to nothing]
**firstName** | **String** | | [optional] [default to nothing]
**lastName** | **String** | | [optional] [default to nothing]
**email** | **String** | | [optional] [default to nothing]
**password** | **String** | | [optional] [default to nothing]
**phone** | **String** | | [optional] [default to nothing]
**userStatus** | **Int64** | User Status | [optional] [default to nothing]
[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,246 @@
# UserApi
All URIs are relative to *http://petstore.swagger.io/v2*
Method | HTTP request | Description
------------- | ------------- | -------------
[**create_user**](UserApi.md#create_user) | **POST** /user | Create user
[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array
[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array
[**delete_user**](UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user
[**get_user_by_name**](UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name
[**login_user**](UserApi.md#login_user) | **GET** /user/login | Logs user into the system
[**logout_user**](UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session
[**update_user**](UserApi.md#update_user) | **PUT** /user/{username} | Updated user
# **create_user**
> create_user(req::HTTP.Request, user::User;) -> Nothing
Create user
This can only be done by the logged in user.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**user** | [**User**](User.md)| Created user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **create_users_with_array_input**
> create_users_with_array_input(req::HTTP.Request, user::Vector{User};) -> Nothing
Creates list of users with given input array
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**user** | [**Vector{User}**](User.md)| List of user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **create_users_with_list_input**
> create_users_with_list_input(req::HTTP.Request, user::Vector{User};) -> Nothing
Creates list of users with given input array
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**user** | [**Vector{User}**](User.md)| List of user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **delete_user**
> delete_user(req::HTTP.Request, username::String;) -> Nothing
Delete user
This can only be done by the logged in user.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**username** | **String**| The name that needs to be deleted | [default to nothing]
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **get_user_by_name**
> get_user_by_name(req::HTTP.Request, username::String;) -> User
Get user by user name
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing]
### Return type
[**User**](User.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **login_user**
> login_user(req::HTTP.Request, username::String, password::String;) -> String
Logs user into the system
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**username** | **String**| The user name for login | [default to nothing]
**password** | **String**| The password for login in clear text | [default to nothing]
### Return type
**String**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/xml, application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **logout_user**
> logout_user(req::HTTP.Request;) -> Nothing
Logs out current logged in user session
### Required Parameters
This endpoint does not need any parameter.
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **update_user**
> update_user(req::HTTP.Request, username::String, user::User;) -> Nothing
Updated user
This can only be done by the logged in user.
### Required Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**req** | **HTTP.Request** | The HTTP Request object |
**username** | **String**| name that need to be deleted | [default to nothing]
**user** | [**User**](User.md)| Updated user object |
### Return type
Nothing
### Authorization
[api_key](../README.md#api_key)
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)

View File

@ -0,0 +1,115 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""
Encapsulates generated server code for PetStoreServer
The following server methods must be implemented:
- **add_pet**
- *invocation:* POST /pet
- *signature:* add_pet(req::HTTP.Request, pet::Pet;) -> Pet
- **delete_pet**
- *invocation:* DELETE /pet/{petId}
- *signature:* delete_pet(req::HTTP.Request, pet_id::Int64; api_key=nothing,) -> Nothing
- **find_pets_by_status**
- *invocation:* GET /pet/findByStatus
- *signature:* find_pets_by_status(req::HTTP.Request, status::Vector{String};) -> Vector{Pet}
- **find_pets_by_tags**
- *invocation:* GET /pet/findByTags
- *signature:* find_pets_by_tags(req::HTTP.Request, tags::Vector{String};) -> Vector{Pet}
- **get_pet_by_id**
- *invocation:* GET /pet/{petId}
- *signature:* get_pet_by_id(req::HTTP.Request, pet_id::Int64;) -> Pet
- **update_pet**
- *invocation:* PUT /pet
- *signature:* update_pet(req::HTTP.Request, pet::Pet;) -> Pet
- **update_pet_with_form**
- *invocation:* POST /pet/{petId}
- *signature:* update_pet_with_form(req::HTTP.Request, pet_id::Int64; name=nothing, status=nothing,) -> Nothing
- **upload_file**
- *invocation:* POST /pet/{petId}/uploadImage
- *signature:* upload_file(req::HTTP.Request, pet_id::Int64; additional_metadata=nothing, file=nothing,) -> ApiResponse
- **delete_order**
- *invocation:* DELETE /store/order/{orderId}
- *signature:* delete_order(req::HTTP.Request, order_id::String;) -> Nothing
- **get_inventory**
- *invocation:* GET /store/inventory
- *signature:* get_inventory(req::HTTP.Request;) -> Dict{String, Int64}
- **get_order_by_id**
- *invocation:* GET /store/order/{orderId}
- *signature:* get_order_by_id(req::HTTP.Request, order_id::Int64;) -> Order
- **place_order**
- *invocation:* POST /store/order
- *signature:* place_order(req::HTTP.Request, order::Order;) -> Order
- **create_user**
- *invocation:* POST /user
- *signature:* create_user(req::HTTP.Request, user::User;) -> Nothing
- **create_users_with_array_input**
- *invocation:* POST /user/createWithArray
- *signature:* create_users_with_array_input(req::HTTP.Request, user::Vector{User};) -> Nothing
- **create_users_with_list_input**
- *invocation:* POST /user/createWithList
- *signature:* create_users_with_list_input(req::HTTP.Request, user::Vector{User};) -> Nothing
- **delete_user**
- *invocation:* DELETE /user/{username}
- *signature:* delete_user(req::HTTP.Request, username::String;) -> Nothing
- **get_user_by_name**
- *invocation:* GET /user/{username}
- *signature:* get_user_by_name(req::HTTP.Request, username::String;) -> User
- **login_user**
- *invocation:* GET /user/login
- *signature:* login_user(req::HTTP.Request, username::String, password::String;) -> String
- **logout_user**
- *invocation:* GET /user/logout
- *signature:* logout_user(req::HTTP.Request;) -> Nothing
- **update_user**
- *invocation:* PUT /user/{username}
- *signature:* update_user(req::HTTP.Request, username::String, user::User;) -> Nothing
"""
module PetStoreServer
using HTTP
using URIs
using Dates
using TimeZones
using OpenAPI
using OpenAPI.Servers
const API_VERSION = "1.0.0"
include("modelincludes.jl")
include("apis/api_PetApi.jl")
include("apis/api_StoreApi.jl")
include("apis/api_UserApi.jl")
"""
Register handlers for all APIs in this module in the supplied `Router` instance.
Paramerets:
- `router`: Router to register handlers in
- `impl`: module that implements the server methods
Optional parameters:
- `path_prefix`: prefix to be applied to all paths
- `optional_middlewares`: Register one or more optional middlewares to be applied to all requests.
Optional middlewares can be one or more of:
- `init`: called before the request is processed
- `pre_validation`: called after the request is parsed but before validation
- `pre_invoke`: called after validation but before the handler is invoked
- `post_invoke`: called after the handler is invoked but before the response is sent
The order in which middlewares are invoked are:
`init |> read |> pre_validation |> validate |> pre_invoke |> invoke |> post_invoke`
"""
function register(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
registerPetApi(router, impl; path_prefix=path_prefix, optional_middlewares...)
registerStoreApi(router, impl; path_prefix=path_prefix, optional_middlewares...)
registerUserApi(router, impl; path_prefix=path_prefix, optional_middlewares...)
return router
end
end # module PetStoreServer

View File

@ -0,0 +1,246 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
function add_pet_read(handler)
function add_pet_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
openapi_params["Pet"] = OpenAPI.Servers.to_param_type(Pet, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function add_pet_validate(handler)
function add_pet_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function add_pet_invoke(impl; post_invoke=nothing)
function add_pet_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.add_pet(req::HTTP.Request, openapi_params["Pet"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function delete_pet_read(handler)
function delete_pet_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["petId"] = OpenAPI.Servers.to_param(Int64, path_params, "petId", required=true, )
headers = Dict{String,String}(HTTP.headers(req))
openapi_params["api_key"] = OpenAPI.Servers.to_param(String, headers, "api_key", )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function delete_pet_validate(handler)
function delete_pet_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function delete_pet_invoke(impl; post_invoke=nothing)
function delete_pet_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.delete_pet(req::HTTP.Request, openapi_params["petId"]; api_key=get(openapi_params, "api_key", nothing),)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function find_pets_by_status_read(handler)
function find_pets_by_status_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
query_params = HTTP.queryparams(URIs.URI(req.target))
openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function find_pets_by_status_validate(handler)
function find_pets_by_status_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function find_pets_by_status_invoke(impl; post_invoke=nothing)
function find_pets_by_status_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.find_pets_by_status(req::HTTP.Request, openapi_params["status"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function find_pets_by_tags_read(handler)
function find_pets_by_tags_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
query_params = HTTP.queryparams(URIs.URI(req.target))
openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function find_pets_by_tags_validate(handler)
function find_pets_by_tags_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function find_pets_by_tags_invoke(impl; post_invoke=nothing)
function find_pets_by_tags_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.find_pets_by_tags(req::HTTP.Request, openapi_params["tags"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function get_pet_by_id_read(handler)
function get_pet_by_id_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["petId"] = OpenAPI.Servers.to_param(Int64, path_params, "petId", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function get_pet_by_id_validate(handler)
function get_pet_by_id_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function get_pet_by_id_invoke(impl; post_invoke=nothing)
function get_pet_by_id_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.get_pet_by_id(req::HTTP.Request, openapi_params["petId"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function update_pet_read(handler)
function update_pet_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
openapi_params["Pet"] = OpenAPI.Servers.to_param_type(Pet, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function update_pet_validate(handler)
function update_pet_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function update_pet_invoke(impl; post_invoke=nothing)
function update_pet_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.update_pet(req::HTTP.Request, openapi_params["Pet"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function update_pet_with_form_read(handler)
function update_pet_with_form_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["petId"] = OpenAPI.Servers.to_param(Int64, path_params, "petId", required=true, )
form_data = HTTP.parse_multipart_form(req)
openapi_params["name"] = OpenAPI.Servers.to_param(String, form_data, "name"; multipart=true, isfile=false, )
openapi_params["status"] = OpenAPI.Servers.to_param(String, form_data, "status"; multipart=true, isfile=false, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function update_pet_with_form_validate(handler)
function update_pet_with_form_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function update_pet_with_form_invoke(impl; post_invoke=nothing)
function update_pet_with_form_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.update_pet_with_form(req::HTTP.Request, openapi_params["petId"]; name=get(openapi_params, "name", nothing), status=get(openapi_params, "status", nothing),)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function upload_file_read(handler)
function upload_file_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["petId"] = OpenAPI.Servers.to_param(Int64, path_params, "petId", required=true, )
form_data = HTTP.parse_multipart_form(req)
openapi_params["additionalMetadata"] = OpenAPI.Servers.to_param(String, form_data, "additionalMetadata"; multipart=true, isfile=false, )
openapi_params["file"] = OpenAPI.Servers.to_param(String, form_data, "file"; multipart=true, isfile=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function upload_file_validate(handler)
function upload_file_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function upload_file_invoke(impl; post_invoke=nothing)
function upload_file_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.upload_file(req::HTTP.Request, openapi_params["petId"]; additional_metadata=get(openapi_params, "additionalMetadata", nothing), file=get(openapi_params, "file", nothing),)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function registerPetApi(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
HTTP.register!(router, "POST", path_prefix * "/pet", OpenAPI.Servers.middleware(impl, add_pet_read, add_pet_validate, add_pet_invoke; optional_middlewares...))
HTTP.register!(router, "DELETE", path_prefix * "/pet/{petId}", OpenAPI.Servers.middleware(impl, delete_pet_read, delete_pet_validate, delete_pet_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/pet/findByStatus", OpenAPI.Servers.middleware(impl, find_pets_by_status_read, find_pets_by_status_validate, find_pets_by_status_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/pet/findByTags", OpenAPI.Servers.middleware(impl, find_pets_by_tags_read, find_pets_by_tags_validate, find_pets_by_tags_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/pet/{petId}", OpenAPI.Servers.middleware(impl, get_pet_by_id_read, get_pet_by_id_validate, get_pet_by_id_invoke; optional_middlewares...))
HTTP.register!(router, "PUT", path_prefix * "/pet", OpenAPI.Servers.middleware(impl, update_pet_read, update_pet_validate, update_pet_invoke; optional_middlewares...))
HTTP.register!(router, "POST", path_prefix * "/pet/{petId}", OpenAPI.Servers.middleware(impl, update_pet_with_form_read, update_pet_with_form_validate, update_pet_with_form_invoke; optional_middlewares...))
HTTP.register!(router, "POST", path_prefix * "/pet/{petId}/uploadImage", OpenAPI.Servers.middleware(impl, upload_file_read, upload_file_validate, upload_file_invoke; optional_middlewares...))
return router
end

View File

@ -0,0 +1,124 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
function delete_order_read(handler)
function delete_order_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["orderId"] = OpenAPI.Servers.to_param(String, path_params, "orderId", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function delete_order_validate(handler)
function delete_order_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function delete_order_invoke(impl; post_invoke=nothing)
function delete_order_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.delete_order(req::HTTP.Request, openapi_params["orderId"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function get_inventory_read(handler)
function get_inventory_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function get_inventory_validate(handler)
function get_inventory_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function get_inventory_invoke(impl; post_invoke=nothing)
function get_inventory_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.get_inventory(req::HTTP.Request;)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function get_order_by_id_read(handler)
function get_order_by_id_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["orderId"] = OpenAPI.Servers.to_param(Int64, path_params, "orderId", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function get_order_by_id_validate(handler)
function get_order_by_id_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
OpenAPI.validate_param("orderId", "get_order_by_id", :maximum, openapi_params["orderId"], 5, false)
OpenAPI.validate_param("orderId", "get_order_by_id", :minimum, openapi_params["orderId"], 1, false)
return handler(req)
end
end
function get_order_by_id_invoke(impl; post_invoke=nothing)
function get_order_by_id_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.get_order_by_id(req::HTTP.Request, openapi_params["orderId"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function place_order_read(handler)
function place_order_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
openapi_params["Order"] = OpenAPI.Servers.to_param_type(Order, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function place_order_validate(handler)
function place_order_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function place_order_invoke(impl; post_invoke=nothing)
function place_order_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.place_order(req::HTTP.Request, openapi_params["Order"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function registerStoreApi(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
HTTP.register!(router, "DELETE", path_prefix * "/store/order/{orderId}", OpenAPI.Servers.middleware(impl, delete_order_read, delete_order_validate, delete_order_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/store/inventory", OpenAPI.Servers.middleware(impl, get_inventory_read, get_inventory_validate, get_inventory_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/store/order/{orderId}", OpenAPI.Servers.middleware(impl, get_order_by_id_read, get_order_by_id_validate, get_order_by_id_invoke; optional_middlewares...))
HTTP.register!(router, "POST", path_prefix * "/store/order", OpenAPI.Servers.middleware(impl, place_order_read, place_order_validate, place_order_invoke; optional_middlewares...))
return router
end

View File

@ -0,0 +1,238 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
function create_user_read(handler)
function create_user_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
openapi_params["User"] = OpenAPI.Servers.to_param_type(User, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function create_user_validate(handler)
function create_user_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function create_user_invoke(impl; post_invoke=nothing)
function create_user_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.create_user(req::HTTP.Request, openapi_params["User"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function create_users_with_array_input_read(handler)
function create_users_with_array_input_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
openapi_params["User"] = OpenAPI.Servers.to_param_type(Vector{User}, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function create_users_with_array_input_validate(handler)
function create_users_with_array_input_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function create_users_with_array_input_invoke(impl; post_invoke=nothing)
function create_users_with_array_input_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.create_users_with_array_input(req::HTTP.Request, openapi_params["User"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function create_users_with_list_input_read(handler)
function create_users_with_list_input_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
openapi_params["User"] = OpenAPI.Servers.to_param_type(Vector{User}, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function create_users_with_list_input_validate(handler)
function create_users_with_list_input_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function create_users_with_list_input_invoke(impl; post_invoke=nothing)
function create_users_with_list_input_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.create_users_with_list_input(req::HTTP.Request, openapi_params["User"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function delete_user_read(handler)
function delete_user_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["username"] = OpenAPI.Servers.to_param(String, path_params, "username", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function delete_user_validate(handler)
function delete_user_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function delete_user_invoke(impl; post_invoke=nothing)
function delete_user_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.delete_user(req::HTTP.Request, openapi_params["username"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function get_user_by_name_read(handler)
function get_user_by_name_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["username"] = OpenAPI.Servers.to_param(String, path_params, "username", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function get_user_by_name_validate(handler)
function get_user_by_name_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function get_user_by_name_invoke(impl; post_invoke=nothing)
function get_user_by_name_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.get_user_by_name(req::HTTP.Request, openapi_params["username"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function login_user_read(handler)
function login_user_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
query_params = HTTP.queryparams(URIs.URI(req.target))
openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, )
openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, )
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function login_user_validate(handler)
function login_user_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function login_user_invoke(impl; post_invoke=nothing)
function login_user_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.login_user(req::HTTP.Request, openapi_params["username"], openapi_params["password"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function logout_user_read(handler)
function logout_user_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function logout_user_validate(handler)
function logout_user_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function logout_user_invoke(impl; post_invoke=nothing)
function logout_user_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.logout_user(req::HTTP.Request;)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function update_user_read(handler)
function update_user_read_handler(req::HTTP.Request)
openapi_params = Dict{String,Any}()
path_params = HTTP.getparams(req)
openapi_params["username"] = OpenAPI.Servers.to_param(String, path_params, "username", required=true, )
openapi_params["User"] = OpenAPI.Servers.to_param_type(User, String(req.body))
req.context[:openapi_params] = openapi_params
return handler(req)
end
end
function update_user_validate(handler)
function update_user_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
return handler(req)
end
end
function update_user_invoke(impl; post_invoke=nothing)
function update_user_invoke_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
ret = impl.update_user(req::HTTP.Request, openapi_params["username"], openapi_params["User"];)
resp = OpenAPI.Servers.server_response(ret)
return (post_invoke === nothing) ? resp : post_invoke(req, resp)
end
end
function registerUserApi(router::HTTP.Router, impl; path_prefix::String="", optional_middlewares...)
HTTP.register!(router, "POST", path_prefix * "/user", OpenAPI.Servers.middleware(impl, create_user_read, create_user_validate, create_user_invoke; optional_middlewares...))
HTTP.register!(router, "POST", path_prefix * "/user/createWithArray", OpenAPI.Servers.middleware(impl, create_users_with_array_input_read, create_users_with_array_input_validate, create_users_with_array_input_invoke; optional_middlewares...))
HTTP.register!(router, "POST", path_prefix * "/user/createWithList", OpenAPI.Servers.middleware(impl, create_users_with_list_input_read, create_users_with_list_input_validate, create_users_with_list_input_invoke; optional_middlewares...))
HTTP.register!(router, "DELETE", path_prefix * "/user/{username}", OpenAPI.Servers.middleware(impl, delete_user_read, delete_user_validate, delete_user_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/user/{username}", OpenAPI.Servers.middleware(impl, get_user_by_name_read, get_user_by_name_validate, get_user_by_name_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/user/login", OpenAPI.Servers.middleware(impl, login_user_read, login_user_validate, login_user_invoke; optional_middlewares...))
HTTP.register!(router, "GET", path_prefix * "/user/logout", OpenAPI.Servers.middleware(impl, logout_user_read, logout_user_validate, logout_user_invoke; optional_middlewares...))
HTTP.register!(router, "PUT", path_prefix * "/user/{username}", OpenAPI.Servers.middleware(impl, update_user_read, update_user_validate, update_user_invoke; optional_middlewares...))
return router
end

View File

@ -0,0 +1,9 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
include("models/model_ApiResponse.jl")
include("models/model_Category.jl")
include("models/model_Order.jl")
include("models/model_Pet.jl")
include("models/model_Tag.jl")
include("models/model_User.jl")

View File

@ -0,0 +1,41 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""Describes the result of uploading an image resource
ApiResponse(;
code=nothing,
type=nothing,
message=nothing,
)
- code::Int64
- type::String
- message::String
"""
Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel
code::Union{Nothing, Int64} = nothing
type::Union{Nothing, String} = nothing
message::Union{Nothing, String} = nothing
function ApiResponse(code, type, message, )
OpenAPI.validate_property(ApiResponse, Symbol("code"), code)
OpenAPI.validate_property(ApiResponse, Symbol("type"), type)
OpenAPI.validate_property(ApiResponse, Symbol("message"), message)
return new(code, type, message, )
end
end # type ApiResponse
const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("code")=>"Int64", Symbol("type")=>"String", Symbol("message")=>"String", )
OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))}
function check_required(o::ApiResponse)
true
end
function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val)
if name === Symbol("code")
OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32")
end
end

View File

@ -0,0 +1,40 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""A category for a pet
Category(;
id=nothing,
name=nothing,
)
- id::Int64
- name::String
"""
Base.@kwdef mutable struct Category <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
name::Union{Nothing, String} = nothing
function Category(id, name, )
OpenAPI.validate_property(Category, Symbol("id"), id)
OpenAPI.validate_property(Category, Symbol("name"), name)
return new(id, name, )
end
end # type Category
const _property_types_Category = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", )
OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))}
function check_required(o::Category)
true
end
function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Category", :format, val, "int64")
end
if name === Symbol("name")
OpenAPI.validate_param(name, "Category", :pattern, val, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$")
end
end

View File

@ -0,0 +1,65 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""An order for a pets from the pet store
Order(;
id=nothing,
petId=nothing,
quantity=nothing,
shipDate=nothing,
status=nothing,
complete=false,
)
- id::Int64
- petId::Int64
- quantity::Int64
- shipDate::ZonedDateTime
- status::String : Order Status
- complete::Bool
"""
Base.@kwdef mutable struct Order <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
petId::Union{Nothing, Int64} = nothing
quantity::Union{Nothing, Int64} = nothing
shipDate::Union{Nothing, ZonedDateTime} = nothing
status::Union{Nothing, String} = nothing
complete::Union{Nothing, Bool} = false
function Order(id, petId, quantity, shipDate, status, complete, )
OpenAPI.validate_property(Order, Symbol("id"), id)
OpenAPI.validate_property(Order, Symbol("petId"), petId)
OpenAPI.validate_property(Order, Symbol("quantity"), quantity)
OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate)
OpenAPI.validate_property(Order, Symbol("status"), status)
OpenAPI.validate_property(Order, Symbol("complete"), complete)
return new(id, petId, quantity, shipDate, status, complete, )
end
end # type Order
const _property_types_Order = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("petId")=>"Int64", Symbol("quantity")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("complete")=>"Bool", )
OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))}
function check_required(o::Order)
true
end
function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Order", :format, val, "int64")
end
if name === Symbol("petId")
OpenAPI.validate_param(name, "Order", :format, val, "int64")
end
if name === Symbol("quantity")
OpenAPI.validate_param(name, "Order", :format, val, "int32")
end
if name === Symbol("shipDate")
OpenAPI.validate_param(name, "Order", :format, val, "date-time")
end
if name === Symbol("status")
OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"])
end
end

View File

@ -0,0 +1,58 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""A pet for sale in the pet store
Pet(;
id=nothing,
category=nothing,
name=nothing,
photoUrls=nothing,
tags=nothing,
status=nothing,
)
- id::Int64
- category::Category
- name::String
- photoUrls::Vector{String}
- tags::Vector{Tag}
- status::String : pet status in the store
"""
Base.@kwdef mutable struct Pet <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
category = nothing # spec type: Union{ Nothing, Category }
name::Union{Nothing, String} = nothing
photoUrls::Union{Nothing, Vector{String}} = nothing
tags::Union{Nothing, Vector} = nothing # spec type: Union{ Nothing, Vector{Tag} }
status::Union{Nothing, String} = nothing
function Pet(id, category, name, photoUrls, tags, status, )
OpenAPI.validate_property(Pet, Symbol("id"), id)
OpenAPI.validate_property(Pet, Symbol("category"), category)
OpenAPI.validate_property(Pet, Symbol("name"), name)
OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls)
OpenAPI.validate_property(Pet, Symbol("tags"), tags)
OpenAPI.validate_property(Pet, Symbol("status"), status)
return new(id, category, name, photoUrls, tags, status, )
end
end # type Pet
const _property_types_Pet = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("category")=>"Category", Symbol("name")=>"String", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("status")=>"String", )
OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))}
function check_required(o::Pet)
o.name === nothing && (return false)
o.photoUrls === nothing && (return false)
true
end
function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Pet", :format, val, "int64")
end
if name === Symbol("status")
OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"])
end
end

View File

@ -0,0 +1,37 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""A tag for a pet
Tag(;
id=nothing,
name=nothing,
)
- id::Int64
- name::String
"""
Base.@kwdef mutable struct Tag <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
name::Union{Nothing, String} = nothing
function Tag(id, name, )
OpenAPI.validate_property(Tag, Symbol("id"), id)
OpenAPI.validate_property(Tag, Symbol("name"), name)
return new(id, name, )
end
end # type Tag
const _property_types_Tag = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", )
OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))}
function check_required(o::Tag)
true
end
function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "Tag", :format, val, "int64")
end
end

View File

@ -0,0 +1,64 @@
# This file was generated by the Julia OpenAPI Code Generator
# Do not modify this file directly. Modify the OpenAPI specification instead.
@doc raw"""A User who is purchasing from the pet store
User(;
id=nothing,
username=nothing,
firstName=nothing,
lastName=nothing,
email=nothing,
password=nothing,
phone=nothing,
userStatus=nothing,
)
- id::Int64
- username::String
- firstName::String
- lastName::String
- email::String
- password::String
- phone::String
- userStatus::Int64 : User Status
"""
Base.@kwdef mutable struct User <: OpenAPI.APIModel
id::Union{Nothing, Int64} = nothing
username::Union{Nothing, String} = nothing
firstName::Union{Nothing, String} = nothing
lastName::Union{Nothing, String} = nothing
email::Union{Nothing, String} = nothing
password::Union{Nothing, String} = nothing
phone::Union{Nothing, String} = nothing
userStatus::Union{Nothing, Int64} = nothing
function User(id, username, firstName, lastName, email, password, phone, userStatus, )
OpenAPI.validate_property(User, Symbol("id"), id)
OpenAPI.validate_property(User, Symbol("username"), username)
OpenAPI.validate_property(User, Symbol("firstName"), firstName)
OpenAPI.validate_property(User, Symbol("lastName"), lastName)
OpenAPI.validate_property(User, Symbol("email"), email)
OpenAPI.validate_property(User, Symbol("password"), password)
OpenAPI.validate_property(User, Symbol("phone"), phone)
OpenAPI.validate_property(User, Symbol("userStatus"), userStatus)
return new(id, username, firstName, lastName, email, password, phone, userStatus, )
end
end # type User
const _property_types_User = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("email")=>"String", Symbol("password")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", )
OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))}
function check_required(o::User)
true
end
function OpenAPI.validate_property(::Type{ User }, name::Symbol, val)
if name === Symbol("id")
OpenAPI.validate_param(name, "User", :format, val, "int64")
end
if name === Symbol("userStatus")
OpenAPI.validate_param(name, "User", :format, val, "int32")
end
end