The PbxAdminApi protocol is available on AppWebsocket connections to innovaphone PBX objects, if the object is enabled for the PbxAdminApi. It allows the App to perform all kind of administration and configuration tasks.
{
"api": "PbxAdminApi",
"src": string,
"mt": string,
}
In general operatios are performed by sending a message with a message type <name> to the PBX. The result is retured with a message with message type <name>Result. If the operation turns on monitoring of some kind the updates are sent with messages with message type <name>Info.
Operations{
"api": "PbxAdminApi",
"mt": "MonitorAdminObject"
}
Start monitoring of the admin object. The admin object is used to store the pwd key pair used to encrypt all passwords inside PBX objects
{
"api": "PbxAdminApi",
"mt": "MonitorAdminObjectResult"
}
Message sent back to confirm start of the monitoring
{
"api": "PbxAdminApi",
"mt": "MonitorAdminObjectInfo"
"pwd": string
"key": string
}
Message sent back whenever the admin object changes
{
"api": "PbxAdminApi",
"mt": "MonitorConfig",
"stop": boolean
}
Start/stop monitoring of the local PBX config.
{
"api": "PbxAdminApi",
"mt": "MonitorConfigResult"
}
Message sent back to confirm start of the monitoring
{
"api": "PbxAdminApi",
"mt": "MonitorConfigInfo"
"domain": string
"pbx": string
"dns": string
"ip4": string
}
Message whenever the local config changes
{
"api": "PbxAdminApi",
"mt": "UpdateObject",
"guid": string,
"cn": string,
"dn": string,
"h323": string,
"e164": string,
"pwd": string,
"loc": string,
"node": string,
"config": string,
"apps": string,
"filter": string,
"cd-filter": string,
"push": string,
"messages": string,
"hide": boolean,
"cfnr": unsigned,
"colr": bool,
"uclic": bool,
"voicemail": bool,
"fax": bool,
"mobility": bool,
"mypbx": bool,
"video": bool,
"app-sharing": bool,
"reporting": bool,
"devices": [device],
"grp": [group],
"presence": [presence],
"cds": [diversion],
"wakeups": [wakeup],
"pseudo": pseudo,
"phone": phone,
"copyPwd": string
}
Update or create a PBX object. Any property present in the message updates the respective information of the PBX object. Properties not present are left unchanged.
If bool properties are sent as integers (e.g -1), the parameter is deleted, which means the value inherited from a config template is used
{
"api": "PbxAdminApi",
"mt": "UpdateObjectResult"
}
Sent, when the object is updated, which means it is written to the database and the update is in effect in the PBX
{
"api": "PbxAdminApi",
"mt": "GetObject",
"guid": string,
"cn": string
}
Request the configuration data for an object
{
"api": "PbxAdminApi",
"mt": "GetObjectResult",
"guid": string,
"cn": string,
"dn": string,
"h323": string,
"e164": string,
"pwd": string,
"loc": string,
"node": string,
"config": string,
"apps": string,
"filter": string,
"cd-filter": string,
"push": string,
"messages": string,
"hide": boolean,
"no-dev": boolean,
"cfnr": unsigned,
"colr": bool,
"uclic": bool,
"voicemail": bool,
"fax": bool,
"mobility": bool,
"mypbx": bool,
"video": bool,
"app-sharing": bool,
"reporting": bool,
"devices": [device],
"grp": [group],
"presence": [presence],
"cds": [diversion],
"wakeups": [wakeup],
"pseudo": pseudo,
"phone": phone,
"copyPwd": string
}
Update or create a PBX object. Any property present in the message updates the respective information of the PBX object. Properties not present are left unchanged.
{
"api": "PbxAdminApi",
"mt": "GetPbxConfig",
}
Request some of the local PBX config info
{
"api": "PbxAdminApi",
"mt": "GetPbxConfigResult",
"loc": string
}
{
"api": "PbxAdminApi",
"mt": "GetPhoneConfig",
"guid": string,
"cn": string
}
Request the phone config from an object identified by guid, or if not present by cn
{
"api": "PbxAdminApi",
"mt": "GetPhoneConfigResult",
"phone": phone
}
Returns the phone config
{
"api": "PbxAdminApi",
"mt": "GetRegs",
"guid": string,
"cn": string
}
Request the current registrations to an object identified by guid, or if not present by cn
{
"api": "PbxAdminApi",
"mt": "GetRegsResult",
"regs": [reg],
"cn": string
}
Returns an array of objects decribing the registrations
{
"api": "PbxAdminApi",
"mt": "DeleteObject",
"guid": string
}
Request to delete an object identified by guid.
{
"api": "PbxAdminApi",
"mt": "DeleteObjectResult"
}
Returned when the delete request was accepted.
{
"api": "PbxAdminApi",
"mt": "GetAppObjects",
"uri": string,
"pseudo": string
}
Request a list of objects, providing an App, based on URL and type. Only some basic information is returned in the list to keep data volume low even with many objects.
{
"api": "PbxAdminApi",
"mt": "GetAppObjectsResult",
"objects": [app]
}
Returns array of app objects
{
"api": "PbxAdminApi",
"mt": "GetConfigObjects"
}
Request a list of all config templates available in the PBX. Only some basic information is returned in the list to keep data volume low even with many templates.
{
"api": "PbxAdminApi",
"mt": "GetConfigObjectsResult",
"objects": [template]
}
Returns an array of template objects
{
"api": "PbxAdminApi",
"mt": "GetPseudoObjects",
"pseudo": string
}
Requests a list of pseudo objects of a given type. Care must be taken not to use this operation too much, because a scan of all configured pseudo objects is done to find the requested objects. Only some basic information is returned in the list to keep data volume low even with many templates.
{
"api": "PbxAdminApi",
"mt": "GetPseudoObjectsResult",
"objects": [object-id]
}
Returns an array of objects ids for the requested pseudo objects
{
"api": "PbxAdminApi",
"mt": "SearchUsers",
"cn": string,
"includeMatch": boolen
}
Searches for users, based on the cn (Long Name) provided. Returns a list of up to 20 users starting from the position in the list of users identified by cn. Only objects of the type user or executive are returned.
This message can be used to enumerate all user and executive objects in the PBX:
{
"api": "PbxAdminApi",
"mt": "SearchUsersResult",
"user": [user-id]
}
Returns an array obj user ids.
{
"api": "PbxAdminApi",
"mt": "GetAppLogin",
"app": string,
"challenge": string
}
Request the digest, which can be used to login to an App service. The main purpose is to verify that the shared secret of an App object is correct. It can be tested, by sending the returned parameter with AppCheckLogin to the App service. In this case an arbitrary challenge may be used.
{
"api": "PbxAdminApi",
"mt": "GetAppLoginResult",
"app": string,
"digest": string
}
Return the digest for the login.
{
"api": "PbxAdminApi",
"mt": "GetGroup",
"grp": string
}
Request a list of members of a group identified by grp. The list is limited to 64 users
{
"api": "PbxAdminApi",
"mt": "GetGroupResult",
"member": [member]
}
Returns an array of member objects
{
"api": "PbxAdminApi",
"mt": "GetRPs"
}
Request a list of Reverse Proxies configured in the local PBX
{
"api": "PbxAdminApi",
"mt": "GetRPsResult",
"addr": string,
"hw": string,
"dns": string,
"rp": [rp]
}
Returns a list of rp objects together with some more information interesting in this context
{
"api": "PbxAdminApi",
"mt": "GetNodes"
}
Request a list of all nodes and locations
{
"api": "PbxAdminApi",
"mt": "GetNodesResult",
"nodes":[node]
}
Returns an array of objects describing the nodes
{
"api": "PbxAdminApi",
"mt": "GetConfigs"
}
Request a list of configured config templates.
{
"api": "PbxAdminApi",
"mt": "GetConfigsResult",
"configs":[string]
}
Returns an array of names of config templates
{
"api": "PbxAdminApi",
"mt": "GetFilters"
}
Request a list of call filters defined in the local PBX
{
"api": "PbxAdminApi",
"mt": "GetFiltersResult",
"filter": [string]
}
Returns an array of filter names
{
"api": "PbxAdminApi",
"mt": "GetGroups"
}
Request a list of groups defined in the PBX
{
"api": "PbxAdminApi",
"mt": "GetGroupsResult",
"groups":[string]
}
Returns an array of group names
{
"api": "PbxAdminApi",
"mt": "GetBooleans"
}
Request a list of booleans defined in the PBX
{
"api": "PbxAdminApi",
"mt": "GetBooleansResult",
"booleans":[boolean]
}
Returns an array of objects identifying the booleans
{
"api": "PbxAdminApi",
"mt": "GetPush"
}
Request a list of push objects defined in the PBX
{
"api": "PbxAdminApi",
"mt": "GetPushResult",
"push":[push]
}
Returns an array of objects identifying the push objects
{
"api": "PbxAdminApi",
"mt": "GetMessages"
}
Request a list of messages objects defined in the PBX
{
"api": "PbxAdminApi",
"mt": "GetMessagesResult",
"messages":[messages]
}
Returns an array of objects identifying the messages objects
{
"api": "PbxAdminApi",
"mt": "GetStun"
}
Request the local configured STUN parameters, published by this PBX
{
"api": "PbxAdminApi",
"mt": "GetStunResult",
"stun": string,
"turn": string,
"turnUsr": string,
"turnPwd": string,
"stunSlow": boolean
}
Returns the STUN parameter
{
"api": "PbxAdminApi",
"mt": "GetAppLics"
}
Request the available App Licenses
{
"api": "PbxAdminApi",
"mt": "GetAppLicsResult",
"lic": [app-lic]
}
Returns the available App licenses
{
"hw": string,
"text": string,
"app": string,
"admin": bool,
"no-filter": bool,
"tls": bool,
"no-mob": bool,
"trusted": bool
}
{
"name": string,
"mode": string,
"dyn": string
}
{
"c": string,
"a": string,
"n": string
}
{
"type": string,
"bool": string,
"bool-not": string,
"ep": [ { "e164": string, "h323": string } ],
"src" [ { "type": string, "ep": [ { "ext": string, "fwd": string, "e164": string, "h323": string } ] } ]
}
{
"h": unsigned,
"m": unsigned,
"s": unsigned,
"name": string,
"num": string,
"retry": unsigned,
"mult": bool,
"to": unsigned,
"fallback": string,
"bool": string,
"bool-not": bool
}
{
"type": string,
...
}
The XML phone config translated to JSON.
{
"hw": string,
"addr": string
}
{
"title": string,
"app": string,
"url": string,
"connected": bool,
"guid": string,
"sip": string,
"pseudo": string
}
{
"cn": string,
"config": [string]
}
{
"cn": string,
"guid": string
}
{
"cn": string,
"dn": string,
"guid": string,
"h323":string
}
{
"cn": string,
"dn": string,
"guid": string,
"pseudo": string,
"active": bool,
"dyn": string
}
{
"addr": string,
"cert": string,
"cert2": string
}
{
"guid": string,
"name": string,
"on": bool,
"reason": string
}
{
"name": string
}
{
"name": string
}
{
"name": string,
"version": string,
"count": string,
"used": string,
"local": string,
"slaves": string,
"key": string
}
{
"name": string,
"node": string,
"loc": string
}