Tenant
A Tenant in this system represents an organization (e.g., Acme Inc.) that owns users, tours, and configurations. Public v2 endpoints use snake_case keys and are documented in the OpenAPI spec; highlights below.
Endpoints​
GET /api/v2/tenant— returns the current authenticated tenant resource.PUT /api/v2/tenant— full replacement of the tenant resource (name,language,timezone).PATCH /api/v2/tenant— JSON Merge Patch (RFC 7396). Omit fields to keep them unchanged.
All tenant endpoints require authentication and the g:updateTenant grant.
Payloads​
Get (GET /api/v2/tenant)​
{
"name": "TenantA",
"language": "de-AT",
"timezone": "Europe/Vienna"
}
Replace (PUT /api/v2/tenant)​
{
"name": "Acme Inc.",
"language": "en-US",
"timezone": "Europe/Vienna"
}
Patch (PATCH /api/v2/tenant)​
Content-Type: application/merge-patch+json (application/json is accepted as an alias)
{
"name": "Acme Europe",
"language": "de-DE"
}
No-op patch (keeps current value):
{}
Notes:
namemust be a non-empty string with max length255.languagemust be a non-empty string with max length10.timezonemust be a non-empty string with max length50and a valid IANA timezone identifier (for exampleEurope/Vienna).name: nullis rejected with422 Validation failed.language: nullandtimezone: nullare rejected with422 Validation failed.languageandtimezoneare stored tenant preferences. They do not directly override the browser UI language.
Frontend-only timezone catalog​
For first-party frontend clients, timezone options are provided by:
GET /frontend/v2/frontend-configuration/timezones— returns available IANA timezone identifiers.
Frontend-only language catalog​
For first-party frontend clients, language options are provided by:
GET /frontend/v2/frontend-configuration/languages— returns currently supported tenant language identifiers.
Both frontend catalog endpoints are intended for internal frontend consumption and are not part of the public v2 API contract.