Aller au contenu

Create the account (Legacy)

POST
/signup/finalize
curl --request POST \
--url https://auth.timetonic.com/signup/finalize \
--header 'Content-Type: application/json' \
--data '{ "userId": "example", "pwd": "example", "email": "hello@example.com", "mobile": "example", "lang": "en", "fname": "example", "lname": "example", "company": "example", "companySize": "example", "sector": "example", "timezone": "example", "tcOptin": true }'

Step 3 of signup — creates the user and its own company account, publishes a userSignup provisioning event, sends the welcome email, and enriches geolocation asynchronously.

Unlike the legacy service this does NOT return a JWT (v8 is OIDC-BFF). On success the client must start the OIDC authorize+PKCE flow, signalled by next: "oidc". Public; CSRF-exempt. Portal-scoped variant at /portal/{companyCodeContext}/signup/finalize (additionally enforces the company password policy).

Media typeapplication/json
object
userId
required
string
>= 3 characters <= 64 characters /^[A-Za-z0-9._-]+$/
pwd
required
string
email
required
string format: email
mobile
string
nullable
lang
required
string
Example
en
fname
required
string
lname
required
string
company

Company display name; the company_accounts.code is a unique slug derived from it (falls back to the username).

string
nullable
companySize
string
nullable
sector
string
nullable
timezone
string
nullable
tcOptin
required
One of:
boolean

Account created

Media typeapplication/json
object
success
boolean
message
string
user
object
id
string format: uuid
username
string
email
string format: email
companyAccountCode
string
next

Post-signup instruction. oidc means the client must start the OIDC authorize+PKCE flow to log the new user in.

string
Allowed values: oidc
Example
{
"success": true,
"message": "User created",
"next": "oidc"
}

Validation error

Media typeapplication/json
object
success
boolean
error
string
message
string
errors
object
key
additional properties
Array<string>
Example
{
"success": false,
"error": "validation_error",
"message": "The given data was invalid",
"errors": {
"email": [
"The email field is required."
]
}
}