<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:3gpp:ns:mcpttInfo:1.0" xmlns:mcpttinfo="urn:3gpp:ns:mcpttInfo:1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:mgktp="urn:3gpp:ns:mcpttGKTP:1.0">
  <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" />
  <xs:import namespace="urn:3gpp:ns:mcpttGKTP:1.0" />
  <!-- root XML element -->
  <xs:element name="mcpttinfo" type="mcpttinfo:mcpttinfo-Type" id="info" />
  <xs:complexType name="mcpttinfo-Type">
    <xs:sequence>
      <xs:element name="mcptt-Params" type="mcpttinfo:mcptt-ParamsType" minOccurs="0" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0" />
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax" />
  </xs:complexType>
  <xs:complexType name="mcptt-ParamsType">
    <xs:sequence>
      <xs:element name="mcptt-access-token" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="session-type" type="xs:string" minOccurs="0" />
      <xs:element name="mcptt-request-uri" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="mcptt-calling-user-id" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="mcptt-called-party-id" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="mcptt-calling-group-id" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="required" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="emergency-ind" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="alert-ind" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="imminentperil-ind" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="broadcast-ind" type="xs:boolean" minOccurs="0" />
      <xs:element name="mc-org" type="xs:string" minOccurs="0" />
      <xs:element name="floor-state" type="xs:string" minOccurs="0" />
      <xs:element name="associated-group-id" type="xs:string" minOccurs="0" />
      <xs:element name="originated-by" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="MKFC-GKTPs" type="mgktp:singleTypeGKTPsType" minOccurs="0" />
      <xs:element name="mcptt-client-id" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:element name="alert-ind-rcvd" type="mcpttinfo:contentType" minOccurs="0" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0" />
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax" />
  </xs:complexType>
  <xs:simpleType name="protectionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Normal" />
      <xs:enumeration value="Encrypted" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="contentType">
    <xs:choice>
      <xs:element name="mcpttURI" type="xs:anyURI" />
      <xs:element name="mcpttString" type="xs:string" />
      <xs:element name="mcpttBoolean" type="xs:boolean" />
      <xs:any namespace="##other" processContents="lax" />
      <xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0" />
    </xs:choice>
    <xs:attribute name="type" type="mcpttinfo:protectionType" />
    <xs:anyAttribute namespace="##any" processContents="lax" />
  </xs:complexType>
  <xs:complexType name="anyExtType">
    <xs:sequence>
      <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <!-- anyEXT elements – begin -->
  <xs:element name="ambient-listening-type" type="mcpttinfo:ambientListeningType" />
  <xs:simpleType name="ambientListeningType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="remote-init" />
      <xs:enumeration value="local-init" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="release-reason" type="mcpttinfo:releaseReasonType" />
  <xs:simpleType name="releaseReasonType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="private-call-expiry" />
      <xs:enumeration value="administrator-action" />
      <xs:enumeration value="not selected for call" />
      <xs:enumeration value="call-request-for-listened-to-client" />
      <xs:enumeration value="call-request-initiated-by-listened-to-client" />
      <xs:enumeration value="authentication of the MIKEY-SAKE I_MESSAGE failed" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="request-type" type="mcpttinfo:requestTypeType" />
  <xs:simpleType name="requestTypeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="private-call-call-back-request" />
      <xs:enumeration value="private-call-call-back-cancel-request" />
      <xs:enumeration value="group-selection-change-request" />
      <xs:enumeration value="remotely-initiated-group-call-request" />
      <xs:enumeration value="remotely-initiated-private-call-request" />
      <xs:enumeration value="transfer-private-call-request" />
      <xs:enumeration value="functional-alias-status-determination" />
      <xs:enumeration value="forward-private-call-request" />
      <xs:enumeration value="forward-private-call-settings-request" />
      <xs:enumeration value="forward-private-call-settings-response" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="response-type" type="mcpttinfo:responseTypeType" />
  <xs:simpleType name="responseTypeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="private-call-call-back-response" />
      <xs:enumeration value="private-call-call-back-cancel-response" />
      <xs:enumeration value="group-selection-change-response" />
      <xs:enumeration value="remotely-initiated-group-call-response" />
      <xs:enumeration value="remotely-initiated-private-call-response" />
      <xs:enumeration value="transfer-private-call-response" />
      <xs:enumeration value="forward-private-call-response" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="urgency-ind">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="low" />
        <xs:enumeration value="normal" />
        <xs:enumeration value="high" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="time-of-request" type="xs:dateTime" />
  <xs:element name="selected-group-change-outcome" type="mcpttinfo:selectedGroupChangeOutcomeType" />
  <xs:simpleType name="selectedGroupChangeOutcomeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="success" />
      <xs:enumeration value="fail" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="affiliation-required" type="xs:boolean" />
  <xs:element name="remotely-initiated-call-outcome" type="mcpttinfo:remotelyInitiatedCallOutcomeType" />
  <xs:simpleType name="remotelyInitiatedCallOutcomeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="success" />
      <xs:enumeration value="fail" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="notify-remote-user" type="xs:boolean" />
  <xs:element name="functional-alias-URI" type="mcpttinfo:contentType" />
  <xs:element name="emergency-alert-area-ind" type="xs:boolean" />
  <xs:element name="group-geo-area-ind" type="xs:boolean" />
  <xs:element name="non-acknowledged-user" type="mcpttinfo:contentType" />
  <xs:element name="call-to-functional-alias-ind" type="xs:boolean" />
  <xs:element name="emergency-ind-rcvd" type="mcpttinfo:contentType" />
  <xs:element name="call-transfer-ind" type="xs:boolean" />
  <xs:element name="multiple-devices-ind" type="mcpttinfo:contentType" />
  <xs:element name="transfer-call-outcome" type="mcpttinfo:transferCallOutcomeType" />
  <xs:simpleType name="transferCallOutcomeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="success" />
      <xs:enumeration value="fail" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="called-functional-alias-URI" type="mcpttinfo:contentType" />
  <xs:element name="call-forwarding-ind" type="xs:boolean" />
  <xs:element name="forwarding-call-outcome" type="mcpttinfo:forwardingCallOutcomeType" />
  <xs:simpleType name="forwardingCallOutcomeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="success" />
      <xs:enumeration value="fail" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="forwarding-list" type="mcpttinfo:mcpttIdListType" />
  <xs:complexType name="mcpttIdListType">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="entry" type="mcpttinfo:EntryType" />
      <xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:choice>
    <xs:anyAttribute namespace="##any" processContents="lax" />
  </xs:complexType>
  <xs:complexType name="EntryType">
    <xs:sequence>
      <xs:element name="uri-entry" type="xs:anyURI" />
      <xs:element name="display-name" type="xs:string" minOccurs="0" />
      <xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0" />
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax" />
  </xs:complexType>
  <xs:element name="forwarding-reason" type="mcpttinfo:forwardingReasonType" />
  <xs:simpleType name="forwardingReasonType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Immediate" />
      <xs:enumeration value="No-Answer" />
      <xs:enumeration value="Manual-Input" />
      <xs:enumeration value="User-Not-Available" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="call-forwarding-immediate-enabled" type="xs:boolean" />
  <xs:element name="call-forwarding-no-answer-enabled" type="xs:boolean" />
  <xs:element name="call-forwarding-user-unavailable-enabled" type="xs:boolean" />
  <xs:element name="call-forwarding-target-id" type="mcpttinfo:contentType" />
  <xs:element name="call-forwarding-target-display-name" type="mcpttinfo:contentType" />
  <xs:element name="call-forwarding-target-is-functional-alias" type="xs:boolean" />
  <xs:element name="forwarded-by-client-ID" type="mcpttinfo:contentType" />
  <xs:element name="forwarded-by-client-display-name" type="mcpttinfo:contentType" />
  <!-- anyEXT elements – end -->
</xs:schema>