The authorization server gives out upload tokens to health authorities / doctors / ...
They can then give these tokens to an infected person to upload his/her contact numbers.
Each upload token is valid once for max. ~5 days.
A token is a random sequence of ~10 numbers and letters. Numbers and letters should be chosen to be well distinguishable in text and speech.
HTTP API with pinned public keys (peer auth)
POST /check_and_invalidate_token
params: token=XXXXXXXXX
returns: "valid" or "invalid"
This has to be somehow transaction safe, i.e. token invalidation and upload should either both fail or none of them. I'm not sure how to best do that right now.
Webinterface to generate tokens
Authentication using smartcard e.g. https://uziregister.nl/ for the Netherlands, Praxisausweis (SMC-B) for Germany
TABLE tokens:
token
created_at