{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"2c85a207-8282-4a71-aea3-684f0a90f597","name":"Documentation API PBXware Bicom","description":"Cette documentation est conçue pour aider les développeurs à comprendre et à utiliser les APIs sur nos systèmes PBXware, un système de gestion de la téléphonie. Les APIs permettent aux développeurs d'écrire des logiciels tiers qui peuvent interagir avec nos PBXware, ouvrant ainsi la voie à de nombreuses possibilités de personnalisation et d'intégration.\n\n## **\\- Protocole de Communication**\n\nLes APIs de PBXware fonctionnent via le protocole HTTP (Hypertext Transfer Protocol). Elle utilise les méthodes GET et POST seulement pour envoyer et recevoir des données entre les applications tierces et PBXware.\n\n## \\- Authentification\n\nPour garantir la sécurité, les APIs utilisent une clé API unique pour chaque utilisateur ou application tierce. Cette clé est essentielle pour authentifier les requêtes envoyées à PBXware.\n\nPour les requêtes POST et GET l'authentification se fait en \"API Key\" :\n\nle champs \"Key\" aura la mention \"apikey\"\n\nla clé au format \"6vs6gwd6fv6x84...\" sera dans le champ \"Value\".\n\nPar défaut, la clé API n'est pas définie. Cependant, vous pouvez en créer une dans les paramètres d'administration de PBXware.\n\n<img src=\"https://content.pstmn.io/c9325eb7-d97b-4989-8e2a-d783b40cad9c/QVBJa2V5LnBuZw==\" width=\"480\" height=\"366\">\n\nLa clé API doit avoir une taille minimale de 32 caractères aléatoires. Il est également possible de générer une clé aléatoire directement depuis l'interface de PBXware.\n\nSur le PBXware il est possible de mettre des restrictions (ACL) aux fonctionnalités auxquelles les APIs peuvent accéder.\n\nIl est crucial de garder la clé API secrète, car elle donne accès à des fonctionnalités sensibles, telles que la suppression de données, à des tiers.\n\n## \\- Requêtes\n\nLes requêtes vers les APIs de PBXware contiennent plusieurs éléments, dont la clé API et l'action souhaitée. Par exemple, pour récupérer la liste des numéros SDA (Sélection directe à l'Arrivée) ou DID, la requête ressemblerait à ceci :\n\n``` php\nGET /?apikey=my.secret.apikey&action=pbxware.did.list HTTP/1.0\nHost: pbxware.local\nUser-Agent: Mozilla/5.0\n\n ```\n\nGET https://\\[PBXware name\\].bicomsystems.fr/?action=pbxware.did.list&server=2&ext=100&apikey=\\[clé API secrète\\]\n\nDans cet exemple, \"pbxware.did.list\" est l'action demandée, qui récupère la liste des numéros DID à partir de PBXware.\n\nGET = c'est la requête pour récupérer les informations souhaitées.\n\nhttps://\\[PBX name\\].bicomsystems.fr/ = en https on met l'ip ou l'URL du PBX\n\n?action= on commence par dire que l'on va faire une action\n\npbxware. = début de chaque commande avant de spécifier l'action.\n\n.did.list = did pour SDA et list pour avoir la liste des SDA disponible sur ce PBXware.\n\n& = c'est pour ajouter des information nécessaires à votre recherche, comme ici le PBX est un multi-tenant et du coup il faut indiquer le numéro du tenant ou server = 2 car \"le 1 est réservé pour le master\".\n\nOn peut ensuite affiner la recherche en fonction de l'extension ou du trunk etc... Voir les arguments possibles par actions dans la liste ci-dessous.\n\napikey= et enfin on finit par la Key (clé API).\n\nLe sens de l'action et de l'apikey n'est pas immuable, vous pouvez mettre la clé api avant l'action et vice versa.\n\ndonc en résumé on fait une requête sur le server 2 et pour l'extension 100 de la liste des SDA qui lui sont attribués.\n\n## \\- Réponses\n\nLes réponses de l'API de PBXware sont généralement renvoyées au format JSON (JavaScript Object Notation), un format de données léger et facilement lisible. Voici un exemple de réponse JSON :\n\njson :\n\n``` json\n  {\n    \"7\": {\n        \"number\": \"12345\",\n        \"number2\": \"\",\n        \"server\": \"7\",\n        \"trunk\": \"6099\",\n        \"type\": \"Extension\",\n        \"ext\": \"530\",\n        \"status\": \"enabled\"\n           },\n    \"8\": {\n        \"number\": \"12346\",\n        \"number2\": \"\",\n        \"server\": \"7\",\n        \"trunk\": \"6099\",\n        \"type\": \"Extension\",\n        \"ext\": \"100\",\n        \"status\": \"enabled\"\n           }\n       }\n\n ```\n\nCette réponse contient des informations sur les numéros SDA disponibles dans le système PBXware.\n\n## \\- Formats de Réponse\n\nL'API de PBXware prend en charge plusieurs formats de réponse, y compris JSON et PHP (sérialisé).\n\nPour tester l'API, plusieurs outils en ligne de commande sont disponibles, tels que curl ([https://curl.se/](https://curl.se/)), httpie ([https://httpie.io/docs/cli/scripting](https://httpie.io/docs/cli/scripting)) et curlish ([https://pythonhosted.org/curlish/](https://pythonhosted.org/curlish/)). Voici un exemple d'utilisation de httpie pour interroger l'API :\n\n``` php\nhttp -b \"http://[PBXware URL]/?apikey=[Clé API Secrète]&action=pbxware.ext.list\"\n\n ```\n\n## \\- Gestion des Erreurs\n\nEn cas d'erreur, la réponse de l'API contiendra une clé \"error\" indiquant la nature de l'erreur. Toute opération ultérieure doit être interrompue si une erreur est détectée.\n\nvoir une liste exhaustive ici : [https://restfulapi.net/http-status-codes/](https://restfulapi.net/http-status-codes/)\n\nsinon les plus commun sont :\n\n**200 OK; 302 Found; 400 Bad Request; 401 Unauthorized; 403 Forbidden…etc…**\n\n## \\- Actions API\n\nL'argument principal qui contrôle l'API est l'argument \"action\". Il est structuré en trois parties : application.objet.méthode\n\nDans le cas de PBXware, l'application est toujours \"pbxware\".\n\napplication = pbxware (et rien d'autres)\n\n.objet = voir liste exhaustives des objets ci contre\n\n.méthode = voir sous les objets les méthodes possible\n\nargument obligatoire = selon la méthode et le type de PBXware. (ie : &server=2)\n\nEn comprenant ces principes fondamentaux, les développeurs peuvent commencer à créer des applications et des intégrations personnalisées qui tirent pleinement parti des fonctionnalités de PBXware.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"28510742","team":5342518,"collectionId":"2c85a207-8282-4a71-aea3-684f0a90f597","publishedId":"2sA2xfZDv6","public":true,"publicUrl":"https://documenter-api.postman.tech/view/28510742/2sA2xfZDv6","privateUrl":"https://go.postman.co/documentation/28510742-2c85a207-8282-4a71-aea3-684f0a90f597","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"Documentation et test des API Bicom pour PBXware"},{"name":"title","value":""}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2024-03-07T16:26:50.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":"Documentation et test des API Bicom pour PBXware"},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/e5bf1509f5f0498aed2cb7efaa097fc4bfe471771378590c3191ca0e155397dc","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sA2xfZDv6"}