We should move the jobs-api to fastapi and generate the openapi spec from the code directly (see the components-api for an example), this will allow easily reusing models and make sure we don't forget to keep the code and the spec in sync.
This includes:
- move to fastapi
- generate the openapi spec on pre-commit (see components-api hook)
- check openapi version (see components-api hook)
- move any leftover models to pydantic if possible