Skip to content

Commit 2b19080

Browse files
ckunkitkilias
andauthored
#2: Added design document
Added design Interface Co-authored-by: Torsten Kilias <[email protected]>
1 parent c748358 commit 2b19080

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

doc/changes/changes_0.2.0.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
# Saas API Python 0.2.0, released <TBD>
1+
# Saas API Python 0.2.0, released 2024-04-24
22

33
## Summary
44

5-
This release updates the API.
5+
This release updates the API and adds a design document.
66

77
## Features
88

99
* #17: Updated generated API
10+
11+
## Documentation
12+
13+
* #2: Added design document

doc/requirements/design.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# SaaS API for Python &mdash; Software Design
2+
3+
## Design decision: Generated API Interface
4+
5+
We prefer a generated API interface as
6+
* It includes the complete API without additional overhead.
7+
* It allows to update the generated code with low effort.
8+
* It allows to check if the current client is outdated in an automated way,
9+
10+
## Design decision: Selected Client Generator
11+
12+
The following generators have been considered
13+
* O1) https://github.com/openapi-generators/openapi-python-client (python based)
14+
* O2) https://github.com/OpenAPITools/openapi-generator (java based)
15+
* O3) https://github.com/swagger-api/swagger-codegen (java based)
16+
17+
The developers decided to use (O1) [openapi-python-client](https://github.com/openapi-generators/openapi-python-client) with the following rationale:
18+
19+
* It can be used as simple dependency in `pyproject.toml`, hence avoids
20+
* Extra tooling for developers (mvn, jre)
21+
* Additional dependencies in CI builds
22+
* Its feature set is rated to be sufficient.
23+
* Warnings are accepted.
24+
25+
The mentioned warnings are due to the generator (O1)'s limited OpenAPI specification support. In particular, the generator does not support a "default" response, which is used for default errors in the [JSON spec](https://cloud.exasol.com/openapi.json) of the Exasol SaaS REST API. In the generated code such default is just parsed into `None` or raises an exception (if `client.raise_on_unexpected_status` is set). This design document states to not lose any information and functionality from those warnings. Analysis indicated, that this is the only warning.
26+

0 commit comments

Comments
 (0)