FAQ¶
Can I change the case of the output?
By default URL endpoints are pluralised kebab-case
, resources are camelCase
and resource fields are
snake_case
.
You can change the default behaviour easily by adding the below global Flask configurations:
Options are: camel, pascal, snake, kebab, screaming_kebab, screaming_snake
When should I run BumpWright to bump the version?
Make your code changes and commit them first. Then run bumpwright auto --commit --tag
to let BumpWright
determine the next version and record it in a separate commit (and optional tag). Finally, push both the
feature commit and the bump commit, along with any tags, to your remote repository.
What do the BumpWright commands do?
bumpwright decide
inspects your recent commits or API differences and reports the release type without modifying any files.bumpwright bump
increments the version. Add--dry-run
to preview the change before writing.bumpwright auto
combines deciding and bumping into a single command, ideal for most release workflows.
Can I block HTTP methods in my API?
HTTP methods can be blocked easily, on a global or a model level. See here for full information on how to block methods.
Example blocking all DELETE
and POST
methods:
app.config['API_BLOCK_METHODS'] = ['DELETE', 'POST']
Example blocking DELETE
and POST
methods on a specific model:
class MyModel(Model):
class Meta:
block_methods = ['DELETE', 'POST']
Alternatively, if you want to only allow GET
requests you can turn on the
API_READ_ONLY option in the Flask configuration, which will block all but GET
requests from being served.
Can I extend the functionality of the API?
If you need to perform some custom logic or actions, you can use callbacks. Callbacks are functions that fire:
before the database query is performed
before the data is returned to the API
on an exception being raised
See the below configuration values that can be defined globally as Flask configurations or on a model level.
I use soft deletes, what can I do?
If you need to perform soft deletes, you can use the API_SOFT_DELETE configuration as a Flask global configuration. See Soft delete for an example.
Additional configuration values are needed to specify the attribute storing
the delete flag and the values representing the active
and deleted
states. See the below configuration values that can be defined globally as
Flask configurations or on a model level.
Can I generate an OpenAPI specification document?
Yes. When API_CREATE_DOCS is enabled the schema is automatically
generated at start-up and served at /openapi.json
(and under the docs UI at
/docs/apispec.json
). See
API Documentation for examples on exporting or customising the document.
How do I update documentation after adding new models?
Restart your application. The specification is rebuilt on boot and will include any newly registered models or routes.
Troubleshooting¶
The documentation endpoint returns 404
Ensure API_CREATE_DOCS is set to True
and that the
flarchitect.Architect
has been initialised. If
you mount the app under a prefix, check documentation_url_prefix
.
A route is missing from the spec
Confirm the model has a Meta
class and the endpoint isn’t blocked by
API_BLOCK_METHODS. Rebuilding the application will refresh the
specification.