99 lines
2.2 KiB
Markdown
99 lines
2.2 KiB
Markdown
# Python Client Packages for the DependencyTrack and DefectDojo API
|
|
|
|
## Download the OpenAPI definitions
|
|
|
|
```
|
|
curl https://dtrack-api.hottis.de/api/openapi.json \
|
|
> dependencytrack-openapi.json
|
|
curl https://defectdojo.hottis.de/api/v2/oa3/schema/?format=json \
|
|
> defectdojo-openapi.json
|
|
```
|
|
|
|
|
|
## Naive Generation of the Client Package for DefectDojo
|
|
|
|
```
|
|
docker run \
|
|
-it \
|
|
--rm \
|
|
-v $PWD:/work \
|
|
-u $UID \
|
|
openapitools/openapi-generator-cli:v7.12.0 \
|
|
generate \
|
|
-i /work/defectdojo-openapi.json \
|
|
-g python \
|
|
-o /work/defectdojo-client \
|
|
--package-name defectdojo_api
|
|
```
|
|
|
|
For DefectDojo the naive code generation works.
|
|
|
|
## Naive Generation of the Client Package for DependencyTrack
|
|
|
|
```
|
|
docker run \
|
|
-it \
|
|
--rm \
|
|
-v $PWD:/work \
|
|
-u $UID openapitools/openapi-generator-cli:v7.12.0 \
|
|
generate \
|
|
-i /work/dependencytrack-openapi.json \
|
|
-g python \
|
|
-o /work/dependencytrack-client \
|
|
--package-name dependencytrack_api
|
|
```
|
|
|
|
## Fixed Generation of the Client Package for DependencyTrack
|
|
|
|
In the OpenAPI definition of DependencyTrack a regex is used which is not understood by Python's
|
|
default regex implement `re`, which in turn is hardwired in the openapi-generator provided code.
|
|
So, it is necessary to adjust the template for code generation to use the extended regex module
|
|
`regex` instead of the default one.
|
|
|
|
For this purpose, the template must be exported:
|
|
|
|
```
|
|
docker run \
|
|
--rm \
|
|
-v $PWD:/work \
|
|
openapitools/openapi-generator-cli:v7.12.0 \
|
|
author \
|
|
template \
|
|
-g python \
|
|
-o /work/dependencytrack-custom-templates
|
|
```
|
|
|
|
Now within `dependencytrack-custom-templates` the both files `model_anyof.mustache` and `model_generic.mustache` must be fixed.
|
|
Replace
|
|
|
|
```
|
|
import re
|
|
```
|
|
|
|
at the tops of the files by
|
|
|
|
```
|
|
import regex as re
|
|
```
|
|
|
|
Now run the generator using the adjusted template:
|
|
|
|
```
|
|
docker run \
|
|
-it \
|
|
--rm \
|
|
-v $PWD:/work \
|
|
-u $UID \
|
|
openapitools/openapi-generator-cli:v7.12.0 \
|
|
generate \
|
|
-i /work/dependencytrack-openapi.json \
|
|
-g python \
|
|
-o /work/dependencytrack-client \
|
|
--package-name dependencytrack_api \
|
|
-t /work/dependencytrack-custom-templates
|
|
```
|
|
|
|
Make sure to install the module `regex` in the environment the client shall run in.
|
|
|
|
|