Improvements include:
- concurrency: always run with only 1 work in default run script and in Dockerfile
- timestamp check: ensure the 'created' timestamp is no newer than signed timestamp and no older than duration, not other way way around
- typing: set model to use datetime for signed request and signed hash, use dateutil for more accepting parsing
- invalid datetime now results in 422 response, not 400
- linting: add pylint testing, add missing docstrings, ignore extraneous warnings