Skip to main content

io.enterpriseai.resources.TelephonyClient

Source: sdks/java/enterprise-ai-java/src/main/java/io/enterpriseai/resources/TelephonyClient.java. Back to the Java SDK reference index.

note

This page is generated by tools/docs/gen_sdk_reference.py from the SDK sources and the OpenAPI text folders. Do not edit it by hand: change the source and regenerate.

Class TelephonyClient​

Navin telephony (ADR-0173): settings, quotas, PBX pools, SIP trunks, phone numbers, extensions, routing rules, IVR flows, queues, human and AI voice agents, conferences, publication of the configuration to the engines installed by the Navin Manager (Asterisk, Kamailio, LiveKit), calls, recordings, voicemail, IVR prompts and fraud protection. Writers are platform_admin and tenant_admin; secrets are write only (has_* flags) and every change is audited.

Constructor TelephonyClient​

TelephonyClient(Transport transport)

Creates the client on the shared transport; EnterpriseAIClient builds it and exposes it through the accessor of the same name.

NameTypeDefaultRequiredDescription
transportTransportyesTransport shared by the sub-clients of one client.

TelephonyClient.acknowledgeFraudAlert​

JsonNode acknowledgeFraudAlert(String alertId)

Acknowledge a fraud alert. Marks the alert acknowledged and answers it. Needs tenant_admin or platform_admin. Audited under telephony.fraud.acknowledge.

Route: /v1/telephony/fraud-alerts/{alert_id}/acknowledge (POST).

NameTypeDefaultRequiredDescription
alertIdStringyesIdentifier (UUID) of the fraud alert.

Returns: JsonNode. Decoded JSON answer of the operation "Acknowledge a fraud alert".

Raises: the typed errors of the transport (Errors).

TelephonyClient.acknowledgeFraudAlert​

JsonNode acknowledgeFraudAlert(String alertId, RequestOptions options)

Acknowledge a fraud alert. Marks the alert acknowledged and answers it. Needs tenant_admin or platform_admin. Audited under telephony.fraud.acknowledge.

Route: /v1/telephony/fraud-alerts/{alert_id}/acknowledge (POST).

NameTypeDefaultRequiredDescription
alertIdStringyesIdentifier (UUID) of the fraud alert.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Acknowledge a fraud alert".

Raises: the typed errors of the transport (Errors).

TelephonyClient.addQueueMember​

JsonNode addQueueMember(String queueId, Object body)

Add a member to a queue. Adds exactly one extension or human agent of the tenant (422 telephony_member_target or telephony_reference_invalid). Idempotency-Key honoured. Needs tenant_admin or platform_admin; audited under telephony.queue_member.create.

Route: /v1/telephony/queues/{queue_id}/members (POST).

NameTypeDefaultRequiredDescription
queueIdStringyesIdentifier (UUID) of the queue.
bodyObjectyesThe member and its penalty.

Returns: JsonNode. Decoded JSON answer of the operation "Add a member to a queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.addQueueMember​

JsonNode addQueueMember(String queueId, Object body, RequestOptions options)

Add a member to a queue. Adds exactly one extension or human agent of the tenant (422 telephony_member_target or telephony_reference_invalid). Idempotency-Key honoured. Needs tenant_admin or platform_admin; audited under telephony.queue_member.create.

Route: /v1/telephony/queues/{queue_id}/members (POST).

NameTypeDefaultRequiredDescription
queueIdStringyesIdentifier (UUID) of the queue.
bodyObjectyesThe member and its penalty.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Add a member to a queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createAgent​

JsonNode createAgent(Object body)

Create a human agent. Creates the human agent in the caller's tenant and returns it (201). The extension must belong to the tenant. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.agent.create.

