enterprise_ai.telephony
Source : sdks/python/src/enterprise_ai/telephony/__init__.py. Retour à l'index de la référence du SDK Python.
Cette page est générée par tools/docs/gen_sdk_reference.py depuis les sources du SDK et les dossiers de textes OpenAPI. Ne la modifiez pas à la main : changez la source et régénérez.
Classe TelephonyClient
Téléphonie. Téléphonie (ADR-0173) : PBX d'entreprise, bord SIP et agents vocaux IA du tenant. Navin Enterprise garde les données (trunks, extensions, numéros, règles de routage, flux SVI, files, agents humains et IA, conférences, quotas), compile les fichiers gérés d'Asterisk, les tables de routage Kamailio et les objets LiveKit SIP par pool PBX, et les publie vers les moteurs par AMI, JSONRPC et Twirp avec versions et retour arrière ; il n'exécute jamais de commande système. Le Navin Manager installe et exploite les moteurs.
Resource
TelephonyClient.acknowledge_fraud_alert
acknowledge_fraud_alert(alert_id: str) -> Any
Acquitter une alerte de fraude. Marque l'alerte acquittée et la renvoie. Demande tenant_admin ou platform_admin. Audité sous telephony.fraud.acknowledge.
Route : /v1/telephony/fraud-alerts/{alert_id}/acknowledge (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
alert_id | str | oui | Identifiant (UUID) de l'alerte de fraude. |
Retour : Any. Réponse JSON décodée de l'opération « Acquitter une alerte de fraude ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.active_calls
active_calls(extension: str | None = None, queue: str | None = None) -> Any
Lister les appels actifs. Appels en cours du tenant : {items, count}, chaque élément linkedid, call_id, navin_call_id, branch, state (ringing, queued, answered), direction, from, to, extension, queue, started_at, answered_at, duration_seconds, node et channels (uniqueid, channel, state, node). Tenu à jour par les événements CEL (CHAN_START, ANSWER, CHAN_END, LINKEDID_END) et les webhooks LiveKit. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/active-calls (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
extension | str | None | None | non | Seulement ce numéro d'extension (2 à 8 chiffres). |
queue | str | None | None | non | Seulement cette file (nom sans le tid). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les appels actifs ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.add_queue_member
add_queue_member(queue_id: str, extension_id: str | None = None, agent_id: str | None = None, penalty: int | None = None, idempotency_key: str | None = None) -> Any
Ajouter un membre à une file. Ajoute exactement une extension ou un agent humain du tenant (422 telephony_member_target ou telephony_reference_invalid). Idempotency-Key prise en compte. Demande tenant_admin ou platform_admin ; audité sous telephony.queue_member.create.
Route : /v1/telephony/queues/{queue_id}/members (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de la file. | |
extension_id | str | None | None | non | Extension du tenant (ou agent_id, pas les deux). |
agent_id | str | None | None | non | Agent humain du tenant, joint sur son extension. |
penalty | int | None | None | non | Pénalité de 0 à 100, la plus petite sonne en premier. |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
Retour : Any. Réponse JSON décodée de l'opération « Ajouter un membre à une file ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.agent
agent(agent_id: str) -> Any
Lire un agent humain. Un agent humain du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/agents/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
agent_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un agent humain ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.agents
agents(enabled: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les agents humains. Les agents humains du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/agents (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
enabled | bool | None | None | non | Seulement les objets actifs (true) ou inactifs (false). Par défaut : les deux. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les agents humains ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.blocks
blocks(active: bool | None = None) -> Any
Lister les blocages. Blocages du tenant et de ses extensions, du plus récent au plus ancien : id, scope, extension, reason, origin (manual, automatic), alert_id, active, kamailio_key (clé de la table de hachage Kamailio tenant_blocks), kamailio (compte rendu de l'envoi par point JSONRPC), created_by, created_at, lifted_by, lifted_at, lift_reason. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/blocks (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
active | bool | None | None | non | Seulement les blocages actifs (true) ou levés (false). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les blocages ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.call
call(call_id: str) -> Any
Lire un appel. Un appel avec legs (une par canal Asterisk, depuis les événements Cdr), events (événements CEL, AMI, LiveKit et du worker vocal dans l'ordre du temps : source, type, occurred_at, uniqueid, channel, node, data) et recordings (mêmes champs que GET /v1/telephony/recordings). Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/calls/{call_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
call_id | str | oui | Identifiant (UUID) de l'enregistrement d'appel, dans le tenant de l'appelant (l'appel d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un appel ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.calls
calls(direction: str | None = None, branch: str | None = None, disposition: str | None = None, extension: str | None = None, number: str | None = None, queue: str | None = None, answered: bool | None = None, since: str | None = None, until: str | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les appels. Historique des appels du tenant, du plus récent au plus ancien. Chaque élément : id, navin_call_id, linkedid, branch (pbx ou 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. Construit à partir des événements Cdr et CEL de l'AMI et des webhooks LiveKit. Pagination par curseur : limit (1 à 500, 50 par défaut) et le cursor opaque de next_cursor. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/calls (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
direction | str | None | None | non | Seulement cette direction. |
branch | str | None | None | non | Seulement cette branche : pbx (Asterisk) ou ai (LiveKit SIP). |
disposition | str | None | None | non | Seulement cette issue du CDR Asterisk. |
extension | str | None | None | non | Seulement ce numéro d'extension (2 à 8 chiffres). |
number | str | None | None | non | Seulement les appels dont l'appelant, l'appelé ou le numéro DID est ce numéro. |
queue | str | None | None | non | Seulement cette file (nom sans le tid). |
answered | bool | None | None | non | true : appels répondus seulement ; false : appels sans réponse seulement. |
since | str | None | None | non | Appels commencés à cet instant ou après (ISO 8601). |
until | str | None | None | non | Appels commencés avant cet instant (ISO 8601). |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.conference
conference(conference_id: str) -> Any
Lire une salle de conférence. Une salle de conférence du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/conferences/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
conference_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire une salle de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.conference_session
conference_session(session_id: str) -> Any
Lire une session de conférence. Une session de conférence avec ses participants (mêmes champs que la liste). Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/conference-sessions/{session_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
session_id | str | oui | Identifiant (UUID) de la session de conférence. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une session de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.conference_sessions
conference_sessions(conference_id: str | None = None, active: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les sessions de conférence. Sessions des salles de conférence du tenant, depuis les événements Confbridge de l'AMI, de la plus récente à la plus ancienne : 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. Pagination par curseur : limit (1 à 500, 50 par défaut) et le cursor opaque de next_cursor. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/conference-sessions (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
conference_id | str | None | None | non | Seulement les sessions de cette salle de conférence. |
active | bool | None | None | non | true : sessions en cours ; false : sessions terminées. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les sessions de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.conferences
conferences(limit: int | None = None, cursor: str | None = None) -> Any
Lister les salles de conférence. Les salles de conférence du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/conferences (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les salles de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.config_version
config_version(version_id: str) -> Any
Lire une version de configuration. Une version avec ses fichiers (secrets masqués), tables Kamailio, objets LiveKit, rapport de livraison par nœud (fichiers relus et comparés, sorties des rechargements, restauration), état et diff avec la version précédente. 404 quand l'appelant ne peut pas lire son pool.
Route : /v1/telephony/config-versions/{version_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
version_id | str | oui | Identifiant (UUID) de la version de configuration. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une version de configuration ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_agent
create_agent(user_id: str, display_name: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer un agent humain. Crée un agent humain dans le tenant de l'appelant et le renvoie (201). L'extension doit appartenir au tenant. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.agent.create.
Route : /v1/telephony/agents (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
user_id | str | oui | Identifiant de l'utilisateur dans la plateforme, unique dans le tenant. | |
display_name | str | oui | Nom de l'agent. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un agent humain ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_block
create_block(scope: str, reason: str, extension: str | None = None) -> Any
Bloquer le tenant ou une extension. Écrit la clé {tid} ou {tid}-{extension} dans la table de hachage Kamailio tenant_blocks de chaque point JSONRPC du pool (htable.sets) et renvoie le blocage (201) ; un blocage actif de même portée est renvoyé tel quel. 422 telephony_block_scope quand la portée et l'extension ne concordent pas. La tâche telephony_blocks renvoie les blocages actifs après un redémarrage de Kamailio. Demande tenant_admin ou platform_admin. Audité sous telephony.block.create, publié sous telephony.block.created.
Route : /v1/telephony/blocks (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
scope | str | oui | tenant (tous les appels du tenant) ou extension. | |
reason | str | oui | Motif conservé avec le blocage et dans la piste d'audit. | |
extension | str | None | None | non | Numéro d'extension, obligatoire pour la portée extension seulement. |
Retour : Any. Réponse JSON décodée de l'opération « Bloquer le tenant ou une extension ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_conference
create_conference(number: str, name: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer une salle de conférence. Crée une salle de conférence dans le tenant de l'appelant et la renvoie (201). Le code PIN est en écriture seule : la réponse porte has_pin. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.conference.create.
Route : /v1/telephony/conferences (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
number | str | oui | Numéro de la salle, 2 à 8 chiffres, unique dans le tenant. | |
name | str | oui | Nom de la salle. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une salle de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_extension
create_extension(number: str, display_name: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer une extension. Crée une extension dans le tenant de l'appelant et la renvoie (201). Le mot de passe SIP et le code PIN de messagerie sont en écriture seule : la réponse porte has_password et has_voicemail_pin. Le numéro est unique dans le tenant parmi les extensions, les files et les conférences (409 telephony_number_in_use) et ne peut ni commencer par un préfixe national ou international ni être un numéro d'urgence (422 telephony_number_reserved). Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.extension.create.
Route : /v1/telephony/extensions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
number | str | oui | Numéro d'extension, 2 à 8 chiffres, unique dans le tenant. | |
display_name | str | oui | Nom affiché comme identité de l'appelant. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une extension ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_ivr_flow
create_ivr_flow(name: str, description: str | None = None, idempotency_key: str | None = None) -> Any
Créer un flux SVI. Crée un flux SVI dans le tenant de l'appelant et le renvoie (201). Le graphe vit dans les versions du flux. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.ivr_flow.create.
Route : /v1/telephony/ivr-flows (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. | |
description | str | None | None | non | Description du flux. |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_ivr_flow_version
create_ivr_flow_version(flow_id: str, graph: dict[str, Any]) -> Any
Créer une version d'un flux SVI. Ajoute une version brouillon (numéro + 1). Le graphe est validé : un nœud start, chaque arête désigne un nœud existant, chaque nœud est accessible, touches DTMF uniques, chaque menu avec message, sorties timeout et invalid, attente de 1 à 30 secondes et 1 à 5 nouvelles tentatives ; les extensions, files et agents vocaux désignés existent dans le tenant. Le prompt d'un nœud play ou menu est un nom de son d'Asterisk ou navin:<nom>, un message déposé du tenant (POST /v1/telephony/ivr-prompts) que le plan de numérotation joue depuis son URL signée. Les problèmes répondent 422 avec chacun dans details.errors. Demande tenant_admin ou platform_admin ; audité sous telephony.ivr_flow.version.create.
Route : /v1/telephony/ivr-flows/{flow_id}/versions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) du flux SVI. | |
graph | dict[str, Any] | oui | Graphe du flux : start et nodes ; les nœuds menu portent prompt, options (digit, next), timeout, invalid, timeout_seconds et max_retries. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une version d'un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_number
create_number(e164: str, destination_kind: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer un numéro. Crée un numéro dans le tenant de l'appelant et le renvoie (201). Le numéro E.164 est unique sur la plateforme (409 telephony_number_taken) ; la destination doit être un objet du tenant (422 telephony_reference_invalid) ; la branche ai demande un agent vocal. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.number.create.
Route : /v1/telephony/numbers (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
e164 | str | oui | Numéro public au format E.164, unique sur la plateforme. | |
destination_kind | str | oui | Type de destination : extension, ivr, queue, voice_agent, conference ou external. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un numéro ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_pool
create_pool(name: str, mode: str, **extra: Any) -> Any
Déclarer un pool PBX. Déclare un pool Asterisk installé par le Navin Manager : nœuds et leur port AMI, références des secrets AMI, ARI, JSONRPC et auth_ephemeral (openbao:// ou env://EAI_CRED_*, jamais une valeur), points d'accès et adresses Kamailio, jeux du dispatcher et liaison LiveKit. Un pool partagé n'a pas de tenant, un pool dédié en a un (422 telephony_pool_mode). Demande platform_admin ; audité sous telephony.pbx_pool.create.
Route : /v1/telephony/pbx-pools (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom du pool, unique sur la plateforme. | |
mode | str | oui | shared (plusieurs tenants) ou dedicated (un tenant). | |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Déclarer un pool PBX ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_queue
create_queue(name: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer une file d'appels. Crée une file d'appels dans le tenant de l'appelant et la renvoie (201). Son numéro facultatif suit les règles des numéros d'extension. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.queue.create.
Route : /v1/telephony/queues (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une file d'appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_routing_rule
create_routing_rule(name: str, direction: str, pattern: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer une règle de routage. Crée une règle de routage dans le tenant de l'appelant et la renvoie (201). Les règles sortantes listent les trunks du tenant dans l'ordre de secours ; les règles entrantes demandent une destination du tenant. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.routing_rule.create.
Route : /v1/telephony/routing-rules (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. | |
direction | str | oui | inbound (DID appelé) ou outbound (numéro E.164 composé). | |
pattern | str | oui | Motif Asterisk sur le numéro E.164, par exemple _+33X.. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une règle de routage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_trunk
create_trunk(name: str, host: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer un trunk SIP. Crée un trunk SIP dans le tenant de l'appelant et le renvoie (201). Le mot de passe est en écriture seule : la réponse porte has_password. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.trunk.create.
Route : /v1/telephony/trunks (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. | |
host | str | oui | Nom d'hôte ou adresse du serveur SIP de l'opérateur. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un trunk SIP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.create_voice_agent
create_voice_agent(name: str, llm_model_alias: str, idempotency_key: str | None = None, **extra: Any) -> Any
Créer un agent vocal IA. Crée un agent vocal IA dans le tenant de l'appelant et le renvoie (201). La file de secours doit appartenir au tenant. Avec une Idempotency-Key, une nouvelle tentative avec le même corps renvoie la première réponse (Idempotency-Replayed: true), un autre corps répond 409 idempotency_conflict. Les problèmes de validation répondent 422 avec chaque problème dans details.errors (code, chemin, message_en, message_fr). Demande tenant_admin ou platform_admin ; audité sous telephony.voice_agent.create.
Route : /v1/telephony/voice-agents (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. | |
llm_model_alias | str | oui | Alias du modèle de langage dans la passerelle LLM. | |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer un agent vocal IA ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_agent
delete_agent(agent_id: str) -> Any
Supprimer un agent humain. Supprime l'agent humain (204) ; les moteurs le perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.agent.delete.
Route : /v1/telephony/agents/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
agent_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un agent humain ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_conference
delete_conference(conference_id: str) -> Any
Supprimer une salle de conférence. Supprime la salle de conférence (204) ; les moteurs la perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.conference.delete.
Route : /v1/telephony/conferences/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
conference_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une salle de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_extension
delete_extension(extension_id: str) -> Any
Supprimer une extension. Supprime l'extension (204) ; les moteurs la perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.extension.delete.
Route : /v1/telephony/extensions/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
extension_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une extension ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_ivr_flow
delete_ivr_flow(flow_id: str) -> Any
Supprimer un flux SVI. Supprime le flux SVI (204) ; les moteurs le perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.ivr_flow.delete.
Route : /v1/telephony/ivr-flows/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_ivr_prompt
delete_ivr_prompt(prompt_id: str) -> Any
Supprimer un message de SVI. Supprime le message et son audio (204) ; son URL de lecture répond 404 ensuite. 409 telephony_prompt_in_use (avec details.ivr_flows) tant qu'une version brouillon ou publiée d'un SVI le joue. Demande tenant_admin ou platform_admin. Audité sous telephony.ivr_prompt.delete.
Route : /v1/telephony/ivr-prompts/{prompt_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
prompt_id | str | oui | Identifiant (UUID) du message de SVI. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un message de SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_number
delete_number(number_id: str) -> Any
Supprimer un numéro. Supprime le numéro (204) ; les moteurs le perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.number.delete.
Route : /v1/telephony/numbers/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
number_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un numéro ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_pool
delete_pool(pool_id: str) -> Any
Supprimer un pool PBX. Supprime un pool qu'aucun tenant n'utilise (409 telephony_pool_in_use sinon) avec ses versions. Demande platform_admin ; audité sous telephony.pbx_pool.delete.
Route : /v1/telephony/pbx-pools/{pool_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un pool PBX ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_queue
delete_queue(queue_id: str) -> Any
Supprimer une file d'appels. Supprime la file d'appels (204) ; les moteurs la perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.queue.delete.
Route : /v1/telephony/queues/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une file d'appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_recording
delete_recording(recording_id: str, reason: str | None = None) -> Any
Supprimer un enregistrement. Supprime l'objet dans SeaweedFS et marque la ligne d'index deleted (un message vocal qui l'utilise est supprimé aussi). 409 telephony_legal_hold sous conservation légale. Demande tenant_admin ou platform_admin. Audité sous telephony.recording.delete avec le motif.
Route : /v1/telephony/recordings/{recording_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
recording_id | str | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). | |
reason | str | None | None | non | Raison de l'action. Inscrite dans le journal d'audit avec l'acteur et l'heure. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un enregistrement ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_routing_rule
delete_routing_rule(rule_id: str) -> Any
Supprimer une règle de routage. Supprime la règle de routage (204) ; les moteurs la perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.routing_rule.delete.
Route : /v1/telephony/routing-rules/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
rule_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une règle de routage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_trunk
delete_trunk(trunk_id: str) -> Any
Supprimer un trunk SIP. Supprime le trunk SIP (204) ; les moteurs le perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.trunk.delete.
Route : /v1/telephony/trunks/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
trunk_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un trunk SIP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_voice_agent
delete_voice_agent(voice_agent_id: str) -> Any
Supprimer un agent vocal IA. Supprime l'agent vocal IA (204) ; les moteurs le perdent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.voice_agent.delete.
Route : /v1/telephony/voice-agents/{item_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
voice_agent_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un agent vocal IA ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.delete_voicemail
delete_voicemail(message_id: str) -> Any
Supprimer un message vocal. Supprime le message et son audio (409 telephony_legal_hold quand l'audio est conservé) et le renvoie avec l'état deleted. Permis aux lecteurs et à l'agent de la boîte. Audité sous telephony.voicemail.delete.
Route : /v1/telephony/voicemail/{message_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
message_id | str | oui | Identifiant (UUID) du message vocal. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un message vocal ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.download_ivr_prompt
download_ivr_prompt(prompt_id: str) -> Any
Obtenir un lien de téléchargement d'un message de SVI. Répond {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256} : une URL signée SeaweedFS valable 300 secondes ; aucun identifiant de stockage n'est renvoyé. 409 telephony_recording_unavailable quand l'objet n'est pas stocké, 503 telephony_storage_missing quand le profil de la plateforme manque, 409 storage_capability_missing quand la signature n'a pas été vérifiée. Demande tenant_admin, support_engineer, auditor ou platform_admin. Audité sous telephony.ivr_prompt.download.
Route : /v1/telephony/ivr-prompts/{prompt_id}/download (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
prompt_id | str | oui | Identifiant (UUID) du message de SVI. |
Retour : Any. Réponse JSON décodée de l'opération « Obtenir un lien de téléchargement d'un message de SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.download_recording
download_recording(recording_id: str) -> Any
Obtenir un lien de téléchargement. Répond {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256} : une URL signée SeaweedFS valable 300 secondes ; aucun identifiant de stockage n'est renvoyé. 409 telephony_recording_unavailable quand l'objet n'est pas stocké, 503 telephony_storage_missing quand le profil de la plateforme manque, 409 storage_capability_missing quand la signature n'a pas été vérifiée. Demande tenant_admin, support_engineer, auditor ou platform_admin. Audité sous telephony.recording.download avec le SHA-256 de l'URL.
Route : /v1/telephony/recordings/{recording_id}/download (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
recording_id | str | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Obtenir un lien de téléchargement ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.drain_destination
drain_destination(pool_id: str, address: str, state: str, group: int | None = None) -> Any
Drainer ou rétablir une destination du dispatcher. Fixe l'état d'une destination sur chaque Kamailio du pool (dispatcher.set_state : drain inactive, active remise en service) et renvoie le dispatcher.list de chacun. Demande platform_admin ; audité sous telephony.pbx_pool.drain ou telephony.pbx_pool.active.
Route : /v1/telephony/pbx-pools/{pool_id}/drain (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. | |
address | str | oui | URI SIP de la destination, par exemple sip:10.0.0.20:5070. | |
state | str | oui | drain (aucun nouvel appel) ou active. | |
group | int | None | None | non | Jeu du dispatcher (par défaut : le jeu du pool). |
Retour : Any. Réponse JSON décodée de l'opération « Drainer ou rétablir une destination du dispatcher ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.event_streams
event_streams() -> Any
Lister les connexions d'événements AMI. État de la connexion d'événements AMI de chaque nœud (tâche telephony_events) : pool_id, node, connected, connected_at, events, reconnects, last_error, updated_at. Demande platform_admin.
Route : /v1/telephony/event-streams (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les connexions d'événements AMI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.extension
extension(extension_id: str) -> Any
Lire une extension. Une extension du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/extensions/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
extension_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire une extension ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.extensions
extensions(enabled: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les extensions. Les extensions du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/extensions (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
enabled | bool | None | None | non | Seulement les objets actifs (true) ou inactifs (false). Par défaut : les deux. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les extensions ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.fraud_alerts
fraud_alerts(status: str | None = None, kind: str | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les alertes de fraude. Signaux de fraude du tenant, du plus récent au plus ancien : id, kind (cps, concurrency, destination_refused, extension_volume), severity, extension, destination, linkedid, details, status, block_id, created_at, acknowledged_at, acknowledged_by. Chaque alerte est aussi publiée sous telephony.fraud.alert. Pagination par curseur : limit (1 à 500, 50 par défaut) et le cursor opaque de next_cursor. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/fraud-alerts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
status | str | None | None | non | Seulement les alertes ouvertes ou acquittées. |
kind | str | None | None | non | Seulement ce type de signal. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les alertes de fraude ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.hangup_call
hangup_call(linkedid: str) -> Any
Raccrocher un appel actif. Raccroche chaque canal de l'appel par l'ARI (DELETE /ari/channels/{uniqueid} sur le nœud de chaque canal), ou retire le participant SIP par le RoomService de LiveKit pour la branche IA. Répond {linkedid, results} avec un status (ok, gone, failed) par canal ; 502 telephony_control_failed quand tous les canaux ont échoué. Demande tenant_admin ou platform_admin. Audité sous telephony.call.hangup.
Route : /v1/telephony/active-calls/{linkedid}/hangup (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
linkedid | str | oui | linkedid Asterisk de l'appel actif (linkedid de GET /v1/telephony/active-calls). |
Retour : Any. Réponse JSON décodée de l'opération « Raccrocher un appel actif ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.infrastructure
infrastructure(cluster_id: str | None = None) -> Any
Lister l'infrastructure téléphonique du Navin Manager. Lit, par la passerelle du Platform Manager (jeton d'API du Manager, X-NM-On-Behalf-Of, les permissions du Manager s'appliquent), les clusters et leurs instances asterisk, kamailio, livekit et livekit-sip. Répond {clusters, binding, problems} : chaque cluster {id, name, mode, services}, chaque service {name, catalog_service, display_name, mode, method, version, managed, state, health, admin_state, tls_enabled, config_source (manager ou 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 {liaison: {ref, kind}}, pool ({id, name, mode} du pool PBX lié à une instance Asterisk, sinon null)}. Adresses Asterisk ami, ari, sip ; Kamailio jsonrpc (/RPC, adresse d'administration du groupe de l'hôte), sip, wss avec TLS ; LiveKit api, signal ; LiveKit SIP sip. bound vaut true pour l'instance liée à navin-enterprise. binding ne donne que des indicateurs (cluster_id, asterisk.bound, asterisk.ami_secret, asterisk.ari_secret, kamailio.bound, kamailio.ephemeral_secret, livekit.bound, livekit.api_secret, livekit_sip.bound), jamais une valeur. problems liste les instances dont le Manager a refusé la configuration (telephony_inventory_config_unreadable, valeurs par défaut du catalogue utilisées). Demande platform_admin ; 503 platform_manager_not_configured, 502 platform_manager_unreachable, un refus du Manager est relayé.
Route : /v1/telephony/infrastructure (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | None | None | non | Seulement ce cluster du Manager (son identifiant). |
Retour : Any. Réponse JSON décodée de l'opération « Lister l'infrastructure téléphonique du Navin Manager ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.ivr_flow
ivr_flow(flow_id: str) -> Any
Lire un flux SVI. Un flux SVI du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/ivr-flows/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.ivr_flow_version
ivr_flow_version(flow_id: str, version: int) -> Any
Lire une version d'un flux SVI. Une version du flux avec son graphe ; 404 telephony_not_found sinon. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/ivr-flows/{flow_id}/versions/{version} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) du flux SVI. | |
version | int | oui | Numéro de version (1, 2, ...). |
Retour : Any. Réponse JSON décodée de l'opération « Lire une version d'un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.ivr_flow_versions
ivr_flow_versions(flow_id: str, limit: int | None = None, cursor: str | None = None) -> Any
Lister les versions d'un flux SVI. Versions du flux avec leur état (draft, published, archived) et leur graphe, par identifiant. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/ivr-flows/{flow_id}/versions (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) du flux SVI. | |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les versions d'un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.ivr_flows
ivr_flows(limit: int | None = None, cursor: str | None = None) -> Any
Lister les flux SVI. Les flux SVI du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/ivr-flows (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.ivr_prompt
ivr_prompt(prompt_id: str) -> Any
Lire un message de SVI. Un message de SVI ; playback_url n'est rempli que pour tenant_admin et platform_admin. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/ivr-prompts/{prompt_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
prompt_id | str | oui | Identifiant (UUID) du message de SVI. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un message de SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.ivr_prompts
ivr_prompts(limit: int | None = None, cursor: str | None = None) -> Any
Lister les messages de SVI. Messages de SVI du tenant, du plus récent au plus ancien (champs de la réponse du dépôt, playback_url vide). Pagination par curseur : limit (1 à 500, 50 par défaut) et le cursor opaque de next_cursor. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/ivr-prompts (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les messages de SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.lift_block
lift_block(block_id: str, reason: str) -> Any
Lever un blocage. Supprime la clé Kamailio sur chaque point JSONRPC (htable.delete) et marque le blocage levé. Demande tenant_admin ou platform_admin. Audité sous telephony.block.lift, publié sous telephony.block.lifted.
Route : /v1/telephony/blocks/{block_id}/lift (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
block_id | str | oui | Identifiant (UUID) du blocage. | |
reason | str | oui | Motif conservé avec le blocage et dans la piste d'audit. |
Retour : Any. Réponse JSON décodée de l'opération « Lever un blocage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.listen_voicemail
listen_voicemail(message_id: str) -> Any
Écouter un message vocal. Répond le message (message) et son lien signé. Répond {url, method: GET, expires_seconds: 300, expires_at, content_type, size_bytes, sha256} : une URL signée SeaweedFS valable 300 secondes ; aucun identifiant de stockage n'est renvoyé. 409 telephony_recording_unavailable quand l'objet n'est pas stocké, 503 telephony_storage_missing quand le profil de la plateforme manque, 409 storage_capability_missing quand la signature n'a pas été vérifiée. Permis aux lecteurs et à l'agent de la boîte. Audité sous telephony.voicemail.download.
Route : /v1/telephony/voicemail/{message_id}/listen (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
message_id | str | oui | Identifiant (UUID) du message vocal. |
Retour : Any. Réponse JSON décodée de l'opération « Écouter un message vocal ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.mark_voicemail
mark_voicemail(message_id: str, read: bool | None = None) -> Any
Marquer un message vocal lu. Marque le message lu (ou de nouveau nouveau avec read=false) et le renvoie. Permis aux lecteurs et à l'agent de la boîte. Audité sous telephony.voicemail.read ou telephony.voicemail.unread.
Route : /v1/telephony/voicemail/{message_id}/read (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
message_id | str | oui | Identifiant (UUID) du message vocal. | |
read | bool | None | None | non | true (par défaut) : lu ; false : de nouveau nouveau. |
Retour : Any. Réponse JSON décodée de l'opération « Marquer un message vocal lu ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.number
number(number_id: str) -> Any
Lire un numéro. Un numéro du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/numbers/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
number_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un numéro ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.numbers
numbers(enabled: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les numéros. Les numéros du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/numbers (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
enabled | bool | None | None | non | Seulement les objets actifs (true) ou inactifs (false). Par défaut : les deux. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les numéros ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.pool
pool(pool_id: str) -> Any
Lire un pool PBX. Un pool visible par l'appelant (404 sinon), champs limités sauf pour platform_admin. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/pbx-pools/{pool_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un pool PBX ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.pool_versions
pool_versions(pool_id: str, limit: int | None = None, cursor: str | None = None) -> Any
Lister les versions de configuration d'un pool. Versions du pool, la plus récente d'abord, avec état, auteur, raison, sha256, le SHA-256 de chaque fichier, current (la version que les moteurs exécutent) et le rapport de livraison ; next_cursor pagine par numéro de version. Pool partagé : platform_admin ; pool dédié : les lecteurs de son tenant.
Route : /v1/telephony/pbx-pools/{pool_id}/versions (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. | |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les versions de configuration d'un pool ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.pools
pools(limit: int | None = None, cursor: str | None = None) -> Any
Lister les pools PBX. Tous les pools pour platform_admin ; pour les autres lecteurs les pools partagés et les pools dédiés à leur tenant, avec seulement id, name, mode, tenant_id, enabled et dispatcher_set. Les références de secrets ne leur sont jamais renvoyées ; les indicateurs has_* disent si un secret est défini. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/pbx-pools (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les pools PBX ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.preview
preview() -> Any
Prévisualiser la configuration du tenant. Compile la configuration du seul tenant de l'appelant et la valide, sans aucune livraison : valid, errors (code, chemin, messages), les cinq fichiers Asterisk avec les secrets masqués, les entrées Kamailio, les objets LiveKit voulus et sha256. 409 telephony_not_configured sans paramètres. Demande tenant_admin ou platform_admin.
Route : /v1/telephony/preview (POST).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Prévisualiser la configuration du tenant ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.preview_pool
preview_pool(pool_id: str) -> Any
Prévisualiser la configuration d'un pool. Compile chaque tenant du pool et valide le résultat (graphes, références, aucun contexte d'un tenant ne désignant un autre tenant, un domaine SIP pour chaque tenant qui a des extensions : telephony_sip_domain_missing sinon), sans livraison. Renvoie valid, errors, files (secrets masqués), kamailio, livekit, sha256, tenants, current_version, unchanged et diff (diff unifié par fichier avec la version publiée). Pool partagé : platform_admin ; pool dédié : son tenant_admin.
Route : /v1/telephony/pbx-pools/{pool_id}/preview (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. |
Retour : Any. Réponse JSON décodée de l'opération « Prévisualiser la configuration d'un pool ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.publish_ivr_flow_version
publish_ivr_flow_version(flow_id: str, version: int) -> Any
Publier une version d'un flux SVI. Valide à nouveau la version et en fait celle qu'utilise le compilateur ; la version publiée auparavant est archivée. Les moteurs la reçoivent à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.ivr_flow.version.publish.
Route : /v1/telephony/ivr-flows/{flow_id}/versions/{version}/publish (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) du flux SVI. | |
version | int | oui | Numéro de version (1, 2, ...). |
Retour : Any. Réponse JSON décodée de l'opération « Publier une version d'un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.publish_pool
publish_pool(pool_id: str, reason: str | None = None, idempotency_key: str | None = None) -> Any
Publier la configuration d'un pool. Compile et valide le pool (422 avec chaque problème, telephony_sip_domain_missing pour un tenant qui a des extensions mais aucun domaine SIP), enregistre une nouvelle version (publishing) et répond 202 avec version_id, version, sha256 et operation_id (en-têtes Operation-Id, Operation-Location). En arrière-plan chaque nœud du pool reçoit les fichiers par AMI (CreateConfig, UpdateConfig, rechargements, relecture GetConfig), puis les tables Kamailio et les objets LiveKit SIP sont réconciliés. La version finit published ou failed (les nœuds en échec reprennent la version précédente) ; suivez-la par GET /v1/telephony/config-versions/{version_id} ou l'opération. Une publication à la fois par pool (409 telephony_publication_running). Idempotency-Key prise en compte. Pool partagé : platform_admin ; pool dédié : son tenant_admin. Audité sous telephony.config.publish puis telephony.config.published ou telephony.config.failed.
Route : /v1/telephony/pbx-pools/{pool_id}/publish (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. | |
reason | str | None | None | non | Raison, conservée avec la version et dans l'audit. |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
Retour : Any. Réponse JSON décodée de l'opération « Publier la configuration d'un pool ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.put_quotas
put_quotas(**extra: Any) -> Any
Définir les quotas de téléphonie. Remplace les quotas du tenant. Les préfixes sont + puis 1 à 8 chiffres (422 telephony_prefix_invalid). Demande platform_admin : un tenant ne relève jamais ses propres limites. Audité sous telephony.quotas.update.
Route : /v1/telephony/quotas (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Définir les quotas de téléphonie ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.put_runtime_settings
put_runtime_settings(**extra: Any) -> Any
Définir les réglages d'exécution. Remplace les réglages d'exécution. voicemail_storage atteint Asterisk à la prochaine publication du pool (messagerie de la plateforme : Record puis l'UserEvent NavinVoicemail). Demande tenant_admin ou platform_admin. Audité sous telephony.runtime_settings.update.
Route : /v1/telephony/runtime-settings (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Définir les réglages d'exécution ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.put_settings
put_settings(sip_domain: str, **extra: Any) -> Any
Définir les paramètres de téléphonie. Crée ou remplace les paramètres du tenant. Le domaine SIP est unique sur la plateforme (409 telephony_domain_taken). Changer model ou pbx_instance_id demande platform_admin (403 sinon) ; le pool doit être partagé ou dédié à ce tenant et correspondre au modèle (422 telephony_pool_mode). Demande tenant_admin ou platform_admin ; audité sous telephony.settings.update.
Route : /v1/telephony/settings (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
sip_domain | str | oui | Domaine SIP du tenant, unique sur la plateforme ; Kamailio le relie au tenant. | |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Définir les paramètres de téléphonie ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.queue
queue(queue_id: str) -> Any
Lire une file d'appels. Une file d'appels du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/queues/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire une file d'appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.queue_members
queue_members(queue_id: str, limit: int | None = None, cursor: str | None = None) -> Any
Lister les membres d'une file. Extensions et agents humains de la file avec leur pénalité. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/queues/{queue_id}/members (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de la file. | |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les membres d'une file ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.queues
queues(limit: int | None = None, cursor: str | None = None) -> Any
Lister les files d'appels. Les files d'appels du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/queues (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les files d'appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.quotas
quotas() -> Any
Lire les quotas de téléphonie. Quotas et limites anti-fraude du tenant (valeurs par défaut avec configured: false s'ils n'ont jamais été définis) : appels simultanés et appels par seconde (poussés dans tenant_limits de Kamailio), minutes mensuelles, pays autorisés, préfixes surtaxés, durée maximale d'appel (dialplan) et conservation des enregistrements. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/quotas (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire les quotas de téléphonie ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.reconcile_pool
reconcile_pool(pool_id: str) -> Any
Réconcilier le routage d'un pool. Compare les tables de hachage Kamailio et les trunks et règles de dispatch LiveKit SIP avec la version publiée et corrige les écarts (idempotent : rien ne change quand ils correspondent). Un Kamailio dont core.uptime a baissé a redémarré et reçoit à nouveau toutes les entrées (full_resync). 409 telephony_nothing_published avant la première publication. Mêmes rôles que la publication ; audité sous telephony.config.reconcile.
Route : /v1/telephony/pbx-pools/{pool_id}/reconcile (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. |
Retour : Any. Réponse JSON décodée de l'opération « Réconcilier le routage d'un pool ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.recording
recording(recording_id: str) -> Any
Lire un enregistrement. Un enregistrement de l'index (mêmes champs que la liste). Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/recordings/{recording_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
recording_id | str | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un enregistrement ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.recordings
recordings(call_id: str | None = None, category: str | None = None, status: str | None = None, legal_hold: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les enregistrements. Index des objets de téléphonie du tenant dans SeaweedFS, du plus récent au plus ancien. Chaque élément : id, category, status (pending, stored, failed, deleted), source (asterisk, livekit, upload, export), content_type, size_bytes, sha256, duration_seconds, encryption (ce que le stockage a indiqué, et profile_mode), call_record_id, navin_call_id, retention_until, legal_hold, created_at, stored_at, deleted_at, last_error. La clé de l'objet n'est jamais renvoyée. Pagination par curseur : limit (1 à 500, 50 par défaut) et le cursor opaque de next_cursor. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/recordings (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
call_id | str | None | None | non | Seulement les enregistrements de cet appel. |
category | str | None | None | non | Seulement cette catégorie de l'organisation. |
status | str | None | None | non | Seulement cet état. |
legal_hold | bool | None | None | non | Seulement les enregistrements avec (true) ou sans (false) conservation légale. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les enregistrements ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.remove_queue_member
remove_queue_member(queue_id: str, member_id: str) -> Any
Retirer un membre d'une file. Retire le membre (204). Demande tenant_admin ou platform_admin ; audité sous telephony.queue_member.delete.
Route : /v1/telephony/queues/{queue_id}/members/{member_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de la file. | |
member_id | str | oui | Identifiant (UUID) du membre de la file. |
Retour : Any. Réponse JSON décodée de l'opération « Retirer un membre d'une file ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.rollback_pool
rollback_pool(pool_id: str, version: int, reason: str | None = None, idempotency_key: str | None = None) -> Any
Revenir à une version d'un pool. Publie à nouveau les fichiers, tables et objets LiveKit d'une version antérieure published ou rolled_back comme une nouvelle version (rollback_of), en opération longue comme la publication (202). Une fois publiée, les versions ultérieures deviennent rolled_back. 409 telephony_rollback_target pour un autre état. Mêmes rôles que la publication ; audité sous telephony.config.rollback.
Route : /v1/telephony/pbx-pools/{pool_id}/rollback (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. | |
version | int | oui | Numéro de la version à publier à nouveau. | |
reason | str | None | None | non | Raison, conservée avec la version et dans l'audit. |
idempotency_key | str | None | None | non | En-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse. |
Retour : Any. Réponse JSON décodée de l'opération « Revenir à une version d'un pool ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.routing_rule
routing_rule(rule_id: str) -> Any
Lire une règle de routage. Une règle de routage du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/routing-rules/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
rule_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire une règle de routage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.routing_rules
routing_rules(enabled: bool | None = None, direction: str | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les règles de routage. Les règles de routage du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/routing-rules (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
enabled | bool | None | None | non | Seulement les objets actifs (true) ou inactifs (false). Par défaut : les deux. |
direction | str | None | None | non | Seulement les règles entrantes ou sortantes. Par défaut : les deux. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les règles de routage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.runtime_settings
runtime_settings() -> Any
Lire les réglages d'exécution. Stockage de la messagerie vocale et seuils de fraude du tenant (configured false et les valeurs par défaut quand ils n'ont jamais été définis). Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/runtime-settings (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire les réglages d'exécution ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.set_legal_hold
set_legal_hold(recording_id: str, legal_hold: bool, reason: str) -> Any
Définir la conservation légale d'un enregistrement. Pose ou lève la conservation légale : un enregistrement conservé n'est jamais supprimé, ni par l'API ni par la tâche de conservation. Demande tenant_admin ou platform_admin. Audité sous telephony.recording.legal_hold avec le motif.
Route : /v1/telephony/recordings/{recording_id}/legal-hold (PUT).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
recording_id | str | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). | |
legal_hold | bool | oui | true : conserver l'enregistrement ; false : lever la conservation. | |
reason | str | oui | Motif conservé dans la piste d'audit (300 caractères au plus). |
Retour : Any. Réponse JSON décodée de l'opération « Définir la conservation légale d'un enregistrement ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.settings
settings() -> Any
Lire les paramètres de téléphonie. Paramètres de téléphonie du tenant de l'appelant : modèle, domaine SIP, pool PBX, conservation des CDR, plan de numérotation, et tid, l'identifiant court sous lequel les moteurs connaissent le tenant. configured: false s'ils n'ont jamais été définis. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/settings (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lire les paramètres de téléphonie ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.stats
stats(window_hours: int | None = None) -> Any
Lire les statistiques en direct. Chiffres de tableau de bord du tenant calculés à partir des tables d'appels : 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 = part répondue dans le niveau de service de la file, abandon_rate), agents (états des membres de file : 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. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/stats (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
window_hours | int | None | None | non | Fenêtre des chiffres en heures, 1 à 168 (24 par défaut). |
Retour : Any. Réponse JSON décodée de l'opération « Lire les statistiques en direct ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.sync_infrastructure_pool
sync_infrastructure_pool(cluster_id: str, service: str, **extra: Any) -> Any
Créer ou rafraîchir un pool PBX depuis l'inventaire du Manager. Crée (201) ou rafraîchit (200) le pool PBX lié à une instance Asterisk du Manager (manager_cluster, manager_service) : nœuds (hôte, port AMI, adresse SIP, instance du Manager, URL ARI), ami_tls, points d'accès JSONRPC et adresses Kamailio (les instances Kamailio liées à cet Asterisk, ou kamailio_service), livekit_binding (url, sip_host), noms d'utilisateur AMI et ARI et références des secrets. Un secret de l'instance liée à navin-enterprise devient env://EAI_CRED_TELEPHONY_AMI_SECRET, env://EAI_CRED_TELEPHONY_ARI_PASSWORD ou env://EAI_CRED_TELEPHONY_EPHEMERAL_SECRET (variables rendues par le Manager dans le fichier d'environnement sensible), une référence déjà présente sur le pool est gardée, jamais une valeur. Idempotent : le même inventaire ne change rien (changed: []). Répond {created, changed, pool, secrets {ami, ari, ephemeral : bound, kept ou missing}, sources {cluster_id, asterisk, kamailio, livekit, livekit_sip}, problems}. Erreurs : 404 telephony_inventory_not_found, 409 telephony_inventory_no_nodes, 422 telephony_inventory_too_large, les règles des pools (422 telephony_pool_mode, 409 telephony_name_taken). Demande platform_admin ; audité sous telephony.pbx_pool.sync (plus telephony.pbx_pool.create ou telephony.pbx_pool.update).
Route : /v1/telephony/infrastructure/pools (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
cluster_id | str | oui | Identifiant du cluster du Manager. | |
service | str | oui | Nom de l'instance Asterisk dans le Manager (par exemple asterisk). | |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer ou rafraîchir un pool PBX depuis l'inventaire du Manager ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.transfer_call
transfer_call(linkedid: str, target: str, uniqueid: str | None = None) -> Any
Transférer un appel actif. Transfère un canal de l'appel : Redirect AMI vers {tid}-internal (extension du tenant, 422 telephony_reference_invalid quand elle n'existe pas) ou {tid}-outbound (numéro E.164, les permissions et règles de destination du plan de numérotation s'appliquent) ; pour la branche IA, TransferSIPParticipant de LiveKit (SIP REFER). continue et redirect de l'ARI ne sont pas utilisés : ils n'agissent que sur les canaux d'une application Stasis. Répond {linkedid, target, status, via, uniqueid} ; 502 telephony_control_failed en cas de refus. Demande tenant_admin ou platform_admin. Audité sous telephony.call.transfer.
Route : /v1/telephony/active-calls/{linkedid}/transfer (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
linkedid | str | oui | linkedid Asterisk de l'appel actif (linkedid de GET /v1/telephony/active-calls). | |
target | str | oui | Numéro d'extension du tenant (2 à 8 chiffres) ou numéro E.164. | |
uniqueid | str | None | None | non | Canal à déplacer (par défaut : le premier canal de l'appel). |
Retour : Any. Réponse JSON décodée de l'opération « Transférer un appel actif ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.trunk
trunk(trunk_id: str) -> Any
Lire un trunk SIP. Un trunk SIP du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/trunks/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
trunk_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un trunk SIP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.trunks
trunks(enabled: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les trunks SIP. Les trunks SIP du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/trunks (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
enabled | bool | None | None | non | Seulement les objets actifs (true) ou inactifs (false). Par défaut : les deux. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les trunks SIP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_agent
update_agent(agent_id: str, **changes: Any) -> Any
Modifier un agent humain. Modifie seulement les champs envoyés et renvoie l'agent humain ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.agent.update.
Route : /v1/telephony/agents/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
agent_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs de l'agent humain à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un agent humain ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_conference
update_conference(conference_id: str, **changes: Any) -> Any
Modifier une salle de conférence. Modifie seulement les champs envoyés et renvoie la salle de conférence ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.conference.update.
Route : /v1/telephony/conferences/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
conference_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs de la salle de conférence à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une salle de conférence ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_extension
update_extension(extension_id: str, **changes: Any) -> Any
Modifier une extension. Modifie seulement les champs envoyés et renvoie l'extension ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.extension.update.
Route : /v1/telephony/extensions/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
extension_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs de l'extension à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une extension ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_ivr_flow
update_ivr_flow(flow_id: str, **changes: Any) -> Any
Modifier un flux SVI. Modifie seulement les champs envoyés et renvoie le flux SVI ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.ivr_flow.update.
Route : /v1/telephony/ivr-flows/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
flow_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs du flux de SVI à modifier (name, description), envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_number
update_number(number_id: str, **changes: Any) -> Any
Modifier un numéro. Modifie seulement les champs envoyés et renvoie le numéro ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.number.update.
Route : /v1/telephony/numbers/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
number_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs du numéro de téléphone à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un numéro ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_pool
update_pool(pool_id: str, **changes: Any) -> Any
Modifier un pool PBX. Modifie les champs envoyés du pool. Demande platform_admin ; audité sous telephony.pbx_pool.update.
Route : /v1/telephony/pbx-pools/{pool_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
pool_id | str | oui | Identifiant (UUID) du pool PBX. | |
**changes | Any | non | Champs du pool PBX à modifier, envoyés comme corps du PATCH ; les secrets uniquement sous forme de références *_secret_ref. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un pool PBX ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_queue
update_queue(queue_id: str, **changes: Any) -> Any
Modifier une file d'appels. Modifie seulement les champs envoyés et renvoie la file d'appels ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.queue.update.
Route : /v1/telephony/queues/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs de la file d'attente à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une file d'appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_queue_member
update_queue_member(queue_id: str, member_id: str, penalty: int) -> Any
Modifier la pénalité d'un membre de file. Fixe la pénalité du membre (0 sonne en premier). Demande tenant_admin ou platform_admin ; audité sous telephony.queue_member.update.
Route : /v1/telephony/queues/{queue_id}/members/{member_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
queue_id | str | oui | Identifiant (UUID) de la file. | |
member_id | str | oui | Identifiant (UUID) du membre de la file. | |
penalty | int | oui | Nouvelle pénalité, 0 à 100. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier la pénalité d'un membre de file ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_routing_rule
update_routing_rule(rule_id: str, **changes: Any) -> Any
Modifier une règle de routage. Modifie seulement les champs envoyés et renvoie la règle de routage ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.routing_rule.update.
Route : /v1/telephony/routing-rules/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
rule_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs de la règle de routage à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une règle de routage ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_trunk
update_trunk(trunk_id: str, **changes: Any) -> Any
Modifier un trunk SIP. Modifie seulement les champs envoyés et renvoie le trunk SIP ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.trunk.update.
Route : /v1/telephony/trunks/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
trunk_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs du trunk SIP à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un trunk SIP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.update_voice_agent
update_voice_agent(voice_agent_id: str, **changes: Any) -> Any
Modifier un agent vocal IA. Modifie seulement les champs envoyés et renvoie l'agent vocal IA ; les contrôles de la création s'appliquent. Un secret envoyé remplace celui conservé (nouvelle version dans le coffre). Les moteurs reçoivent la modification à la prochaine publication du pool. Demande tenant_admin ou platform_admin ; audité sous telephony.voice_agent.update.
Route : /v1/telephony/voice-agents/{item_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
voice_agent_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
**changes | Any | non | Champs de l'agent vocal IA à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un agent vocal IA ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.upload_ivr_prompt
upload_ivr_prompt(name: str, audio: bytes, content_type: str = 'audio/wav') -> Any
Déposer un message de SVI. Corps brut : un fichier WAV PCM (Content-Type: audio/wav, 415 telephony_prompt_type sinon, 413 telephony_prompt_size au-delà de 10 Mo, 422 telephony_prompt_invalid quand il n'est pas lisible, 422 telephony_prompt_format quand il n'est pas en 8000 Hz, 16 bits, mono, le seul WAV que lit le format wav d'Asterisk). Le fichier passe par la chaîne de sécurité des fichiers (422 file_blocked, 503 file_scan_unavailable), est stocké dans la catégorie ivr-prompts (sans expiration) et répond 201 avec id, name, recording_id, content_type, size_bytes, sha256, duration_seconds, scan_id, created_at et playback_url, l'URL signée que joue un SVI. 409 telephony_name_taken quand le nom est pris. Demande tenant_admin ou platform_admin. Audité sous telephony.ivr_prompt.create.
Route : /v1/telephony/ivr-prompts (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom du message, unique dans le tenant (minuscules, chiffres, -). | |
audio | bytes | oui | Octets bruts du fichier WAV PCM (10 Mo au plus), envoyés tels quels comme corps de la requête. | |
content_type | str | 'audio/wav' | non | Type de contenu transmis au stockage lors de la signature de l'URL (le type que l'envoi doit transmettre) ; 200 caractères au plus. |
Retour : Any. Réponse JSON décodée de l'opération « Déposer un message de SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.voice_agent
voice_agent(voice_agent_id: str) -> Any
Lire un agent vocal IA. Un agent vocal IA du tenant de l'appelant ; 404 telephony_not_found sinon. Les secrets ne sont jamais renvoyés, seulement les indicateurs has_*. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/voice-agents/{item_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
voice_agent_id | str | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). |
Retour : Any. Réponse JSON décodée de l'opération « Lire un agent vocal IA ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.voice_agents
voice_agents(enabled: bool | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les agents vocaux IA. Les agents vocaux IA du tenant de l'appelant, par identifiant, limit par page (50 par défaut, 500 au plus) avec next_cursor pour la page suivante. Demande tenant_admin, support_engineer, auditor ou platform_admin.
Route : /v1/telephony/voice-agents (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
enabled | bool | None | None | non | Seulement les objets actifs (true) ou inactifs (false). Par défaut : les deux. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les agents vocaux IA ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.voicemail
voicemail(mailbox: str | None = None, status: str | None = None, limit: int | None = None, cursor: str | None = None) -> Any
Lister les messages vocaux. Messages vocaux (état new ou read) du tenant, du plus récent au plus ancien : id, mailbox, extension_id, caller_number, caller_name, navin_call_id, recording_id, duration_seconds, status, read_at, received_at. Un message apparaît dès que son audio est stocké. Les lecteurs voient toutes les boîtes ; un agent humain (tout rôle) voit les boîtes des extensions auxquelles il est lié, 403 pour toute autre personne. Pagination par curseur : limit (1 à 500, 50 par défaut) et le cursor opaque de next_cursor.
Route : /v1/telephony/voicemail (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
mailbox | str | None | None | non | Seulement cette boîte (numéro d'extension). |
status | str | None | None | non | Seulement les messages nouveaux ou lus. |
limit | int | None | None | non | Nombre maximal d'éléments dans une page. Le serveur plafonne la valeur ; lisez la page suivante avec cursor. |
cursor | str | None | None | non | Curseur opaque renvoyé dans next_cursor par la page précédente. Omettez-le pour lire la première page. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les messages vocaux ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyClient.webrtc_credentials
webrtc_credentials(extension_id: str, ttl_seconds: int | None = None) -> Any
Obtenir des identifiants WebRTC. Identifiants SIP éphémères d'une extension WebRTC pour le module auth_ephemeral de Kamailio : username <expiration>:<point de terminaison>, password base64(HMAC-SHA1(secret partagé, username)), expires_at (une heure au plus), sip_uri sip:<point de terminaison>@<domaine SIP> (le softphone s'enregistre et appelle avec le nom de son point de terminaison comme utilisateur From et To, l'utilisateur que Kamailio vérifie avec les identifiants), ws_url, realm, endpoint (<tid>-<extension>) et number (le numéro de l'extension, pour l'affichage). Le mot de passe SIP de l'extension n'atteint jamais le navigateur. Permis pour tenant_admin, platform_admin et l'agent humain lié à l'extension (404 pour toute autre personne). 409 telephony_not_webrtc ou telephony_not_configured. Audité sous telephony.webrtc.credentials.
Route : /v1/telephony/webrtc/credentials (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
extension_id | str | oui | Extension WebRTC du tenant. | |
ttl_seconds | int | None | None | non | Durée de vie des identifiants, 60 à 3600 secondes (3600 par défaut). |
Retour : Any. Réponse JSON décodée de l'opération « Obtenir des identifiants WebRTC ».
Erreurs levées : les erreurs typées du transport (Erreurs).