resources/telephony.ts
Source : sdks/typescript/packages/sdk/src/resources/telephony.ts. Retour à l'index de la référence du SDK TypeScript.
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.
Alias de type TelephonyDestinationKind
Destination d'un numéro ou d'une règle de routage : extension, ivr, queue, voice_agent, external ou conference.
Définition : "extension" \| "ivr" \| "queue" \| "voice_agent" \| "external" \| "conference".
Alias de type TelephonyPoolMode
Mode d'un pool PBX : shared, partagé entre locataires, ou dedicated, dédié à un locataire.
Définition : "shared" \| "dedicated".
Interface TelephonyForwarding
Renvoi d'appel d'une extension.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
always | string | null | non | Cible du renvoi inconditionnel : un numéro d'extension ou un numéro E.164. |
busy | string | null | non | Cible quand l'extension est occupée. |
no_answer | string | null | non | Cible quand l'extension ne répond pas. |
no_answer_seconds | number | non | Durée de sonnerie avant le cas sans réponse, 5 à 120 secondes (25 par défaut). |
Interface TelephonyPermissions
Destinations qu'une extension peut appeler.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
internal | boolean | non | Appels vers les autres extensions du tenant (true par défaut). |
national | boolean | non | Appels vers les numéros nationaux (true par défaut). |
international | boolean | non | Appels vers d'autres pays, limités aux préfixes de pays autorisés des quotas (false par défaut). |
premium | boolean | non | Appels vers les préfixes surtaxés des quotas (false par défaut). |
Interface TelephonyNumberingSettings
Plan de numérotation et options du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
country_code | string | non | Indicatif du pays du tenant, par exemple 33 (par défaut). |
national_prefix | string | non | Préfixe national composé devant les numéros nationaux (0 par défaut). |
international_prefix | string | non | Préfixe international (00 par défaut). |
emergency_numbers | string[] | non | Numéros d'urgence, toujours permis, routés sur chaque trunk (112 par défaut). |
timezone | string | null | non | Fuseau horaire des conditions horaires, par exemple Europe/Paris. |
wss_url | string | null | non | Adresse WSS de Kamailio pour le softphone (wss://<domaine SIP>:7443 par défaut). |
Interface TelephonySettingsIn
Paramètres de téléphonie du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
sip_domain | string | oui | Domaine SIP du tenant, unique sur la plateforme ; Kamailio le relie au tenant. |
enabled | boolean | non | Indique si le tenant est compilé dans son pool (true par défaut). |
model | TelephonyPoolMode | non | shared (pool partagé par plusieurs tenants, par défaut) ou dedicated. Changé par platform_admin. |
pbx_instance_id | string | null | non | Pool PBX qui sert le tenant. Changé par platform_admin. |
cdr_retention_days | number | non | Conservation des enregistrements d'appels, 1 à 3650 jours (365 par défaut). |
settings | TelephonyNumberingSettings | non | Plan de numérotation et options. |
Interface TelephonyQuotasIn
Quotas et limites anti-fraude du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
max_concurrent_calls | number | non | Appels simultanés du tenant (tenant_limits de Kamailio et dialplan). |
cps | number | non | Nouveaux appels par seconde, appliqués par Kamailio. |
monthly_minutes | number | null | non | Minutes par mois (aucune valeur : illimité). |
max_call_duration_seconds | number | non | Durée maximale d'un appel, 60 à 86400 secondes (7200 par défaut). |
allowed_country_prefixes | string[] | non | Préfixes internationaux permis, par exemple +32 (aucun : tous les pays pour les extensions qui ont l'autorisation internationale). |
blocked_premium_prefixes | string[] | non | Préfixes surtaxés, par exemple +3389 : seules les extensions avec l'autorisation surtaxée les joignent. |
recording_retention_days | number | non | Conservation des enregistrements, 1 à 3650 jours (90 par défaut). |
Interface TelephonyRuntimeSettingsIn
Réglages d'exécution de la téléphonie du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
voicemail_storage | "asterisk" | "platform" | non | asterisk (app_voicemail garde les messages sur le PBX) ou platform (enregistrés et rangés dans SeaweedFS, listés par l'API). |
voicemail_max_seconds | number | non | Message de la messagerie de la plateforme le plus long, 10 à 600 secondes (180 par défaut). |
fraud_auto_block | boolean | non | Indique si les signaux de fraude bloquent automatiquement (true par défaut). |
fraud_window_minutes | number | non | Fenêtre des destinations refusées, 1 à 1440 minutes (10 par défaut). |
fraud_extension_hourly_calls | number | non | Appels sortants d'une extension en une heure au-delà desquels elle est signalée et bloquée (60 par défaut). |
fraud_refused_attempts | number | non | Destinations refusées d'une extension qui la bloquent, 1 à 1000 (5 par défaut). |
fraud_tenant_block_factor | number | non | Le tenant est bloqué quand ses appels actifs atteignent ce multiple de son quota ; 0 désactive (2 par défaut). |
Interface TelephonyPoolNode
Un nœud Asterisk d'un pool.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom du nœud. |
host | string | oui | Adresse d'administration du nœud (AMI). |
ami_port | number | non | Port AMI (5038 par défaut, 5039 avec TLS). |
ari_url | string | null | non | URL de base de l'ARI du nœud, par exemple https://10.0.0.20:8089 (par défaut http://<hôte>:8088) ; le chemin /ari est ajouté. |
sip_address | string | null | non | Adresse SIP du nœud, autorisée par les trunks LiveKit SIP. |
manager_instance | string | null | non | Nom de l'instance de service dans le Navin Manager. |
Interface TelephonyKamailioEndpoint
Un point d'accès JSONRPC Kamailio.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom de l'instance Kamailio. |
url | string | oui | Adresse JSONRPC, par exemple http://10.0.0.10:5071/jsonrpc. |
Interface TelephonyLiveKitBinding
Liaison LiveKit d'un pool.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
url | string | null | non | Adresse HTTP de LiveKit pour l'API Twirp SIP (aucune : les objets LiveKit ne sont pas réconciliés). |
sip_host | string | null | non | Adresse SIP de LiveKit SIP qu'Asterisk compose, par exemple 10.0.0.30:5090. |
Interface TelephonyPoolIn
Un pool PBX installé par le Navin Manager.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom du pool, unique sur la plateforme. |
mode | TelephonyPoolMode | oui | shared (plusieurs tenants) ou dedicated (un tenant). |
tenant_id | string | null | non | Tenant d'un pool dédié (aucun pour un pool partagé). |
enabled | boolean | non | Indique si le pool est réconcilié (true par défaut). |
nodes | TelephonyPoolNode[] | non | Nœuds Asterisk du pool (32 au plus) : chacun reçoit chaque publication. |
manager_cluster | string | null | non | Cluster du pool dans le Navin Manager. |
manager_service | string | non | Service du catalogue du Navin Manager (asterisk par défaut). |
ami_username | string | null | non | Utilisateur AMI du pool. |
ami_secret_ref | string | null | non | Référence du secret AMI : openbao://<chemin> ou env://EAI_CRED_<NOM>. |
ami_events_username | string | null | non | Utilisateur AMI en lecture seule de la connexion d'événements (classes call, cdr, cel, agent, reporting, user) ; aucun : l'utilisateur de configuration. |
ami_events_secret_ref | string | null | non | Référence du secret de l'utilisateur AMI des événements en lecture seule : openbao://<chemin> ou env://EAI_CRED_<NOM>. |
ami_tls | boolean | non | Indique si l'AMI est jointe en TLS. |
ari_username | string | null | non | Utilisateur ARI du pool. |
ari_secret_ref | string | null | non | Référence du secret ARI. |
tls_verify | boolean | non | Indique si les certificats TLS des moteurs sont vérifiés (true par défaut). |
kamailio_addresses | string[] | non | Adresses des instances Kamailio : les seules sources que les extensions acceptent. |
kamailio_endpoints | TelephonyKamailioEndpoint[] | non | Points d'accès JSONRPC Kamailio du pool (8 au plus). |
kamailio_secret_ref | string | null | non | Référence de l'identifiant JSONRPC utilisateur:mot de passe (aucune : sans authentification). |
ephemeral_secret_ref | string | null | non | Référence du secret partagé avec auth_ephemeral de Kamailio. |
dispatcher_set | number | non | Jeu du dispatcher du pool (1 pour le pool partagé, 100 et plus pour les pools dédiés). |
livekit_sip_set | number | non | Jeu du dispatcher de LiveKit SIP (2 par défaut). |
livekit_binding | TelephonyLiveKitBinding | non | Liaison LiveKit du pool. |
Interface TelephonyPublishIn
Une demande de publication.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
reason | string | null | non | Raison, conservée avec la version et dans l'audit. |
Interface TelephonyRollbackIn
Une demande de retour arrière.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
version | number | oui | Numéro de la version à publier à nouveau. |
reason | string | null | non | Raison, conservée avec la version et dans l'audit. |
Interface TelephonyDrainIn
Une destination du dispatcher et son état.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
address | string | oui | URI SIP de la destination, par exemple sip:10.0.0.20:5070. |
state | "drain" | "active" | oui | drain (aucun nouvel appel) ou active. |
group | number | null | non | Jeu du dispatcher (par défaut : le jeu du pool). |
Interface TelephonyTrunkIn
Un trunk SIP du tenant vers un opérateur.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. |
host | string | oui | Nom d'hôte ou adresse du serveur SIP de l'opérateur. |
provider | string | null | non | Nom de l'opérateur, pour l'affichage. |
port | number | non | Port SIP de l'opérateur (5060 par défaut). |
transport | "udp" | "tcp" | "tls" | non | Transport SIP : udp (par défaut), tcp ou tls. |
registration | boolean | non | Indique si Asterisk s'enregistre auprès de l'opérateur (demande auth_username). |
auth_username | string | null | non | Nom d'utilisateur de l'authentification digest auprès de l'opérateur. |
password | string | null | non | Mot de passe du trunk, 8 à 128 caractères. En écriture seule : conservé dans le coffre, jamais renvoyé (has_password). |
codecs | string[] | non | Codecs par ordre de préférence parmi ulaw, alaw, g722, g729, opus et gsm (ulaw, alaw par défaut). |
outbound_caller_id | string | null | non | Numéro E.164 présenté sur les appels passant par ce trunk. |
allowed_numbers | string[] | non | Numéros E.164 que le trunk peut présenter (200 au plus). |
failover_order | number | non | Ordre du trunk quand une règle ne désigne aucun trunk (le plus petit d'abord, 100 par défaut). |
enabled | boolean | non | Indique si l'objet est compilé et publié (true par défaut). |
Interface TelephonyNumberIn
Un numéro public du tenant et sa destination.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
e164 | string | oui | Numéro public au format E.164, unique sur la plateforme. |
destination_kind | TelephonyDestinationKind | oui | Type de destination : extension, ivr, queue, voice_agent, conference ou external. |
destination_id | string | null | non | Identifiant (UUID) de l'objet de destination dans le tenant (tous les types sauf external). |
destination_value | string | null | non | Numéro E.164 d'une destination external. |
branch | "pbx" | "ai" | non | pbx (Kamailio vers Asterisk, par défaut) ou ai (Kamailio directement vers LiveKit SIP, agent vocal seulement). |
label | string | null | non | Libellé pour l'affichage. |
trunk_id | string | null | non | Trunk du tenant d'où vient le numéro. |
enabled | boolean | non | Indique si l'objet est compilé et publié (true par défaut). |
Interface TelephonyExtensionIn
Une extension du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
number | string | oui | Numéro d'extension, 2 à 8 chiffres, unique dans le tenant. |
display_name | string | oui | Nom affiché comme identité de l'appelant. |
kind | "sip" | "webrtc" | non | sip (téléphone avec mot de passe) ou webrtc (softphone du portail, identifiants éphémères). |
password | string | null | non | Mot de passe SIP, 12 à 128 caractères, obligatoire pour sip. En écriture seule : conservé dans le coffre, jamais renvoyé (has_password). |
enabled | boolean | non | Indique si l'objet est compilé et publié (true par défaut). |
max_concurrent_calls | number | non | Appels simultanés de l'extension, 1 à 100 (2 par défaut), appliqués par le dialplan. |
recording_policy | "off" | "always" | "inbound" | "outbound" | non | Enregistrement : off (par défaut), always, inbound ou outbound (MixMonitor dans le dossier du tenant). |
permissions | TelephonyPermissions | non | Destinations que l'extension peut appeler. |
forwarding | TelephonyForwarding | non | Règles de renvoi d'appel. |
voicemail_enabled | boolean | non | Indique si l'extension a une messagerie vocale (demande un code PIN). |
voicemail_pin | string | null | non | Code PIN de messagerie, 4 à 8 chiffres. En écriture seule (has_voicemail_pin). |
voicemail_email | string | null | non | Adresse prévenue des nouveaux messages. |
Interface TelephonyTimeWindow
Une plage horaire en syntaxe Asterisk.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
start | string | oui | Heure de début, HH:MM. |
end | string | oui | Heure de fin, HH:MM, après le début. |
days | string | non | Jours : * ou mon à sun, ou une plage comme mon-fri (* par défaut). |
mdays | string | non | Jours du mois : * ou une plage comme 1-15 (* par défaut). |
months | string | non | Mois : * ou jan à dec, ou une plage (* par défaut). |
Interface TelephonyRuleIn
Une règle de routage du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. |
direction | "inbound" | "outbound" | oui | inbound (DID appelé) ou outbound (numéro E.164 composé). |
pattern | string | oui | Motif Asterisk sur le numéro E.164, par exemple _+33X.. |
priority | number | non | Ordre des règles, le plus petit d'abord (100 par défaut). |
destination_kind | TelephonyDestinationKind | null | non | Type de destination : extension, ivr, queue, voice_agent, conference ou external. |
destination_id | string | null | non | Identifiant (UUID) de l'objet de destination dans le tenant (tous les types sauf external). |
destination_value | string | null | non | Numéro E.164 d'une destination external. |
trunk_ids | string[] | non | Sortant : trunks du tenant essayés dans cet ordre en cas d'échec (aucun : tous les trunks par failover_order). |
strip_digits | number | non | Chiffres retirés au début du numéro avant la numérotation (0 à 10). |
prepend | string | non | Chiffres ajoutés devant le numéro à la numérotation. |
time_conditions | TelephonyTimeWindow[] | non | Plages horaires où la règle s'applique (aucune : toujours). |
enabled | boolean | non | Indique si l'objet est compilé et publié (true par défaut). |
Interface TelephonyIvrFlowIn
Un flux SVI du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. |
description | string | null | non | Description du flux. |
Interface TelephonyIvrVersionIn
Une version brouillon d'un flux SVI.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
graph | Doc | oui | Graphe du flux : start et nodes ; les nœuds menu portent prompt, options (digit, next), timeout, invalid, timeout_seconds et max_retries. |
Interface TelephonyQueueIn
Une file d'appels du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. |
display_name | string | null | non | Nom pour l'affichage. |
number | string | null | non | Numéro interne qui joint la file (facultatif). |
strategy | "ringall" | "leastrecent" | "fewestcalls" | "random" | "rrmemory" | "linear" | "wrandom" | non | Stratégie de sonnerie : ringall, leastrecent, fewestcalls, random, rrmemory, linear ou wrandom. |
timeout_seconds | number | non | Durée de sonnerie par membre, 1 à 600 secondes (15 par défaut). |
max_wait_seconds | number | non | Attente maximale d'un appelant, 0 à 86400 secondes (300 par défaut). |
wrapup_seconds | number | non | Pause d'un membre après un appel, 0 à 3600 secondes. |
sla_seconds | number | non | Seuil de niveau de service, 1 à 3600 secondes (20 par défaut). |
music_on_hold | string | non | Classe de musique d'attente (default par défaut). |
recording | boolean | non | Indique si les appels de la file sont enregistrés. |
Interface TelephonyMemberIn
Un membre d'une file.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
extension_id | string | null | non | Extension du tenant (ou agent_id, pas les deux). |
agent_id | string | null | non | Agent humain du tenant, joint sur son extension. |
penalty | number | non | Pénalité de 0 à 100, la plus petite sonne en premier. |
Interface TelephonyMemberPatch
Nouvelle pénalité d'un membre de file.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
penalty | number | oui | Nouvelle pénalité, 0 à 100. |
Interface TelephonyAgentIn
Un agent humain du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
user_id | string | oui | Identifiant de l'utilisateur dans la plateforme, unique dans le tenant. |
display_name | string | oui | Nom de l'agent. |
extension_id | string | null | non | Extension du tenant sur laquelle l'agent répond. |
skills | string[] | non | Compétences de l'agent (50 au plus). |
enabled | boolean | non | Indique si l'objet est compilé et publié (true par défaut). |
Interface TelephonyVoiceAgentIn
Un agent vocal IA du tenant, exécuté par les workers LiveKit Agents navin-voice.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Nom, unique dans le tenant : minuscules, chiffres et -, 1 à 41 caractères ; il entre dans les noms sur les moteurs. |
llm_model_alias | string | oui | Alias du modèle de langage dans la passerelle LLM. |
display_name | string | null | non | Nom pour l'affichage. |
language | string | non | Langue, par exemple fr-FR (par défaut). |
instructions | string | non | Instructions de l'agent (prompt système), 20000 caractères au plus. |
greeting | string | null | non | Première phrase dite à l'appelant. |
stt_model | string | null | non | Modèle de reconnaissance vocale. |
tts_model | string | null | non | Modèle de synthèse vocale. |
tts_voice | string | null | non | Voix du modèle de synthèse vocale. |
allowed_tools | string[] | non | Outils que l'agent peut appeler (100 au plus). |
transfer_target | string | null | non | Transfert vers un humain : extension:<numéro>, queue:<nom> ou number:<E.164>. |
fallback_queue_id | string | null | non | File du tenant qui prend l'appel quand l'agent échoue. |
max_duration_seconds | number | non | Durée maximale d'un appel, 30 à 14400 secondes (900 par défaut). |
enabled | boolean | non | Indique si l'objet est compilé et publié (true par défaut). |
Interface TelephonyConferenceIn
Une salle de conférence du tenant.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
number | string | oui | Numéro de la salle, 2 à 8 chiffres, unique dans le tenant. |
name | string | oui | Nom de la salle. |
pin | string | null | non | Code PIN, 4 à 8 chiffres. En écriture seule (has_pin). |
max_members | number | non | Participants au plus, 2 à 500 (10 par défaut). |
recording | boolean | non | Indique si la conférence est enregistrée. |
Interface TelephonyWebrtcIn
Une demande d'identifiants WebRTC.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
extension_id | string | oui | Extension WebRTC du tenant. |
ttl_seconds | number | non | Durée de vie des identifiants, 60 à 3600 secondes (3600 par défaut). |
Interface TelephonyTransferIn
Transfert d'un appel actif.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
target | string | oui | Numéro d'extension du tenant (2 à 8 chiffres) ou numéro E.164. |
uniqueid | string | null | non | Canal à déplacer (par défaut : le premier canal de l'appel). |
Interface TelephonyLegalHoldIn
Conservation légale d'un enregistrement.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
legal_hold | boolean | oui | true : conserver l'enregistrement ; false : lever la conservation. |
reason | string | oui | Motif conservé dans la piste d'audit (300 caractères au plus). |
Interface TelephonyDeleteIn
Motif d'une suppression, conservé dans la piste d'audit.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
reason | string | non | Motif (user request par défaut). |
Interface TelephonyBlockIn
Un blocage manuel du tenant ou d'une extension.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
scope | "tenant" | "extension" | oui | tenant (tous les appels du tenant) ou extension. |
reason | string | oui | Motif conservé avec le blocage et dans la piste d'audit. |
extension | string | null | non | Numéro d'extension, obligatoire pour la portée extension seulement. |
Interface TelephonyLiftIn
Pourquoi un blocage est levé.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
reason | string | oui | Motif conservé avec le blocage et dans la piste d'audit. |
Interface TelephonyInventorySyncIn
L'instance Asterisk du Navin Manager dont le pool PBX est créé ou rafraîchi.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
cluster_id | string | oui | Identifiant du cluster du Manager. |
service | string | oui | Nom de l'instance Asterisk dans le Manager (par exemple asterisk). |
mode | TelephonyPoolMode | non | shared (par défaut) ou dedicated pour un nouveau pool. |
name | string | null | non | Nom d'un nouveau pool (par défaut : le nom de l'instance) ; ignoré lors d'un rafraîchissement. |
tenant_id | string | null | non | Tenant d'un nouveau pool dédié. |
kamailio_service | string | null | non | Instance Kamailio à utiliser (par défaut : celles liées à cet Asterisk). |
livekit_service | string | null | non | Instance LiveKit à utiliser (par défaut : celle à laquelle LiveKit SIP est lié, sinon la seule). |
livekit_sip_service | string | null | non | Instance LiveKit SIP à utiliser (par défaut : celle à laquelle Kamailio est lié, sinon la seule). |
Interface TelephonyCallQuery
Filtres de GET /v1/telephony/calls avec limit et cursor (pagination par clé, les plus récents d'abord).
ListParams
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
direction | "inbound" | "outbound" | "internal" | "unknown" | non | inbound (DID appelé) ou outbound (numéro E.164 composé). |
branch | "pbx" | "ai" | non | pbx (Kamailio vers Asterisk, par défaut) ou ai (Kamailio directement vers LiveKit SIP, agent vocal seulement). |
disposition | "ANSWERED" | "BUSY" | "CONGESTION" | "FAILED" | "NO ANSWER" | non | Issue de l'appel : ANSWERED, BUSY, CONGESTION, FAILED ou NO ANSWER. |
extension | string | non | Numéro d'extension, obligatoire pour la portée extension seulement. |
number | string | non | Numéro appelant ou appelé de l'appel. |
queue | string | non | Nom de la file d'attente par laquelle l'appel est passé. |
answered | boolean | non | Seulement les appels décrochés (true) ou non décrochés (false). |
since | string | non | Seulement les appels commencés à partir de cette date, au format ISO 8601. |
until | string | non | Seulement les appels commencés avant cette date, au format ISO 8601. |
Interface TelephonyRecordingQuery
Filtres de GET /v1/telephony/recordings avec limit et cursor (les plus récents d'abord).
ListParams
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
call_id | string | non | Seulement les enregistrements de cet appel. |
category | "call-recordings" | "conference-recordings" | "ai-voice-recordings" | "voicemail" | "ivr-prompts" | "audio-exports" | non | Catégorie libre, par exemple data_leak ou prompt_injection. other par défaut. |
status | "pending" | "stored" | "failed" | "deleted" | non | État de l'objet stocké : pending, stored, failed ou deleted. |
legal_hold | boolean | non | Seulement les enregistrements sous conservation légale (true) ou libres (false). |
Interface TelephonyPresignedUrl
GET présigné de 300 secondes renvoyé par les routes de téléchargement d'un enregistrement, d'un message vocal ou d'un message de SVI (audité).
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
url | string | oui | URL présignée pour lire l'audio par un simple GET, sans identifiants. |
method | "GET" | oui | Nom de la méthode, par exemple basic, token ou none. |
expires_seconds | number | oui | Durée de vie de l'URL en secondes, 900 par défaut, au plus EAI_STORAGE_PRESIGN_MAX_SECONDS (3600 par défaut) et jamais plus de 604800. |
expires_at | string | oui | Date et heure (ISO 8601, UTC) après lesquelles l'élément n'est plus valide. |
content_type | string | null | 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. |
size_bytes | number | null | non | Taille de l'audio en octets, si elle est connue. |
sha256 | string | null | non | Empreinte SHA-256 de l'audio, en hexadécimal, si elle est connue. |
Interface TelephonyWebrtcCredentials
Identifiants SIP éphémères d'une extension WebRTC pour le module auth_ephemeral de Kamailio (une heure au plus).
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
username | string | oui | Identifiant du compte, 1 à 128 caractères, comparé sans tenir compte de la casse. |
password | string | oui | Mot de passe. En écriture seule : jamais renvoyé par l'API ni écrit dans les journaux. |
expires_at | string | oui | Date et heure (ISO 8601, UTC) après lesquelles l'élément n'est plus valide. |
ttl_seconds | number | oui | Durée de vie en secondes. Une fois écoulée, l'élément expire et n'est plus accepté. |
sip_uri | string | oui | Adresse SIP sous laquelle le softphone s'enregistre et appelle, sip:<endpoint>@<domain>. |
ws_url | string | oui | Adresse WebSocket sécurisée du proxy SIP, wss://.... |
realm | string | oui | Domaine d'authentification SIP, le domaine SIP du locataire. |
endpoint | string | oui | Nom du point de terminaison de l'extension sur le PBX. |
number | string | oui | Numéro interne de l'extension. |
Interface TelephonyPublication
Réponse 202 d'une publication ou d'un retour arrière : la nouvelle version de configuration et son opération longue.
Champs :
| Nom | Type | Requis | Description |
|---|---|---|---|
version_id | string | oui | Version de l'objet à supprimer sur un bucket versionné, de 1 à 1024 caractères. Omettez-la pour supprimer la version courante. |
version | number | oui | Numéro de la nouvelle version de configuration du pool. |
status | string | oui | État de la version, publishing jusqu'à la fin de la livraison. |
sha256 | string | oui | Empreinte SHA-256 de la configuration compilée. |
pool_id | string | oui | Identifiant du pool PBX. |
rollback_of | string | null | non | Version republiée par un retour arrière, null pour une publication. |
operation_id | string | oui | Opération longue de la livraison, à suivre avec operations.get. |
Alias de type TelephonyAudio
Octets d'un message de SVI : un Blob, un ArrayBuffer ou un Uint8Array.
Définition : Blob \| ArrayBuffer \| Uint8Array.
Classe TelephonyResource
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
TelephonyResource.acknowledgeFraudAlert
acknowledgeFraudAlert(alertId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
alertId | string | oui | Identifiant (UUID) de l'alerte de fraude. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.activeCalls
activeCalls(query?: { extension?: string; queue?: string }, opts?: CallOptions)
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 |
|---|---|---|---|---|
query | { extension?: string; queue?: string } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.addQueueMember
addQueueMember(queueId: string, body: TelephonyMemberIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de la file. | |
body | TelephonyMemberIn | oui | Le membre et sa pénalité. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.agent
agent(agentId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
agentId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.agents
agents(query?: ListParams & { enabled?: boolean }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { enabled?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les agents humains ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.blocks
blocks(query?: { active?: boolean }, opts?: CallOptions)
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 |
|---|---|---|---|---|
query | { active?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.calls
calls(query?: TelephonyCallQuery, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | TelephonyCallQuery | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.conference
conference(conferenceId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
conferenceId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.conferenceSession
conferenceSession(sessionId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
sessionId | string | oui | Identifiant (UUID) de la session de conférence. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.conferenceSessions
conferenceSessions(query?: ListParams & { conference_id?: string; active?: boolean }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { conference_id?: string; active?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.conferences
conferences(query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.configVersion
configVersion(versionId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
versionId | string | oui | Identifiant (UUID) de la version de configuration. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createAgent
createAgent(body: TelephonyAgentIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyAgentIn | oui | L'agent humain. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createBlock
createBlock(body: TelephonyBlockIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyBlockIn | oui | La portée, l'extension et le motif. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createConference
createConference(body: TelephonyConferenceIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyConferenceIn | oui | La salle de conférence. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createExtension
createExtension(body: TelephonyExtensionIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyExtensionIn | oui | L'extension. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createIvrFlow
createIvrFlow(body: TelephonyIvrFlowIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyIvrFlowIn | oui | Le flux svi. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createIvrFlowVersion
createIvrFlowVersion(flowId: string, body: TelephonyIvrVersionIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) du flux SVI. | |
body | TelephonyIvrVersionIn | oui | Le graphe : start (identifiant de nœud) et nodes (identifiant vers nœud avec type start, play, menu, time_condition, transfer, voicemail, queue, voice_agent ou hangup). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createNumber
createNumber(body: TelephonyNumberIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyNumberIn | oui | Le numéro. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createPool
createPool(body: TelephonyPoolIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyPoolIn | oui | Le pool. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createQueue
createQueue(body: TelephonyQueueIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyQueueIn | oui | La file d'appels. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createRoutingRule
createRoutingRule(body: TelephonyRuleIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyRuleIn | oui | La règle de routage. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createTrunk
createTrunk(body: TelephonyTrunkIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyTrunkIn | oui | Le trunk sip. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.createVoiceAgent
createVoiceAgent(body: TelephonyVoiceAgentIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyVoiceAgentIn | oui | L'agent vocal ia. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteAgent
deleteAgent(agentId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
agentId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteConference
deleteConference(conferenceId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
conferenceId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteExtension
deleteExtension(extensionId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
extensionId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteIvrFlow
deleteIvrFlow(flowId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteIvrPrompt
deleteIvrPrompt(promptId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
promptId | string | oui | Identifiant (UUID) du message de SVI. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteNumber
deleteNumber(numberId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
numberId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deletePool
deletePool(poolId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteQueue
deleteQueue(queueId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteRecording
deleteRecording(recordingId: string, body?: TelephonyDeleteIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
recordingId | string | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). | |
body | TelephonyDeleteIn | non | Motif facultatif conservé dans la piste d'audit. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteRoutingRule
deleteRoutingRule(ruleId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
ruleId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteTrunk
deleteTrunk(trunkId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
trunkId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteVoiceAgent
deleteVoiceAgent(voiceAgentId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
voiceAgentId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.deleteVoicemail
deleteVoicemail(messageId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
messageId | string | oui | Identifiant (UUID) du message vocal. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.downloadIvrPrompt
downloadIvrPrompt(promptId: string, opts?: CallOptions): Promise<TelephonyPresignedUrl>
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 |
|---|---|---|---|---|
promptId | string | oui | Identifiant (UUID) du message de SVI. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<TelephonyPresignedUrl>. 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).
TelephonyResource.downloadRecording
downloadRecording(recordingId: string, opts?: CallOptions): Promise<TelephonyPresignedUrl>
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 |
|---|---|---|---|---|
recordingId | string | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<TelephonyPresignedUrl>. 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).
TelephonyResource.drainDestination
drainDestination(poolId: string, body: TelephonyDrainIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
body | TelephonyDrainIn | oui | La destination et son nouvel état. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.eventStreams
eventStreams(opts?: CallOptions)
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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.extension
extension(extensionId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
extensionId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.extensions
extensions(query?: ListParams & { enabled?: boolean }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { enabled?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les extensions ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.fraudAlerts
fraudAlerts(query?: ListParams & { status?: "open" | "acknowledged"; kind?: "cps" | "concurrency" | "extension_volume" | "destination_refused" }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { status?: "open" | "acknowledged"; kind?: "cps" | "concurrency" | "extension_volume" | "destination_refused" } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.getCall
getCall(callId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
callId | string | oui | Identifiant (UUID) de l'enregistrement d'appel, dans le tenant de l'appelant (l'appel d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.hangupCall
hangupCall(linkedId: string, opts?: CallOptions)
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 | string | oui | linkedid Asterisk de l'appel actif (linkedid de GET /v1/telephony/active-calls). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.infrastructure
infrastructure(query?: { cluster_id?: string }, opts?: CallOptions)
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 |
|---|---|---|---|---|
query | { cluster_id?: string } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.iterCalls
iterCalls(query?: TelephonyCallQuery, opts?: CallOptions): AsyncGenerator<Doc>
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 |
|---|---|---|---|---|
query | TelephonyCallQuery | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : AsyncGenerator<Doc>. Réponse JSON décodée de l'opération « Lister les appels ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.iterRecordings
iterRecordings(query?: TelephonyRecordingQuery, opts?: CallOptions): AsyncGenerator<Doc>
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 |
|---|---|---|---|---|
query | TelephonyRecordingQuery | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : AsyncGenerator<Doc>. Réponse JSON décodée de l'opération « Lister les enregistrements ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.ivrFlow
ivrFlow(flowId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.ivrFlowVersion
ivrFlowVersion(flowId: string, version: number, opts?: CallOptions)
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) du flux SVI. | |
version | number | oui | Numéro de version (1, 2, ...). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.ivrFlowVersions
ivrFlowVersions(flowId: string, query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) du flux SVI. | |
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.ivrFlows
ivrFlows(query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les flux SVI ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.ivrPrompt
ivrPrompt(promptId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
promptId | string | oui | Identifiant (UUID) du message de SVI. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.ivrPrompts
ivrPrompts(query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.liftBlock
liftBlock(blockId: string, body: TelephonyLiftIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
blockId | string | oui | Identifiant (UUID) du blocage. | |
body | TelephonyLiftIn | oui | Pourquoi le blocage est levé. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.listenVoicemail
listenVoicemail(messageId: string, opts?: CallOptions)
É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 |
|---|---|---|---|---|
messageId | string | oui | Identifiant (UUID) du message vocal. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.markVoicemail
markVoicemail(messageId: string, query?: { read?: boolean }, opts?: CallOptions)
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 |
|---|---|---|---|---|
messageId | string | oui | Identifiant (UUID) du message vocal. | |
query | { read?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.number
number(numberId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
numberId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.numbers
numbers(query?: ListParams & { enabled?: boolean }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { enabled?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les numéros ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.pool
pool(poolId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.poolVersions
poolVersions(poolId: string, query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.pools
pools(query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les pools PBX ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.preview
preview(opts?: CallOptions)
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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.previewPool
previewPool(poolId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.publishIvrFlowVersion
publishIvrFlowVersion(flowId: string, version: number, opts?: CallOptions)
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) du flux SVI. | |
version | number | oui | Numéro de version (1, 2, ...). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.publishPool
publishPool(poolId: string, body: TelephonyPublishIn = {}, opts?: CallOptions): Promise<TelephonyPublication>
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
body | TelephonyPublishIn | {} | non | Pourquoi la configuration est publiée. |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<TelephonyPublication>. 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).
TelephonyResource.putQuotas
putQuotas(body: TelephonyQuotasIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyQuotasIn | oui | Les quotas complets ; les champs omis prennent leur valeur par défaut. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.putRuntimeSettings
putRuntimeSettings(body: TelephonyRuntimeSettingsIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyRuntimeSettingsIn | oui | Les réglages complets ; les champs omis prennent leur valeur par défaut. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.putSettings
putSettings(body: TelephonySettingsIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonySettingsIn | oui | Les paramètres complets ; les champs omis prennent leur valeur par défaut. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.queue
queue(queueId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.queueMembers
queueMembers(queueId: string, query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de la file. | |
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.queues
queues(query?: ListParams, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.quotas
quotas(opts?: CallOptions)
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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.reconcilePool
reconcilePool(poolId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.recording
recording(recordingId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
recordingId | string | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.recordings
recordings(query?: TelephonyRecordingQuery, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | TelephonyRecordingQuery | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les enregistrements ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.removeQueueMember
removeQueueMember(queueId: string, memberId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de la file. | |
memberId | string | oui | Identifiant (UUID) du membre de la file. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.rollbackPool
rollbackPool(poolId: string, body: TelephonyRollbackIn, opts?: CallOptions): Promise<TelephonyPublication>
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
body | TelephonyRollbackIn | oui | La version à publier à nouveau et pourquoi. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<TelephonyPublication>. 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).
TelephonyResource.routingRule
routingRule(ruleId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
ruleId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.routingRules
routingRules(query?: ListParams & { enabled?: boolean; direction?: "inbound" | "outbound" }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { enabled?: boolean; direction?: "inbound" | "outbound" } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.runtimeSettings
runtimeSettings(opts?: CallOptions)
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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.setLegalHold
setLegalHold(recordingId: string, body: TelephonyLegalHoldIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
recordingId | string | oui | Identifiant (UUID) de l'enregistrement, dans le tenant de l'appelant (l'enregistrement d'un autre tenant répond 404). | |
body | TelephonyLegalHoldIn | oui | La conservation et son motif. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.settings
settings(opts?: CallOptions)
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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.stats
stats(query?: { window_hours?: number }, opts?: CallOptions)
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 |
|---|---|---|---|---|
query | { window_hours?: number } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.syncInfrastructurePool
syncInfrastructurePool(body: TelephonyInventorySyncIn, opts?: CallOptions)
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 |
|---|---|---|---|---|
body | TelephonyInventorySyncIn | oui | L'instance Asterisk du Manager et les options d'un nouveau pool. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.transferCall
transferCall(linkedId: string, body: TelephonyTransferIn, opts?: CallOptions)
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 | string | oui | linkedid Asterisk de l'appel actif (linkedid de GET /v1/telephony/active-calls). | |
body | TelephonyTransferIn | oui | La cible et, au besoin, le canal à déplacer. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.trunk
trunk(trunkId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
trunkId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.trunks
trunks(query?: ListParams & { enabled?: boolean }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { enabled?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les trunks SIP ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateAgent
updateAgent(agentId: string, body: Partial<TelephonyAgentIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
agentId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyAgentIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateConference
updateConference(conferenceId: string, body: Partial<TelephonyConferenceIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
conferenceId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyConferenceIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateExtension
updateExtension(extensionId: string, body: Partial<TelephonyExtensionIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
extensionId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyExtensionIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateIvrFlow
updateIvrFlow(flowId: string, body: Partial<TelephonyIvrFlowIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
flowId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyIvrFlowIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateNumber
updateNumber(numberId: string, body: Partial<TelephonyNumberIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
numberId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyNumberIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updatePool
updatePool(poolId: string, body: Partial<TelephonyPoolIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
poolId | string | oui | Identifiant (UUID) du pool PBX. | |
body | Partial<TelephonyPoolIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateQueue
updateQueue(queueId: string, body: Partial<TelephonyQueueIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyQueueIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateQueueMember
updateQueueMember(queueId: string, memberId: string, body: TelephonyMemberPatch, opts?: CallOptions)
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 |
|---|---|---|---|---|
queueId | string | oui | Identifiant (UUID) de la file. | |
memberId | string | oui | Identifiant (UUID) du membre de la file. | |
body | TelephonyMemberPatch | oui | La nouvelle pénalité. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateRoutingRule
updateRoutingRule(ruleId: string, body: Partial<TelephonyRuleIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
ruleId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyRuleIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateTrunk
updateTrunk(trunkId: string, body: Partial<TelephonyTrunkIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
trunkId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyTrunkIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.updateVoiceAgent
updateVoiceAgent(voiceAgentId: string, body: Partial<TelephonyVoiceAgentIn>, opts?: CallOptions)
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 |
|---|---|---|---|---|
voiceAgentId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
body | Partial<TelephonyVoiceAgentIn> | oui | Les champs à modifier. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.uploadIvrPrompt
uploadIvrPrompt(name: string, audio: TelephonyAudio, opts?: CallOptions)
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 | string | oui | Nom du message, unique dans le tenant (minuscules, chiffres, -). | |
audio | TelephonyAudio | oui | Octets bruts du fichier WAV PCM (10 Mo au plus), envoyés tels quels avec Content-Type: audio/wav ; tout autre type est refusé avant l'envoi. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.voiceAgent
voiceAgent(voiceAgentId: string, opts?: CallOptions)
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 |
|---|---|---|---|---|
voiceAgentId | string | oui | Identifiant (UUID) de l'objet, dans le tenant de l'appelant (l'objet d'un autre tenant répond 404). | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.voiceAgents
voiceAgents(query?: ListParams & { enabled?: boolean }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { enabled?: boolean } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. 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).
TelephonyResource.voicemail
voicemail(query?: ListParams & { mailbox?: string; status?: "new" | "read" }, opts?: CallOptions): Promise<Page<Doc>>
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 |
|---|---|---|---|---|
query | ListParams & { mailbox?: string; status?: "new" | "read" } | non | Paramètres de la chaîne de requête de la route. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<Page<Doc>>. Réponse JSON décodée de l'opération « Lister les messages vocaux ».
Erreurs levées : les erreurs typées du transport (Erreurs).
TelephonyResource.webrtcCredentials
webrtcCredentials(body: TelephonyWebrtcIn, opts?: CallOptions): Promise<TelephonyWebrtcCredentials>
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 |
|---|---|---|---|---|
body | TelephonyWebrtcIn | oui | L'extension et la durée de vie. | |
opts | CallOptions | non | Options de l'appel (requête, clé d'idempotence, traceparent, en-têtes). |
Retour : Promise<TelephonyWebrtcCredentials>. Réponse JSON décodée de l'opération « Obtenir des identifiants WebRTC ».
Erreurs levées : les erreurs typées du transport (Erreurs).