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 operatinos are performed by sending a message with a message type <name> to the PBX. The result is returned 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": "MonitorUnallowed",
"stop": boolean
}
Start/stop monitoring of the local PBX config.
{
"api": "PbxAdminApi",
"mt": "MonitorUnallowedResult"
}
Message sent back to confirm start of the monitoring
{
"api": "PbxAdminApi",
"mt": "MonitorUnallowedAdd",
"user": string,
"srcs": [src]
}
Message whenever a new unallowed subscription is created
{
"api": "PbxAdminApi",
"mt": "MonitorUnallowedDel",
"user": string,
"srcs": [src]
}
Message whenever a new unallowed subscription is removed
{
"mt": "UpdateObject",
"api": "PbxAdminApi",
"src": Source,
"template": "with"/"without",
"copyPwd": string,
"guid": string,
"cn": string,
"dn": string,
"h323": string,
"e164": string,
"node": string,
"loc": string,
"fake": string,
"ext": ?,
"ext-in": ?,
"text": string,
"url": string,
"h323-email": boolean,
"emails": [email],
"config": string,
"apps-my": string,
"gi": string,
"local": ,
"trace": ,
"hide": ,
"critical": ,
"no-dev": ,
"login-c": ,
"login-t": ,
"admin": ,
"admin-node": ,
"admin-pbx": ,
"filter": ,
"cd-filter": ,
"cfnr": ,
"busy-out": ,
"cd-block": ,
"rej-ext": ,
"no-disc": ,
"dnd": ,
"phone-config": ,
"discard-phone-config": ,
"colr": ,
"cfpr": ,
"apps": ,
"messages": ,
"push": ,
"allows": ,
"phone": ,
"uclic": ,
"voicemail": ,
"fax": ,
"mobility": ,
"mypbx": ,
"video": ,
"app-sharing": ,
"reporting": ,
"app-lics": ,
"devices": [device],
"grp": [group],
"presence": [presence],
"cds": [diversion],
"forks": ,
"wakeups": [wakeup],
"gws": [gw],
"profiles": ,
"pseudo": pseudo,
"phone": phone,
}
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
The argument template defines if the information stored shall take the information from the templates into account. "without" means that the information is stored as sent. Default is to take the templates into account.
{
"api": "PbxAdminApi",
"mt": "UpdateObjectResult",
"guid": "1234567890abcdef1234567890abcdef"
}
Sent, when the object is updated, which means it is written to the database and the update is in effect in the PBX. The guid is delivered only if no guid was submitted with the UpdateObject request and a new object is created.
{
"mt": "GetObject",
"api": "PbxAdminApi",
"src": Source,
"guid": string,
"cn": string,
"h323": string,
"properties": [string],
"template": "with"/"without"
}
Request the configuration data for an object
{
"mt": "GetObjectResult",
"api": "PbxAdminApi",
"src": Source,
"guid": string,
"cn": string,
"dn": string,
"h323": string,
"e164": string,
"node": string,
"loc": string,
"fake": string,
"ext": ?,
"ext-in": ?,
"text": string,
"url": string,
"h323-email": boolean,
"emails": [email],
"config": string,
"apps-my": string,
"gi": string,
"local": ,
"trace": ,
"hide": ,
"critical": ,
"no-dev": ,
"login-c": ,
"login-t": ,
"admin": ,
"admin-node": ,
"admin-pbx": ,
"filter": ,
"cd-filter": ,
"cfnr": ,
"busy-out": ,
"cd-block": ,
"rej-ext": ,
"no-disc": ,
"dnd": ,
"phone-config": ,
"discard-phone-config": ,
"colr": ,
"cfpr": ,
"apps": ,
"messages": ,
"push": ,
"allows": ,
"phone": ,
"uclic": ,
"voicemail": ,
"fax": ,
"mobility": ,
"mypbx": ,
"video": ,
"app-sharing": ,
"reporting": ,
"app-lics": ,
"devices": [device],
"grp": [group],
"presence": [presence],
"cds": [diversion],
"forks": ,
"wakeups": [wakeup],
"gws": [gw],
"profiles": ,
"pseudo": pseudo,
"phone": phone,
}
{
"api": "PbxAdminApi",
"mt": "GetNormalizedNumber",
"guid": string,
"cn": string,
"h323": string,
"from-guid": string,
"from-cn": string,
"from-h323": string
}
Get the normalized phone number. guid, cn or h323 must be sent to specify the user. If from-guid, from-cn or from-h323 are also sent, then the relative number will be returned.
{
"api": "PbxAdminApi",
"mt": "GetNormalizedNumberResult",
"number": string
}
{
"api": "PbxAdminApi",
"mt": "GetPbxConfig",
}
Request some of the local PBX config info
{
"api": "PbxAdminApi",
"mt": "GetPbxConfigResult",
"loc": string
}
{
"api": "PbxAdminApi",
"mt": "GetPbxLicenses",
}
Request all local PBX license info
{
"api": "PbxAdminApi",
"mt": "GetPbxLicensesResult",
"lic": [
{
"count": "0",
"local": "3",
"name": "Port",
"slaves": "0",
"used": "3",
"version": "13"
},
{
"count": "0",
"local": "0",
"name": "Standby",
"slaves": "0",
"used": "0",
"version": "13"
}
]
}
{
"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": "GetApps",
"more": string,
"limit": unsigned
}
Request a list of all Apps available in the PBX. Only some basic information is returned in the list to keep data volume low even with many Apps.
Only the number of objects defined with limit is returned. The maximum is 20. If there are more Apps, more is set to the name of the last one in GetAppsResult. The next can sending another GetApps with more set to the returned more value
{
"api": "PbxAdminApi",
"mt": "GetAppsResult",
"more": string,
"objects": [template]
}
Returns an array of Apps
{
"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",
"more": string,
"limit": unsigned
}
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.
Only the number of objects defined with limit is returned. The maximum is 50. If there are more config templates, more is set to the name of the last one in GetConfigObjectsResult. The next can sending another GetConfigObjects with more set to the returned more value
{
"api": "PbxAdminApi",
"mt": "GetConfigObjectsResult",
"more": string,
"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,
"limit":unsigned
}
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:
The property limit limits the results. The maximum and the default is 20.
{
"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": "GetLocation",
"loc": string
}
Request infos for a specific location/PBX. The delivered infos can be used to compose an URI to be used to create a WebSocket connection for the specified PBX. In case no registration at the PBX object for a slave PBX is available, the DNS name and the IP-Address info of the current PBX is delivered.
The URI is composed by the following scheme: [ws/wss]://[dns/addr] [:port]/[module]/APPS/websocket
E.g. wss://slave.example.com/PBX0/APPS/websocket
{
"api": "PbxAdminApi",
"mt": "GetLocationResult",
"loc": string,
"http": unsigned,
"https": unsigned,
"module": string,
"dns": string,
"addr": string
}
{
"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 boolean objects defined in the PBX
{
"api": "PbxAdminApi",
"mt": "GetBooleansResult",
"booleans":[boolean]
}
Returns an array of objects identifying the boolean objects
{
"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
{
"api": "PbxAdminApi",
"mt": "CheckAppLic",
"guid": string,
"cn": string,
"h323": string,
"lic": string
}
Check if a user is licensed for a given App. The message must be sent on an AppWebsocket connection to the PBX where the licence is being used (e.g. in the case of a user on a slave PBX, it should not be sent to the master PBX).
{
"api": "PbxAdminApi",
"mt": "CheckAppLicResult",
"ok": bool
}
Returns the available App licenses
{
"email": string
}
{
"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
}
{
"name": string,
"idle": string,
"ipei": string,
"ac": string
}
{
"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,
"emails":[]
}
{
"cn": string,
"h323": string,
"e164": 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
}