1.1 HTTP and HTTPS............................................................................................................................................................ 1
2.3 Unicode support ...........................................................................................................................................................4
2.3.2 XML Header ..............................................................................................................................................................4
2.4 Common message elements....................................................................................................................................4
6.1 Common structures ...................................................................................................................................................38
Appendix C - Revision Numbers............................................................................................................. 60
C.1 Discovering record removal....................................................................................................................................60
C.2 Dead records ................................................................................................................................................................61
Appendix D - HTTP Keep-alives ............................................................................................................. 62
This document contains the specification of the TANDBERG Codian Remote Management API, by which it is
possible to control several Codian products. This is accomplished via messages sent using the XML-RPC
protocol.
XML-RPC is a simple protocol for remote procedure calling using HTTP as the transport and XML as the
encoding. It is designed to be as simple as possible, whilst allowing complex data structures to be transmitted,
processed and returned. XML-RPC has no platform or software dependence and was chosen over SOAP
because of its simplicity.
The interface is stateless. Currently, there is no mechanism for the Codian device to call back the controlling
application and therefore the controlling application must poll the device for status, as required. A future
enhancement may provide a mechanism for signaling device status changes to the controlling application.
The latest version of the Remote Management API is version 2.5, the following table shows which version of
Codian products support this version.
Codian devices expect to receive HTTP communication over TCP/IP connections to port 80. The HTTP
messages should be “POST”s to the URL “/RPC2”.
HTTPS (a secure, encrypted version of HTTP) is supported on the following products:
• Codian MCU products, software version 2.3 and later
• Codian IP VCR products, software version 2.3 and later
• Codian ISDN GW products, software version 1.4 and later
• Codian IP GW products, software version 2.0 and later
By default, HTTPS is provided on TCP port 443, although Codian devices can be configured to receive HTTP
and HTTPS connections on non-standard TCP port numbers if required.
The Codian devices implements HTTP/1.1 as defined by RFC 2616 [2].
1.2 XML-RPC
For the background and details of XML-RPC, please refer to the specification [1].
In this implementation, all parameters and return values are part of a <struct> and are all explicitly named.
For example, the “device.query” method returns the current time value as a structure member named
‘currentTime’ rather than as a single value of type <dateTime.iso8601>.
In order to manage the device, the controlling application must authenticate itself as a user with relevant
privileges. Accordingly, each message contains a user name and password; see section 2.4.1 for details of the
format. It is worth noting that authentication information is sent using plain text and should only be sent over a
trusted network.
2.2 Message flow
An application can create and manage conferences by sending command messages to the device. For each
command sent (provided the message is correctly formatted according to the XML-RPC spec), the device
responds with a message indicating success or failure. The response message may also contain any data that was
requested.
Command messages are sent in XML format. For example, the following message schedules a conference on an
MCU to begin at 10:45 on 18 February 2005 and last for one hour:
If the command fails, the MCU sends a fault response. For example, in response to a “conference.create”
message where the conference name is not unique, the MCU returns:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/xml
Content-Length: 411
The complete list of command messages, their required and optional parameters, and the expected responses
are detailed in the sections below. The possible fault codes are listed in section 11. Appendix B - contains
examples of some messages and their corresponding responses.
2.3 Unicode support
Parameters in this version of the API can be in ASCII text or unicode (UTF8). In order to distinguish between
these encodings, any of several methods can be used. If no method is present, ASCII is assumed.
2.3.1 HTTP Headers
There are two different ways of specifying unicode in the HTTP headers; either using "Accept-Encoding:
utf-8"
8"
, or modifying the Content-Type header to read "Content-Type: text/xml; charset=utf-
.
2.3.2 XML Header
At the top of each XML file, the <?xml> tag is required. This API will accept an additional encoding
parameter with value UTF-8 for this tag, i.e. <?xml version="1.0" encoding="UTF-8"?>.
2.4 Common message elements
2.4.1 Authentication
All messages must contain a user name and password as follows:
Parameter Type Comments
authenticationUser String Name of a user with sufficient privilege for the operation
being performed. The name is case sensitive.
authenticationPassword String The corresponding user’s password. This parameter is
ignored if the user has no password set - note that this
differs from the web interface where a blank password
must be blank.
The following parameters appear in the majority of conference control messages, and identify a specific
participant on which operations are to be performed. The use of “MCU” below refers to any device which acts
as a videoconferencing server.
Parameter Type Description
participantName String This is an “internal” name, and therefore is not necessarily
related to any name configured on an endpoint. Within the
scope of a particular conference or auto attendant, the
combination of “participantType”, “participantProtocol” and
“participantName” is always unique
participantProtocol String
participantType String
Used in conjunction with “participantName” to uniquely
identify a participant within a connection. Typically, these
parameters should be treated as opaque values, but the current
possibilities are:
- for “participantProtocol”:
h323 – an endpoint using the H.323 protocol
vnc – a VNC connection (e.g. remote desktop)
sip – an endpoint using the SIP protocol.
- for “participantType”:
ad_hoc – this participant called into the MCU or was
dialed out via the web interface and is not in the
MCU’s endpoint list
by_address – fully-specified participant added through
the API
by_name – MCU-configured endpoint irrespective of
whether the endpoint dialed in or the MCU dialed out
API-created participants in scheduled conferences (i.e. those
originated by “participant.add”) will be of type by_address
(unless they're added explicitly as temporary ad_hoc
participants.)
conferenceName String Unique conference name – the conference name space is shared
between API-generated conferences and all other ad hoc and
scheduled MCU conferences.
autoAttendantUniqueId String If the participant in question is connected to an auto attendant
rather than a conference, this field contains a unique identifier
for that auto attendant.
When modifying or querying parameters for a specific endpoint, participantName, participantProtocol
and participantType parameters are supplied, along with either a conferenceName or an
autoAttendantUniqueId. The only safe way to find these values is to use the fields returned from
participant.enumerate.
2.4.3 Enumerate functions
Due to the potential for a very large number of responses, all enumerate functions return an enumerateID
response. This contains a string value which should be passed to subsequent calls of the same enumerate
function in order to retrieve the remainder of the values.
The use of this parameter is as follows:
1. The client computer sends an enumerate call with any necessary parameters (e.g. operationScope)
and no enumerateID parameter.
2. The device returns with an array containing the requested data, and possibly a new enumerateID.
3. If there is an enumerateID, the client should call the enumerate method again, with any parameters
that are required or desired, and an enumerateID parameter containing the ID returned by the
device from the previous call. This should be repeated while the device continues to provide new
enumerateID values in responses.
4. After all data is returned, the device will reply with all remaining results, but no enumerateID.
This method should only be called using enumerateID values as provided by the device.
2.4.4 Filtering
Enumerate functions contain an optional enumerateFilter parameter, which can be used to restrict the
responses to the enumerate call. The valid expressions depend on the function to which they are applied, but
the syntax is the same for all enumerate functions: the section in this document for each function provides a list
of valid filters for that function.
To use the filters, the expression is evaluated, with any function or expression symbols evaluated for the given
entity being enumerated (e.g. if enumerating conferences, the active expression will evaluate to true if the
conference is active, and false otherwise). If the result of evaluating the filter is true, the entity is returned to
the client. If the expression evaluates to false, the entity in question is not returned to the client and the next
entity (if any) is considered. As an example, if the expression (active && scheduled) is used when enumerating
conference, the returned conferences will be only those which are both active and scheduled.
Filters can consist of atomic expressions, joined together with operators, and brackets in the traditional
manner. Whitespace is ignored. Functions are valid, and any parameters are in a comma separated list in
brackets following the function name, for example function(expression1,expression2).
From a boolean perspective, the integer 0 is false, and all other numbers are true.
Integer values can be expressed using any string of valid digits, optionally prefixed by 0x for hexadecimal,
0t for decimal and 0z for binary. If no prefix is specified, decimal is assumed.
The following binary operators are valid, in order of priority (lowest priority first)
Operator Description
|| Boolean or
&& Boolean and
| Bitwise or
^ Bitwise exclusive or
& Bitwise and
== Equality
!= Inequality
< Less than
<= Less than or equal
>= Greater than or equal
> Greater than
<< Bitwise left shift
>> Bitwise right shift
+ Addition
The methods in this section are common to many devices, including video conferencing servers, IP VCR
products, ISDN GW products, and IP GW products. Not all methods are supported by all product types, and
not all fields will be present in responses from all products.
3.1 device.query
There are no parameters passed with this method call. The method response returns the following:
Parameter Type Comments
currentTime dateTime.iso8601 The system’s current time (UTC).
restartTime dateTime.iso8601 The date and time at which the system was last
restarted.
serial String The serial number of the device.
softwareVersion String The software version of the running software.
buildVersion String The build version of the running software.
model String The model of this device, e.g. "Codian MCU 4210".
apiVersion String The version number of the API implemented by this
device.
activatedFeatures array of structs Currently, only contains a string "feature" with a
short description of the feature.
totalVideoPorts Integer The total number of video ports on the device. Only
present on MCU and VCR products.
totalAudioOnlyPorts Integer The total number of additional audio-only ports on
the device. Only present on MCU and VCR products.
portReservationMode String enabled or disabled, depending on the Media Port
Reservation configuration setting. Only present on
MCU products.
maxVideoResolution String One of cif or 4cif. Only present on MCU and VCR
products.
isdnPorts Integer The number of ISDN ports. Only present on ISDN
gateways.
3.2 device.network.query
This call takes no parameters. The response returns the following:
Parameter Type Comments
portA struct (see below) Contains the configuration and status for port A.
portB struct (see below) Contains the configuration and status for port B.
The format for the two structures above is:
Field Type Comments
enabled Boolean true if the port is enabled, otherwise false.
hostName (optional) String The host name of this port.
dhcp (optional) Boolean true if configured by DHCP, otherwise false.
ipAddress (optional) String a.b.c.d format.
subnetMask (optional) String a.b.c.d format.
defaultGateway (optional) String a.b.c.d format.
domainName (optional) String The domain name of this port.
nameServer (optional) String a.b.c.d format.
nameServerSecondary
String a.b.c.d format.
(optional)
linkStatus Boolean true if the link is up, false if the link is down.
speed Integer one of 10, 100 or 1000, in Mbps.
fullDuplex Boolean true if full duplex enabled, false if half.
macAddress String a 12 character string, no separators.
packetsSent Integer
packetsReceived Integer
multicastPacketsSent Integer
Stats from the web interface. It is worth noting
that all these values are 32 bit signed integers, and
thus may wrap.
The "log" array consists of structures which contain the following fields.
Field Type Comments
time dateTime.iso8601 The time of the last reboot.
reason String The reason for the reboot (one of unknown, User
requested shutdown
upgrade
).
or User requested
3.5 gatekeeper.query
Retrieves the gatekeeper settings and current status for an MCU or IP VCR. Takes no parameters.
Response Type Comments
gatekeeperUsage String One of disabled, enabled or required.
The following parameters are all optional and will only be present if gatekeeperUsage is not disabled.
address String The address of the gatekeeper.
dnsStatus String The status of the DNS resolution: one of
inProgress, resolved or failed.
ip String If the dnsStatus is resolved, contains the IP
address of the gatekeeper.
activeRegistrations Integer The number of active registration.
pendingRegistrations Integer The number of registrations in progress.
registrationPrefix String The registration prefix used by the device
h323ID String The h323 id used by the device.
mcuServicePrefix String The service prefix used by the device.
scheduledConferenceIDRegistration String The value enabled or disabled; corresponds
The current status of the ID/service prefix
registration process. One of idle,
registering, registered,
deregistering,
pendingReregistration, waitingRetry,
noID or idTooLong.
3.6 sip.query
Retrieves information on SIP configuration for an MCU or IP VCR. Takes no parameters.
Response Type Comments
configuredRegistrar String The currently configured SIP registrar
address. This corresponds to the “SIP
registrar address” on the Settings >SIP
web page, and will be an empty string value
if there is no currently configured SIP
registrar.
configuredProxy String The currently configured SIP proxy address.
This corresponds to the “SIP proxy address”
on the Settings > SIP web page, and will
be an empty string value if there is no
conferenceRegistration String This value is only present if the device being
queried is an MCU. It will be enabled if
the MCU is configured to register
conferences’ numeric IDs with the
configured SIP registrar, and disabled if
not. The enabled value corresponds to
“SIP registration settings” being set to
“Allow conference registration” on the
Settings > SIP page.
3.7 addressBookEntry.enumerate
Enumerates configured endpoints on an MCU or IP VCR.
Parameter Type Comments
enumerateID
(optional)
This method returns:
Response Type Comments
enumerateID
(optional)
addressBookEntries array of structs See below for details.
The array “addressBookEntries” contains structs with the following fields:
Field Type Comments
Name String The configuration’s name.
address String (< 32
protocol String One of h323, sip or vnc.
gatewayName String Present for h323 endpoints which are
gatewayAddress String Present for h323 endpoints which are
useSIPRegistrar Boolean Whether this endpoint is configured to
password String The password for vnc endpoints.
portNumber Integer The port number for vnc endpoints.
callInParams struct See below for details.
conferencingParameters struct See below for details.
The structure callInParams contains the following fields. This is used to match incoming participants to
endpoint configurations. For a positive match a participant must match fields which have values. Blank fields
are not considered in the comparison.
String The value returned by the last enumeration call. If it is
omitted, a new enumeration is started.
String The value that should be used in the next call to get
the next set of data. If this is omitted, no further data
is available from the MCU.
The participant’s E.164 directory
chars)
number, hostname or IP address.
configured to use a gateway. This name
corresponds to the name of a gateway
returned via gateway.enumerate.
configured to use a gateway. This is the
address of the gateway this endpoint is
configured to use.
use a sip registrar when being called.
Field Type Comments
name String Endpoint name.
address String IP address.
e164 String E.164 number.
The structure conferencingParameters contains the following fields:
Field Type Comments
useDefaultMotionSharpness Boolean If true, this endpoint will use box-wide
default motion sharpness settings.
minFrameRateMotionSharpness Integer Only present if
useDefaultMotionSharpness is false.
Specifies the minimum frame rate for this
endpoint.
useDefaultVideoTransmitResolutions Boolean If true, this endpoint will use box-wide
default video transmit resolutions.
videoTransmitResolutions String One of: allowAll, 4to3Only,
4to3WidescreenOverride
16to9Only.
or
maxMediaTxBitRate Integer Max media transmit bit rate.
maxMediaRxBitRate Integer Max media receive bit rate.
defaultLayout String Refer to appendix A for a list of layouts.
layoutControlDefault Boolean If true, this endpoint will use box-wide
layout control settings.
layoutControlEnabled Boolean Only present if layoutControlDefault is
false. Indicates whether the participant
will have control over their layout.
h239ContributionDefault Boolean If true, this endpoint will use box-wide
h239 contribution settings.
h239ContributionEnabled Boolean Only present if h239ContributionDefault
is false. Specifies whether the endpoint
will be able contribute h239.
initialAudioMuted Boolean Whether this participant would initially
have their audio muted.
initialVideoMuted Boolean Whether this participant would initially
have their video muted.
autoDisconnect Boolean When a participant disconnects from a
conference and only participants who
have autoDisconnect set to true remain,
all those participants are disconnected.
borderWidth Integer 0 (no border), or 1, 2, or 3 for
+1/+2/+3.
3.8 gateway.enumerate
Enumerates configured H.323 gateways on an MCU or IP VCR.
Methods in this section are only implemented on products, such as the Codian MCU 4200 series, which act as
a video conferencing server. Throughout this section, the term MCU refers to any such device.
4.1 conference.create
Parameter Type Comments
conferenceName String (<32
chars)
numericId (optional) String (<32
chars)
conferenceId (deprecated) String (< 32
chars)
registerWithGatekeeper (optional) Boolean Register the conference’s “numericId”
registerWithSIPRegistrar (optional) Boolean Register this conference with the SIP
startTime (optional) dateTime.iso8601 If you do not specify a time, the
durationSeconds (optional) Integer The length of each repeating conference
endTime (optional) (deprecated) dateTime.iso8601 If you do not specify an end time, then
pin (optional) String (< 32
chars)
description(optional) String (< 32
chars)
multicastStreamingEnabled(optional) Boolean
unicastStreamingEnabled(optional) Boolean
h239Enabled(optional) Boolean
private Boolean Determines the visibility of this
If present, the conference will be renamed
to specified value.
Deprecated conference renaming scheme –
new code should use conferenceName and
newConferenceName as above.
Optional fields as per “conference.create”
described above. These fields can only be
used for conferences which are not of type