slug and domain must be globally unique across the platform. All endpoints require an active admin session — include the session cookie obtained from POST /api/admin/login with every request.
The list endpoint supports an optional search query parameter that filters across name, slug, and domain. List responses include computed counts for extensions_count, dids_count, and queues_count. The show endpoint additionally eager-loads the full extensions, dids, queues, and rates relations.
GET /api/tenants
Returns all tenants ordered by creation date descending, with relation counts attached. Query parametersOptional. Filters tenants whose
name, slug, or domain contains the given string (case-insensitive).Value is
"Tenants fetched successfully.".Array of tenant objects.
POST /api/tenants
Creates a new tenant. Returns201 Created with the new tenant record on success.
Human-readable name for the tenant. Maximum 255 characters.
URL-safe unique identifier. Must be unique across all tenants. Maximum 255 characters.
Fully-qualified domain name for the tenant. Must be unique across all tenants. Maximum 255 characters.
Lifecycle status, e.g.
active, suspended. Maximum 50 characters.IANA timezone identifier, e.g.
America/Chicago. Maximum 100 characters.Maximum number of extensions the tenant can provision. Minimum value:
1.Optional. Arbitrary JSON object for tenant-level configuration. Stored as-is.
Value is
"Tenant created successfully.".The newly created tenant record. Contains the same fields as described in the list response above, without relation counts.
GET /api/tenants/
Fetches a single tenant by its ID. The response eager-loads the fullextensions, dids, queues, and rates relations.
Path parameters
The numeric ID of the tenant to retrieve.
Value is
"Tenant loaded successfully.".The tenant record with
extensions, dids, queues, and rates arrays included.PUT /api/tenants/
Replaces all fields on an existing tenant. Accepts the same body asPOST /api/tenants. PATCH /api/tenants/{tenant} is also accepted and uses the same handler.
Path parameters
The numeric ID of the tenant to update.
Human-readable name. Maximum 255 characters.
Must be unique across all tenants, excluding the current record. Maximum 255 characters.
Must be unique across all tenants, excluding the current record. Maximum 255 characters.
Lifecycle status. Maximum 50 characters.
IANA timezone identifier. Maximum 100 characters.
Minimum value:
1.Optional. Replaces the existing settings object entirely.
Value is
"Tenant updated successfully.".The updated tenant record.
DELETE /api/tenants/
Permanently deletes the specified tenant. This action cannot be undone. Path parametersThe numeric ID of the tenant to delete.
Value is
"Tenant deleted successfully.".