<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="action" default="insert">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="insert"/>
        <xs:enumeration value="update"/>
        <xs:enumeration value="delete"/>
        <xs:enumeration value="snapshot"/>
        <xs:enumeration value="block"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="artist">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="artistNameType">
          <xs:attribute name="id">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="1024"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="artist_info">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" minOccurs="0"/>
        <xs:element ref="id" minOccurs="0"/>
        <xs:element ref="bio" minOccurs="0"/>
        <xs:element ref="url" minOccurs="0"/>
        <xs:element ref="artwork" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="artwork">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="type" minOccurs="0"/>
        <xs:element ref="path"/>
        <xs:element ref="copyright" minOccurs="0"/>
        <xs:element ref="size" minOccurs="0"/>
        <xs:element ref="height" minOccurs="0"/>
        <xs:element ref="width" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="batch">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="product" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="snocap_version" type="xs:string" use="required" fixed="1.4.3"/>
      <xs:attribute name="account_id" type="xs:integer"/>
      <xs:attribute name="org_id" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="bio">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="1024"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="bitrate">
    <xs:simpleType>
      <xs:restriction base="xs:long"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="bonus" default="false">
    <xs:simpleType>
      <xs:restriction base="xs:boolean"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="channels" type="xs:short"/>
  <xs:element name="claims">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="territory" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="codec">
    <xs:simpleType>
      <xs:restriction base="xs:string"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="composer">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="artistNameType">
          <xs:attribute name="id">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="1024"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="conductor">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="artistNameType">
          <xs:attribute name="id">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="1024"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="content_size">
    <xs:simpleType>
      <xs:restriction base="xs:long"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="contributors">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="artist" maxOccurs="unbounded"/>
        <xs:element ref="featured_artist" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="orchestra" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="conductor" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="composer" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="copyright">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="cover" default="false">
    <xs:simpleType>
      <xs:restriction base="xs:boolean"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="date">
    <xs:simpleType>
      <xs:restriction base="xs:dateTime"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="description">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="1024"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="digital_publish_date">
    <xs:simpleType>
      <xs:restriction base="xs:date"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="duration" type="xs:duration"/>
  <xs:element name="effective_day_end" type="xs:date"/>
  <xs:element name="effective_day_start" type="xs:date"/>
  <xs:element name="explicit_lyrics" default="false">
    <xs:simpleType>
      <xs:restriction base="xs:boolean"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="featured_artist">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="artistNameType">
          <xs:attribute name="id">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="1024"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="action" minOccurs="0"/>
        <xs:element ref="name"/>
        <xs:element name="format">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="mp3"/>
              <xs:enumeration value="wav"/>
              <xs:enumeration value="wma"/>
              <xs:enumeration value="wmv"/>
              <xs:enumeration value="mov"/>
              <xs:enumeration value="mpg"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element ref="path" minOccurs="0"/>
        <xs:element ref="codec" minOccurs="0"/>
        <xs:element ref="type" minOccurs="0"/>
        <xs:element ref="sha1" minOccurs="0"/>
        <xs:element name="duration" type="xs:duration" minOccurs="0"/>
        <xs:element ref="bitrate" minOccurs="0"/>
        <xs:element ref="frequency" minOccurs="0"/>
        <xs:element ref="channels" minOccurs="0"/>
        <xs:element ref="size" minOccurs="0"/>
        <xs:element ref="content_size" minOccurs="0"/>
        <xs:element ref="source" minOccurs="0"/>
        <xs:element ref="hash" minOccurs="0"/>
        <xs:element ref="is_clip" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="flags">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="live" minOccurs="0"/>
        <xs:element ref="explicit_lyrics" minOccurs="0"/>
        <xs:element ref="cover" minOccurs="0"/>
        <xs:element ref="bonus" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="for_track_sale" type="xs:boolean" default="false"/>
  <xs:element name="for_album_sale" type="xs:boolean" default="false"/>
  <xs:element name="frequency" type="xs:decimal"/>
  <xs:element name="genre">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="sub_genre">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="hash">
    <xs:complexType mixed="true">
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string"/>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="height">
    <xs:simpleType>
      <xs:restriction base="xs:long"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="id">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="100"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="publication_genre">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="blues"/>
        <xs:enumeration value="classical"/>
        <xs:enumeration value="country"/>
        <xs:enumeration value="electronic"/>
        <xs:enumeration value="hiphop"/>
        <xs:enumeration value="indie"/>
        <xs:enumeration value="jazz"/>
        <xs:enumeration value="latin"/>
        <xs:enumeration value="pop"/>
        <xs:enumeration value="punk"/>
        <xs:enumeration value="rnb"/>
        <xs:enumeration value="reggae"/>
        <xs:enumeration value="rock"/>
        <xs:enumeration value="soul"/>
        <xs:enumeration value="world"/>
        <xs:enumeration value="other"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="is_clip" type="xs:boolean"/>
  <xs:element name="isrc">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="13"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="label">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="labelNameType">
          <xs:attribute name="id">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="1024"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="label_info">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" minOccurs="0"/>
        <xs:element ref="id" minOccurs="0"/>
        <xs:element ref="bio" minOccurs="0"/>
        <xs:element ref="url" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="live" default="false">
    <xs:simpleType>
      <xs:restriction base="xs:boolean"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="name">
    <xs:simpleType>
      <xs:restriction base="xs:string"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="number">
    <xs:simpleType>
      <xs:restriction base="xs:short"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="orchestra">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="artistNameType">
          <xs:attribute name="id">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="1024"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="participant">
    <xs:complexType mixed="true">
      <xs:attribute name="id">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="1024"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="role" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="512"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="path">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_id">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100"/>
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="price">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="50"/>
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="price_code">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="255"/>
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="pricing">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="price"/>
        <xs:element ref="price_code" minOccurs="0"/>
        <xs:element ref="effective_day_start" minOccurs="0"/>
        <xs:element ref="effective_day_end" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="product">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="action" minOccurs="0"/>
        <xs:element ref="product_id" minOccurs="0"/>
        <xs:element ref="upc"/>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="artist_info" minOccurs="0"/>
        <xs:element ref="label_info" minOccurs="0"/>
        <xs:sequence minOccurs="0">
          <xs:element ref="title"/>
          <xs:element ref="version_title" minOccurs="0"/>
          <xs:element ref="label"/>
          <xs:element ref="copyright" minOccurs="0"/>
          <xs:element ref="recording_copyright" minOccurs="0"/>
          <xs:element ref="release_date" minOccurs="0"/>
          <xs:element ref="digital_publish_date" minOccurs="0"/>
          <xs:element ref="flags" minOccurs="0"/>
          <xs:element ref="publication_info" minOccurs="0"/>
          <xs:element ref="genre"/>
          <xs:element ref="subgenre" minOccurs="0"/>
          <xs:element ref="set" minOccurs="0"/>
          <xs:element ref="duration" minOccurs="0"/>
          <xs:element ref="contributors" minOccurs="0"/>
          <xs:element ref="artwork"/>
          <xs:element ref="claims"/>
          <xs:choice>
            <xs:element ref="pricing" minOccurs="0"/>
          </xs:choice>
          <xs:element ref="product_track" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="product_track">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="action" minOccurs="0"/>
        <xs:element ref="track_id" minOccurs="0"/>
        <xs:element ref="isrc" minOccurs="0"/>
        <xs:element ref="title"/>
        <xs:element ref="publication_info" minOccurs="0"/>
        <xs:element ref="genre"/>
        <xs:element ref="sub_genre" minOccurs="0"/>
        <xs:element ref="artist_info" minOccurs="0"/>
        <xs:element ref="label_info" minOccurs="0"/>
        <xs:element ref="version_title" minOccurs="0"/>
        <xs:element ref="label" minOccurs="0"/>
        <xs:element ref="copyright" minOccurs="0"/>
        <xs:element ref="recording_copyright" minOccurs="0"/>
        <xs:element ref="flags" minOccurs="0"/>
        <xs:element ref="volume"/>
        <xs:element ref="number"/>
        <xs:element ref="duration" minOccurs="0"/>
        <xs:element ref="digital_publish_date" minOccurs="0"/>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="contributors"/>
        <xs:element ref="file"/>
        <xs:element ref="claims"/>
        <xs:choice>
          <xs:element ref="ruleset" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="pricing" minOccurs="0"/>
        </xs:choice>
        <xs:element ref="for_track_sale" minOccurs="0"/>
        <xs:element ref="for_album_sale" minOccurs="0"/>
        <xs:element ref="asset_type" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="publication_info">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="publication_genre"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="recording_copyright">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="release_date">
    <xs:simpleType>
      <xs:restriction base="xs:date"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="ruleset">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="256"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="set" type="xs:short"/>
  <xs:element name="sha1" type="xs:string"/>
  <xs:element name="size">
    <xs:simpleType>
      <xs:restriction base="xs:long"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="source">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="source_type" minOccurs="0"/>
        <xs:element ref="date" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="source_type">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="256"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="subgenre">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="territory">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="territoryType">
          <xs:attribute name="action" default="include">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="exclude"/>
                <xs:enumeration value="include"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="title">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="1024"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="track_id">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="64"/>
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="type">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="30"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="volume" type="xs:integer"/>
  <xs:element name="upc">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="20"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="url">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="100"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="version_title">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="512"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="width">
    <xs:simpleType>
      <xs:restriction base="xs:long"/>
    </xs:simpleType>
  </xs:element>
  <xs:simpleType name="artistNameType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="512"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="labelNameType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="1024"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="territoryType">
    <xs:restriction base="xs:string">
      <xs:minLength value="2"/>
      <xs:maxLength value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="asset_type">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="audio"/>
        <xs:enumeration value="video"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>
