Create an account and its first organization
Answers 202 with the same body whether or not the address was already registered, and pays the same Argon2id cost either way, so neither the response nor its duration is an oracle for who has an account. The registrant becomes the OWNER of a new organization -- the only way to become an OWNER other than being promoted by one. The organization starts with no companies; the registrant attaches one through POST /console/v1/organizations/{organizationId}/companies, which migration 000065 added. This sentence used to say the opposite -- that attaching was deliberately impossible -- and it is the fourth copy of that claim found after the route shipped, which is what a fact repeated in prose costs when nothing compares prose to paths.
Answers 202 with the same body whether or not the address was already registered, and pays the same Argon2id cost either way, so neither the response nor its duration is an oracle for who has an account. The registrant becomes the OWNER of a new organization -- the only way to become an OWNER other than being promoted by one. The organization starts with no companies; the registrant attaches one through POST /console/v1/organizations/{organizationId}/companies, which migration 000065 added. This sentence used to say the opposite -- that attaching was deliberately impossible -- and it is the fourth copy of that claim found after the route shipped, which is what a fact repeated in prose costs when nothing compares prose to paths.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/console/v1/registrations" \ -H "Authorization: Bearer apf_v2_tu_credencial" \ -H "Content-Type: application/json" \ -d '{ "email": "string", "password": "stringstring", "organizationName": "string" }'{ "schemaVersion": "console.1", "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "status": "VERIFICATION_PENDING"}This document GET GET
Anonymous, like the machine API's own /api/v2/openapi.json: a client that cannot yet log in still has to be able to read the contract for logging in. It carries no tenant data and no session data — it is the same bytes for every caller.
Spend an email verification token POST POST
Single use. Unknown, expired, already spent and belonging to a disabled account are one outcome and one status code: the consuming UPDATE is the check, so there is nothing to distinguish even if the handler wanted to.