API Beschreibung

URL

Die Stamm-URL der API wird nach folgendem Schema aufgebaut.

https://<appplatform>/<domain>/<instance>/api

Als Beispiel:

https://apps.company.com/company.com/myinstance1/api

Autorisierung

Ein Header wird in HTTP-Anfragen verwendet, um Authentifizierungsdaten zu übermitteln. In unserem Fall wird zu diesem Zweck ein Bearer-Token verwendet. Der Header muss in jeder an die geschützten API-Endpunkte gesendeten Anfrage enthalten sein. Das Bearer-Token kann über das Einstellungsformular der Admin-App geändert werden.

Endpunkte

/groups GET

Gibt eine Liste der aktuellen Gruppen und ihrer Mitglieder zurück.

curl 'https://apps.example.com/example.com/grpapi1/api/groups' \
  -H 'Authorization: Bearer 98ms098sm09s8ms098sm09s8m' \
  -X 'GET'
{
  "Gruppe1": {
    "name": "Gruppe1",
    "pbx": "pbx-main",
    "members": {
      "7a33480adef46101472e009033400109": {
        "guid": "7a33480adef46101472e009033400109",
        ...
      },
      "7a33480asef46101472e009033400109": {
        "guid": "7a33480asef46101472e009033400109",
        ...
      }
    }
  },
  "Gruppe2": {
    "name": "Gruppe2",
    "pbx": "pbx-main",
    "members": {
      ...
    }
  }, ...
}

/groups POST

Hinzufügen, Ändern oder Löschen von Gruppenmitgliedschaften von Pbxobjects mit einer HTTP POST Anfrage. Die POST Anfrage muss eine gültige JSON formatierte Nachricht enthalten. Die Schlüssel, die in jeder Anfrage vorhanden sein müssen, sind die folgenden:

Schlüssel

Wert

cn

der CN des zu ändernden pbx-Objekts

grp

der Namen der zu ändernden Gruppe

action

0=löschen, 1=hinzufügen oder ändern

state

(optional) 0=static*, 1=dyn-in, 2=dyn-out

active

(optional) 0=nicht aktiv*, 1=activ

Als Beispiel ein Curl-Request zum Hinzufügen des Users testcaller5 zur neuen Gruppe TestGroup1 als dyn-in als aktiv.

curl 'https://apps.example.com/example.com/grpapi1/api/groups' \
  -H 'Authorization: Bearer 98ms098sm09s8ms098sm09s8m' \
  -X 'POST' \
  -d '{
      "cn": "testcaller5",
      "grp": "TestGroup1",
      "action": 1,
      "state": 1,
      "active": 1
  }'

Um einen Benutzer aus einer Gruppe zu entfernen, würde die Nachricht den Inhalt action: 0:

curl 'https://apps.example.com/example.com/grpapi1/api/groups' \
  -H 'Authorization: Bearer 98ms098sm09s8ms098sm09s8m' \
  -X 'POST' \
  -d '{
      "cn": "testcaller5",
      "grp": "TestGroup1",
      "action": 0
  }'

/pbx POST

Bietet generischen Zugriff auf die PbxAdminApi, wie in der innovaphone SDK docs/ PbxAdminApi dokumentiert. .

Beispiel für das Abrufen eines bestimmten Benutzerobjekts von der Vermittlungsstelle:

curl 'https://apps.example.com/example.com/grpapi1/api/pbx' \
    -H 'Authorization: Bearer 98ms098sm09s8ms098sm09s8m' \
    -X 'POST' \
    -d '{
        "mt": "GetObject",
        "api": "PbxAdminApi",
        "cn": "testcaller5"
    }'

Die Antwort würde das Benutzerobjekt als JSON-formatierte Daten enthalten.

{
  "api": "PbxAdminApi",
  "src": "callback0.6236058413386716",
  "mt": "GetObjectResult",
  "guid": "fa573952f5f461014152009033400109",
  "cn": "testcaller5",
  "dn": "testcaller5__",
  "h323": "testcaller5",
  "e164": "255",
  "node": "root",
  "loc": "pbx-main",
  "ext-in": false,
  "config": "",
  "local": false,
  "trace": false,
  "hide": false,
  "critical": false,
  "no-dev": false,
  "login-c": 0,
  "login-t": 0,
  "filter": "normal",
  "phone": {},
  "devices": [],
  "grp": [
    {
      "name": "Support"
    }
  ],
  "presence": [],
  "wakeups": [],
  "gws": [],
  "profiles": []
}

/objects GET

Gibt eine Liste der aus der pbx replizierten Benutzerobjekte zurück, geordnet nach GUID.

curl 'https://apps.example.com/example.com/grpapi1/api/objects' \
    -H 'Authorization: Bearer 98ms098sm09s8ms098sm09s8m' \
    -X 'GET'
{
  "09eaa7a67b204d32afc7ba706c9ccdc8": {
    "guid": "09eaa7a67b204d32afc7ba706c9ccdc8",
    "h323": "patient21",
    "cn": "Patient 21_",
    "dn": "21, Patient",
    "node": "master",
    "loc": "pbx-main",
    "grps": [
      {
        "name": "Patienten"
      }
    ],
    "pseudo": "user"
  },
  "0c368691dba74ca0bbb2af3de80cd261": {
    "guid": "0c368691dba74ca0bbb2af3de80cd261",
    "h323": "patient39",
    "cn": "Patient 39",
    "dn": "39, Patient",
    "node": "master",
    "loc": "pbx-main",
    "grps": [
      {
        "name": "Patienten"
      }
    ],
    "pseudo": "user"
  },
  ...

/set POST

Überschreibt die Gruppeneinstellungen eines Objekts, unabhängig von seinen aktuellen Mitgliedschaften.

curl 'https://apps.example.com/example.com/grpapi1/api/set' \
  -H 'Authorization: Bearer 98ms098sm09s8ms098sm09s8m' \
  -X 'POST' \
  -d '{
      "cn": "Patient 39",
      "grp": [
        {
          "name": "Support"
        },
        {
          "name": "TestGroup1",
          "mode": "active",
          "dyn": "in"
        }
      ]
    }'
{
  "api": "PbxAdminApi",
  "src": "callback0.7737017036309024",
  "mt": "GetObjectResult",
  "guid": "0c368691dba74ca0bbb2af3de80cd261",
  "cn": "Patient 39",
  "dn": "39, Patient",
  "h323": "patient39",
  "e164": "442",
  "node": "master",
  "loc": "pbx-main",
  "ext-in": false,
  "config": "Config User",
  "apps-my": "users",
  "local": false,
  "trace": false,
  "hide": false,
  "critical": false,
  "no-dev": true,
  "login-c": 0,
  "login-t": 0,
  "filter": "_International",
  "phone": {},
  "grp": [
    {
      "name": "Support"
    },
    {
      "name": "TestGroup1",
      "mode": "active",
      "dyn": "in"
    }
  ],
  "presence": [],
  "wakeups": [],
  "gws": [],
  "profiles": []
}