<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Files" targetNamespace="http://api.dmds.com/api/v1/schemas/files" elementFormDefault="qualified" xmlns="http://api.dmds.com/api/v1/schemas/files" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <!-- Files type definition -->
  <xs:complexType name="Files">
    <xs:all>
      <xs:element name="Audios" nillable="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Audio" type="Audio" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="AdAudio" type="AdAudio" minOccurs="0" maxOccurs="unbounded" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element name="Videos" nillable="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Video" type="Video" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="AdVideo" type="AdVideo" minOccurs="0" maxOccurs="unbounded" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element name="Documents" nillable="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Document" type="Document" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="AdDocument" type="AdDocument" minOccurs="0" maxOccurs="unbounded" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element name="Image" nillable="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Image" type="Image" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="AdImage" type="AdImage" minOccurs="0" maxOccurs="unbounded" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <!-- Audio type definition -->
  <xs:complexType name="Audio">
    <xs:all>
      <xs:element name="AudioID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Status" type="xs:integer" />
      <xs:element name="TrackNumber" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Filename" type="xs:string" />
      <xs:element name="Length" type="xs:string" />
      <xs:element name="Producer" type="xs:string" />
      <xs:element name="Artist" type="xs:string" />
      <xs:element name="Album" type="xs:string" />
      <xs:element name="FileNameMediaValueID" type="xs:integer" />
      <xs:element name="Intro" type="xs:string" />
      <xs:element name="Outro" type="xs:string" />
      <xs:element name="Website" type="xs:string" />
      <xs:element name="CopyrightOwner" type="xs:string" />
      <xs:element name="BDSChart" type="xs:string" />
      <xs:element name="BPM" type="xs:string" />
      <xs:element name="Composer" type="xs:string" />
      <xs:element name="ContributingArtists" type="xs:string" />
      <xs:element name="DiscNumber" type="xs:integer" />
      <xs:element name="Genre" type="xs:string" />
      <xs:element name="ISRCCode" type="xs:string" />
      <xs:element name="Lyrics" type="xs:string" />
      <xs:element name="MAPL" type="xs:string" />
      <xs:element name="MAPLArtist" type="xs:integer" />
      <xs:element name="MAPLLyrics" type="xs:integer" />
      <xs:element name="MAPLMusic" type="xs:integer" />
      <xs:element name="MAPLProduction" type="xs:integer" />
      <xs:element name="Name" type="xs:string" />
      <xs:element name="PlatinumBlueRating" type="xs:string" />
      <xs:element name="Publisher" type="xs:string" />
      <xs:element name="SampleRate" type="xs:string" />
      <xs:element name="Songwriter" type="xs:string" />
      <xs:element name="LyricsRating" type="xs:string" />
      <xs:element name="Publicity" type="xs:string" />
      <xs:element name="VideoLink" type="xs:string" />
      <xs:element name="CopyrightDate" type="xs:string" />
      <xs:element name="Lyricist" type="xs:string" />
      <xs:element name="BitDepth" type="xs:string" />
      <xs:element name="GridNumber" type="xs:string" />
      <xs:element name="UPC" type="xs:string" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- AdAudio type definition -->
  <xs:complexType name="AdAudio">
    <xs:all>
      <xs:element name="AudioID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Status" type="xs:integer" />
      <xs:element name="TrackNumber" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Brand" type="xs:string" />
      <xs:element name="Filename" type="xs:string" />
      <xs:element name="ISCI" type="xs:string" />
      <xs:element name="OrderNumber" type="xs:string" />
      <xs:element name="ProductionHouse" type="xs:string" />
      <xs:element name="FilenameMediaValueID" type="xs:integer" />
      <xs:element name="Length" type="xs:string" />
      <xs:element name="Intro" type="xs:string" />
      <xs:element name="Outro" type="xs:string" />
      <xs:element name="Website" type="xs:string" />
      <xs:element name="CopyrightOwner" type="xs:string" />
      <xs:element name="Name" type="xs:string" />
      <xs:element name="SampleRate" type="xs:string" />
      <xs:element name="CopyrightDate" type="xs:string" />
      <xs:element name="DirectResponse" type="xs:string" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- Video type definition -->
  <xs:complexType name="Video">
    <xs:all>
      <xs:element name="VideoID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Artist" type="xs:string" />
      <xs:element name="Album" type="xs:string" />
      <xs:element name="AlbumReleaseYear" type="xs:integer" />
      <xs:element name="Distributor" type="xs:string" />
      <xs:element name="ArtistNationality" type="xs:string" />
      <xs:element name="ProductionHouse" type="xs:string" />
      <xs:element name="Director" type="xs:string" />
      <xs:element name="Producer" type="xs:string" />
      <xs:element name="Funding" type="xs:string" />
      <xs:element name="Language" type="xs:string" />
      <xs:element name="ClosedCaption" type="xs:string" />
      <xs:element name="Status" type="xs:integer" />
      <xs:element name="Composer" type="xs:string" />
      <xs:element name="ContributingArtists" type="xs:string" />
      <xs:element name="FileName" type="xs:string" />
      <xs:element name="FileNameMediaValueID" type="xs:integer" />
      <xs:element name="Genre" type="xs:string" />
      <xs:element name="ISRCCode" type="xs:string" />
      <xs:element name="Length" type="xs:string" />
      <xs:element name="Lyrics" type="xs:string" />
      <xs:element name="MAPL" type="xs:string" />
      <xs:element name="MAPLArtist" type="xs:integer" />
      <xs:element name="MAPLLyrics" type="xs:integer" />
      <xs:element name="MAPLMusic" type="xs:integer" />
      <xs:element name="MAPLProduction" type="xs:integer" />
      <xs:element name="Publisher" type="xs:string" />
      <xs:element name="Songwriter" type="xs:string" />
      <xs:element name="QualityControl" type="xs:string" />
      <xs:element name="VideoSDHD" type="xs:string" />
      <xs:element name="ProductionCompany" type="xs:string" />
      <xs:element name="RightsSociety" type="xs:string" />
      <xs:element name="CopyrightDate" type="xs:string" />
      <xs:element name="Cinematographer" type="xs:string" />
      <xs:element name="SpecialFX" type="xs:string" />
      <xs:element name="Choreographer" type="xs:string" />
      <xs:element name="UPC" type="xs:string" />
      <xs:element name="VideoAspect" type="xs:string" />
      <xs:element name="AudioConfig" type="xs:string" />
      <xs:element name="ArtistType" type="xs:string" />
      <xs:element name="FrameRate" type="xs:string" />
      <xs:element name="Version" type="xs:string" />
      <xs:element name="ReleaseYear" type="xs:string" />
      <xs:element name="GridNumber" type="xs:string" />
      <xs:element name="QualityControlStatus" type="xs:integer" />
      <xs:element name="SCC" type="xs:string" />
      <xs:element name="Direction" type="xs:string" />
      <xs:element name="Facilities" type="xs:string" />
      <xs:element name="MTVUseAuthorization" type="xs:string" />
      <xs:element name="MTVUseAuthorization2" type="xs:string" />
      <xs:element name="Slate" type="xs:string" />
      <xs:element name="AFD" type="xs:string" />
      <xs:element name="CopyrightOwner" type="xs:string" />
      <xs:element name="SubmissionStatus" type="xs:integer" />
      <xs:element name="SOM" type="xs:string" />
      <xs:element name="EOM" type="xs:string" />
      <xs:element name="Duration" type="xs:string" />
      <xs:element name="SourceLoudness" type="xs:integer" />
      <xs:element name="SourcePeak" type="xs:integer" />
      <xs:element name="MusicChoiceUseAuthorization" type="xs:integer" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- AdVideo type definition -->
  <xs:complexType name="AdVideo">
    <xs:all>
      <xs:element name="VideoID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Distributor" type="xs:string" />
      <xs:element name="ProductionHouse" type="xs:string" />
      <xs:element name="Director" type="xs:string" />
      <xs:element name="Producer" type="xs:string" />
      <xs:element name="Language" type="xs:string" />
      <xs:element name="ClosedCaption" type="xs:string" />
      <xs:element name="Status" type="xs:integer" />
      <xs:element name="ISCI" type="xs:string" />
      <xs:element name="JobNumber" type="xs:string" />
      <xs:element name="FileName" type="xs:string" />
      <xs:element name="FileNameMediaValueID" type="xs:integer" />
      <xs:element name="Length" type="xs:string" />
      <xs:element name="FrameRate" type="xs:string" />
      <xs:element name="Type" type="xs:string" />
      <xs:element name="Brand" type="xs:string" />
      <xs:element name="QualityControl" type="xs:string" />
      <xs:element name="VideoSDHD" type="xs:string" />
      <xs:element name="AudioConfig" type="xs:string" />
      <xs:element name="SourceLoudness" type="xs:decimal" />
      <xs:element name="SourcePeak" type="xs:decimal" />
      <xs:element name="SCC" type="xs:string" />
      <xs:element name="TelecasterNumber" type="xs:string" />
      <xs:element name="SOM" type="xs:string" />
      <xs:element name="EOM" type="xs:string" />
      <xs:element name="Duration" type="xs:string" />
      <xs:element name="Slate" type="xs:string" />
      <xs:element name="AFD" type="xs:string" />
      <xs:element name="QualityControlStatus" type="xs:string" />
      <xs:element name="DirectResponse" type="xs:string" />
      <xs:element name="DescriptiveVideo" type="xs:string" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- Document type definition -->
  <xs:complexType name="Document">
    <xs:all>
      <xs:element name="DocumentID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Filename" type="xs:string" />
      <xs:element name="FilenameMediaValueID" type="xs:integer" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- AdDocument type definition -->
  <xs:complexType name="AdDocument">
    <xs:all>
      <xs:element name="DocumentID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Filename" type="xs:string" />
      <xs:element name="FilenameMediaValueID" type="xs:integer" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- Image type definition -->
  <xs:complexType name="Image">
    <xs:all>
      <xs:element name="ImageID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Caption" type="xs:string" />
      <xs:element name="Filename" type="xs:string" />
      <xs:element name="FilenameMediaValueID" type="xs:integer" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
  <!-- AdImage type definition -->
  <xs:complexType name="AdImage">
    <xs:all>
      <xs:element name="ImageID" type="xs:integer" />
      <xs:element name="CreationDate" type="xs:string" />
      <xs:element name="MetaTypeID" type="xs:integer" />
      <xs:element name="Owner" type="xs:integer" />
      <xs:element name="IsLocked" type="xs:integer" />
      <xs:element name="IsShared" type="xs:integer" />
      <xs:element name="FileStateID" type="xs:integer" />
      <xs:element name="Title" type="xs:string" />
      <xs:element name="Caption" type="xs:string" />
      <xs:element name="Filename" type="xs:string" />
      <xs:element name="FilenameMediaValueID" type="xs:integer" />
      <xs:element name="MediaFileStateID" type="xs:int" />
      <xs:element name="FileState" type="xs:string" />
    </xs:all>
  </xs:complexType>
</xs:schema>