<?xml version="1.0"?>
<?xml-stylesheet href="docbook.xsl" type="text/xsl" ?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
  <info>
    <title>ONVIF SIP Specification</title>
    <titleabbrev>ONVIF SIP Spec</titleabbrev>
    <releaseinfo>26.12</releaseinfo>
    <author>
      <orgname>ONVIF™</orgname>
      <uri>www.onvif.org</uri>
    </author>
    <pubdate>December, 2026</pubdate>
    <mediaobject>
      <imageobject>
        <imagedata fileref="media/logo.png" contentwidth="60mm"/>
      </imageobject>
    </mediaobject>
    <copyright>
      <year>2008-2026</year>
      <holder>ONVIF™ All rights reserved.</holder>
    </copyright>
    <legalnotice>
      <para>Recipients of this document may copy, distribute, publish, or display this document so
        long as this copyright notice, license and disclaimer are retained with all copies of the
        document. No license is granted to modify this document.</para>
      <para>THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR
        AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
        LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
        NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
        OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS,
        TRADEMARKS OR OTHER RIGHTS.</para>
      <para>IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY
        DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR
        RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION,
        MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2)
        SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR
        DISTRIBUTION OF THIS DOCUMENT.  THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT
        APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR
        RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF
        THE CORPORATION.</para>
    </legalnotice>
    <revhistory>
      <revision>
        <revnumber>26.12</revnumber>
        <date>Dec-2026</date>
        <revremark>Initial version. Introduction of SIP specification.</revremark>
      </revision>
    </revhistory>
  </info>
  <chapter xml:id="_Toc_SipOverview">
    <title>Overview</title>
    <para>This specification defines the SIP-related operations for ONVIF compliant devices. It covers SIP server configuration, NAT traversal configuration, and call management.</para>
    <para>The WSDL for this service is defined at: http://www.onvif.org/ver10/sip/wsdl</para>
    <table>
      <title>Referenced namespaces</title>
      <tgroup cols="2">
        <colspec colname="c1" colwidth="11*"/>
        <colspec colname="c2" colwidth="11*"/>
        <thead>
          <row>
            <entry>
              <para>Prefix</para>
            </entry>
            <entry>
              <para>Namespace URI</para>
            </entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry>
              <para>env</para>
            </entry>
            <entry>
              <para>http://www.w3.org/2003/05/soap-envelope</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>ter</para>
            </entry>
            <entry>
              <para>http://www.onvif.org/ver10/error</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>xs</para>
            </entry>
            <entry>
              <para>http://www.w3.org/2001/XMLSchema</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>tt</para>
            </entry>
            <entry>
              <para>http://www.onvif.org/ver10/schema</para>
            </entry>
          </row>
          <row>
            <entry>
              <para>tsip</para>
            </entry>
            <entry>
              <para>http://www.onvif.org/ver10/sip/wsdl</para>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
  </chapter>
  <chapter xml:id="_Toc_SipService">
    <title>SIP Service</title>
    <section xml:id="_Toc_SipGetServiceCapabilities">
      <title>GetServiceCapabilities</title>
      <para>This command returns the capabilities of the SIP service.</para>
      <variablelist role="op">
        <varlistentry>
          <term>request</term>
          <listitem>
            <para role="text">This is an empty message.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>response</term>
          <listitem>
            <para role="param">Capabilities [tsip:Capabilities]</para>
            <para role="text">The capability response message contains the requested SIP service capabilities.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>faults</term>
          <listitem>
            <para role="text">No command specific faults defined.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>access class</term>
          <listitem>
            <para role="access">PRE_AUTH</para>
          </listitem>
        </varlistentry>
      </variablelist>
      <table xml:id="_Toc_SipCapabilitiesTable">
        <title>The capabilities in the GetServiceCapabilities command</title>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="33*"/>
          <colspec colname="c2" colwidth="67*"/>
          <thead>
            <row>
              <entry>
                <para>Capability</para>
              </entry>
              <entry>
                <para>Description</para>
              </entry>
            </row>
          </thead>
          <tbody valign="top">
            <row>
              <entry>
                <para>MaximumServerConfigurations</para>
              </entry>
              <entry>
                <para>Indicates the maximum number of server configurations supported.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MaximumRegistrars</para>
              </entry>
              <entry>
                <para>Indicates the maximum number of SIP registrars supported per server configuration.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MaximumStunServers</para>
              </entry>
              <entry>
                <para>Indicates the maximum number of STUN server URIs supported per server configuration.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>MaximumTurnServers</para>
              </entry>
              <entry>
                <para>Indicates the maximum number of TURN servers supported per server configuration.</para>
              </entry>
            </row>
            <row>
              <entry>
                <para>CallButtons</para>
              </entry>
              <entry>
                <para>Indicates if the device supports call buttons.</para>
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
    <section xml:id="_Toc_ServerConfiguration">
      <title>SIP Server Configuration</title>
      <para>A device indicating SIP capabilities shall support the CreateServerConfiguration, DeleteServerConfiguration, GetServerConfigurations and SetServerConfiguration commands. The maximum number of server configurations supported is indicated by the MaximumServerConfigurations SIP capability. The maximum number of registrars per server configuration is indicated by the MaximumRegistrars SIP capability.</para>
      <para>A server configuration consists of the following fields:</para>
      <variablelist>
        <varlistentry>
          <term>Registrar</term>
          <listitem><para>One or more SIP registrar entries. Each entry contains a Uri and a Transport field. The Transport field specifies the transport protocol to use for the registrar and shall be one of: UDP, TCP, or TLS.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>UserId</term>
          <listitem><para>The user info/extension of the Address of Record (AoR) in SIP, identifying the device on the registrar.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>CertPathValidationPolicyID</term>
          <listitem><para>Optional. The unique identifier of the certification path validation policy to be used for validating the server certificate as declared in the security service. If not configured, server certificate validation behavior is undefined and the device may either apply a vendor specific default validation policy or skip validation at all.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>Authentication</term>
          <listitem><para>Authentication configuration. Either Credential (UserName and Password) or AuthorizationServer may be provided. Credential contains the username and password used to authenticate with the SIP server. AuthorizationServer is a reference token referring to the server that provides access tokens to authorize with the renewal endpoint as defined in the Security specification.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>Name</term>
          <listitem><para>Optional name of the server configuration.</para></listitem>
        </varlistentry>
      </variablelist>
      <section xml:id="_Toc_CreateServerConfiguration">
        <title>CreateServerConfiguration</title>
        <para>This operation creates a new SIP server configuration on the device.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">ServerConfiguration [tsip:ServerConfiguration]</para>
              <para role="text">The new server configuration to be added on the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">Token [tt:ReferenceToken]</para>
              <para role="text">Token of the created server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Receiver - ter:OperationProhibited - ter:MaximumServerConfigurations</para>
              <para role="text">The device cannot create a new server configuration because it already has the maximum number of server configurations that it supports.</para>
              <para role="param">env:Receiver - ter:OperationProhibited - ter:MaximumRegistrars</para>
              <para role="text">The number of registrars exceeds the maximum number supported by the device.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidRegistrar</para>
              <para role="text">The URI set in a registrar is not valid.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:AuthorizationServer</para>
              <para role="text">No AuthorizationServer exists for the specified token.</para>
              <para role="param">env:Sender - ter:OperationProhibited - ter:ConfigurationConflict</para>
              <para role="text">Cannot have both AuthorizationServer and Credential configured at the same time. Only one may be provided.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:CertPathValidationPolicyID</para>
              <para role="text">No certification path validation policy exists under the requested CertPathValidationPolicyID.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">WRITE_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_DeleteServerConfiguration">
        <title>DeleteServerConfiguration</title>
        <para>This operation deletes an existing SIP server configuration from the device. Deleting a server configuration removes all other configuration types that reference this configuration.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">Token [tt:ReferenceToken]</para>
              <para role="text">Token of the server configuration to delete.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The Token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">WRITE_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_GetServerConfigurations">
        <title>GetServerConfigurations</title>
        <para>This operation gets the SIP server configuration(s) of the device. The device shall support this command. The device shall not return the password in the response.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">Token - optional [tt:ReferenceToken]</para>
              <para role="text">Optional token of the requested server configuration. If omitted, all server configurations are returned.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">Configuration - unbounded [tsip:ServerConfigurationTokenPair]</para>
              <para role="text">The SIP server configuration(s) of the device, each paired with its Token.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The Token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_SetServerConfiguration">
        <title>SetServerConfiguration</title>
        <para>This operation sets the SIP server configuration of the device. The device shall support this command. The number of registrars shall not exceed the value indicated by the MaximumRegistrars SIP capability.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">Token [tt:ReferenceToken]</para>
              <para role="text">Token of the server configuration.</para>
              <para role="param">ServerConfiguration [tsip:ServerConfiguration]</para>
              <para role="text">The SIP server configuration to update on the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The Token does not reference an existing server configuration.</para>
              <para role="param">env:Receiver - ter:OperationProhibited - ter:MaximumRegistrars</para>
              <para role="text">The number of registrars exceeds the maximum number supported by the device.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidRegistrar</para>
              <para role="text">The URI set in a registrar is not valid.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:AuthorizationServer</para>
              <para role="text">No AuthorizationServer exists for the specified token.</para>
              <para role="param">env:Sender - ter:OperationProhibited - ter:ConfigurationConflict</para>
              <para role="text">Cannot have both AuthorizationServer and Credential configured at the same time. Only one may be provided.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:CertPathValidationPolicyID</para>
              <para role="text">No certification path validation policy exists under the requested CertPathValidationPolicyID.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">WRITE_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>
    <section xml:id="_Toc_NatConfiguration">
      <title>NAT Configuration</title>
      <para>A device indicating MaximumStunServers > 0 or MaximumTurnServers > 0 in the SIP capabilities shall support the GetNatConfigurations and 
        SetNatConfiguration commands. Only one NAT configuration is supported per server configuration. The maximum number of STUN server URIs is indicated by the 
        MaximumStunServers SIP capability and the maximum number of TURN servers is indicated by the MaximumTurnServers SIP capability.</para>
      <para>The NAT configuration consists of the following fields:</para>
      <variablelist>
        <varlistentry>
          <term>ServerConfiguration</term>
          <listitem><para>Token of the server configuration that this NAT configuration applies to.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>Stun</term>
          <listitem><para>Optional. Contains one or more STUN server URIs used for NAT traversal.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>Turn</term>
          <listitem><para>Optional, unbounded. Each entry contains one or more TURN server URIs and optional credentials (UserName and Password) used to authenticate with the TURN server. The device shall not return the password in the response.</para></listitem>
        </varlistentry>
      </variablelist>
      <section xml:id="_Toc_GetNatConfigurations">
        <title>GetNatConfigurations</title>
        <para>This operation gets the NAT configurations of the device. There shall be 1 configuration per ServerConfiguration token. The 
          device shall not return TURN server passwords in the response.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">ServerConfiguration - optional [tt:ReferenceToken]</para>
              <para role="text">Optional token to filter configurations based on server configuration token.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">NatConfiguration - unbounded [tsip:NatConfiguration]</para>
              <para role="text">The NAT configurations of the device. Maximum 1 per ServerConfiguration token.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_SetNatConfiguration">
        <title>SetNatConfiguration</title>
        <para>This operation updates a NAT configuration of the device based on the ServerConfiguration token. 
          The number of STUN server URIs shall not exceed the value indicated by the MaximumStunServers SIP capability. 
          The number of TURN servers shall not exceed the value indicated by the MaximumTurnServers SIP capability.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">NatConfiguration [tsip:NatConfiguration]</para>
              <para role="text">The NAT configuration to set.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
              <para role="param">env:Receiver - ter:OperationProhibited - ter:MaximumStunServers</para>
              <para role="text">The number of STUN server URIs exceeds the maximum number supported by the device.</para>
              <para role="param">env:Receiver - ter:OperationProhibited - ter:MaximumTurnServers</para>
              <para role="text">The number of TURN servers exceeds the maximum number supported by the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">WRITE_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>
    <section xml:id="_Toc_CallConfiguration">
      <title>Call Configuration</title>
      <para>A device indicating SIP capabilities shall support the GetCallConfigurations and SetCallConfiguration commands. 
        Shall contain 1 call configuration per ServerConfiguration.</para>
      <para>A call configuration consists of the following fields:</para>
      <variablelist>
        <varlistentry>
          <term>ServerConfiguration</term>
          <listitem><para>Token of the server configuration that this call configuration applies to.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>AllowIncomingCalls</term>
          <listitem><para>Indicates whether the device shall allow incoming calls.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>AutoAnswer</term>
          <listitem><para>Indicates whether the device shall automatically answer incoming calls.</para></listitem>
        </varlistentry>
      </variablelist>
      <section xml:id="_Toc_GetCallConfigurations">
        <title>GetCallConfigurations</title>
        <para>This operation gets the call configurations of the device.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">ServerConfiguration - optional [tt:ReferenceToken]</para>
              <para role="text">The matching ServerConfiguration token for the call configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">CallConfiguration - unbounded [tsip:CallConfiguration]</para>
              <para role="text">One or all call configurations of the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_SetCallConfiguration">
        <title>SetCallConfiguration</title>
        <para>This operation sets the call configuration of the device.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">CallConfiguration [tsip:CallConfiguration]</para>
              <para role="text">The call configuration to set on the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">WRITE_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>
    <section xml:id="_Toc_CallButtons">
      <title>Call Buttons</title>
      <para>A device indicating the CallButtons SIP capability shall support the GetCallButtons, SetCallButtons and GetCallButtonOptions commands. 
        Shall contain 1 button configuration per ServerConfiguration.</para>
      <para>A call button consists of the following fields:</para>
      <variablelist>
        <varlistentry>
          <term>ButtonId</term>
          <listitem><para>The button's reference token.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>Name</term>
          <listitem><para>Display name of the call recipient.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>UserId</term>
          <listitem><para>The user info/extension of the Address of Record (AoR) in SIP, identifying the recipient on the registrar.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>Enabled</term>
          <listitem><para>Optional attribute indicating whether this button is enabled or not. Defaults to true.</para></listitem>
        </varlistentry>
      </variablelist>
      <section xml:id="_Toc_GetCallButtons">
        <title>GetCallButtons</title>
        <para>
          This operation gets the call button configurations of the device.
          This method is optional. It shall be available if the CallButtons capability is TRUE.
        </para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">ServerConfiguration - optional [tt:ReferenceToken]</para>
              <para role="text">The matching ServerConfiguration token for the button configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">ButtonConfiguration - unbounded [tsip:ButtonConfiguration]</para>
              <para role="text">A button configuration of the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
              <para role="param">env:Receiver - ter:ActionNotSupported - ter:NotImplemented</para>
              <para role="text">This optional method is not implemented.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_SetCallButtons">
        <title>SetCallButtons</title>
        <para>
          This operation sets the call button configuration of the device.
          This method is optional. It shall be available if the CallButtons capability is TRUE.
        </para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">ButtonConfiguration [tsip:ButtonConfiguration]</para>
              <para role="text">The button configuration to set on the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidButtonId</para>
              <para role="text">The ButtonId does not reference a supported physical, relay or virtual button.</para>
              <para role="param">env:Receiver - ter:ActionNotSupported - ter:NotImplemented</para>
              <para role="text">This optional method is not implemented.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">WRITE_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_GetCallButtonOptions">
        <title>GetCallButtonOptions</title>
        <para>
          This operation gets the list of supported physical, relay and virtual call button identifiers of the device.
          This method is optional. It shall be available if the CallButtons capability is TRUE.
        </para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">Physical - unbounded [tsip:ButtonDescription]</para>
              <para role="text">List of physical button ids.</para>
              <para role="param">Relay - unbounded [tsip:ButtonDescription]</para>
              <para role="text">List of relay button ids.</para>
              <para role="param">Virtual - unbounded [tsip:ButtonDescription]</para>
              <para role="text">List of virtual button ids. Example for a touchscreen interface.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Receiver - ter:ActionNotSupported - ter:NotImplemented</para>
              <para role="text">This optional method is not implemented.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_SYSTEM</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>
    <section xml:id="_Toc_StreamingConfiguration">
      <title>SIP Streaming Configuration</title>
      <para>
        The SIP streaming configuration defines the media configurations used during SIP-based streaming sessions.
        It allows a client to update the provided configurations used when the device participates in a SIP call.
      </para>
      <para>
        Shall support a streaming configuration per ServerConfiguration. 
        The SIP streaming configuration determines the media parameters applied during incoming or outgoing SIP sessions.
        A configuration shall be provided per configuration type that the device supports for SIP streaming. For example,
        if the device supports both video and audio streaming over SIP, the SIP streaming configuration shall include a
        video source configuration, a video encoder configuration, an audio source configuration and an audio encoder
        configuration. If the device supports only audio output (such as a speaker device), then the configuration shall
        only include the audio output configuration and audio decoder configuration.
      </para>
      <para>
        Note: The configurations listed as part of the SIP streaming configuration are not expected to be used by the device
        for non-SIP streaming sessions. This means that the configurations need not be returned in GetXConfigurations,
        nor to be configured through SetXConfiguration.
      </para>
      <para>The SIP streaming configuration consists of the following fields:</para>
      <variablelist>
        <varlistentry>
          <term>ServerConfiguration</term>
          <listitem><para>The ServerConfiguration token for the streaming configuration to be modified.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>VideoSource</term>
          <listitem><para>Optional. Video source configuration used for the SIP session.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>VideoEncoder</term>
          <listitem><para>Optional. Video encoder configuration used for the SIP session.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>AudioSource</term>
          <listitem><para>Optional. Audio source configuration used for the SIP session.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>AudioEncoder</term>
          <listitem><para>Optional. Audio encoder configuration used for the SIP session.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>AudioOutput</term>
          <listitem><para>Optional. Audio output configuration used for the SIP session.</para></listitem>
        </varlistentry>
        <varlistentry>
          <term>AudioDecoder</term>
          <listitem><para>Optional. Audio decoder configuration used for the SIP session.</para></listitem>
        </varlistentry>
      </variablelist>
      <section xml:id="_Toc_GetStreamingConfigurations">
        <title>GetStreamingConfigurations</title>
        <para>This operation gets the SIP streaming configurations of the device.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">ServerConfiguration - optional [tt:ReferenceToken]</para>
              <para role="text">The matching ServerConfiguration token for the streaming configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">StreamingConfiguration - unbounded [tsip:StreamingConfiguration]</para>
              <para role="text">The current SIP streaming configuration(s) of the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_MEDIA</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_SetStreamingConfiguration">
        <title>SetStreamingConfiguration</title>
        <para>This operation sets the SIP streaming configuration of the device.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="param">StreamingConfiguration [tsip:StreamingConfiguration]</para>
              <para role="text">The SIP streaming configuration to set on the device.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal - ter:InvalidServerConfigurationToken</para>
              <para role="text">The ServerConfiguration token does not reference an existing server configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">ACTUATE</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
      <section xml:id="_Toc_GetStreamingConfigurationOptions">
        <title>GetStreamingConfigurationOptions</title>
        <para>This operation gets the supported options for SIP streaming configuration of the device.</para>
        <variablelist role="op">
          <varlistentry>
            <term>request</term>
            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>response</term>
            <listitem>
              <para role="param">StreamingConfigurationOptions [tsip:StreamingConfigurationOptions]</para>
              <para role="text">The supported options for SIP streaming configuration.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>faults</term>
            <listitem>
              <para role="text">No command specific faults defined.</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term>access class</term>
            <listitem>
              <para role="access">READ_MEDIA</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>
  </chapter>
  <appendix role="revhistory">
    <title>Revision History</title>
    <para/>
  </appendix>
</book>

