Skip to content

Organizations

CloudWA is multi-tenant — each organization has its own isolated data (contacts, conversations, templates, etc.). Users can belong to multiple organizations with different roles in each.

Retrieve all organizations. Requires super admin or organizations:read permission.

Terminal window
GET /api/organizations
{
"status": "success",
"data": {
"organizations": [
{
"id": "uuid",
"name": "Acme Corp",
"slug": "acme-corp-a1b2c3d4",
"created_at": "2024-01-01T00:00:00Z"
}
]
}
}

Retrieve the current organization’s details.

Terminal window
GET /api/organizations/current
{
"status": "success",
"data": {
"id": "uuid",
"name": "Acme Corp",
"slug": "acme-corp-a1b2c3d4",
"created_at": "2024-01-01T00:00:00Z"
}
}

Create a new organization. The creator is automatically added as an admin. System roles (Admin, Manager, Agent) and default chatbot settings are seeded automatically.

Terminal window
POST /api/organizations
{
"name": "New Organization"
}
FieldTypeRequiredDescription
namestringYesOrganization name
{
"status": "success",
"data": {
"id": "uuid",
"name": "New Organization",
"slug": "new-organization-a1b2c3d4",
"created_at": "2024-01-01T00:00:00Z"
}
}

Manage which users have access to an organization. Members are users from other organizations who have been granted access with a specific role.

Retrieve all members of the current organization.

Terminal window
GET /api/organizations/members
ParameterTypeDescription
searchstringFilter by name or email
pageintegerPage number (default: 1)
limitintegerItems per page (default: 50)
{
"status": "success",
"data": {
"members": [
{
"id": "uuid",
"user_id": "uuid",
"organization_id": "uuid",
"role_id": "uuid",
"role_name": "agent",
"is_default": true,
"email": "user@example.com",
"full_name": "John Doe",
"is_active": true,
"created_at": "2024-01-01T00:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 50
}
}

Add an existing user to the organization. The user can be identified by user_id or email.

Terminal window
POST /api/organizations/members
{
"user_id": "uuid",
"role_id": "uuid"
}

Or by email:

{
"email": "user@example.com",
"role_id": "uuid"
}
FieldTypeRequiredDescription
user_idstringOne of user_id or emailUUID of the user to add
emailstringOne of user_id or emailEmail of the user to add
role_idstringNoRole to assign. If omitted, uses the organization’s default role
{
"status": "success",
"data": {
"message": "Member added successfully"
}
}

Change a member’s role within the organization.

Terminal window
PUT /api/organizations/members/{member_id}
{
"role_id": "uuid"
}
{
"status": "success",
"data": {
"message": "Member role updated successfully"
}
}

Remove a user from the organization. This only removes the membership — the user’s account remains intact.

Terminal window
DELETE /api/organizations/members/{member_id}
{
"status": "success",
"data": {
"message": "Member removed successfully"
}
}
Terminal window
GET /api/org/settings
{
"status": "success",
"data": {
"name": "Acme Corp",
"settings": {
"mask_phone_numbers": false,
"timezone": "UTC",
"date_format": "YYYY-MM-DD",
"calling_enabled": true,
"max_call_duration": 3600,
"transfer_timeout_secs": 60,
"hold_music_file": "org_uuid_hold_music.ogg",
"ringback_file": "org_uuid_ringback.ogg"
}
}
}
Terminal window
PUT /api/org/settings
{
"name": "Updated Name",
"mask_phone_numbers": true,
"timezone": "Asia/Kolkata",
"date_format": "DD/MM/YYYY",
"calling_enabled": true,
"max_call_duration": 3600,
"transfer_timeout_secs": 60
}

All fields are optional — only provided fields are updated.

{
"status": "success",
"data": {
"message": "Settings updated successfully"
}
}

Upload audio files for organization hold music or ringback tones.

Terminal window
POST /api/org/audio?type=hold_music
ParameterTypeRequiredDescription
typestringYesThe type of audio: hold_music or ringback

A multipart/form-data request containing:

  • file: The audio file to upload (maximum size is 5MB). Supported formats: OGG, Opus, MP3, WAV, AAC, M4A.
{
"status": "success",
"data": {
"filename": "org_uuid_hold_music.ogg",
"type": "hold_music",
"mime_type": "audio/mpeg",
"size": 1048576
}
}

Configure external identity providers for Single Sign-On (SSO) login.

Retrieve all configured SSO providers for the organization.

Terminal window
GET /api/settings/sso
{
"status": "success",
"data": [
{
"provider": "google",
"client_id": "google-client-id",
"has_secret": true,
"is_enabled": true,
"allow_auto_create": true,
"default_role": "agent",
"allowed_domains": "example.com"
}
]
}

Create or update the configuration for a specific SSO provider.

Terminal window
PUT /api/settings/sso/{provider}
ParameterTypeRequiredDescription
providerstringYesThe provider type: google, microsoft, github, facebook, or custom
{
"client_id": "client-id",
"client_secret": "client-secret",
"is_enabled": true,
"allow_auto_create": true,
"default_role": "agent",
"allowed_domains": "example.com",
"auth_url": "https://example.com/oauth/authorize",
"token_url": "https://example.com/oauth/token",
"user_info_url": "https://example.com/oauth/userinfo"
}
FieldTypeRequiredDescription
client_idstringYesThe OAuth2 client ID
client_secretstringNoThe OAuth2 client secret (omitted if not changing)
is_enabledbooleanYesEnable or disable this provider
allow_auto_createbooleanYesAuto-create user accounts on successful login if they do not exist
default_rolestringNoThe default role assigned to auto-created users (defaults to agent)
allowed_domainsstringNoComma-separated list of email domains allowed to log in (empty allows all)
auth_urlstringNoAuthorization URL (required only for custom provider)
token_urlstringNoToken URL (required only for custom provider)
user_info_urlstringNoUser info endpoint URL (required only for custom provider)
{
"status": "success",
"data": {
"provider": "google",
"client_id": "google-client-id",
"has_secret": true,
"is_enabled": true,
"allow_auto_create": true,
"default_role": "agent",
"allowed_domains": "example.com"
}
}

Delete/remove the SSO configuration for a specific provider.

Terminal window
DELETE /api/settings/sso/{provider}
ParameterTypeRequiredDescription
providerstringYesThe provider type: google, microsoft, github, facebook, or custom
{
"status": "success",
"data": {
"message": "SSO provider deleted"
}
}