Download OpenAPI specification:
kitter is a REST API service designed to simplify the initial provisioning of users and domains in the Quobis Communication Platform. The name derives from the term "kitting up", which refers to the provisioning process.
The primary function of kitter is to create users in Keycloak (the open-source identity and access management solution) and simultaneously provision their data in the Quobis wac-core service. This dual integration ensures that user identities and their corresponding data are properly synchronized across both systems.
Once users have been provisioned through this API, administrators typically use kitter only for authentication-related operations such as:
For all other user data management operations, we encourage you to use the wac-core service API directly, due to the inherent limitations of this service which focuses specifically on authentication-related tasks.
This API provides endpoints for domain and user management, including CRUD operations (create, read, update, delete), as well as specific logout functionalities at both individual user and complete domain levels.
Returns the list of domains already provisioned into the system. Use the name parameter to get exactly the domain with that name (exact match). Use the nameContains parameter to get all domains whose name contains the given text (case-insensitive).
| name | string Example: name=example.com Domain name (exact match). Returns only the domain with this exact name. |
| nameContains | string Example: nameContains=example Filter by substring. Returns all domains whose name contains this text (case-insensitive). |
{- "domains": [
- {
- "domain": "example.com",
- "enable_anonymous": false,
- "anonymous_capabilities": [
- "string"
], - "id": "507f1f77bcf86cd799439011",
- "origins": [
- "/.*/"
], - "parent": "parent.example.com",
- "remote_sip_register": false,
- "services": {
- "callcontrol": [
- "string"
], - "contacts": [
- "string"
], - "datapipe": [
- "string"
], - "filesharing": [
- "string"
], - "filetransfer": [
- "string"
], - "forms": [
- "string"
], - "login": [
- "string"
], - "meetings": [
- "string"
], - "oauth2client": [
- "string"
], - "presence": [
- "string"
], - "remotelog": [
- "string"
], - "usersettings": [
- "string"
], - "usersgroup": [
- "string"
], - "xmpp": [
- "string"
]
}
}
]
}Creates a new domain in the system with the specified configuration
The Domain creation request
object (DomainStruct) The definition of a domain |
{- "domain": {
- "domain": "example.com",
- "enable_anonymous": false,
- "origins": [
- "/.*/"
], - "remote_sip_register": false
}
}{- "domain": {
- "domain": "example.com",
- "enable_anonymous": false,
- "anonymous_capabilities": [
- "string"
], - "id": "507f1f77bcf86cd799439011",
- "origins": [
- "/.*/"
], - "parent": "parent.example.com",
- "remote_sip_register": false,
- "services": {
- "callcontrol": [
- "string"
], - "contacts": [
- "string"
], - "datapipe": [
- "string"
], - "filesharing": [
- "string"
], - "filetransfer": [
- "string"
], - "forms": [
- "string"
], - "login": [
- "string"
], - "meetings": [
- "string"
], - "oauth2client": [
- "string"
], - "presence": [
- "string"
], - "remotelog": [
- "string"
], - "usersettings": [
- "string"
], - "usersgroup": [
- "string"
], - "xmpp": [
- "string"
]
}
}
}Updates specific fields of a domain
| id required | string Example: 507f1f77bcf86cd799439011 Domain ID |
The Domain update request
| domain | string Domain name |
| enable_anonymous | boolean Are anonymous users supported? |
| anonymous_capabilities | Array of strings Capabilities for anonymous users under the domain |
| origins | Array of strings List of valid origins |
| parent | string Parent domain name |
object (DomainServicesStruct) The configuration of the domain's enabled sevices | |
| remote_sip_register | boolean Whether remote SIP registration is enabled for the domain. Contact your system administrator for activating this service. |
{- "domain": "example.com",
- "enable_anonymous": false,
- "origins": [
- "/.*/"
], - "remote_sip_register": false
}{- "domain": {
- "domain": "example.com",
- "enable_anonymous": false,
- "anonymous_capabilities": [
- "string"
], - "id": "507f1f77bcf86cd799439011",
- "origins": [
- "/.*/"
], - "parent": "parent.example.com",
- "remote_sip_register": false,
- "services": {
- "callcontrol": [
- "string"
], - "contacts": [
- "string"
], - "datapipe": [
- "string"
], - "filesharing": [
- "string"
], - "filetransfer": [
- "string"
], - "forms": [
- "string"
], - "login": [
- "string"
], - "meetings": [
- "string"
], - "oauth2client": [
- "string"
], - "presence": [
- "string"
], - "remotelog": [
- "string"
], - "usersettings": [
- "string"
], - "usersgroup": [
- "string"
], - "xmpp": [
- "string"
]
}
}
}Logouts all users of a domain. This operation can take several seconds to be completed if the domain has a large number of users.
| id required | string Domain ID |
{- "error": "string"
}Returns the list of users already provisioned into the system. If a parameter is given, the list is filtered to those users matching the parameter.
string Example: email=user@example.com Filter by Email. To perform an exact search, send | |
| username | string Example: username=johndoe Filter by username. To perform an exact search, send |
| exact | boolean Default: false Exact search when querying by username and/or email |
| phone_number | string Example: phone_number=+34612345678 Filter by phone number. It performs always an exact search. |
| domain | string Example: domain=example.com Filter by domain name. It performs always an exact search. |
| email_verified | boolean Filter by email verified. |
object Example: paginate[max]=10&paginate[page]=0 Paginate the users. |
{- "users": [
- {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "username": "johndoe",
- "attributes": {
- "capabilities": [
- "+call-history",
- "+attended-transfer",
- "+blind-transfer",
- "+create-contacts",
- "+whiteboard",
- "+change-camera",
- "+chat",
- "+call-from-chat",
- "+start-chat"
], - "domain": "example.com",
- "phone_number": "+34612345678",
- "sip_mapping": {
- "password": "sip_password_123",
- "username": "sip_user",
- "sip_domain": "custom-domain.com",
- "sip_auth_proxy": "sip:127.0.0.1:15060"
}
}, - "email": "user@example.com",
- "enabled": true,
- "first_name": "John",
- "last_name": "Doe",
- "email_verified": false
}
]
}If given, related SIP Mapping will be provisioned as well.
The User creation request
object (CreateUserStruct) The definition of a user |
{- "user": {
- "email": "user@example.com",
- "enabled": true,
- "first_name": "John",
- "last_name": "Doe",
- "username": "johndoe",
- "credentials": {
- "password": "SecurePassword123!",
- "temporary": false
}, - "email_verified": false,
- "attributes": {
- "domain": "example.com",
- "phone_number": "+34612345678",
- "capabilities": [
- "+call-history",
- "+attended-transfer",
- "+blind-transfer",
- "+create-contacts",
- "+whiteboard",
- "+change-camera",
- "+chat",
- "+call-from-chat",
- "+start-chat"
], - "sip_mapping": {
- "password": "sip_password_123",
- "username": "sip_user",
- "sip_domain": "custom-domain.com",
- "sip_auth_proxy": "sip:127.0.0.1:15060"
}
}
}
}{- "user": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "username": "johndoe",
- "attributes": {
- "capabilities": [
- "+call-history",
- "+attended-transfer",
- "+blind-transfer",
- "+create-contacts",
- "+whiteboard",
- "+change-camera",
- "+chat",
- "+call-from-chat",
- "+start-chat"
], - "domain": "example.com",
- "phone_number": "+34612345678",
- "sip_mapping": {
- "password": "sip_password_123",
- "username": "sip_user",
- "sip_domain": "custom-domain.com",
- "sip_auth_proxy": "sip:127.0.0.1:15060"
}
}, - "email": "user@example.com",
- "enabled": true,
- "first_name": "John",
- "last_name": "Doe",
- "email_verified": false
}
}Retrieves a specific user by their domain and username
| domain required | string Example: example.com |
| username required | string Example: johndoe |
{- "id": "550e8400-e29b-41d4-a716-446655440000",
- "username": "johndoe",
- "attributes": {
- "capabilities": [
- "+call-history",
- "+attended-transfer",
- "+blind-transfer",
- "+create-contacts",
- "+whiteboard",
- "+change-camera",
- "+chat",
- "+call-from-chat",
- "+start-chat"
], - "domain": "example.com",
- "phone_number": "+34612345678",
- "sip_mapping": {
- "password": "sip_password_123",
- "username": "sip_user",
- "sip_domain": "custom-domain.com",
- "sip_auth_proxy": "sip:127.0.0.1:15060"
}
}, - "email": "user@example.com",
- "enabled": true,
- "first_name": "John",
- "last_name": "Doe",
- "email_verified": false
}Updates specific fields of a user
| id required | string Example: 550e8400-e29b-41d4-a716-446655440000 A user ID |
The User data to modify
object (UserAttributesPatchStruct) Definition of user's attributes patch | |
string User's email | |
| enabled | boolean Default: true Whether the user is enabled or not |
| first_name | string User's first name. Used as displayName at WAC |
| id | string Deprecated User's Keycloak ID (deprecated). This field is ignored and should not be used. The Keycloak user ID is determined by the system and cannot be set manually. |
| last_name | string User's last name |
| username | string User's username |
object (UserAttributesStruct) Definition of user's credentials | |
| email_verified | boolean (Email is verified) User's email is verified |
{- "email": "user@example.com",
- "enabled": true,
- "first_name": "John",
- "last_name": "Doe",
- "username": "johndoe",
- "email_verified": false,
- "attributes": {
- "domain": "example.com",
- "phone_number": "+34612345678",
- "capabilities": [
- "+call-history",
- "+attended-transfer",
- "+blind-transfer",
- "+create-contacts",
- "+whiteboard",
- "+change-camera",
- "+chat",
- "+call-from-chat",
- "+start-chat"
], - "sip_mapping": {
- "password": "sip_password_123",
- "username": "sip_user",
- "sip_domain": "custom-domain.com",
- "sip_auth_proxy": "sip:127.0.0.1:15060"
}
}
}{- "user": {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "username": "johndoe",
- "attributes": {
- "capabilities": [
- "+call-history",
- "+attended-transfer",
- "+blind-transfer",
- "+create-contacts",
- "+whiteboard",
- "+change-camera",
- "+chat",
- "+call-from-chat",
- "+start-chat"
], - "domain": "example.com",
- "phone_number": "+34612345678",
- "sip_mapping": {
- "password": "sip_password_123",
- "username": "sip_user",
- "sip_domain": "custom-domain.com",
- "sip_auth_proxy": "sip:127.0.0.1:15060"
}
}, - "email": "user@example.com",
- "enabled": true,
- "first_name": "John",
- "last_name": "Doe",
- "email_verified": false
}
}Logouts all users of a domain. This operation can take several seconds to be completed if the domain has a large number of users.
| id required | string Domain ID |
{- "error": "string"
}CallerIdManager operations. Contact your system administrator for activating these endpoints
Returns the list of htable entries with pagination support
object Example: paginate[max]=10&paginate[page]=0 Paginate the htable entries. | |
| nameContains | string Filter entries by name containing the specified string. |
| valueContains | string Filter entries by value containing the specified string. |
{- "entries": [
- {
- "name": "string",
- "value": "string"
}
], - "total": 0
}Creates a new htable entry
The htable entry creation request
| name required | string Entry name |
| value required | string Entry value |
{- "name": "string",
- "value": "string"
}{- "name": "string",
- "value": "string"
}