Route: /v1/telephony/agents (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe human agent.

Returns: JsonNode. Decoded JSON answer of the operation "Create a human agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createAgent​

JsonNode createAgent(Object body, RequestOptions options)

Create a human agent. Creates the human agent in the caller's tenant and returns it (201). The extension must belong to the tenant. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.agent.create.

Route: /v1/telephony/agents (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe human agent.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a human agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createBlock​

JsonNode createBlock(Object body)

Block the tenant or an extension. Writes the key {tid} or {tid}-{extension} into the Kamailio hash table tenant_blocks of every JSONRPC endpoint of the pool (htable.sets) and answers the block (201); an existing active block of the same scope is answered as is. 422 telephony_block_scope when the scope and the extension do not match. The worker job telephony_blocks pushes the active blocks again after a Kamailio restart. Needs tenant_admin or platform_admin. Audited under telephony.block.create, published as telephony.block.created.

Route: /v1/telephony/blocks (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe scope, the extension and the reason.

Returns: JsonNode. Decoded JSON answer of the operation "Block the tenant or an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createBlock​

JsonNode createBlock(Object body, RequestOptions options)

Block the tenant or an extension. Writes the key {tid} or {tid}-{extension} into the Kamailio hash table tenant_blocks of every JSONRPC endpoint of the pool (htable.sets) and answers the block (201); an existing active block of the same scope is answered as is. 422 telephony_block_scope when the scope and the extension do not match. The worker job telephony_blocks pushes the active blocks again after a Kamailio restart. Needs tenant_admin or platform_admin. Audited under telephony.block.create, published as telephony.block.created.

Route: /v1/telephony/blocks (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe scope, the extension and the reason.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Block the tenant or an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createConference​

JsonNode createConference(Object body)

Create a conference room. Creates the conference room in the caller's tenant and returns it (201). The PIN is write only: the answer carries has_pin. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.conference.create.

Route: /v1/telephony/conferences (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe conference room.

Returns: JsonNode. Decoded JSON answer of the operation "Create a conference room".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createConference​

JsonNode createConference(Object body, RequestOptions options)

Create a conference room. Creates the conference room in the caller's tenant and returns it (201). The PIN is write only: the answer carries has_pin. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.conference.create.

Route: /v1/telephony/conferences (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe conference room.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a conference room".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createExtension​

JsonNode createExtension(Object body)

Create an extension. Creates the extension in the caller's tenant and returns it (201). The SIP password and the voicemail PIN are write only: the answer carries has_password and has_voicemail_pin. The number is unique in the tenant across extensions, queues and conferences (409 telephony_number_in_use) and may not start with a national or international prefix nor be an emergency number (422 telephony_number_reserved). With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.extension.create.

Route: /v1/telephony/extensions (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe extension.

Returns: JsonNode. Decoded JSON answer of the operation "Create an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createExtension​

JsonNode createExtension(Object body, RequestOptions options)

Create an extension. Creates the extension in the caller's tenant and returns it (201). The SIP password and the voicemail PIN are write only: the answer carries has_password and has_voicemail_pin. The number is unique in the tenant across extensions, queues and conferences (409 telephony_number_in_use) and may not start with a national or international prefix nor be an emergency number (422 telephony_number_reserved). With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.extension.create.

Route: /v1/telephony/extensions (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe extension.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createInfrastructurePool​

JsonNode createInfrastructurePool(Object body)

Create or refresh a PBX pool from the Manager inventory. Creates (201) or refreshes (200) the PBX pool linked to an Asterisk instance of the Manager (manager_cluster, manager_service): nodes (host, AMI port, SIP address, Manager instance, ARI URL), ami_tls, Kamailio JSONRPC endpoints and addresses (the Kamailio instances bound to this Asterisk, or kamailio_service), livekit_binding (url, sip_host), AMI and ARI user names and the references of the secrets. A secret of the instance bound to navin-enterprise becomes env://EAI_CRED_TELEPHONY_AMI_SECRET, env://EAI_CRED_TELEPHONY_ARI_PASSWORD or env://EAI_CRED_TELEPHONY_EPHEMERAL_SECRET (variables rendered by the Manager in the sensitive environment file), a reference already on the pool is kept, never a value. Idempotent: the same inventory changes nothing (changed: []). Answers {created, changed, pool, secrets {ami, ari, ephemeral: bound, kept or missing}, sources {cluster_id, asterisk, kamailio, livekit, livekit_sip}, problems}. Errors: 404 telephony_inventory_not_found, 409 telephony_inventory_no_nodes, 422 telephony_inventory_too_large, the pool rules (422 telephony_pool_mode, 409 telephony_name_taken). Needs platform_admin; audited under telephony.pbx_pool.sync (plus telephony.pbx_pool.create or telephony.pbx_pool.update).

Route: /v1/telephony/infrastructure/pools (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe Asterisk instance of the Manager and the options of a new pool.

Returns: JsonNode. Decoded JSON answer of the operation "Create or refresh a PBX pool from the Manager inventory".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createInfrastructurePool​

JsonNode createInfrastructurePool(Object body, RequestOptions options)

Create or refresh a PBX pool from the Manager inventory. Creates (201) or refreshes (200) the PBX pool linked to an Asterisk instance of the Manager (manager_cluster, manager_service): nodes (host, AMI port, SIP address, Manager instance, ARI URL), ami_tls, Kamailio JSONRPC endpoints and addresses (the Kamailio instances bound to this Asterisk, or kamailio_service), livekit_binding (url, sip_host), AMI and ARI user names and the references of the secrets. A secret of the instance bound to navin-enterprise becomes env://EAI_CRED_TELEPHONY_AMI_SECRET, env://EAI_CRED_TELEPHONY_ARI_PASSWORD or env://EAI_CRED_TELEPHONY_EPHEMERAL_SECRET (variables rendered by the Manager in the sensitive environment file), a reference already on the pool is kept, never a value. Idempotent: the same inventory changes nothing (changed: []). Answers {created, changed, pool, secrets {ami, ari, ephemeral: bound, kept or missing}, sources {cluster_id, asterisk, kamailio, livekit, livekit_sip}, problems}. Errors: 404 telephony_inventory_not_found, 409 telephony_inventory_no_nodes, 422 telephony_inventory_too_large, the pool rules (422 telephony_pool_mode, 409 telephony_name_taken). Needs platform_admin; audited under telephony.pbx_pool.sync (plus telephony.pbx_pool.create or telephony.pbx_pool.update).

Route: /v1/telephony/infrastructure/pools (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe Asterisk instance of the Manager and the options of a new pool.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create or refresh a PBX pool from the Manager inventory".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createIvrFlow​

JsonNode createIvrFlow(Object body)

Create an IVR flow. Creates the IVR flow in the caller's tenant and returns it (201). The graph lives in the versions of the flow. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.create.

Route: /v1/telephony/ivr-flows (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe IVR flow.

Returns: JsonNode. Decoded JSON answer of the operation "Create an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createIvrFlow​

JsonNode createIvrFlow(Object body, RequestOptions options)

Create an IVR flow. Creates the IVR flow in the caller's tenant and returns it (201). The graph lives in the versions of the flow. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.create.

Route: /v1/telephony/ivr-flows (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe IVR flow.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createIvrVersion​

JsonNode createIvrVersion(String flowId, Object body)

Create a version of an IVR flow. Adds a draft version (number + 1). The graph is validated: one start node, every edge names an existing node, every node reachable, unique DTMF digits, every menu with prompt, timeout and invalid exits, a wait of 1 to 30 seconds and 1 to 5 retries; the extensions, queues and voice agents it names exist in the tenant. The prompt of a play or menu node is a sound name of Asterisk or navin:<name>, an uploaded prompt of the tenant (POST /v1/telephony/ivr-prompts) the dialplan plays from its signed URL. Problems answer 422 with every one in details.errors. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.version.create.

Route: /v1/telephony/ivr-flows/{flow_id}/versions (POST).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.
bodyObjectyesThe graph: start (node id) and nodes (id to node with type start, play, menu, time_condition, transfer, voicemail, queue, voice_agent or hangup).

Returns: JsonNode. Decoded JSON answer of the operation "Create a version of an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createIvrVersion​

JsonNode createIvrVersion(String flowId, Object body, RequestOptions options)

Create a version of an IVR flow. Adds a draft version (number + 1). The graph is validated: one start node, every edge names an existing node, every node reachable, unique DTMF digits, every menu with prompt, timeout and invalid exits, a wait of 1 to 30 seconds and 1 to 5 retries; the extensions, queues and voice agents it names exist in the tenant. The prompt of a play or menu node is a sound name of Asterisk or navin:<name>, an uploaded prompt of the tenant (POST /v1/telephony/ivr-prompts) the dialplan plays from its signed URL. Problems answer 422 with every one in details.errors. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.version.create.

Route: /v1/telephony/ivr-flows/{flow_id}/versions (POST).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.
bodyObjectyesThe graph: start (node id) and nodes (id to node with type start, play, menu, time_condition, transfer, voicemail, queue, voice_agent or hangup).
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a version of an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createNumber​

JsonNode createNumber(Object body)

Create a phone number. Creates the phone number in the caller's tenant and returns it (201). The E.164 number is unique on the platform (409 telephony_number_taken); the destination must be an object of the tenant (422 telephony_reference_invalid); branch ai needs a voice agent. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.number.create.

Route: /v1/telephony/numbers (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe phone number.

Returns: JsonNode. Decoded JSON answer of the operation "Create a phone number".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createNumber​

JsonNode createNumber(Object body, RequestOptions options)

Create a phone number. Creates the phone number in the caller's tenant and returns it (201). The E.164 number is unique on the platform (409 telephony_number_taken); the destination must be an object of the tenant (422 telephony_reference_invalid); branch ai needs a voice agent. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.number.create.

Route: /v1/telephony/numbers (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe phone number.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a phone number".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createPool​

JsonNode createPool(Object body)

Declare a PBX pool. Declares an Asterisk pool installed by the Navin Manager: nodes and their AMI port, references of the AMI, ARI, JSONRPC and auth_ephemeral secrets (openbao:// or env://EAI_CRED_*, never a value), Kamailio endpoints and addresses, dispatcher sets and LiveKit binding. A shared pool has no tenant, a dedicated pool one (422 telephony_pool_mode). Needs platform_admin; audited under telephony.pbx_pool.create.

Route: /v1/telephony/pbx-pools (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe pool.

Returns: JsonNode. Decoded JSON answer of the operation "Declare a PBX pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createPool​

JsonNode createPool(Object body, RequestOptions options)

Declare a PBX pool. Declares an Asterisk pool installed by the Navin Manager: nodes and their AMI port, references of the AMI, ARI, JSONRPC and auth_ephemeral secrets (openbao:// or env://EAI_CRED_*, never a value), Kamailio endpoints and addresses, dispatcher sets and LiveKit binding. A shared pool has no tenant, a dedicated pool one (422 telephony_pool_mode). Needs platform_admin; audited under telephony.pbx_pool.create.

Route: /v1/telephony/pbx-pools (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe pool.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Declare a PBX pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createQueue​

JsonNode createQueue(Object body)

Create a call queue. Creates the call queue in the caller's tenant and returns it (201). Its optional number follows the extension number rules. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.queue.create.

Route: /v1/telephony/queues (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe call queue.

Returns: JsonNode. Decoded JSON answer of the operation "Create a call queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createQueue​

JsonNode createQueue(Object body, RequestOptions options)

Create a call queue. Creates the call queue in the caller's tenant and returns it (201). Its optional number follows the extension number rules. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.queue.create.

Route: /v1/telephony/queues (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe call queue.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a call queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createRoutingRule​

JsonNode createRoutingRule(Object body)

Create a routing rule. Creates the routing rule in the caller's tenant and returns it (201). Outbound rules list the trunks of the tenant in failover order; inbound rules need a destination of the tenant. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.routing_rule.create.

Route: /v1/telephony/routing-rules (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe routing rule.

Returns: JsonNode. Decoded JSON answer of the operation "Create a routing rule".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createRoutingRule​

JsonNode createRoutingRule(Object body, RequestOptions options)

Create a routing rule. Creates the routing rule in the caller's tenant and returns it (201). Outbound rules list the trunks of the tenant in failover order; inbound rules need a destination of the tenant. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.routing_rule.create.

Route: /v1/telephony/routing-rules (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe routing rule.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a routing rule".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createTrunk​

JsonNode createTrunk(Object body)

Create a SIP trunk. Creates the SIP trunk in the caller's tenant and returns it (201). The password is write only: the answer carries has_password. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.trunk.create.

Route: /v1/telephony/trunks (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe SIP trunk.

Returns: JsonNode. Decoded JSON answer of the operation "Create a SIP trunk".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createTrunk​

JsonNode createTrunk(Object body, RequestOptions options)

Create a SIP trunk. Creates the SIP trunk in the caller's tenant and returns it (201). The password is write only: the answer carries has_password. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.trunk.create.

Route: /v1/telephony/trunks (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe SIP trunk.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create a SIP trunk".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createVoiceAgent​

JsonNode createVoiceAgent(Object body)

Create an AI voice agent. Creates the AI voice agent in the caller's tenant and returns it (201). The fallback queue must belong to the tenant. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.voice_agent.create.

Route: /v1/telephony/voice-agents (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe AI voice agent.

Returns: JsonNode. Decoded JSON answer of the operation "Create an AI voice agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.createVoiceAgent​

JsonNode createVoiceAgent(Object body, RequestOptions options)

Create an AI voice agent. Creates the AI voice agent in the caller's tenant and returns it (201). The fallback queue must belong to the tenant. With an Idempotency-Key, a retry with the same body returns the first answer (Idempotency-Replayed: true), another body answers 409 idempotency_conflict. Validation problems answer 422 with every problem in details.errors (code, path, message_en, message_fr). Needs tenant_admin or platform_admin; audited under telephony.voice_agent.create.

Route: /v1/telephony/voice-agents (POST).

NameTypeDefaultRequiredDescription
bodyObjectyesThe AI voice agent.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Create an AI voice agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteAgent​

void deleteAgent(String itemId)

Delete a human agent. Deletes the human agent (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.agent.delete.

Route: /v1/telephony/agents/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteConference​

void deleteConference(String itemId)

Delete a conference room. Deletes the conference room (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.conference.delete.

Route: /v1/telephony/conferences/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteExtension​

void deleteExtension(String itemId)

Delete an extension. Deletes the extension (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.extension.delete.

Route: /v1/telephony/extensions/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteIvrFlow​

void deleteIvrFlow(String itemId)

Delete an IVR flow. Deletes the IVR flow (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.delete.

Route: /v1/telephony/ivr-flows/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteNumber​

void deleteNumber(String itemId)

Delete a phone number. Deletes the phone number (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.number.delete.

Route: /v1/telephony/numbers/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deletePool​

void deletePool(String poolId)

Delete a PBX pool. Deletes a pool no tenant uses (409 telephony_pool_in_use otherwise) with its versions. Needs platform_admin; audited under telephony.pbx_pool.delete.

Route: /v1/telephony/pbx-pools/{pool_id} (DELETE).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deletePrompt​

void deletePrompt(String promptId)

Delete an IVR prompt. Deletes the prompt and its audio (204); its playback URL answers 404 from then on. 409 telephony_prompt_in_use (with details.ivr_flows) while a draft or published IVR version plays it. Needs tenant_admin or platform_admin. Audited under telephony.ivr_prompt.delete.

Route: /v1/telephony/ivr-prompts/{prompt_id} (DELETE).

NameTypeDefaultRequiredDescription
promptIdStringyesIdentifier (UUID) of the IVR prompt.

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteQueue​

void deleteQueue(String itemId)

Delete a call queue. Deletes the call queue (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.queue.delete.

Route: /v1/telephony/queues/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteRecording​

void deleteRecording(String recordingId)

Delete a recording. Deletes the object in SeaweedFS and marks the index row deleted (a voicemail message on it is deleted too). 409 telephony_legal_hold under legal hold. Needs tenant_admin or platform_admin. Audited under telephony.recording.delete with the reason.

Route: /v1/telephony/recordings/{recording_id} (DELETE).

NameTypeDefaultRequiredDescription
recordingIdStringyesIdentifier (UUID) of the recording, in the caller's tenant (another tenant's recording answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteRecording​

void deleteRecording(String recordingId, String reason)

Delete a recording. Deletes the object in SeaweedFS and marks the index row deleted (a voicemail message on it is deleted too). 409 telephony_legal_hold under legal hold. Needs tenant_admin or platform_admin. Audited under telephony.recording.delete with the reason.

Route: /v1/telephony/recordings/{recording_id} (DELETE).

NameTypeDefaultRequiredDescription
recordingIdStringyesIdentifier (UUID) of the recording, in the caller's tenant (another tenant's recording answers 404).
reasonStringyesWhy the action is taken. Written to the audit trail with the actor and the time.

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteRoutingRule​

void deleteRoutingRule(String itemId)

Delete a routing rule. Deletes the routing rule (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.routing_rule.delete.

Route: /v1/telephony/routing-rules/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteTrunk​

void deleteTrunk(String itemId)

Delete a SIP trunk. Deletes the SIP trunk (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.trunk.delete.

Route: /v1/telephony/trunks/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteVoiceAgent​

void deleteVoiceAgent(String itemId)

Delete an AI voice agent. Deletes the AI voice agent (204); the engines lose it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.voice_agent.delete.

Route: /v1/telephony/voice-agents/{item_id} (DELETE).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.deleteVoicemail​

void deleteVoicemail(String messageId)

Delete a voicemail message. Deletes the message and its audio (409 telephony_legal_hold when the audio is held) and answers it with status deleted. Allowed to the readers and to the agent of the mailbox. Audited under telephony.voicemail.delete.

Route: /v1/telephony/voicemail/{message_id} (DELETE).

NameTypeDefaultRequiredDescription
messageIdStringyesIdentifier (UUID) of the voicemail message.

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.downloadPrompt​

TelephonyDownloadLink downloadPrompt(String promptId)

Get a download link of an IVR prompt. Answers {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256}: a SeaweedFS presigned URL valid 300 seconds; no storage credential is returned. 409 telephony_recording_unavailable when the object is not stored, 503 telephony_storage_missing when the platform profile is missing, 409 storage_capability_missing when presign was not verified. Needs tenant_admin, support_engineer, auditor or platform_admin. Audited under telephony.ivr_prompt.download.

Route: /v1/telephony/ivr-prompts/{prompt_id}/download (POST).

NameTypeDefaultRequiredDescription
promptIdStringyesIdentifier (UUID) of the IVR prompt.

Returns: TelephonyDownloadLink. A TelephonyDownloadLink: Presigned GET of a telephony recording or IVR prompt, returned by POST /v1/telephony/recordings/{recording_id}/download and POST /v1/telephony/ivr-prompts/{prompt_id}/download (valid expiresSeconds, audited).

Raises: the typed errors of the transport (Errors).

TelephonyClient.downloadRecording​

TelephonyDownloadLink downloadRecording(String recordingId)

Get a download link. Answers {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256}: a SeaweedFS presigned URL valid 300 seconds; no storage credential is returned. 409 telephony_recording_unavailable when the object is not stored, 503 telephony_storage_missing when the platform profile is missing, 409 storage_capability_missing when presign was not verified. Needs tenant_admin, support_engineer, auditor or platform_admin. Audited under telephony.recording.download with the SHA-256 of the URL.

Route: /v1/telephony/recordings/{recording_id}/download (POST).

NameTypeDefaultRequiredDescription
recordingIdStringyesIdentifier (UUID) of the recording, in the caller's tenant (another tenant's recording answers 404).

Returns: TelephonyDownloadLink. A TelephonyDownloadLink: Presigned GET of a telephony recording or IVR prompt, returned by POST /v1/telephony/recordings/{recording_id}/download and POST /v1/telephony/ivr-prompts/{prompt_id}/download (valid expiresSeconds, audited).

Raises: the typed errors of the transport (Errors).

TelephonyClient.drainPool​

JsonNode drainPool(String poolId, Object body)

Drain or restore a dispatcher destination. Sets the state of a destination on every Kamailio of the pool (dispatcher.set_state: drain inactive, active back in service) and returns the dispatcher.list of each. Needs platform_admin; audited under telephony.pbx_pool.drain or telephony.pbx_pool.active.

Route: /v1/telephony/pbx-pools/{pool_id}/drain (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
bodyObjectyesThe destination and its new state.

Returns: JsonNode. Decoded JSON answer of the operation "Drain or restore a dispatcher destination".

Raises: the typed errors of the transport (Errors).

TelephonyClient.drainPool​

JsonNode drainPool(String poolId, Object body, RequestOptions options)

Drain or restore a dispatcher destination. Sets the state of a destination on every Kamailio of the pool (dispatcher.set_state: drain inactive, active back in service) and returns the dispatcher.list of each. Needs platform_admin; audited under telephony.pbx_pool.drain or telephony.pbx_pool.active.

Route: /v1/telephony/pbx-pools/{pool_id}/drain (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
bodyObjectyesThe destination and its new state.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Drain or restore a dispatcher destination".

Raises: the typed errors of the transport (Errors).

TelephonyClient.eventStreams​

JsonNode eventStreams()

List the AMI event connections. State of the AMI event connection of every node (worker job telephony_events): pool_id, node, connected, connected_at, events, reconnects, last_error, updated_at. Needs platform_admin.

Route: /v1/telephony/event-streams (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "List the AMI event connections".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getAgent​

JsonNode getAgent(String itemId)

Read a human agent. One human agent of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/agents/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a human agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getCall​

JsonNode getCall(String callId)

Read a call. One call with legs (one per Asterisk channel, from the Cdr events), events (CEL, AMI, LiveKit and voice worker events in time order: source, type, occurred_at, uniqueid, channel, node, data) and recordings (same fields as GET /v1/telephony/recordings). Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/calls/{call_id} (GET).

NameTypeDefaultRequiredDescription
callIdStringyesIdentifier (UUID) of the call record, in the caller's tenant (another tenant's call answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a call".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getConference​

JsonNode getConference(String itemId)

Read a conference room. One conference room of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/conferences/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a conference room".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getConferenceSession​

JsonNode getConferenceSession(String sessionId)

Read a conference session. One conference session with its participants (same fields as the list). Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/conference-sessions/{session_id} (GET).

NameTypeDefaultRequiredDescription
sessionIdStringyesIdentifier (UUID) of the conference session.

Returns: JsonNode. Decoded JSON answer of the operation "Read a conference session".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getConfigVersion​

JsonNode getConfigVersion(String versionId)

Read a configuration version. One version with its files (secrets masked), Kamailio tables, LiveKit objects, delivery report per node (files read back and compared, reload outputs, restore), status and diff to the previous version. 404 when the caller may not read its pool.

Route: /v1/telephony/config-versions/{version_id} (GET).

NameTypeDefaultRequiredDescription
versionIdStringyesIdentifier (UUID) of the configuration version.

Returns: JsonNode. Decoded JSON answer of the operation "Read a configuration version".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getExtension​

JsonNode getExtension(String itemId)

Read an extension. One extension of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/extensions/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getIvrFlow​

JsonNode getIvrFlow(String itemId)

Read an IVR flow. One IVR flow of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-flows/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getIvrVersion​

JsonNode getIvrVersion(String flowId, String version)

Read a version of an IVR flow. One version of the flow with its graph; 404 telephony_not_found otherwise. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-flows/{flow_id}/versions/{version} (GET).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.
versionStringyesVersion number (1, 2, ...).

Returns: JsonNode. Decoded JSON answer of the operation "Read a version of an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getNumber​

JsonNode getNumber(String itemId)

Read a phone number. One phone number of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/numbers/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a phone number".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getPool​

JsonNode getPool(String poolId)

Read a PBX pool. One pool visible to the caller (404 otherwise), limited fields except for platform_admin. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/pbx-pools/{pool_id} (GET).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.

Returns: JsonNode. Decoded JSON answer of the operation "Read a PBX pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getPrompt​

JsonNode getPrompt(String promptId)

Read an IVR prompt. One IVR prompt; playback_url is filled for tenant_admin and platform_admin only. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-prompts/{prompt_id} (GET).

NameTypeDefaultRequiredDescription
promptIdStringyesIdentifier (UUID) of the IVR prompt.

Returns: JsonNode. Decoded JSON answer of the operation "Read an IVR prompt".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getQueue​

JsonNode getQueue(String itemId)

Read a call queue. One call queue of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/queues/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a call queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getRecording​

JsonNode getRecording(String recordingId)

Read a recording. One recording of the index (same fields as the list). Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/recordings/{recording_id} (GET).

NameTypeDefaultRequiredDescription
recordingIdStringyesIdentifier (UUID) of the recording, in the caller's tenant (another tenant's recording answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a recording".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getRoutingRule​

JsonNode getRoutingRule(String itemId)

Read a routing rule. One routing rule of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/routing-rules/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a routing rule".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getTrunk​

JsonNode getTrunk(String itemId)

Read a SIP trunk. One SIP trunk of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/trunks/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read a SIP trunk".

Raises: the typed errors of the transport (Errors).

TelephonyClient.getVoiceAgent​

JsonNode getVoiceAgent(String itemId)

Read an AI voice agent. One AI voice agent of the caller's tenant; 404 telephony_not_found otherwise. Secrets are never returned, only has_* flags. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/voice-agents/{item_id} (GET).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).

Returns: JsonNode. Decoded JSON answer of the operation "Read an AI voice agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.hangUp​

JsonNode hangUp(String linkedid)

Hang up an active call. Hangs up every channel of the call through ARI (DELETE /ari/channels/{uniqueid} on the node of each channel), or removes the SIP participant through the LiveKit RoomService for the AI branch. Answers {linkedid, results} with one status (ok, gone, failed) per channel; 502 telephony_control_failed when every channel failed. Needs tenant_admin or platform_admin. Audited under telephony.call.hangup.

Route: /v1/telephony/active-calls/{linkedid}/hangup (POST).

NameTypeDefaultRequiredDescription
linkedidStringyesAsterisk linkedid of the active call (linkedid of GET /v1/telephony/active-calls).

Returns: JsonNode. Decoded JSON answer of the operation "Hang up an active call".

Raises: the typed errors of the transport (Errors).

TelephonyClient.hangUp​

JsonNode hangUp(String linkedid, RequestOptions options)

Hang up an active call. Hangs up every channel of the call through ARI (DELETE /ari/channels/{uniqueid} on the node of each channel), or removes the SIP participant through the LiveKit RoomService for the AI branch. Answers {linkedid, results} with one status (ok, gone, failed) per channel; 502 telephony_control_failed when every channel failed. Needs tenant_admin or platform_admin. Audited under telephony.call.hangup.

Route: /v1/telephony/active-calls/{linkedid}/hangup (POST).

NameTypeDefaultRequiredDescription
linkedidStringyesAsterisk linkedid of the active call (linkedid of GET /v1/telephony/active-calls).
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Hang up an active call".

Raises: the typed errors of the transport (Errors).

TelephonyClient.infrastructure​

JsonNode infrastructure()

List the telephony infrastructure of the Navin Manager. Reads, through the Platform Manager bridge (Manager API token, X-NM-On-Behalf-Of, the permissions of the Manager apply), the clusters and their asterisk, kamailio, livekit and livekit-sip instances. Answers {clusters, binding, problems}: each cluster {id, name, mode, services}, each service {name, catalog_service, display_name, mode, method, version, managed, state, health, admin_state, tls_enabled, config_source (manager or defaults), config_version, bound, endpoints [{name, scheme, port, path}], nodes [{name, instance_id, host_id, hostname, fqdn, ip, component, state, desired_state, health, maintenance, host_state, addresses}], bindings {binding: {ref, kind}}, pool ({id, name, mode} of the PBX pool linked to an Asterisk instance, else null)}. Asterisk addresses ami, ari, sip; Kamailio jsonrpc (/RPC, admin address of the host group), sip, wss with TLS; LiveKit api, signal; LiveKit SIP sip. bound is true for the instance bound to navin-enterprise. binding gives flags only (cluster_id, asterisk.bound, asterisk.ami_secret, asterisk.ari_secret, kamailio.bound, kamailio.ephemeral_secret, livekit.bound, livekit.api_secret, livekit_sip.bound), never a value. problems lists the instances whose configuration the Manager refused (telephony_inventory_config_unreadable, catalog defaults used). Needs platform_admin; 503 platform_manager_not_configured, 502 platform_manager_unreachable, a refusal of the Manager is relayed.

Route: /v1/telephony/infrastructure (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "List the telephony infrastructure of the Navin Manager".

Raises: the typed errors of the transport (Errors).

TelephonyClient.infrastructure​

JsonNode infrastructure(Map<String, ?> query)

List the telephony infrastructure of the Navin Manager. Reads, through the Platform Manager bridge (Manager API token, X-NM-On-Behalf-Of, the permissions of the Manager apply), the clusters and their asterisk, kamailio, livekit and livekit-sip instances. Answers {clusters, binding, problems}: each cluster {id, name, mode, services}, each service {name, catalog_service, display_name, mode, method, version, managed, state, health, admin_state, tls_enabled, config_source (manager or defaults), config_version, bound, endpoints [{name, scheme, port, path}], nodes [{name, instance_id, host_id, hostname, fqdn, ip, component, state, desired_state, health, maintenance, host_state, addresses}], bindings {binding: {ref, kind}}, pool ({id, name, mode} of the PBX pool linked to an Asterisk instance, else null)}. Asterisk addresses ami, ari, sip; Kamailio jsonrpc (/RPC, admin address of the host group), sip, wss with TLS; LiveKit api, signal; LiveKit SIP sip. bound is true for the instance bound to navin-enterprise. binding gives flags only (cluster_id, asterisk.bound, asterisk.ami_secret, asterisk.ari_secret, kamailio.bound, kamailio.ephemeral_secret, livekit.bound, livekit.api_secret, livekit_sip.bound), never a value. problems lists the instances whose configuration the Manager refused (telephony_inventory_config_unreadable, catalog defaults used). Needs platform_admin; 503 platform_manager_not_configured, 502 platform_manager_unreachable, a refusal of the Manager is relayed.

Route: /v1/telephony/infrastructure (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: JsonNode. Decoded JSON answer of the operation "List the telephony infrastructure of the Navin Manager".

Raises: the typed errors of the transport (Errors).

TelephonyClient.liftBlock​

JsonNode liftBlock(String blockId, String reason)

Lift a block. Deletes the Kamailio key on every JSONRPC endpoint (htable.delete) and marks the block lifted. Needs tenant_admin or platform_admin. Audited under telephony.block.lift, published as telephony.block.lifted.

Route: /v1/telephony/blocks/{block_id}/lift (POST).

NameTypeDefaultRequiredDescription
blockIdStringyesIdentifier (UUID) of the block.
reasonStringyesReason kept with the block and in the audit trail.

Returns: JsonNode. Decoded JSON answer of the operation "Lift a block".

Raises: the typed errors of the transport (Errors).

TelephonyClient.listActiveCalls​

JsonNode listActiveCalls()

List the active calls. Calls in progress of the tenant: {items, count}, each item linkedid, call_id, navin_call_id, branch, state (ringing, queued, answered), direction, from, to, extension, queue, started_at, answered_at, duration_seconds, node and channels (uniqueid, channel, state, node). Kept up to date by the CEL events (CHAN_START, ANSWER, CHAN_END, LINKEDID_END) and the LiveKit webhooks. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/active-calls (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "List the active calls".

Raises: the typed errors of the transport (Errors).

TelephonyClient.listActiveCalls​

JsonNode listActiveCalls(Map<String, ?> query)

List the active calls. Calls in progress of the tenant: {items, count}, each item linkedid, call_id, navin_call_id, branch, state (ringing, queued, answered), direction, from, to, extension, queue, started_at, answered_at, duration_seconds, node and channels (uniqueid, channel, state, node). Kept up to date by the CEL events (CHAN_START, ANSWER, CHAN_END, LINKEDID_END) and the LiveKit webhooks. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/active-calls (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: JsonNode. Decoded JSON answer of the operation "List the active calls".

Raises: the typed errors of the transport (Errors).

TelephonyClient.listAgents​

Page<JsonNode> listAgents()

List the human agents. The human agents of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/agents (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listAgents​

Page<JsonNode> listAgents(Map<String, ?> query)

List the human agents. The human agents of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/agents (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listBlocks​

Page<JsonNode> listBlocks()

List the blocks. Blocks of the tenant and of its extensions, newest first: id, scope, extension, reason, origin (manual, automatic), alert_id, active, kamailio_key (key of the Kamailio hash table tenant_blocks), kamailio (push report per JSONRPC endpoint), created_by, created_at, lifted_by, lifted_at, lift_reason. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/blocks (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listBlocks​

Page<JsonNode> listBlocks(Map<String, ?> query)

List the blocks. Blocks of the tenant and of its extensions, newest first: id, scope, extension, reason, origin (manual, automatic), alert_id, active, kamailio_key (key of the Kamailio hash table tenant_blocks), kamailio (push report per JSONRPC endpoint), created_by, created_at, lifted_by, lifted_at, lift_reason. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/blocks (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listCalls​

Page<JsonNode> listCalls()

List the calls. Call history of the tenant, newest first. Each item: id, navin_call_id, linkedid, branch (pbx or ai), direction (inbound, outbound, internal, unknown), from, from_name, to, did, extension, queue, voice_agent_id, started_at, answered_at, ended_at, duration_seconds, billsec, wait_seconds, disposition, hangup_cause, hangup_cause_text, recording_id, legs, sip_call_id, livekit_room, pbx_instance_id, node. Built from the Cdr and CEL events of AMI and the LiveKit webhooks. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/calls (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listCalls​

Page<JsonNode> listCalls(Map<String, ?> query)

List the calls. Call history of the tenant, newest first. Each item: id, navin_call_id, linkedid, branch (pbx or ai), direction (inbound, outbound, internal, unknown), from, from_name, to, did, extension, queue, voice_agent_id, started_at, answered_at, ended_at, duration_seconds, billsec, wait_seconds, disposition, hangup_cause, hangup_cause_text, recording_id, legs, sip_call_id, livekit_room, pbx_instance_id, node. Built from the Cdr and CEL events of AMI and the LiveKit webhooks. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/calls (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listConferenceSessions​

Page<JsonNode> listConferenceSessions()

List the conference sessions. Sessions of the conference rooms of the tenant, from the Confbridge events of AMI, newest first: id, conference_id, number, started_at, ended_at, active, participant_count, max_participants, total_joins, participants (uniqueid, channel, caller, name, joined_at), recorded, recording_id. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/conference-sessions (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listConferenceSessions​

Page<JsonNode> listConferenceSessions(Map<String, ?> query)

List the conference sessions. Sessions of the conference rooms of the tenant, from the Confbridge events of AMI, newest first: id, conference_id, number, started_at, ended_at, active, participant_count, max_participants, total_joins, participants (uniqueid, channel, caller, name, joined_at), recorded, recording_id. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/conference-sessions (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listConferences​

Page<JsonNode> listConferences()

List the conference rooms. The conference rooms of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/conferences (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listConferences​

Page<JsonNode> listConferences(Map<String, ?> query)

List the conference rooms. The conference rooms of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/conferences (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listExtensions​

Page<JsonNode> listExtensions()

List the extensions. The extensions of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/extensions (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listExtensions​

Page<JsonNode> listExtensions(Map<String, ?> query)

List the extensions. The extensions of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/extensions (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listFraudAlerts​

Page<JsonNode> listFraudAlerts()

List the fraud alerts. Fraud signals of the tenant, newest first: id, kind (cps, concurrency, destination_refused, extension_volume), severity, extension, destination, linkedid, details, status, block_id, created_at, acknowledged_at, acknowledged_by. Each alert is also published as telephony.fraud.alert. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/fraud-alerts (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listFraudAlerts​

Page<JsonNode> listFraudAlerts(Map<String, ?> query)

List the fraud alerts. Fraud signals of the tenant, newest first: id, kind (cps, concurrency, destination_refused, extension_volume), severity, extension, destination, linkedid, details, status, block_id, created_at, acknowledged_at, acknowledged_by. Each alert is also published as telephony.fraud.alert. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/fraud-alerts (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listIvrFlows​

Page<JsonNode> listIvrFlows()

List the IVR flows. The IVR flows of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-flows (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listIvrFlows​

Page<JsonNode> listIvrFlows(Map<String, ?> query)

List the IVR flows. The IVR flows of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-flows (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listIvrVersions​

Page<JsonNode> listIvrVersions(String flowId)

List the versions of an IVR flow. Versions of the flow with their status (draft, published, archived) and graph, by identifier. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-flows/{flow_id}/versions (GET).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listIvrVersions​

Page<JsonNode> listIvrVersions(String flowId, Map<String, ?> query)

List the versions of an IVR flow. Versions of the flow with their status (draft, published, archived) and graph, by identifier. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-flows/{flow_id}/versions (GET).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listNumbers​

Page<JsonNode> listNumbers()

List the phone numbers. The phone numbers of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/numbers (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listNumbers​

Page<JsonNode> listNumbers(Map<String, ?> query)

List the phone numbers. The phone numbers of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/numbers (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listPoolVersions​

Page<JsonNode> listPoolVersions(String poolId)

List the configuration versions of a pool. Versions of the pool, newest first, with status, author, reason, sha256, the SHA-256 of every file, current (the version the engines run) and the delivery report; next_cursor pages by version number. Shared pool: platform_admin; dedicated pool: the readers of its tenant.

Route: /v1/telephony/pbx-pools/{pool_id}/versions (GET).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listPoolVersions​

Page<JsonNode> listPoolVersions(String poolId, Map<String, ?> query)

List the configuration versions of a pool. Versions of the pool, newest first, with status, author, reason, sha256, the SHA-256 of every file, current (the version the engines run) and the delivery report; next_cursor pages by version number. Shared pool: platform_admin; dedicated pool: the readers of its tenant.

Route: /v1/telephony/pbx-pools/{pool_id}/versions (GET).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listPools​

Page<JsonNode> listPools()

List the PBX pools. Every pool for platform_admin; for the other readers the shared pools and the pools dedicated to their tenant, with id, name, mode, tenant_id, enabled and dispatcher_set only. Secret references are never returned to them; has_* flags tell whether a secret is set. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/pbx-pools (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listPools​

Page<JsonNode> listPools(Map<String, ?> query)

List the PBX pools. Every pool for platform_admin; for the other readers the shared pools and the pools dedicated to their tenant, with id, name, mode, tenant_id, enabled and dispatcher_set only. Secret references are never returned to them; has_* flags tell whether a secret is set. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/pbx-pools (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listPrompts​

Page<JsonNode> listPrompts()

List the IVR prompts. IVR prompts of the tenant, newest first (fields of the upload answer, playback_url empty). Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-prompts (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listPrompts​

Page<JsonNode> listPrompts(Map<String, ?> query)

List the IVR prompts. IVR prompts of the tenant, newest first (fields of the upload answer, playback_url empty). Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/ivr-prompts (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listQueueMembers​

Page<JsonNode> listQueueMembers(String queueId)

List the members of a queue. Extensions and human agents of the queue with their penalty. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/queues/{queue_id}/members (GET).

NameTypeDefaultRequiredDescription
queueIdStringyesIdentifier (UUID) of the queue.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listQueueMembers​

Page<JsonNode> listQueueMembers(String queueId, Map<String, ?> query)

List the members of a queue. Extensions and human agents of the queue with their penalty. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/queues/{queue_id}/members (GET).

NameTypeDefaultRequiredDescription
queueIdStringyesIdentifier (UUID) of the queue.
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listQueues​

Page<JsonNode> listQueues()

List the call queues. The call queues of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/queues (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listQueues​

Page<JsonNode> listQueues(Map<String, ?> query)

List the call queues. The call queues of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/queues (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listRecordings​

Page<JsonNode> listRecordings()

List the recordings. Index of the telephony objects of the tenant in SeaweedFS, newest first. Each item: id, category, status (pending, stored, failed, deleted), source (asterisk, livekit, upload, export), content_type, size_bytes, sha256, duration_seconds, encryption (what the backend reported, and profile_mode), call_record_id, navin_call_id, retention_until, legal_hold, created_at, stored_at, deleted_at, last_error. The object key is never returned. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/recordings (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listRecordings​

Page<JsonNode> listRecordings(Map<String, ?> query)

List the recordings. Index of the telephony objects of the tenant in SeaweedFS, newest first. Each item: id, category, status (pending, stored, failed, deleted), source (asterisk, livekit, upload, export), content_type, size_bytes, sha256, duration_seconds, encryption (what the backend reported, and profile_mode), call_record_id, navin_call_id, retention_until, legal_hold, created_at, stored_at, deleted_at, last_error. The object key is never returned. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/recordings (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listRoutingRules​

Page<JsonNode> listRoutingRules()

List the routing rules. The routing rules of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/routing-rules (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listRoutingRules​

Page<JsonNode> listRoutingRules(Map<String, ?> query)

List the routing rules. The routing rules of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/routing-rules (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listTrunks​

Page<JsonNode> listTrunks()

List the SIP trunks. The SIP trunks of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/trunks (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listTrunks​

Page<JsonNode> listTrunks(Map<String, ?> query)

List the SIP trunks. The SIP trunks of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/trunks (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listVoiceAgents​

Page<JsonNode> listVoiceAgents()

List the AI voice agents. The AI voice agents of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/voice-agents (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listVoiceAgents​

Page<JsonNode> listVoiceAgents(Map<String, ?> query)

List the AI voice agents. The AI voice agents of the caller's tenant, by identifier, limit per page (default 50, at most 500) with next_cursor for the next page. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/voice-agents (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listVoicemail​

Page<JsonNode> listVoicemail()

List the voicemail messages. Voicemail messages (status new or read) of the tenant, newest first: id, mailbox, extension_id, caller_number, caller_name, navin_call_id, recording_id, duration_seconds, status, read_at, received_at. A message appears once its audio is stored. Readers see every mailbox; a human agent (any role) sees the mailboxes of the extensions it is bound to, 403 for anyone else. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor.

Route: /v1/telephony/voicemail (GET).

This element takes no parameter.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listVoicemail​

Page<JsonNode> listVoicemail(Map<String, ?> query)

List the voicemail messages. Voicemail messages (status new or read) of the tenant, newest first: id, mailbox, extension_id, caller_number, caller_name, navin_call_id, recording_id, duration_seconds, status, read_at, received_at. A message appears once its audio is stored. Readers see every mailbox; a human agent (any role) sees the mailboxes of the extensions it is bound to, 403 for anyone else. Keyset pagination: limit (1 to 500, default 50) and the opaque cursor of next_cursor.

Route: /v1/telephony/voicemail (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).

Raises: the typed errors of the transport (Errors).

TelephonyClient.listenVoicemail​

JsonNode listenVoicemail(String messageId)

Listen to a voicemail message. Answers the message (message) and its presigned link. Answers {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256}: a SeaweedFS presigned URL valid 300 seconds; no storage credential is returned. 409 telephony_recording_unavailable when the object is not stored, 503 telephony_storage_missing when the platform profile is missing, 409 storage_capability_missing when presign was not verified. Allowed to the readers and to the agent of the mailbox. Audited under telephony.voicemail.download.

Route: /v1/telephony/voicemail/{message_id}/listen (POST).

NameTypeDefaultRequiredDescription
messageIdStringyesIdentifier (UUID) of the voicemail message.

Returns: JsonNode. Decoded JSON answer of the operation "Listen to a voicemail message".

Raises: the typed errors of the transport (Errors).

TelephonyClient.listenVoicemail​

JsonNode listenVoicemail(String messageId, RequestOptions options)

Listen to a voicemail message. Answers the message (message) and its presigned link. Answers {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256}: a SeaweedFS presigned URL valid 300 seconds; no storage credential is returned. 409 telephony_recording_unavailable when the object is not stored, 503 telephony_storage_missing when the platform profile is missing, 409 storage_capability_missing when presign was not verified. Allowed to the readers and to the agent of the mailbox. Audited under telephony.voicemail.download.

Route: /v1/telephony/voicemail/{message_id}/listen (POST).

NameTypeDefaultRequiredDescription
messageIdStringyesIdentifier (UUID) of the voicemail message.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Listen to a voicemail message".

Raises: the typed errors of the transport (Errors).

TelephonyClient.markVoicemailRead​

JsonNode markVoicemailRead(String messageId)

Mark a voicemail message read. Marks the message read (or new again with read=false) and answers it. Allowed to the readers and to the agent of the mailbox. Audited under telephony.voicemail.read or telephony.voicemail.unread.

Route: /v1/telephony/voicemail/{message_id}/read (POST).

NameTypeDefaultRequiredDescription
messageIdStringyesIdentifier (UUID) of the voicemail message.

Returns: JsonNode. Decoded JSON answer of the operation "Mark a voicemail message read".

Raises: the typed errors of the transport (Errors).

TelephonyClient.markVoicemailRead​

JsonNode markVoicemailRead(String messageId, boolean read)

Mark a voicemail message read. Marks the message read (or new again with read=false) and answers it. Allowed to the readers and to the agent of the mailbox. Audited under telephony.voicemail.read or telephony.voicemail.unread.

Route: /v1/telephony/voicemail/{message_id}/read (POST).

NameTypeDefaultRequiredDescription
messageIdStringyesIdentifier (UUID) of the voicemail message.
readbooleanyestrue (default): read; false: new again.

Returns: JsonNode. Decoded JSON answer of the operation "Mark a voicemail message read".

Raises: the typed errors of the transport (Errors).

TelephonyClient.preview​

JsonNode preview()

Preview the configuration of the tenant. Compiles the configuration of the caller's tenant alone and validates it, without any delivery: valid, errors (code, path, messages), the five Asterisk files with secrets masked, the Kamailio entries, the desired LiveKit objects and sha256. 409 telephony_not_configured without settings. Needs tenant_admin or platform_admin.

Route: /v1/telephony/preview (POST).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "Preview the configuration of the tenant".

Raises: the typed errors of the transport (Errors).

TelephonyClient.preview​

JsonNode preview(RequestOptions options)

Preview the configuration of the tenant. Compiles the configuration of the caller's tenant alone and validates it, without any delivery: valid, errors (code, path, messages), the five Asterisk files with secrets masked, the Kamailio entries, the desired LiveKit objects and sha256. 409 telephony_not_configured without settings. Needs tenant_admin or platform_admin.

Route: /v1/telephony/preview (POST).

NameTypeDefaultRequiredDescription
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Preview the configuration of the tenant".

Raises: the typed errors of the transport (Errors).

TelephonyClient.previewPool​

JsonNode previewPool(String poolId)

Preview the configuration of a pool. Compiles every tenant of the pool and validates the result (graphs, references, no context of a tenant naming another tenant, a SIP domain for every tenant with extensions: telephony_sip_domain_missing otherwise), without delivery. Returns valid, errors, files (secrets masked), kamailio, livekit, sha256, tenants, current_version, unchanged and diff (unified diff per file to the published version). Shared pool: platform_admin; dedicated pool: its tenant_admin.

Route: /v1/telephony/pbx-pools/{pool_id}/preview (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.

Returns: JsonNode. Decoded JSON answer of the operation "Preview the configuration of a pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.previewPool​

JsonNode previewPool(String poolId, RequestOptions options)

Preview the configuration of a pool. Compiles every tenant of the pool and validates the result (graphs, references, no context of a tenant naming another tenant, a SIP domain for every tenant with extensions: telephony_sip_domain_missing otherwise), without delivery. Returns valid, errors, files (secrets masked), kamailio, livekit, sha256, tenants, current_version, unchanged and diff (unified diff per file to the published version). Shared pool: platform_admin; dedicated pool: its tenant_admin.

Route: /v1/telephony/pbx-pools/{pool_id}/preview (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Preview the configuration of a pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.publishIvrVersion​

JsonNode publishIvrVersion(String flowId, String version)

Publish a version of an IVR flow. Validates the version again and makes it the one the compiler uses; the previously published version is archived. The engines get it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.version.publish.

Route: /v1/telephony/ivr-flows/{flow_id}/versions/{version}/publish (POST).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.
versionStringyesVersion number (1, 2, ...).

Returns: JsonNode. Decoded JSON answer of the operation "Publish a version of an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.publishIvrVersion​

JsonNode publishIvrVersion(String flowId, String version, RequestOptions options)

Publish a version of an IVR flow. Validates the version again and makes it the one the compiler uses; the previously published version is archived. The engines get it at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.version.publish.

Route: /v1/telephony/ivr-flows/{flow_id}/versions/{version}/publish (POST).

NameTypeDefaultRequiredDescription
flowIdStringyesIdentifier (UUID) of the IVR flow.
versionStringyesVersion number (1, 2, ...).
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Publish a version of an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.publishPool​

TelephonyOperation publishPool(String poolId)

Publish the configuration of a pool. Compiles and validates the pool (422 with every problem, telephony_sip_domain_missing for a tenant with extensions but no SIP domain), records a new version (publishing) and answers 202 with version_id, version, sha256 and operation_id (headers Operation-Id, Operation-Location). In the background every node of the pool gets the files through AMI (CreateConfig, UpdateConfig, reloads, GetConfig read back), then the Kamailio tables and the LiveKit SIP objects are reconciled. The version ends published or failed (the failed nodes get the previous version back); follow it with GET /v1/telephony/config-versions/{version_id} or the operation. One publication at a time per pool (409 telephony_publication_running). Idempotency-Key honoured. Shared pool: platform_admin; dedicated pool: its tenant_admin. Audited under telephony.config.publish then telephony.config.published or telephony.config.failed.

Route: /v1/telephony/pbx-pools/{pool_id}/publish (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.

Returns: TelephonyOperation. A TelephonyOperation: 202 answer of a PBX pool publication or rollback: the new configuration version and the long operation that delivers it (follow it with operations().get).

Raises: the typed errors of the transport (Errors).

TelephonyClient.publishPool​

TelephonyOperation publishPool(String poolId, String reason, RequestOptions options)

Publish the configuration of a pool. Compiles and validates the pool (422 with every problem, telephony_sip_domain_missing for a tenant with extensions but no SIP domain), records a new version (publishing) and answers 202 with version_id, version, sha256 and operation_id (headers Operation-Id, Operation-Location). In the background every node of the pool gets the files through AMI (CreateConfig, UpdateConfig, reloads, GetConfig read back), then the Kamailio tables and the LiveKit SIP objects are reconciled. The version ends published or failed (the failed nodes get the previous version back); follow it with GET /v1/telephony/config-versions/{version_id} or the operation. One publication at a time per pool (409 telephony_publication_running). Idempotency-Key honoured. Shared pool: platform_admin; dedicated pool: its tenant_admin. Audited under telephony.config.publish then telephony.config.published or telephony.config.failed.

Route: /v1/telephony/pbx-pools/{pool_id}/publish (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
reasonStringyesReason, kept with the version and in the audit.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: TelephonyOperation. A TelephonyOperation: 202 answer of a PBX pool publication or rollback: the new configuration version and the long operation that delivers it (follow it with operations().get).

Raises: the typed errors of the transport (Errors).

TelephonyClient.putQuotas​

JsonNode putQuotas(Object body)

Set the telephony quotas. Replaces the quotas of the tenant. Prefixes are + then 1 to 8 digits (422 telephony_prefix_invalid). Needs platform_admin: a tenant never raises its own limits. Audited under telephony.quotas.update.

Route: /v1/telephony/quotas (PUT).

NameTypeDefaultRequiredDescription
bodyObjectyesThe complete quotas; omitted fields take their default.

Returns: JsonNode. Decoded JSON answer of the operation "Set the telephony quotas".

Raises: the typed errors of the transport (Errors).

TelephonyClient.putQuotas​

JsonNode putQuotas(Object body, RequestOptions options)

Set the telephony quotas. Replaces the quotas of the tenant. Prefixes are + then 1 to 8 digits (422 telephony_prefix_invalid). Needs platform_admin: a tenant never raises its own limits. Audited under telephony.quotas.update.

Route: /v1/telephony/quotas (PUT).

NameTypeDefaultRequiredDescription
bodyObjectyesThe complete quotas; omitted fields take their default.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Set the telephony quotas".

Raises: the typed errors of the transport (Errors).

TelephonyClient.putRuntimeSettings​

JsonNode putRuntimeSettings(Object body)

Set the runtime settings. Replaces the runtime settings. voicemail_storage reaches Asterisk at the next publication of the pool (platform voicemail: Record then the UserEvent NavinVoicemail). Needs tenant_admin or platform_admin. Audited under telephony.runtime_settings.update.

Route: /v1/telephony/runtime-settings (PUT).

NameTypeDefaultRequiredDescription
bodyObjectyesThe complete runtime settings; omitted fields take their default.

Returns: JsonNode. Decoded JSON answer of the operation "Set the runtime settings".

Raises: the typed errors of the transport (Errors).

TelephonyClient.putRuntimeSettings​

JsonNode putRuntimeSettings(Object body, RequestOptions options)

Set the runtime settings. Replaces the runtime settings. voicemail_storage reaches Asterisk at the next publication of the pool (platform voicemail: Record then the UserEvent NavinVoicemail). Needs tenant_admin or platform_admin. Audited under telephony.runtime_settings.update.

Route: /v1/telephony/runtime-settings (PUT).

NameTypeDefaultRequiredDescription
bodyObjectyesThe complete runtime settings; omitted fields take their default.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Set the runtime settings".

Raises: the typed errors of the transport (Errors).

TelephonyClient.putSettings​

JsonNode putSettings(Object body)

Set the telephony settings. Creates or replaces the settings of the tenant. The SIP domain is unique on the platform (409 telephony_domain_taken). Changing model or pbx_instance_id needs platform_admin (403 otherwise); the pool must be shared or dedicated to this tenant and match the model (422 telephony_pool_mode). Needs tenant_admin or platform_admin; audited under telephony.settings.update.

Route: /v1/telephony/settings (PUT).

NameTypeDefaultRequiredDescription
bodyObjectyesThe complete settings; omitted fields take their default.

Returns: JsonNode. Decoded JSON answer of the operation "Set the telephony settings".

Raises: the typed errors of the transport (Errors).

TelephonyClient.putSettings​

JsonNode putSettings(Object body, RequestOptions options)

Set the telephony settings. Creates or replaces the settings of the tenant. The SIP domain is unique on the platform (409 telephony_domain_taken). Changing model or pbx_instance_id needs platform_admin (403 otherwise); the pool must be shared or dedicated to this tenant and match the model (422 telephony_pool_mode). Needs tenant_admin or platform_admin; audited under telephony.settings.update.

Route: /v1/telephony/settings (PUT).

NameTypeDefaultRequiredDescription
bodyObjectyesThe complete settings; omitted fields take their default.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Set the telephony settings".

Raises: the typed errors of the transport (Errors).

TelephonyClient.quotas​

JsonNode quotas()

Read the telephony quotas. Quotas and fraud limits of the tenant (defaults with configured: false when never set): concurrent calls and calls per second (pushed to Kamailio tenant_limits), monthly minutes, allowed countries, premium prefixes, maximum call duration (dialplan) and recording retention. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/quotas (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "Read the telephony quotas".

Raises: the typed errors of the transport (Errors).

TelephonyClient.reconcilePool​

JsonNode reconcilePool(String poolId)

Reconcile the routing of a pool. Compares the Kamailio hash tables and the LiveKit SIP trunks and dispatch rules with the published version and fixes the differences (idempotent: nothing changes when they match). A Kamailio whose core.uptime went down restarted and gets every entry again (full_resync). 409 telephony_nothing_published before the first publication. Same roles as the publication; audited under telephony.config.reconcile.

Route: /v1/telephony/pbx-pools/{pool_id}/reconcile (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.

Returns: JsonNode. Decoded JSON answer of the operation "Reconcile the routing of a pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.reconcilePool​

JsonNode reconcilePool(String poolId, RequestOptions options)

Reconcile the routing of a pool. Compares the Kamailio hash tables and the LiveKit SIP trunks and dispatch rules with the published version and fixes the differences (idempotent: nothing changes when they match). A Kamailio whose core.uptime went down restarted and gets every entry again (full_resync). 409 telephony_nothing_published before the first publication. Same roles as the publication; audited under telephony.config.reconcile.

Route: /v1/telephony/pbx-pools/{pool_id}/reconcile (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Reconcile the routing of a pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.removeQueueMember​

void removeQueueMember(String queueId, String memberId)

Remove a member from a queue. Removes the member (204). Needs tenant_admin or platform_admin; audited under telephony.queue_member.delete.

Route: /v1/telephony/queues/{queue_id}/members/{member_id} (DELETE).

NameTypeDefaultRequiredDescription
queueIdStringyesIdentifier (UUID) of the queue.
memberIdStringyesIdentifier (UUID) of the queue member.

Returns: void.

Raises: the typed errors of the transport (Errors).

TelephonyClient.rollbackPool​

TelephonyOperation rollbackPool(String poolId, int version, String reason)

Roll a pool back to a version. Publishes the files, tables and LiveKit objects of an earlier published or rolled_back version again as a new version (rollback_of), as a long operation like the publication (202). Once published, the later versions become rolled_back. 409 telephony_rollback_target for another status. Same roles as the publication; audited under telephony.config.rollback.

Route: /v1/telephony/pbx-pools/{pool_id}/rollback (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
versionintyesNumber of the version to publish again.
reasonStringyesReason, kept with the version and in the audit.

Returns: TelephonyOperation. A TelephonyOperation: 202 answer of a PBX pool publication or rollback: the new configuration version and the long operation that delivers it (follow it with operations().get).

Raises: the typed errors of the transport (Errors).

TelephonyClient.rollbackPool​

TelephonyOperation rollbackPool(String poolId, int version, String reason, RequestOptions options)

Roll a pool back to a version. Publishes the files, tables and LiveKit objects of an earlier published or rolled_back version again as a new version (rollback_of), as a long operation like the publication (202). Once published, the later versions become rolled_back. 409 telephony_rollback_target for another status. Same roles as the publication; audited under telephony.config.rollback.

Route: /v1/telephony/pbx-pools/{pool_id}/rollback (POST).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
versionintyesNumber of the version to publish again.
reasonStringyesReason, kept with the version and in the audit.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: TelephonyOperation. A TelephonyOperation: 202 answer of a PBX pool publication or rollback: the new configuration version and the long operation that delivers it (follow it with operations().get).

Raises: the typed errors of the transport (Errors).

TelephonyClient.runtimeSettings​

JsonNode runtimeSettings()

Read the runtime settings. Voicemail storage and fraud thresholds of the tenant (configured false and the defaults when never set). Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/runtime-settings (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "Read the runtime settings".

Raises: the typed errors of the transport (Errors).

TelephonyClient.setLegalHold​

JsonNode setLegalHold(String recordingId, boolean legalHold, String reason)

Set the legal hold of a recording. Places or releases the legal hold: a held recording is never deleted, neither by the API nor by the retention job. Needs tenant_admin or platform_admin. Audited under telephony.recording.legal_hold with the reason.

Route: /v1/telephony/recordings/{recording_id}/legal-hold (PUT).

NameTypeDefaultRequiredDescription
recordingIdStringyesIdentifier (UUID) of the recording, in the caller's tenant (another tenant's recording answers 404).
legalHoldbooleanyestrue: hold the recording; false: release it.
reasonStringyesReason kept in the audit trail (300 characters at most).

Returns: JsonNode. Decoded JSON answer of the operation "Set the legal hold of a recording".

Raises: the typed errors of the transport (Errors).

TelephonyClient.settings​

JsonNode settings()

Read the telephony settings. Telephony settings of the caller's tenant: model, SIP domain, PBX pool, CDR retention, numbering plan, and tid, the short identifier the engines know the tenant by. configured: false when they were never set. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/settings (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "Read the telephony settings".

Raises: the typed errors of the transport (Errors).

TelephonyClient.stats​

JsonNode stats()

Read the live statistics. Dashboard figures of the tenant computed from the call tables: active_calls, active_by_state, active_by_branch, calls, answered, answer_rate, average_billsec, average_wait_seconds, calls_per_hour (hour, calls, answered, inbound, outbound), queues (queue, sla_seconds, offered, answered, abandoned, waiting, average_wait_seconds, max_wait_seconds, sla = share answered within the SLA of the queue, abandon_rate), agents (queue member states: queue, interface, extension, member_name, device_status, paused, paused_reason, in_call, calls_taken, updated_at), registrations (extension, status, contacts, updated_at), open_fraud_alerts, active_blocks, generated_at, window_hours. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/stats (GET).

This element takes no parameter.

Returns: JsonNode. Decoded JSON answer of the operation "Read the live statistics".

Raises: the typed errors of the transport (Errors).

TelephonyClient.stats​

JsonNode stats(Map<String, ?> query)

Read the live statistics. Dashboard figures of the tenant computed from the call tables: active_calls, active_by_state, active_by_branch, calls, answered, answer_rate, average_billsec, average_wait_seconds, calls_per_hour (hour, calls, answered, inbound, outbound), queues (queue, sla_seconds, offered, answered, abandoned, waiting, average_wait_seconds, max_wait_seconds, sla = share answered within the SLA of the queue, abandon_rate), agents (queue member states: queue, interface, extension, member_name, device_status, paused, paused_reason, in_call, calls_taken, updated_at), registrations (extension, status, contacts, updated_at), open_fraud_alerts, active_blocks, generated_at, window_hours. Needs tenant_admin, support_engineer, auditor or platform_admin.

Route: /v1/telephony/stats (GET).

NameTypeDefaultRequiredDescription
queryMap<String, ?>yesQuery string parameters of the route.

Returns: JsonNode. Decoded JSON answer of the operation "Read the live statistics".

Raises: the typed errors of the transport (Errors).

TelephonyClient.transfer​

JsonNode transfer(String linkedid, Object body)

Transfer an active call. Transfers a channel of the call: AMI Redirect to {tid}-internal (extension of the tenant, 422 telephony_reference_invalid when it does not exist) or {tid}-outbound (E.164 number, the permissions and destination rules of the dialplan apply); for the AI branch, LiveKit TransferSIPParticipant (SIP REFER). ARI continue and redirect are not used: they only act on channels inside a Stasis application. Answers {linkedid, target, status, via, uniqueid}; 502 telephony_control_failed on a refusal. Needs tenant_admin or platform_admin. Audited under telephony.call.transfer.

Route: /v1/telephony/active-calls/{linkedid}/transfer (POST).

NameTypeDefaultRequiredDescription
linkedidStringyesAsterisk linkedid of the active call (linkedid of GET /v1/telephony/active-calls).
bodyObjectyesThe target and, optionally, the channel to move.

Returns: JsonNode. Decoded JSON answer of the operation "Transfer an active call".

Raises: the typed errors of the transport (Errors).

TelephonyClient.transfer​

JsonNode transfer(String linkedid, Object body, RequestOptions options)

Transfer an active call. Transfers a channel of the call: AMI Redirect to {tid}-internal (extension of the tenant, 422 telephony_reference_invalid when it does not exist) or {tid}-outbound (E.164 number, the permissions and destination rules of the dialplan apply); for the AI branch, LiveKit TransferSIPParticipant (SIP REFER). ARI continue and redirect are not used: they only act on channels inside a Stasis application. Answers {linkedid, target, status, via, uniqueid}; 502 telephony_control_failed on a refusal. Needs tenant_admin or platform_admin. Audited under telephony.call.transfer.

Route: /v1/telephony/active-calls/{linkedid}/transfer (POST).

NameTypeDefaultRequiredDescription
linkedidStringyesAsterisk linkedid of the active call (linkedid of GET /v1/telephony/active-calls).
bodyObjectyesThe target and, optionally, the channel to move.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Transfer an active call".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateAgent​

JsonNode updateAgent(String itemId, Object body)

Change a human agent. Changes the sent fields only and returns the human agent; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.agent.update.

Route: /v1/telephony/agents/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a human agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateAgent​

JsonNode updateAgent(String itemId, Object body, RequestOptions options)

Change a human agent. Changes the sent fields only and returns the human agent; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.agent.update.

Route: /v1/telephony/agents/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a human agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateConference​

JsonNode updateConference(String itemId, Object body)

Change a conference room. Changes the sent fields only and returns the conference room; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.conference.update.

Route: /v1/telephony/conferences/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a conference room".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateConference​

JsonNode updateConference(String itemId, Object body, RequestOptions options)

Change a conference room. Changes the sent fields only and returns the conference room; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.conference.update.

Route: /v1/telephony/conferences/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a conference room".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateExtension​

JsonNode updateExtension(String itemId, Object body)

Change an extension. Changes the sent fields only and returns the extension; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.extension.update.

Route: /v1/telephony/extensions/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateExtension​

JsonNode updateExtension(String itemId, Object body, RequestOptions options)

Change an extension. Changes the sent fields only and returns the extension; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.extension.update.

Route: /v1/telephony/extensions/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change an extension".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateIvrFlow​

JsonNode updateIvrFlow(String itemId, Object body)

Change an IVR flow. Changes the sent fields only and returns the IVR flow; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.update.

Route: /v1/telephony/ivr-flows/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateIvrFlow​

JsonNode updateIvrFlow(String itemId, Object body, RequestOptions options)

Change an IVR flow. Changes the sent fields only and returns the IVR flow; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.ivr_flow.update.

Route: /v1/telephony/ivr-flows/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change an IVR flow".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateNumber​

JsonNode updateNumber(String itemId, Object body)

Change a phone number. Changes the sent fields only and returns the phone number; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.number.update.

Route: /v1/telephony/numbers/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a phone number".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateNumber​

JsonNode updateNumber(String itemId, Object body, RequestOptions options)

Change a phone number. Changes the sent fields only and returns the phone number; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.number.update.

Route: /v1/telephony/numbers/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a phone number".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updatePool​

JsonNode updatePool(String poolId, Object body)

Change a PBX pool. Changes the sent fields of the pool. Needs platform_admin; audited under telephony.pbx_pool.update.

Route: /v1/telephony/pbx-pools/{pool_id} (PATCH).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a PBX pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updatePool​

JsonNode updatePool(String poolId, Object body, RequestOptions options)

Change a PBX pool. Changes the sent fields of the pool. Needs platform_admin; audited under telephony.pbx_pool.update.

Route: /v1/telephony/pbx-pools/{pool_id} (PATCH).

NameTypeDefaultRequiredDescription
poolIdStringyesIdentifier (UUID) of the PBX pool.
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a PBX pool".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateQueue​

JsonNode updateQueue(String itemId, Object body)

Change a call queue. Changes the sent fields only and returns the call queue; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.queue.update.

Route: /v1/telephony/queues/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a call queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateQueue​

JsonNode updateQueue(String itemId, Object body, RequestOptions options)

Change a call queue. Changes the sent fields only and returns the call queue; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.queue.update.

Route: /v1/telephony/queues/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a call queue".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateQueueMember​

JsonNode updateQueueMember(String queueId, String memberId, int penalty)

Change the penalty of a queue member. Sets the penalty of the member (0 rings first). Needs tenant_admin or platform_admin; audited under telephony.queue_member.update.

Route: /v1/telephony/queues/{queue_id}/members/{member_id} (PATCH).

NameTypeDefaultRequiredDescription
queueIdStringyesIdentifier (UUID) of the queue.
memberIdStringyesIdentifier (UUID) of the queue member.
penaltyintyesNew penalty, 0 to 100.

Returns: JsonNode. Decoded JSON answer of the operation "Change the penalty of a queue member".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateRoutingRule​

JsonNode updateRoutingRule(String itemId, Object body)

Change a routing rule. Changes the sent fields only and returns the routing rule; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.routing_rule.update.

Route: /v1/telephony/routing-rules/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a routing rule".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateRoutingRule​

JsonNode updateRoutingRule(String itemId, Object body, RequestOptions options)

Change a routing rule. Changes the sent fields only and returns the routing rule; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.routing_rule.update.

Route: /v1/telephony/routing-rules/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a routing rule".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateTrunk​

JsonNode updateTrunk(String itemId, Object body)

Change a SIP trunk. Changes the sent fields only and returns the SIP trunk; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.trunk.update.

Route: /v1/telephony/trunks/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change a SIP trunk".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateTrunk​

JsonNode updateTrunk(String itemId, Object body, RequestOptions options)

Change a SIP trunk. Changes the sent fields only and returns the SIP trunk; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.trunk.update.

Route: /v1/telephony/trunks/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change a SIP trunk".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateVoiceAgent​

JsonNode updateVoiceAgent(String itemId, Object body)

Change an AI voice agent. Changes the sent fields only and returns the AI voice agent; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.voice_agent.update.

Route: /v1/telephony/voice-agents/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.

Returns: JsonNode. Decoded JSON answer of the operation "Change an AI voice agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.updateVoiceAgent​

JsonNode updateVoiceAgent(String itemId, Object body, RequestOptions options)

Change an AI voice agent. Changes the sent fields only and returns the AI voice agent; the same checks as the creation apply. A sent secret replaces the stored one (new vault version). The engines get the change at the next publication of the pool. Needs tenant_admin or platform_admin; audited under telephony.voice_agent.update.

Route: /v1/telephony/voice-agents/{item_id} (PATCH).

NameTypeDefaultRequiredDescription
itemIdStringyesIdentifier (UUID) of the object, in the caller's tenant (another tenant's object answers 404).
bodyObjectyesThe fields to change.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Change an AI voice agent".

Raises: the typed errors of the transport (Errors).

TelephonyClient.uploadPrompt​

JsonNode uploadPrompt(String name, byte[] wav)

Upload an IVR prompt. Raw body: a PCM WAV file (Content-Type: audio/wav, 415 telephony_prompt_type otherwise, 413 telephony_prompt_size above 10 MB, 422 telephony_prompt_invalid when it is not readable, 422 telephony_prompt_format when it is not 8000 Hz, 16 bit, mono, the only WAV the wav format of Asterisk reads). The file goes through the file security pipeline (422 file_blocked, 503 file_scan_unavailable), is stored in the category ivr-prompts (no expiry) and answers 201 with id, name, recording_id, content_type, size_bytes, sha256, duration_seconds, scan_id, created_at and playback_url, the signed URL an IVR plays. 409 telephony_name_taken when the name is used. Needs tenant_admin or platform_admin. Audited under telephony.ivr_prompt.create.

Route: /v1/telephony/ivr-prompts (POST).

NameTypeDefaultRequiredDescription
nameStringyesName of the prompt, unique in the tenant (lowercase letters, digits, -).
wavbyte[]yesRaw bytes of the WAV file, sent as is with Content-Type: audio/wav.

Returns: JsonNode. Decoded JSON answer of the operation "Upload an IVR prompt".

Raises: the typed errors of the transport (Errors).

TelephonyClient.uploadPrompt​

JsonNode uploadPrompt(String name, byte[] wav, RequestOptions options)

Upload an IVR prompt. Raw body: a PCM WAV file (Content-Type: audio/wav, 415 telephony_prompt_type otherwise, 413 telephony_prompt_size above 10 MB, 422 telephony_prompt_invalid when it is not readable, 422 telephony_prompt_format when it is not 8000 Hz, 16 bit, mono, the only WAV the wav format of Asterisk reads). The file goes through the file security pipeline (422 file_blocked, 503 file_scan_unavailable), is stored in the category ivr-prompts (no expiry) and answers 201 with id, name, recording_id, content_type, size_bytes, sha256, duration_seconds, scan_id, created_at and playback_url, the signed URL an IVR plays. 409 telephony_name_taken when the name is used. Needs tenant_admin or platform_admin. Audited under telephony.ivr_prompt.create.

Route: /v1/telephony/ivr-prompts (POST).

NameTypeDefaultRequiredDescription
nameStringyesName of the prompt, unique in the tenant (lowercase letters, digits, -).
wavbyte[]yesRaw bytes of the WAV file, sent as is with Content-Type: audio/wav.
optionsRequestOptionsyesPer call options (idempotency key, traceparent, headers, abort signal).

Returns: JsonNode. Decoded JSON answer of the operation "Upload an IVR prompt".

Raises: the typed errors of the transport (Errors).

TelephonyClient.webRtcCredentials​

TelephonyWebRtcCredentials webRtcCredentials(String extensionId)

Get WebRTC credentials. Ephemeral SIP credentials of a WebRTC extension for the Kamailio auth_ephemeral module: username <expiry>:<endpoint>, password base64(HMAC-SHA1(shared secret, username)), expires_at (one hour at most), sip_uri sip:<endpoint>@<SIP domain> (the softphone registers and calls with its endpoint name as From and To user, the user Kamailio checks against the credentials), ws_url, realm, endpoint (<tid>-<extension>) and number (the extension number, for display). The SIP password of the extension never reaches the browser. Allowed for tenant_admin, platform_admin and the human agent bound to the extension (404 for anyone else). 409 telephony_not_webrtc or telephony_not_configured. Audited under telephony.webrtc.credentials.

Route: /v1/telephony/webrtc/credentials (POST).

NameTypeDefaultRequiredDescription
extensionIdStringyesWebRTC extension of the tenant.

Returns: TelephonyWebRtcCredentials. A TelephonyWebRtcCredentials: Ephemeral SIP credentials of a WebRTC extension, returned by POST /v1/telephony/webrtc/credentials (one hour at most, for the Kamailio auth_ephemeral module).

Raises: the typed errors of the transport (Errors).

TelephonyClient.webRtcCredentials​

TelephonyWebRtcCredentials webRtcCredentials(String extensionId, int ttlSeconds)

Get WebRTC credentials. Ephemeral SIP credentials of a WebRTC extension for the Kamailio auth_ephemeral module: username <expiry>:<endpoint>, password base64(HMAC-SHA1(shared secret, username)), expires_at (one hour at most), sip_uri sip:<endpoint>@<SIP domain> (the softphone registers and calls with its endpoint name as From and To user, the user Kamailio checks against the credentials), ws_url, realm, endpoint (<tid>-<extension>) and number (the extension number, for display). The SIP password of the extension never reaches the browser. Allowed for tenant_admin, platform_admin and the human agent bound to the extension (404 for anyone else). 409 telephony_not_webrtc or telephony_not_configured. Audited under telephony.webrtc.credentials.

Route: /v1/telephony/webrtc/credentials (POST).

NameTypeDefaultRequiredDescription
extensionIdStringyesWebRTC extension of the tenant.
ttlSecondsintyesLifetime of the credentials, 60 to 3600 seconds (default 3600).

Returns: TelephonyWebRtcCredentials. A TelephonyWebRtcCredentials: Ephemeral SIP credentials of a WebRTC extension, returned by POST /v1/telephony/webrtc/credentials (one hour at most, for the Kamailio auth_ephemeral module).

Raises: the typed errors of the transport (Errors).