<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="wfm:EncoderControlAPI/v1/schemas" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:ns="drm:MultiDrmCommon/v1/schemas" name="EncoderControlWS" targetNamespace="wfm:EncoderControlAPI/v1/schemas">
  <types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="CancelEncodingJob">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EncodingJobId" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mdc_v1="drm:MultiDrmCommon/v1/schemas" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas"
      elementFormDefault="qualified" attributeFormDefault="unqualified">
      <xsd:simpleType name="UUIDType">
        <xsd:restriction base="xsd:token">
          <xsd:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/>
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="DrmContentType">
        <xsd:annotation>
          <xsd:documentation>Holds the identification, the definition of a content and the associated behavior of the key and signalization management</xsd:documentation>
        </xsd:annotation>
        <xsd:all>
          <xsd:element name="drmContentId" type="DrmContentIdType">
            <xsd:annotation>
              <xsd:documentation>The content id as provided by the CMS to the encoder</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="profile" type="SecurityProfileType">
            <xsd:annotation>
              <xsd:documentation>Defines how the key and the signalization are managed</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="metadata" type="MetadataType" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation>Defines Drm/security Info Metadata</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:all>
      </xsd:complexType>
      <xsd:simpleType name="DistributionModeType">
        <xsd:restriction base="xsd:token">
          <xsd:enumeration value="VOD"/>
          <xsd:enumeration value="LIVE"/>
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="DrmType">
        <xsd:sequence>
          <xsd:element name="drmSystemId" type="UUIDType">
            <xsd:annotation>
              <xsd:documentation>The DRM system id, defined as a UUID</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="drmName" type="xsd:string" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>The DRM name, optional</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="packagingProfileName" type="xsd:string" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>The packaging profile name(HLS/DASH), optional</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="DrmListType">
        <xsd:sequence>
          <xsd:element name="drm" type="DrmInfoType" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation>The list of addressed DRM</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="SecurityProfileType">
        <xsd:all>
          <xsd:element name="distributionMode" type="DistributionModeType">
            <xsd:annotation>
              <xsd:documentation>This mode allows to know how to manage the keys: VOD means only one key for the content, LIVE means key rotation</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="streamingMode" type="StreamingModeType" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>Provides the way the content is streamed, helps build the signalization. If omitted no signalization will be provided in return</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="emi" type="xsd:unsignedShort" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>Encryption method indicator (Nagra Spec)</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="cryptoPeriod" type="xsd:unsignedInt" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>Optional crypto period in seconds. Not applicable if Sunrise key change mode is set</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:all>
      </xsd:complexType>
      <xsd:simpleType name="StreamingModeType">
        <xsd:restriction base="xsd:token">
          <xsd:enumeration value="DASH"/>
          <xsd:enumeration value="HLS"/>
          <xsd:enumeration value="PIFF"/>
          <xsd:enumeration value="CUSTOM"/>
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="DrmInfoType">
        <xsd:complexContent>
          <xsd:extension base="DrmType">
            <xsd:sequence>
              <xsd:element name="drmMetadata" type="xsd:base64Binary" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>DRM specific metadata</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>
     <xsd:complexType name="MetadataType"> 
          <xsd:sequence>
              <xsd:element name="key" type="xs:string" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>key metadata</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="value" type="xs:string" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation>Value metadata</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
             </xsd:sequence>
      </xsd:complexType>
      <xsd:simpleType name="DrmContentIdType">
        <xsd:restriction base="xsd:string"/>
      </xsd:simpleType>
      <xs:element name="CreateEncodingJob">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SourceAssetUrl" type="xs:anyURI"/>
            <xs:element name="DestinationRepositoryUrl" type="xs:anyURI"/>
            <xs:element name="ProfileId" type="xs:string"/>
            <xs:element name="DrmContent" type="DrmContentType" minOccurs="0"/>
            <xs:element name="DrmList" type="DrmListType" minOccurs="0"/>
            <xs:element name="Metadata" type="MetadataType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="CreateEncodingJobResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EncodingJobId" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="ExceptionWS">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="message" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="GetEncodedAssetUrl">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EncodingJobId" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="GetEncodedAssetUrlResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EncodedAssetUrl" type="xs:anyURI"/>
            <xs:element name="Metadata" type="MetadataType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="GetEncodingJobStatus">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EncodingJobId" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="wfm:EncoderControlAPI/v1/schemas" targetNamespace="wfm:EncoderControlAPI/v1/schemas" elementFormDefault="qualified"
      attributeFormDefault="unqualified">
      <xs:element name="GetEncodingJobStatusResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EncodingJobStatus">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="SUCCESS"/>
                  <xs:enumeration value="FAILED"/>
                  <xs:enumeration value="IN_PROGRESS"/>
                  <xs:enumeration value="CANCELLED"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="EncodingProgress" minOccurs="0">
              <xs:simpleType>
                <xs:restriction base="xs:unsignedShort">
                  <xs:minInclusive value="0"/>
                  <xs:maxInclusive value="100"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
  </types>
  <message name="EncoderControlWS_CreateEncodingJob">
    <part name="CreateEncodingJob" element="tns:CreateEncodingJob"/>
  </message>
  <message name="EncoderControlWS_CreateEncodingJobResponse">
    <part name="CreateEncodingJobResponse" element="tns:CreateEncodingJobResponse"/>
  </message>
  <message name="EncoderControlWS_GetEncodingJobStatus">
    <part name="GetEncodingJobStatus" element="tns:GetEncodingJobStatus"/>
  </message>
  <message name="EncoderControlWS_GetEncodingJobStatusResponse">
    <part name="GetEncodingJobStatusResponse" element="tns:GetEncodingJobStatusResponse"/>
  </message>
  <message name="EncoderControlWS_GetEncodedAssetUrl">
    <part name="GetEncodedAssetUrl" element="tns:GetEncodedAssetUrl"/>
  </message>
  <message name="EncoderControlWS_GetEncodedAssetUrlResponse">
    <part name="GetEncodedAssetUrlResponse" element="tns:GetEncodedAssetUrlResponse"/>
  </message>
  <message name="EncoderControlWS_CancelEncodingJob">
    <part name="CancelEncodingJob" element="tns:CancelEncodingJob"/>
  </message>
  <message name="EncoderControlWS_CancelEncodingJobResponse"/>
  <message name="ExceptionWS">
    <part name="ExceptionWS" element="tns:ExceptionWS"/>
  </message>
  <portType name="EncoderControlWS">
    <operation name="CreateEncodingJob" parameterOrder="CreateEncodingJob">
      <input message="tns:EncoderControlWS_CreateEncodingJob"/>
      <output message="tns:EncoderControlWS_CreateEncodingJobResponse"/>
      <fault name="ExceptionWS" message="tns:ExceptionWS"/>
    </operation>
    <operation name="GetEncodingJobStatus" parameterOrder="GetEncodingJobStatus">
      <input message="tns:EncoderControlWS_GetEncodingJobStatus"/>
      <output message="tns:EncoderControlWS_GetEncodingJobStatusResponse"/>
      <fault name="ExceptionWS" message="tns:ExceptionWS"/>
    </operation>
    <operation name="GetEncodedAssetUrl" parameterOrder="GetEncodedAssetUrl">
      <input message="tns:EncoderControlWS_GetEncodedAssetUrl"/>
      <output message="tns:EncoderControlWS_GetEncodedAssetUrlResponse"/>
      <fault name="ExceptionWS" message="tns:ExceptionWS"/>
    </operation>
    <operation name="CancelEncodingJob" parameterOrder="CancelEncodingJob">
      <input message="tns:EncoderControlWS_CancelEncodingJob"/>
      <output message="tns:EncoderControlWS_CancelEncodingJobResponse"/>
      <fault name="ExceptionWS" message="tns:ExceptionWS"/>
    </operation>
  </portType>
  <binding name="EncoderControlWSBinding" type="tns:EncoderControlWS">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="CreateEncodingJob">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="ExceptionWS">
        <soap:fault name="ExceptionWS" use="literal"/>
      </fault>
    </operation>
    <operation name="GetEncodingJobStatus">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="ExceptionWS">
        <soap:fault name="ExceptionWS" use="literal"/>
      </fault>
    </operation>
    <operation name="GetEncodedAssetUrl">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="ExceptionWS">
        <soap:fault name="ExceptionWS" use="literal"/>
      </fault>
    </operation>
    <operation name="CancelEncodingJob">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="ExceptionWS">
        <soap:fault name="ExceptionWS" use="literal"/>
      </fault>
    </operation>
  </binding>
  <service name="EncoderControlWS">
    <port binding="tns:EncoderControlWSBinding" name="EncoderControlWSPort"/>
  </service>
</definitions>
