Registration
Client registration is by arrangement while the program is young: write to developers@truckaurbus.com with your app’s name and redirect URIs. You receive aclient_id. Browser and mobile apps are registered as public clients; PKCE is required for everyone, so there is no client secret to leak.
Endpoints
Everything is discoverable from one URL, which is the only one worth hardcoding:Scopes and claims
Request only what you need; the consent screen lists every scope you ask for.
The flow
Authorization code with PKCE, the one every library implements:- Generate a
code_verifierand its S256code_challenge. - Send the user to the authorization endpoint with
client_id,redirect_uri,response_type=code,scope,stateand the challenge. A signed-in truckaurbus user sees the consent screen immediately; a signed-out one signs in first and returns to it. - The user approves; your
redirect_urireceivescodeandstate. - Exchange the code at the token endpoint with your
code_verifier. You receive anaccess_tokenand anid_token(RS256, verify it against the JWKS from discovery). - Read the claims from the
id_token, or call the userinfo endpoint with the access token.
The button
Use the wordmark button so people recognise the door. Copy it as is; the wordmark never restyles.#141414 text, one-pixel #141414 border, same wordmark.
Rules
- PKCE is required; a request without a code challenge is refused.
- Redirect URIs are exact-match and
httpsonly. - Verify the
id_tokensignature against the discovery JWKS and checkaudis yourclient_id. - The
subclaim is the stable key for the user; the phone number can change,subcannot. - Treat a user’s identity as theirs: if they withdraw consent from their account page, your refresh stops working, and that is the system behaving correctly.

