Référence de l'API Kanadr
API publique : tout ce que fait le portail passe par elle. **Lecture seule** : licence de la plateforme échue depuis plus de 30 jours, toute écriture (`POST`, `PUT`, `PATCH`, `DELETE`) répond 403 `licence_lecture_seule`, sauf la connexion et la sécurité du compte, l'usage téléphonique d'un utilisateur (renvois, ne pas déranger, messages vocaux, appareils mobiles), le chargement de la licence et quelques gestes d'exploitation de l'opérateur (déblocage d'une adresse, rechargement, réenregistrement d'un trunk). Les lectures restent permises et la téléphonie n'est jamais coupée. 311 opérations. Référence interactive : Redoc ; description lisible par machine : openapi.json. Kanadr est un centrex IP en marque blanche pour opérateurs télécom : www.kanadr.com.
État de l'instance
GET /api/v1/marque: Marque de l'opérateur : nom, couleurs, logo. Sans session.GET /api/v1/marque/icone: Icône carrée de l'application (favicon, application installée) : celle déposée (PNG), sinon l'initiale du nom de l'opérateur, en blanc sur sa couleur (zone sûre des icônes masquables respectée). Sans session.GET /api/v1/marque/logo: Logo de l'opérateur. Sans session ; mis en cache par le navigateur (l'adresse change avec lui).GET /api/v1/marque/manifeste: Manifeste du portail installable (PWA) : nom et couleur de l'opérateur, icône à sa couleur. Sans session.GET /api/v1/marque/manifeste-telephone: Manifeste du softphone installable (D107) : une application à part du portail (`id`, portée et départ `/telephone/`), « Téléphone » à la marque de l'opérateur, qui ouvre les liens `tel:` et `sip:`. Sans session ; nom en anglais si le navigateur le préfère.GET /api/v1/mise-en-route: État de la mise en route : étapes de l'assistant et constats. Admin opérateur.PUT /api/v1/mise-en-route/affichage: Masque ou réaffiche la tuile de la mise en route sur l'accueil de l'opérateur.GET /api/v1/mise-en-route/certificat: Certificat servi en HTTPS et dernière demande Let's Encrypt. Admin opérateur.POST /api/v1/mise-en-route/certificat: Demande un certificat Let's Encrypt pour l'hôte de l'instance (`KANADR_URL_PUBLIQUE`), et seulement lui : le service système qui lance certbot relit l'hôte dans les réglages de la machine ; rien ne vient de la requête. Le résultat se lit sur `GET /mise-en-route/certificat`.GET /api/v1/mise-en-route/domaines: Ce que le DNS donne pour le nom d'hôte de l'instance, et pour un nom sous le suffixe des domaines clients (enregistrement générique). Admin opérateur.PUT /api/v1/mise-en-route/etapes/{etape}: Règle l'état d'une étape : faite, passée ou de nouveau à faire.POST /api/v1/mise-en-route/premier-acces: Premier accès : crée l'opérateur et son premier administrateur, comme `kanadr initialiser`. Le lien ne sert qu'une fois. Sans session.POST /api/v1/mise-en-route/premier-acces/verification: Le lien de premier accès est-il valable ? Sans session ; 404 sinon, comme toute adresse inconnue.GET /api/v1/sante: L'instance répond et sa base est joignable.
Connexion, session et mot de passe
POST /api/v1/connexion: Ouvre une session. Le jeton est posé dans un cookie `HttpOnly`, `Secure`, `SameSite=Strict`. Un cookie `appareil` valide pour ce compte (appareil de confiance, D53) dispense du second facteur : l'étape est alors `connecte`. Sur un appareil de confiance, la session dure jusqu'à la fin de la confiance (30 jours au plus, D76).POST /api/v1/connexion/passkey/debut: Commence la connexion par passkey (session en attente du second facteur) : options à passer à `navigator.credentials.get()`.POST /api/v1/connexion/passkey/fin: Termine la connexion par passkey : session complète (nouveau cookie). Un refus compte comme un échec de connexion (blocage après 5).POST /api/v1/connexion/second-facteur: Termine la connexion par un code TOTP ou un code de secours. Cinq codes faux bloquent le compte 15 minutes, comme les mots de passe faux. Avec `confiance`, ce navigateur est dispensé du code pendant 30 jours (le mot de passe reste demandé).POST /api/v1/deconnexion: Ferme la session courante.POST /api/v1/deconnexion/partout: Déconnecte le compte de tous ses appareils : ferme toutes ses sessions, la courante comprise, et oublie ses appareils de confiance (mot de passe et code redemandés partout, D76).GET /api/v1/moi: Compte de la session courante.GET /api/v1/moi/contacts: Contacts personnels du compte connecté, par nom.POST /api/v1/moi/contacts: Ajoute un contact personnel.PUT /api/v1/moi/contacts/{id}: Modifie un contact personnel.DELETE /api/v1/moi/contacts/{id}: Supprime un contact personnel, et son favori.GET /api/v1/moi/favoris: Favoris du compte connecté, dans l'ordre.PUT /api/v1/moi/favoris: Remplace les favoris du compte connecté (liste ordonnée, 30 au plus, sans doublon) ; un favori personnel désigne un de ses contacts personnels.GET /api/v1/moi/telephone: Identifiants SIP du poste du compte connecté, pour le softphone (D107) : à son seul titulaire, connecté en personne (ni clé d'API, ni application autorisée, ni assistant, ni MCP), jamais à un admin pour le compte d'un autre. Lecture journalisée, sans le mot de passe.GET /api/v1/moi/telephone/contacts: Contacts du softphone : les autres postes en service du client du compte, puis son répertoire commun.POST /api/v1/moi/telephone/mobile: Inscrit l'application mobile du compte connecté sur son poste (D117), ou rafraîchit son jeton push. Au titulaire du poste, en personne. Une nouvelle inscription met en place le réveil du poste.DELETE /api/v1/moi/telephone/mobile/acces: Déconnexion de l'application mobile maison (D117) : elle révoque son propre jeton d'appareil et oublie son inscription push. Avec un jeton d'appareil seulement.DELETE /api/v1/moi/telephone/mobile/{identifiant}: Retire l'application mobile du compte connecté (déconnexion de l'application) : elle n'est plus réveillée.POST /api/v1/mot-de-passe: Définit le mot de passe avec un jeton d'invitation ou de réinitialisation. Ferme les sessions ouvertes du compte.POST /api/v1/mot-de-passe/oubli: Mot de passe oublié : si un compte actif porte cette adresse et qu'un serveur d'e-mails est réglé, un lien pour choisir un nouveau mot de passe (valable une heure) part à cette adresse. La réponse est la même dans tous les cas, et rendue avant l'envoi : elle ne dit pas si le compte existe.GET /api/v1/second-facteur/passkeys: Passkeys du compte connecté.POST /api/v1/second-facteur/passkeys/debut: Commence l'enregistrement d'une passkey : options à passer à `navigator.credentials.create()`.POST /api/v1/second-facteur/passkeys/fin: Termine l'enregistrement. Si la session était limitée à l'inscription du second facteur, elle devient complète (nouveau cookie).DELETE /api/v1/second-facteur/passkeys/{id}: Supprime une passkey du compte connecté.POST /api/v1/second-facteur/totp: Commence l'inscription d'une application d'authentification (TOTP).POST /api/v1/second-facteur/totp/confirmation: Confirme l'inscription par un premier code. Renvoie les codes de secours ; si la session était limitée à l'inscription, elle devient complète (nouveau cookie).GET /api/v1/sso/jeton: Connexion par jeton signé du portail de l'opérateur (D79) : l'outil y envoie le navigateur de son client. Jeton valable dix minutes au plus, une seule fois. Réussie : session ouverte (cookie) et retour au portail ; refusée : page de connexion avec `?sso=` (`ferme`, `invalide`, `expire`, `deja_utilise`, `compte_inconnu`, `compte_inactif`).POST /api/v1/sso/oidc/debut: Commence la connexion par l'annuaire de l'organisation du compte : renvoie l'adresse où envoyer le navigateur. 404 `sso_absent` si aucun annuaire ne vaut pour cette adresse.GET /api/v1/sso/oidc/retour: Retour de l'annuaire : le code est échangé contre l'`id_token`, vérifié, puis la session est ouverte et le portail affiché ; sinon la page de connexion avec `?sso=` (`invalide`, `expire`, `compte_inconnu`, `compte_inactif`, `annule`).
Clients finaux, leurs utilisateurs et postes
GET /api/v1/clients/{client_id}: Un client.DELETE /api/v1/clients/{client_id}: Résilie un client : postes, messageries, connecteurs SIP, parcours, répertoire et domaine SIP supprimés, avec leurs fichiers (annonces, messages, enregistrements, musique) ; comptes, clés d'API et webhook supprimés. Définitif. L'organisation reste (désactivée, datée) pour le journal d'audit et les CDR des mois passés. Refusé tant que le client a des numéros (les retirer : ils reviennent au stock) ou un trunk (le supprimer). Réservé au niveau supérieur.PATCH /api/v1/clients/{client_id}: Renomme, suspend ou réactive un client, règle l'enregistrement de ses appels (D111) ou l'ajout d'utilisateurs et de postes par son admin (D121). Suspendu : ses comptes ne se connectent plus (sessions fermées), ses clés d'API ne passent plus, ses téléphones ne s'enregistrent plus et ses numéros ne sonnent plus (domaine SIP hors service), il ne compte plus pour la licence (D71). Tout reste en place pour la réactivation. Réservé au niveau supérieur (opérateur, revendeur du client).GET /api/v1/clients/{client_id}/appels-bloques: Appels entrants bloqués du client.PUT /api/v1/clients/{client_id}/appels-bloques: Remplace les appels entrants bloqués du client ; ses routes entrantes sont réécrites.GET /api/v1/clients/{client_id}/appels-chiffres: Appels chiffrés du client.PUT /api/v1/clients/{client_id}/appels-chiffres: Active ou coupe les appels chiffrés du client.GET /api/v1/clients/{client_id}/evenements: Changements en direct d'un client, en `text/event-stream` : événements `changement` (JSON), une heure au plus, puis le navigateur se reconnecte. Le portail relit alors l'état des postes ou des appels, sans interroger le moteur de téléphonie à intervalles.GET /api/v1/clients/{client_id}/postes/etat: État des postes d'un client : inscrits maintenant, appareils, dernière inscription.GET /api/v1/clients/{client_id}/postes/{poste}/enregistrement: Réglage d'enregistrement du poste.PUT /api/v1/clients/{client_id}/postes/{poste}/enregistrement: Règle l'enregistrement des appels du poste ; le parcours publié est réécrit (armement avant un prédécroché).GET /api/v1/clients/{client_id}/postes/{poste}/ne-pas-deranger: « Ne pas déranger » du poste.PUT /api/v1/clients/{client_id}/postes/{poste}/ne-pas-deranger: Règle « ne pas déranger » du poste, appliqué à l'appel suivant.GET /api/v1/clients/{client_id}/postes/{poste}/renvois: Renvois du poste.PUT /api/v1/clients/{client_id}/postes/{poste}/renvois: Règle les renvois du poste, appliqués à l'appel suivant (sans publier le parcours).GET /api/v1/clients/{client_id}/securite: Sécurité d'un client.PUT /api/v1/clients/{client_id}/securite: Impose (ou non) le second facteur aux utilisateurs simples du client.GET /api/v1/clients/{client_id}/utilisateurs: Utilisateurs d'un client, avec leur poste.POST /api/v1/clients/{client_id}/utilisateurs: Crée un utilisateur chez un client, avec son poste s'il en a un, et lui envoie son invitation par e-mail (serveur SMTP de l'opérateur). L'opérateur et le revendeur du client ajoutent toujours ; l'admin du client, seulement si l'opérateur ou le revendeur le lui laisse (D121 : chaque compte compte dans la licence et dans ce que l'opérateur facture).GET /api/v1/clients/{client_id}/voix: La voix des annonces du client : son choix, la voix de l'instance et celle qui lit.PUT /api/v1/clients/{client_id}/voix: Choisit la voix des annonces du client, parmi celles de l'instance pour sa langue, ou revient à la voix de l'instance. Les annonces déjà enregistrées ne changent pas : la voix sert aux prochains textes lus.GET /api/v1/clients/{client_id}/voix/disponibles: Voix que le client peut choisir : celles de l'instance pour la langue de ses annonces, la voix de l'instance en tête.POST /api/v1/clients/{client_id}/voix/essai: Fait lire une courte phrase dans la langue du client par une voix, pour l'écouter avant de la choisir ; rien n'est enregistré. Comme pour une annonce, Piper lit si Google échoue.GET /api/v1/organisations/{id}/clients: Clients visibles depuis une organisation (sa descendance).POST /api/v1/organisations/{id}/clients: Crée un client sous un opérateur ou un revendeur, avec son domaine SIP.GET /api/v1/organisations/{id}/suffixe-domaine: Suffixe des domaines clients (D108), pour qui crée des clients (l'opérateur et ses revendeurs) ou consulte les réglages.DELETE /api/v1/utilisateurs/{id}: Supprime un compte et son poste : extension, boîte vocale et messages, restrictions d'appel. Refusé tant que le parcours publié du client mène au poste : modifier le parcours d'abord. Le téléphone resté configuré ne fait pas bannir le site pendant 30 jours ; le désinstaller. Jamais son propre compte.PATCH /api/v1/utilisateurs/{id}: Modifie un compte : nom (repris comme nom affiché de son poste), adresse e-mail, rôle du même niveau, désactivation ou réactivation, limitation au téléphone (D107). Désactivé, le compte perd ses sessions, ne compte plus pour la licence (D71), et son poste est mis hors service (il ne s'enregistre plus, ne reçoit ni ne passe d'appel ; sa boîte vocale et ses réglages restent). Jamais son propre rôle ni son propre état. L'adresse e-mail est l'identifiant de connexion : jamais celle d'un compte de rôle supérieur ; changée, elle ferme les sessions et les applications autorisées du compte, annule ses liens d'invitation ou de mot de passe oublié en attente, et prévient l'ancienne et la nouvelle adresse (une nouvelle invitation part à la nouvelle si le compte n'a pas encore choisi son mot de passe) ; l'avant et l'après vont au journal d'audit.GET /api/v1/utilisateurs/{id}/donnees: Export des données personnelles d'un utilisateur (droit d'accès et de portabilité), en JSON. Par la personne elle-même ou un admin de son organisation (`utilisateur.modifier`). Les numéros sont en entier pour la personne et qui peut les voir (D60), masqués sinon. Tracé.POST /api/v1/utilisateurs/{id}/effacement: Efface un utilisateur (droit à l'effacement) : compte, poste, messagerie et messages, et les enregistrements des appels de son poste. Restent les CDR (obligation de conservation d'un an, CPCE L34-1) et le journal d'audit. Par un admin de son organisation ; jamais son propre compte. Refusé tant que le parcours publié mène à son poste (`poste_utilise`).POST /api/v1/utilisateurs/{id}/invitation: Envoie (ou renvoie) l'invitation d'un utilisateur : un nouveau lien pour choisir son mot de passe, à son adresse e-mail ; le lien précédent ne vaut plus rien. Sert aussi au mot de passe oublié. Permission `utilisateur.modifier` sur l'organisation du compte.POST /api/v1/utilisateurs/{id}/poste: Donne un poste à un compte d'un client qui n'en a pas (créé sans téléphone, ou par l'annuaire de l'entreprise) : mêmes règles et mêmes réglages qu'à la création d'un collaborateur avec poste (extension, boîte vocale, musique d'attente du client, nom affiché = nom du compte). Un compte n'a qu'un poste : pour en changer, créer le nouveau collaborateur puis supprimer l'ancien.POST /api/v1/utilisateurs/{id}/second-facteur/reinitialisation: Réinitialise le second facteur d'un utilisateur (téléphone perdu, passkey égarée) : TOTP, passkeys et codes de secours supprimés, sessions fermées ; il en configurera un nouveau à sa prochaine connexion. Réservé à un admin **du niveau supérieur** (§6) : organisation ancêtre, ou admin client pour un utilisateur simple de son client. Jamais son propre compte, jamais par une clé d'API.
Revendeurs de l'opérateur, comptes d'équipe de l'opérateur et des revendeurs (D7)
GET /api/v1/organisations/{id}: Une organisation : nom, type, parent.GET /api/v1/organisations/{id}/comptes: Comptes d'une organisation (les siens, pas ceux de sa descendance).POST /api/v1/organisations/{id}/comptes: Crée un compte d'équipe chez l'opérateur (admin ou support) ou chez un revendeur (admin), et lui envoie son invitation par e-mail. Le second facteur lui sera demandé à sa première connexion (§6).GET /api/v1/organisations/{id}/fonctions: Fonctions activées sur l'instance.PUT /api/v1/organisations/{id}/fonctions: Active ou coupe les revendeurs, l'assistant IA et la messagerie vocale. Couper la messagerie désactive toutes les boîtes (leur état est gardé, leurs messages aussi) ; la réactiver rend à chaque boîte son état d'avant.GET /api/v1/organisations/{id}/revendeurs: Revendeurs visibles depuis une organisation (sa descendance), avec leur nombre de clients.POST /api/v1/organisations/{id}/revendeurs: Crée un revendeur sous l'opérateur. Ses clients se créent ensuite sous lui (`POST /organisations/{id}/clients`), ses admins par `POST /organisations/{id}/comptes`.GET /api/v1/organisations/{id}/supervision: État du jeton de supervision (jamais le jeton).POST /api/v1/organisations/{id}/supervision/jeton: Crée le jeton de supervision, ou le remplace : l'ancien cesse aussitôt de servir.DELETE /api/v1/organisations/{id}/supervision/jeton: Révoque le jeton de supervision : `/metrics` redevient local seulement.
Stock de numéros, réservation, affectation et destination (D28, D40)
GET /api/v1/clients/{client_id}/numeros: Numéros d'un client.POST /api/v1/clients/{client_id}/numeros: Affecte un numéro libre du stock à un client. Un numéro réservé ne va qu'à un client du revendeur ; un revendeur n'affecte que ses réservés (D40).DELETE /api/v1/clients/{client_id}/numeros/{numero_id}: Retire un numéro à un client : il redevient libre dans le stock, avec sa réservation, sort du parcours (nouvelle version publiée) et n'est plus routé.PUT /api/v1/clients/{client_id}/numeros/{numero_id}/destination: Règle la destination d'un numéro du client : un de ses postes, ou aucune. Raccourci du parcours : publie une nouvelle version (le brouillon qui partait de la version servie reçoit le même changement), et la route entrante est réécrite aussitôt.PUT /api/v1/clients/{client_id}/postes/{poste}/numero-presente: Choisit le numéro qu'un poste présente à l'extérieur, parmi les numéros du client (comme en production).PUT /api/v1/numeros/{numero_id}/etat: Change l'état d'un numéro. Hors client : `libre`, `porte_sortant` ou `resilie`. Un numéro chez un client ne passe qu'à `porte_sortant` : il quitte le client comme un retrait (parcours republié, route supprimée, plus présenté) et ne se réaffecte pas.PUT /api/v1/numeros/{numero_id}/reservation: Réserve un numéro du stock pour un revendeur, ou lève la réservation.GET /api/v1/organisations/{id}/numeros: Numéros visibles depuis une organisation : tous pour l'opérateur ; pour un revendeur, ses réservés et ceux de ses clients ; pour un client, les siens.POST /api/v1/organisations/{id}/numeros: Ajoute des numéros au stock de l'opérateur, libres. Tout ou rien.
Parcours des appels d'un client : brouillon, vérification, publication, versions
GET /api/v1/clients/{client_id}/annonces: Annonces déposées pour les modules du parcours publié et du brouillon.GET /api/v1/clients/{client_id}/annonces/{nature}/{cible}: Écoute d'une annonce : le WAV tel que le moteur de téléphonie le joue.PUT /api/v1/clients/{client_id}/annonces/{nature}/{cible}: Dépose une annonce : le fichier (WAV, MP3, AAC/M4A, Ogg Vorbis, FLAC ; 20 Mo, 10 minutes au plus) est converti en WAV mono 16 bits 8 kHz et remplace l'éventuelle annonce en place. La version publiée du parcours est réécrite pour la citer (sans nouvelle version).DELETE /api/v1/clients/{client_id}/annonces/{nature}/{cible}: Retire une annonce ; la version publiée du parcours cesse de la citer.GET /api/v1/clients/{client_id}/horaires: Grilles horaires du parcours publié : ouvertes ou fermées maintenant, jusqu'à quand.GET /api/v1/clients/{client_id}/musique-attente: Écoute de la musique d'attente du client.PUT /api/v1/clients/{client_id}/musique-attente: Dépose la musique d'attente du client : le fichier (WAV, MP3, AAC/M4A, Ogg Vorbis, FLAC ; 20 Mo, 10 minutes au plus) est converti en WAV mono 16 bits 8 kHz et joué en boucle, depuis le début, à chaque mise en attente sur ses postes.DELETE /api/v1/clients/{client_id}/musique-attente: Retire la musique d'attente du client : la musique générique reprend.GET /api/v1/clients/{client_id}/parcours: Le parcours du client : version servie, et brouillon avec sa vérification.PUT /api/v1/clients/{client_id}/parcours/brouillon: Enregistre le brouillon du client (il remplace le précédent).DELETE /api/v1/clients/{client_id}/parcours/brouillon: Abandonne le brouillon du client.PUT /api/v1/clients/{client_id}/parcours/connecteurs-sip/{ext}/mot-de-passe: Enregistre le mot de passe du connecteur SIP de numéro interne `ext`, chiffré (D27), hors du parcours. Si la version publiée contient ce connecteur, sa passerelle est mise à jour tout de suite (arrêt puis rechargement), sans nouvelle version : un connecteur écarté faute de mot de passe entre en service. Tracé, sans le mot de passe.GET /api/v1/clients/{client_id}/parcours/disposition: Disposition du schéma du parcours du client.PUT /api/v1/clients/{client_id}/parcours/disposition: Remplace la disposition du schéma (vide : tout redevient automatique, « Réorganiser »).POST /api/v1/clients/{client_id}/parcours/publication: Publie le brouillon du client : il devient la version servie, et disparaît. Les modules écartés par la validation gardent ce qui était servi.POST /api/v1/clients/{client_id}/parcours/verification: Vérifie un parcours sans l'enregistrer : validation face aux postes et numéros du client, et changements par rapport à la version publiée.GET /api/v1/clients/{client_id}/parcours/versions: Versions publiées du client, de la plus récente à la plus ancienne.GET /api/v1/clients/{client_id}/parcours/versions/{version}: Une version publiée, avec son contenu.POST /api/v1/clients/{client_id}/parcours/versions/{version}/restauration: Reprend une version publiée dans le brouillon (il remplace le brouillon en cours), à publier ensuite.POST /api/v1/clients/{client_id}/synthese: Lit un texte avec la voix choisie par le client (`…/voix`), sinon celle de l'instance réglée par l'opérateur (Piper, ou Google avec Piper en secours), et renvoie le WAV tel que le téléphone le jouera ; rien n'est stocké. Pour en faire une annonce, déposer ce WAV (`PUT …/annonces/…`).
Bannissement d'IP : réglages, adresses bannies, déblocage (D23, D43)
GET /api/v1/organisations/{id}/destinations-bloquees: Destinations bloquées pour tous les clients (D23).PUT /api/v1/organisations/{id}/destinations-bloquees: Remplace les destinations bloquées ; les routes sortantes de tous les clients sont réécrites dans la même transaction. Les urgences restent toujours joignables (D22).GET /api/v1/organisations/{id}/garde: Réglages du bannissement et adresses bannies en ce moment.PUT /api/v1/organisations/{id}/garde: Change seuil, fenêtre, durée et liste blanche.POST /api/v1/organisations/{id}/garde/bannies: Bannit une adresse à la main (§8), pour SIP et RTP : un scanner, un appareil à couper. Refusé pour une adresse de la liste blanche ou d'un trunk. Tracé.DELETE /api/v1/organisations/{id}/garde/bannies/{ip}: Lève le bannissement d'une adresse.
Trunk C5 d'un client, profils de trunk de l'opérateur et restrictions d'appel des postes (D38, D42, D95)
GET /api/v1/clients/{client_id}/plafond: Plafond de consommation d'un client : seuils, consommation et limitation en cours.PUT /api/v1/clients/{client_id}/plafond: Règle les seuils propres à un client (absents : ceux de l'instance) ; admin opérateur seul.POST /api/v1/clients/{client_id}/plafond/levee: Lève la restriction d'un client : au niveau de l'heure, par l'admin du client ou l'opérateur ; au niveau du jour, par l'opérateur seul. Le comptage de la fenêtre repart de zéro.GET /api/v1/clients/{client_id}/postes/{poste}/restrictions: Restrictions d'appel d'un poste : pour qui voit les postes du client, et pour son titulaire, qui les lit dans « Mon poste » sans pouvoir les changer.PUT /api/v1/clients/{client_id}/postes/{poste}/restrictions: Remplace les restrictions d'un poste. Les urgences restent toujours joignables (D22).GET /api/v1/clients/{client_id}/restrictions: Restrictions d'appel des postes d'un client.GET /api/v1/clients/{client_id}/trunk: Le trunk C5 d'un client.PUT /api/v1/clients/{client_id}/trunk: Crée ou remplace le trunk C5 d'un client : sa passerelle, ses routes sortantes et les réseaux de son fournisseur.DELETE /api/v1/clients/{client_id}/trunk: Supprime le trunk d'un client : sa passerelle et ses routes sortantes. Le client ne peut plus appeler l'extérieur.GET /api/v1/organisations/{id}/profils-trunk: Profils de trunk de l'opérateur.POST /api/v1/organisations/{id}/profils-trunk: Crée un profil de trunk.PUT /api/v1/organisations/{id}/profils-trunk/{profil_id}: Modifie un profil de trunk : les trunks qui en sont tirés suivent (passerelles, routes sortantes, ACL des fournisseurs).DELETE /api/v1/organisations/{id}/profils-trunk/{profil_id}: Supprime un profil de trunk qu'aucun trunk n'utilise.
Clés d'API : comptes de service à droits restreints
DELETE /api/v1/cles-api/{id}: Révoque une clé d'API, définitivement.GET /api/v1/organisations/{id}/cles-api: Clés d'API d'une organisation (sans leur secret).POST /api/v1/organisations/{id}/cles-api: Crée une clé d'API pour une organisation.
Applications autorisées par un compte à utiliser le serveur MCP avec ses droits (OAuth 2.1, D105)
GET /api/v1/moi/applications: Applications autorisées par le compte connecté (OAuth, serveur MCP), en vigueur.DELETE /api/v1/moi/applications/{id}: Retire l'accès d'une application : ses jetons cessent aussitôt de valoir.GET /api/v1/oauth/demandes/{id}: Demande d'autorisation en attente de l'accord du compte connecté.POST /api/v1/oauth/demandes/{id}/reponse: Accorde ou refuse l'accès demandé ; l'accord est tracé au journal d'audit.
Webhooks sortants : endpoint, secret, envois ; CSV du mois par lien signé (D61)
GET /api/v1/organisations/{id}/webhook: L'endpoint de l'organisation.PUT /api/v1/organisations/{id}/webhook: Crée ou modifie l'endpoint (et le réactive). À la création, le secret est rendu une fois.DELETE /api/v1/organisations/{id}/webhook: Supprime l'endpoint, son secret et sa file.GET /api/v1/organisations/{id}/webhook/envois: Les 100 derniers envois de l'endpoint.POST /api/v1/organisations/{id}/webhook/secret: Renouvelle le secret ; le nouveau est rendu une fois.GET /api/v1/webhooks/audio: Audio d'un message vocal, par le lien du webhook `voicemail.new` (sans session : le jeton signé désigne le message, sept jours).GET /api/v1/webhooks/cdr.csv: CSV d'un mois du parc, par le lien du webhook `cdr.month` (sans session : le jeton signé désigne l'organisation et le mois, sept jours).GET /api/v1/webhooks/enregistrement: Enregistrement d'un appel, par le lien du webhook `call.recorded` (sans session : le jeton signé désigne l'appel, sept jours).
Enregistrements d'appels : liste, écoute, export ZIP, suppression (D62)
GET /api/v1/clients/{client_id}/enregistrements: Enregistrements d'appels du client, du plus récent au plus ancien.GET /api/v1/clients/{client_id}/enregistrements.zip: Export ZIP des enregistrements choisis ou filtrés (admin du client) : un dossier par poste, heure du client dans les noms, 500 fichiers et 1,5 Gio au plus (production). Écrit en flux, taille annoncée d'avance.GET /api/v1/clients/{client_id}/enregistrements/{id}: Écoute d'un enregistrement, par plages (`Range`) pour avancer dans l'audio.DELETE /api/v1/clients/{client_id}/enregistrements/{id}: Supprime un enregistrement (le fichier) ; l'appel reste au journal et à la facturation. Admin du client seulement.
Répertoire commun du client : contacts partagés par ses postes
GET /api/v1/clients/{client_id}/repertoire: Répertoire commun du client, par nom.POST /api/v1/clients/{client_id}/repertoire: Ajoute un contact au répertoire commun.GET /api/v1/clients/{client_id}/repertoire-ouvert: Le répertoire commun du client est-il ouvert à ses collaborateurs ?PUT /api/v1/clients/{client_id}/repertoire-ouvert: Ouvre ou ferme le répertoire commun aux collaborateurs du client.PUT /api/v1/clients/{client_id}/repertoire/{id}: Modifie un contact du répertoire commun.DELETE /api/v1/clients/{client_id}/repertoire/{id}: Retire un contact du répertoire commun.
Installation des téléphones : liens d'un poste, lien par e-mail (D35)
POST /api/v1/clients/{client_id}/appareils/{id}/identifiants: Révèle les identifiants HTTP de l'appareil, pour le configurer à la main (comme D114) : à qui peut installer les téléphones du client, jamais par l'assistant ni le MCP ; chaque révélation est au journal d'audit, sans le mot de passe. `POST` et `no-store`.POST /api/v1/clients/{client_id}/appareils/{id}/identifiants/renouveler: Renouvelle le mot de passe HTTP de l'appareil (après la perte du téléphone, par exemple) : l'appareil ne lit plus sa configuration tant qu'on ne lui a pas donné le nouveau.GET /api/v1/clients/{client_id}/postes/{poste}/informations-sip: Informations SIP du poste, pour le configurer à la main (identifiant, serveur et domaine, proxy sortant au besoin, ports) ; le mot de passe se demande avec `revelerMotDePasseSip`.POST /api/v1/clients/{client_id}/postes/{poste}/informations-sip/mot-de-passe: Révèle le mot de passe SIP du poste (D114), pour configurer un téléphone à la main : à qui peut installer le poste, en personne ou par une clé d'API, jamais par l'assistant ni le MCP. Chaque révélation est au journal d'audit (sans le mot de passe). `POST` et `Cache-Control: no-store` pour qu'aucun cache ni préchargement ne le garde.POST /api/v1/clients/{client_id}/postes/{poste}/installation: Envoie par e-mail le lien de la page d'installation du téléphone (valable sept jours), par le serveur SMTP de l'opérateur. La page choisit l'application selon l'appareil.GET /api/v1/clients/{client_id}/postes/{poste}/mobile/acces: Applications mobiles maison activées sur ce poste (D117), sans leurs jetons.DELETE /api/v1/clients/{client_id}/postes/{poste}/mobile/acces/{id}: Révoque une application mobile maison activée sur ce poste (D117) : son jeton d'appareil cesse de valoir et son inscription push est oubliée.POST /api/v1/clients/{client_id}/postes/{poste}/mobile/installation: QR code d'installation de l'application mobile maison sur ce poste (D117) : un lien signé, valable un jour, que l'application échange une seule fois contre un jeton d'appareil au nom du titulaire du poste. À qui peut installer le poste (`poste.provisionner`).GET /api/v1/clients/{client_id}/postes/{poste}/mobiles: Applications mobiles inscrites sur un poste (sans leur jeton push) : à qui peut installer le poste (permission `poste.provisionner`).DELETE /api/v1/clients/{client_id}/postes/{poste}/mobiles/{id}: Retire une application mobile d'un poste (téléphone perdu, départ du collaborateur) : elle n'est plus réveillée.POST /api/v1/clients/{client_id}/postes/{poste}/mot-de-passe-sip: Renouvelle le mot de passe SIP du poste (D41), par exemple après la perte d'un téléphone : les téléphones installés ne s'inscrivent plus, et tous les liens d'installation déjà émis sont révoqués (leur signature dépend du mot de passe). Réinstaller ensuite les téléphones du poste avec un lien neuf. Le mot de passe n'est jamais renvoyé.POST /api/v1/clients/{client_id}/postes/{poste}/provisionnement: Liens d'installation d'un téléphone mobile sur ce poste. Ils portent le mot de passe SIP : à ne montrer qu'à son titulaire.POST /api/v1/mobile/activation: Activation de l'application mobile maison (D117), sans session : le jeton du QR code, valide et jamais servi, contre un jeton d'appareil au nom du titulaire du poste. La configuration SIP se lit ensuite avec ce jeton (`GET /moi/telephone`).GET /api/v1/provision/acrobits: Configuration d'Acrobits (Account XML), relue chaque jour par l'application. Ouvert dans un navigateur (QR code scanné à l'appareil photo), redirige vers l'application (`provlinks:`).GET /api/v1/provision/acrobits-contacts: Contacts du téléphone (format JSON d'Acrobits) : les autres postes du client et son répertoire commun.GET /api/v1/provision/cloudsoftphone: Provisionnement initial de l'application mobile de l'opérateur (Cloud Softphone), à régler chez Acrobits : `…/api/v1/provision/cloudsoftphone?p=%password%`. Refus : le message que l'application affiche.POST /api/v1/provision/installation: Page d'installation (lien envoyé par e-mail, sans session) : les liens d'installation du poste, renouvelés. POST : le jeton reste hors des journaux d'accès.GET /api/v1/provision/materiel/{dossier}/{fichier}: Fichier d'un téléphone de bureau rangé sous sa MAC (`{mac}/annuaire.xml`).GET /api/v1/provision/materiel/{fichier}: Fichier de configuration d'un téléphone de bureau (`{mac}.cfg`, `y000000000000.cfg`, `cfg{mac}.xml`…), composé à la demande d'après son profil. Authentification HTTP Basic : la MAC de l'appareil et son mot de passe (`revelerIdentifiantsAppareil`).
Téléphones de bureau : profils de matériel de l'opérateur, appareils des clients (D115)
GET /api/v1/clients/{client_id}/appareils: Téléphones de bureau du client ; avec `poste`, ceux qui portent ce poste (ouvert à son titulaire).POST /api/v1/clients/{client_id}/appareils: Ajoute un téléphone de bureau (ou une base DECT) à un client, avec ses comptes. Une MAC est unique sur l'instance : celle d'un autre client est refusée (on grefferait un compte sur le téléphone d'un tiers).DELETE /api/v1/clients/{client_id}/appareils/{id}: Retire un appareil et tous ses comptes (pour une base DECT partagée, tous ses combinés).PATCH /api/v1/clients/{client_id}/appareils/{id}: Modifie un appareil : nom, numéro de série, modèle (du même profil), touches, paramètres supplémentaires (opérateur et revendeur seulement).POST /api/v1/clients/{client_id}/appareils/{id}/lignes: Pose un compte de plus sur un appareil (un combiné de plus sur une base DECT partagée).DELETE /api/v1/clients/{client_id}/appareils/{id}/lignes/{rang}: Retire un seul compte d'un appareil : les autres (combinés d'une même base) restent.POST /api/v1/clients/{client_id}/appareils/{id}/redemarrer: Demande au téléphone de redémarrer (NOTIFY de redémarrage du profil) : opérateur, revendeur, admin du client ; pas le titulaire.GET /api/v1/clients/{client_id}/appareils/{id}/requetes: Dernières demandes reçues de l'appareil par le service des fichiers (diagnostic : fichier, réponse, adresse, agent).POST /api/v1/clients/{client_id}/appareils/{id}/resynchroniser: Demande au téléphone de relire sa configuration (NOTIFY de resynchronisation du profil). Le titulaire d'un poste qu'il porte peut le demander.POST /api/v1/clients/{client_id}/appareils/{id}/rps: Déclare (ou déclare de nouveau, après un échec) un appareil au RPS : un appareil d'un profil Yealink, avec son numéro de série.GET /api/v1/clients/{client_id}/materiel/modeles: Modèles qu'on peut ajouter aux postes du client, par profil (livrés, puis copies de l'opérateur).GET /api/v1/clients/{client_id}/materiel/parametres: Paramètres supplémentaires des téléphones du client, empilés entre ceux du profil et ceux de l'appareil.PUT /api/v1/clients/{client_id}/materiel/parametres: Remplace les paramètres supplémentaires du client (opérateur et revendeur seulement).POST /api/v1/materiel/apercu: Fichiers qu'un profil produit pour un appareil fictif du modèle choisi (données fictives, mots de passe masqués) ; un gabarit en erreur donne son message et sa position.GET /api/v1/materiel/profils: Profils de matériel : ceux que Kanadr livre et les copies de l'opérateur.POST /api/v1/materiel/profils: Copie un profil (livré ou déjà copié) pour le modifier : la copie garde son profil livré d'origine et sa version.GET /api/v1/materiel/profils/{reference}: Un profil et son contenu (gabarits compris).PUT /api/v1/materiel/profils/{reference}: Enregistre une nouvelle version d'une copie (les profils livrés ne se modifient pas : on les copie). Gabarits compilés et paramètres vérifiés avant d'écrire.DELETE /api/v1/materiel/profils/{reference}: Supprime une copie qu'aucun appareil n'utilise.GET /api/v1/materiel/profils/{reference}/differences: Différences entre une copie et la version livrée actuelle de son profil d'origine, gabarit par gabarit.GET /api/v1/materiel/profils/{reference}/versions: Historique d'une copie, de la plus récente à la plus ancienne.POST /api/v1/materiel/profils/{reference}/versions/{version}/restaurer: Restaure une version de l'historique : elle devient la version suivante.GET /api/v1/materiel/rps: Clés RPS de l'opérateur, sans le secret.PUT /api/v1/materiel/rps: Enregistre les clés RPS de l'opérateur (YMCS › Integration › API) : le secret est chiffré et jamais renvoyé ; absent, celui enregistré est gardé.DELETE /api/v1/materiel/rps: Retire les clés RPS (et leur secret).POST /api/v1/materiel/rps/essai: Essaie les clés : jeton YMCS, puis le serveur RPS nommé.
Diagnostic (D5) : trace d'un appel, appels en cours, actions tracées
GET /api/v1/clients/{client_id}/appels/{id}/trace: Trace d'un appel du journal (diagnostic) : chemin dans le dialplan, applications, fin.GET /api/v1/clients/{client_id}/capture: Capture en direct des journaux et de la trace SIP d'un client, en `text/event-stream` : événements `ligne` (JSON : nature `sip` ou `journal`, niveau, texte), puis `fin`. Cinq minutes au plus ; fermer la connexion arrête la capture. Journalisée.POST /api/v1/clients/{client_id}/capture/pcap: Fichier pcap (Wireshark) des messages SIP d'une capture : en-têtes IP, UDP et TCP reconstruits autour de chaque message. Rien n'est conservé sur le serveur.POST /api/v1/clients/{client_id}/parcours/rejouer: Rejoue la publication du parcours d'un client : sa dernière version est réécrite dans le moteur de téléphonie, sans nouvelle version ; tracé.POST /api/v1/clients/{client_id}/trunk/reenregistrer: Force le réenregistrement du trunk d'un client auprès de son fournisseur (`killgw` puis `rescan`) ; tracé.GET /api/v1/organisations/{id}/appels-en-cours: Appels en cours chez les clients de l'organisation (diagnostic).DELETE /api/v1/organisations/{id}/appels-en-cours/{uuid}: Coupe un appel en cours (une jambe) d'un client de l'organisation ; tracé.GET /api/v1/organisations/{id}/audit: Journal d'audit d'une organisation et de sa descendance.POST /api/v1/organisations/{id}/diagnostic/recharger: Recharge la configuration du moteur de téléphonie : caches vidés, configuration, dialplan et ACL relus. Pour l'opérateur (toute l'instance) ; tracé.POST /api/v1/organisations/{id}/diagnostic/redemarrer: Redémarre le moteur de téléphonie, après les appels en cours ou tout de suite. Toute l'instance : réservé à l'admin de l'opérateur ; tracé.GET /api/v1/organisations/{id}/machine: Supervision de la machine : processeur, mémoire, charge et disques, minute par minute.GET /api/v1/organisations/{id}/sante: Santé de l'instance : moteur de téléphonie, base, CDR, trunks et webhooks des clients de l'organisation.
Journal d'appels d'un client : appels valorisés, masquage des numéros (D20, D60)
GET /api/v1/clients/{client_id}/appels: Journal d'appels du client.GET /api/v1/clients/{client_id}/appels.csv: Export CSV des appels du client, du plus ancien au plus récent.GET /api/v1/clients/{client_id}/appels/statistiques: Statistiques des appels reçus : jour par jour par issue, et carte de la semaine heure par heure.GET /api/v1/clients/{client_id}/appels/synthese: Chiffres du journal d'appels sur une période (tous les appels, pas une page).GET /api/v1/clients/{client_id}/budget: Budget mensuel d'un client : montant, consommation du mois au prix de vente au client et restriction en cours (D116).PUT /api/v1/clients/{client_id}/budget: Règle le budget mensuel d'un client : montant (absent : pas de budget) et blocage au seuil. Repart d'une feuille blanche pour le mois : une levée manuelle est oubliée, et le budget est aussitôt réévalué (un budget abaissé sous la consommation restreint, s'il bloque).POST /api/v1/clients/{client_id}/budget/levee: Lève la restriction posée par le budget jusqu'à la fin du mois (admin du client, opérateur, revendeur du client). Le plafond anti-piratage (D106) n'est pas touché.GET /api/v1/clients/{client_id}/journal: Réglage du journal du client.PUT /api/v1/clients/{client_id}/journal: Règle le journal du client : masquage des numéros externes (D60).GET /api/v1/organisations/{id}/appels.csv: Export CSV des appels de tous les clients d'un opérateur ou d'un revendeur (et de ses revendeurs), du plus ancien au plus récent : la base de la facturation (D13).GET /api/v1/organisations/{id}/simultanes: Pics d'appels simultanés heure par heure (opérateur, revendeur ou client) : le plus grand nombre d'appels en cours au même instant, d'après le début et la fin des CDR.GET /api/v1/organisations/{id}/statistiques: Statistiques des appels du parc : volume jour par jour, qualité des sortants par fournisseur.GET /api/v1/organisations/{id}/tableau: Tableau de bord d'une organisation (opérateur, revendeur ou client) sur une période : appels et montants par tranche, comparaison, destinations, clients qui consomment le plus.
Grilles tarifaires : achat, vente au revendeur, vente au client ; attribution (D13, D59)
GET /api/v1/clients/{client_id}/forfaits: Forfaits indicatifs d'un client (D120) : celui de sa grille et le sien, vente au revendeur et vente au client. Le client lui-même ne les lit pas.PUT /api/v1/clients/{client_id}/forfaits/{niveau}: Règle le forfait indicatif d'un client à un niveau de vente, à la place de celui de sa grille (D120) ; sans forfait : celui de la grille reprend. Vente au client : l'opérateur ou le revendeur du client ; vente au revendeur : l'opérateur seul. Au journal d'audit.POST /api/v1/clients/{client_id}/revalorisation: Recalcule les prix des appels sortants du client sur la période, d'après les grilles en vigueur le jour de chaque appel : aperçu de l'écart, puis application.GET /api/v1/clients/{client_id}/tarifs: Tarifs du client : sa grille de vente (attribuée, sinon celle par défaut de son revendeur ou de l'opérateur), en lecture seule.GET /api/v1/grilles/{id}: Une grille et ses lignes.DELETE /api/v1/grilles/{id}: Supprime une grille ; les CDR déjà valorisés gardent leurs montants (D13).PUT /api/v1/grilles/{id}/defaut: Fait de la grille celle par défaut de son propriétaire, pour sa nature.PUT /api/v1/grilles/{id}/forfait: Règle le forfait indicatif par défaut d'une grille de vente (D120) : par utilisateur ou global, pour la marge des clients qui n'ont pas le leur ; sans forfait : aucun.GET /api/v1/organisations/{id}/consommation: Consommation des clients d'une organisation (opérateur ou revendeur) sur un mois.GET /api/v1/organisations/{id}/grille: Grille attribuée à un client ou à un revendeur ; `null` : celle par défaut.PUT /api/v1/organisations/{id}/grille: Attribue une grille de vente à un client (vente au client) ou à un revendeur (vente au revendeur) ; sans grille : celle par défaut reprend. Il faut gérer les grilles de l'organisation et du propriétaire de la grille : un revendeur ne s'attribue pas une grille de l'opérateur.GET /api/v1/organisations/{id}/grilles: Grilles de l'organisation (opérateur ou revendeur).POST /api/v1/organisations/{id}/grilles: Crée une grille, depuis un CSV (`prefixe;destination;prix_minute;frais;palier`) ou depuis une grille existante majorée d'une marge.
Boîtes vocales des postes : réglages, annonce d'accueil, messages (D37, D56, D57)
GET /api/v1/clients/{client_id}/boites: Boîtes vocales des postes du client.GET /api/v1/clients/{client_id}/boites/{poste}: Une boîte vocale.PUT /api/v1/clients/{client_id}/boites/{poste}: Règle une boîte vocale.POST /api/v1/clients/{client_id}/boites/{poste}: Crée la boîte vocale d'un poste qui n'en a pas.GET /api/v1/clients/{client_id}/boites/{poste}/annonce: Écoute de l'annonce d'accueil de la boîte.PUT /api/v1/clients/{client_id}/boites/{poste}/annonce: Dépose l'annonce d'accueil de la boîte (D56) : le fichier (WAV, MP3, AAC/M4A, Ogg Vorbis, FLAC ; 20 Mo, 10 minutes au plus) est converti en WAV mono 16 bits 8 kHz. Un texte lu par une voix passe par `POST /synthese`, puis ce dépôt.DELETE /api/v1/clients/{client_id}/boites/{poste}/annonce: Retire l'annonce d'accueil : l'annonce par défaut reprend.GET /api/v1/clients/{client_id}/boites/{poste}/messages: Messages de la boîte, du plus récent au plus ancien.GET /api/v1/clients/{client_id}/boites/{poste}/messages/{message}: Écoute d'un message : le fichier tel que déposé.PUT /api/v1/clients/{client_id}/boites/{poste}/messages/{message}: Marque un message lu ou nouveau ; le voyant des téléphones suit.DELETE /api/v1/clients/{client_id}/boites/{poste}/messages/{message}: Supprime un message (base et fichier) ; le voyant des téléphones suit.
assistant
GET /api/v1/assistant: L'assistant pour le compte connecté : disponible, budget atteint.POST /api/v1/assistant: Converse avec l'assistant : envoie la conversation (et la réponse à une écriture en attente), reçoit la conversation à jour. Les outils de lecture s'exécutent d'eux-mêmes ; une écriture s'arrête en attente de confirmation.GET /api/v1/organisations/{id}/assistant: Réglage de l'assistant, sans la clé.PUT /api/v1/organisations/{id}/assistant: Règle l'assistant de configuration : clé Claude de l'opérateur, modèle, budgets, tarif.DELETE /api/v1/organisations/{id}/assistant: Retire l'assistant : plus personne ne peut l'utiliser ; la clé est effacée.
reglages
GET /api/v1/clients/{client_id}/sso: Choix du client pour la connexion par le portail de l'opérateur.PUT /api/v1/clients/{client_id}/sso: Règle le choix du client : créer ou non le compte d'une adresse inconnue à sa première connexion par le portail de l'opérateur.GET /api/v1/fuseaux: Fuseaux proposés (noms IANA, triés).GET /api/v1/organisations/{id}/acrobits: Le Cloud ID de l'application mobile de l'opérateur.PUT /api/v1/organisations/{id}/acrobits: Règle le Cloud ID de l'application mobile de l'opérateur : les liens CSC le portent. Le provisionnement initial se règle chez Acrobits (`…/api/v1/provision/cloudsoftphone?p=%password%`).DELETE /api/v1/organisations/{id}/acrobits: Retire le Cloud ID : plus de lien CSC (Acrobits Softphone reste possible).GET /api/v1/organisations/{id}/alertes: Adresses qui reçoivent les alertes d'une organisation.PUT /api/v1/organisations/{id}/alertes: Règle les adresses d'alerte (dix au plus).GET /api/v1/organisations/{id}/assistance: État de l'accès de l'assistance de l'éditeur.PUT /api/v1/organisations/{id}/assistance: Ouvre l'accès de l'assistance pour une durée limitée (7 jours au plus). Tracé.DELETE /api/v1/organisations/{id}/assistance: Ferme l'accès de l'assistance, aussitôt. Tracé.GET /api/v1/organisations/{id}/devise: Devise de l'instance, lue depuis n'importe quelle organisation dont on lit les réglages.PUT /api/v1/organisations/{id}/devise: Règle la devise de l'instance (opérateur seulement). Sans conversion : refusé dès qu'une grille tarifaire existe ou qu'un appel a été valorisé, sauf pour garder la même devise.GET /api/v1/organisations/{id}/fuseau: Fuseau d'une organisation.PUT /api/v1/organisations/{id}/fuseau: Règle le fuseau d'une organisation (opérateur, revendeur ou client). Celui de l'opérateur ou d'un revendeur vaut pour les clients créés ensuite. Les horaires publiés d'un client passent aussitôt à son nouveau fuseau.GET /api/v1/organisations/{id}/langue: Langue d'une organisation.PUT /api/v1/organisations/{id}/langue: Règle la langue des e-mails d'une organisation (opérateur, revendeur ou client). Celle de l'opérateur ou d'un revendeur vaut pour ses comptes et pour les clients créés ensuite.GET /api/v1/organisations/{id}/licence: Licence de l'instance : identité, clé publique, utilisateurs et derniers relevés.PUT /api/v1/organisations/{id}/licence/fichier: Charge la licence remise par l'éditeur (mode manuel, sans Hub). Elle doit être signée par l'éditeur et délivrée à cette instance ; une licence plus courte que celle en place est ignorée.GET /api/v1/organisations/{id}/licence/releves/{jour}: Relevé signé d'un jour, à transmettre à l'éditeur (relevé manuel).PUT /api/v1/organisations/{id}/marque: Règle le nom et les couleurs de la marque ; une valeur absente revient à celle par défaut. L'accent doit laisser lisible le texte blanc des boutons (contraste de 4,5 au moins), le menu un texte clair ou foncé (4,5), les textes le fond des pages (7).PUT /api/v1/organisations/{id}/marque/icone: Dépose l'icône (favicon, application installée) : PNG carré de 192 pixels de côté au moins et de 256 Kio au plus. Le logo n'est pas repris : souvent large, il serait illisible en 16 pixels.DELETE /api/v1/organisations/{id}/marque/icone: Retire l'icône déposée : l'icône générée (initiale sur l'accent) revient.PUT /api/v1/organisations/{id}/marque/logo: Dépose le logo : PNG, JPEG ou WebP de 256 Kio au plus. Le portail l'affiche à 28 pixels de haut (56 en haute densité) : un logo carré ou large et sobre rend le mieux.DELETE /api/v1/organisations/{id}/marque/logo: Retire le logo.GET /api/v1/organisations/{id}/pays: Pays d'une organisation.PUT /api/v1/organisations/{id}/pays: Règle le pays d'une organisation (opérateur, revendeur ou client). Celui de l'opérateur ou d'un revendeur vaut pour les clients créés ensuite. Pour un client, ses routes sortantes et son parcours publié passent aussitôt au plan de numérotation du nouveau pays ; refusé si un poste ou un module porte l'un de ses numéros d'urgence, si une grille horaire publiée ferme un jour férié absent du nouveau pays, ou si des renvois ou des numéros externes du parcours, composés dans l'ancien pays, changeraient de sens.GET /api/v1/organisations/{id}/plafond: Seuils par défaut de l'instance.PUT /api/v1/organisations/{id}/plafond: Règle les seuils par défaut de l'instance.GET /api/v1/organisations/{id}/retention: Rétentions d'une organisation : réglées et appliquées.PUT /api/v1/organisations/{id}/retention: Règle les rétentions d'une organisation. Bornes : enregistrements de 1 à 183 jours (D63), messages de 1 à 3 650 jours, CDR de 365 à 3 650 jours (CPCE L34-1) ; `null` : le niveau au-dessus.GET /api/v1/organisations/{id}/smtp: Le serveur SMTP de l'opérateur, sans son mot de passe.PUT /api/v1/organisations/{id}/smtp: Règle le serveur SMTP de l'opérateur (remplace le précédent).DELETE /api/v1/organisations/{id}/smtp: Retire le serveur SMTP : plus aucun e-mail ne part.POST /api/v1/organisations/{id}/smtp/essai: Envoie un e-mail d'essai par le serveur réglé. L'erreur du serveur est rendue telle quelle pour le diagnostic (authentification refusée, TLS, hôte injoignable).GET /api/v1/organisations/{id}/sso/jeton: Connexion par jeton du portail de l'opérateur : état de la clé.POST /api/v1/organisations/{id}/sso/jeton: Crée (ou remplace) la clé de connexion par jeton ; elle est rendue une fois. L'ancienne ne vaut plus rien.DELETE /api/v1/organisations/{id}/sso/jeton: Ferme la connexion par jeton : la clé est effacée.GET /api/v1/organisations/{id}/sso/oidc: Annuaire réglé sur une organisation.PUT /api/v1/organisations/{id}/sso/oidc: Règle l'annuaire d'une organisation. L'émetteur est vérifié (document de découverte lu) avant l'enregistrement.DELETE /api/v1/organisations/{id}/sso/oidc: Retire l'annuaire d'une organisation et son secret.PUT /api/v1/organisations/{id}/suffixe-domaine: Règle le suffixe des domaines clients de l'instance (D108). Les clients existants gardent leur domaine.GET /api/v1/organisations/{id}/synthese: La voix de synthèse des annonces réglée par l'opérateur, sans la clé.PUT /api/v1/organisations/{id}/synthese: Règle la voix de synthèse des annonces : moteur, clé Google (gardée, remplacée ou effacée), voix française et anglaise.POST /api/v1/organisations/{id}/synthese/essai: Fait lire une courte phrase avec le réglage enregistré et renvoie le WAV. Sans secours : l'erreur de Google est rendue avec son détail pour le diagnostic (clé refusée, restriction d'IP, API non activée).GET /api/v1/organisations/{id}/transcription: Le service de transcription de l'opérateur, sans sa clé.PUT /api/v1/organisations/{id}/transcription: Règle le service de transcription de l'opérateur (remplace le précédent).DELETE /api/v1/organisations/{id}/transcription: Retire le service de transcription : plus rien n'est transcrit.POST /api/v1/organisations/{id}/transcription/essai: Fait transcrire une seconde de silence par le service réglé. L'erreur du service est rendue telle quelle pour le diagnostic (clé refusée, modèle inconnu, hôte injoignable).GET /api/v1/pays: Pays pris en charge, avec leur plan de numérotation.
compte
GET /api/v1/moi/accueil/{espace}: Disposition de l'accueil du compte connecté, dans un espace.PUT /api/v1/moi/accueil/{espace}: Règle la disposition de l'accueil du compte connecté ; `instances` absent : retour à la disposition par défaut. Tracé.PUT /api/v1/moi/langue: Règle la langue du compte connecté (portail, e-mails qui lui sont adressés) ; absente, celle de son organisation. Tracé.