<?xml version="1.0" encoding="UTF-8" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:uc="http://api.uclassify.com/1/RequestSchema"
           targetNamespace="http://api.uclassify.com/1/RequestSchema"
           xml:lang="EN"
           version="1.00"
           finalDefault=""
           blockDefault="#all"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

  <xs:include schemaLocation="../common/CallLists.xsd"/>
  <xs:include schemaLocation="../common/Text.xsd"/>

  <xs:complexType name="WebReadCallList">
    <xs:complexContent>
      <xs:extension base="uc:ReadCallList">
        <xs:attribute name="readApiKey" type="xs:string" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="WebWriteCallList">
    <xs:complexContent>
      <xs:extension base="uc:WriteCallList">
        <xs:attribute name="writeApiKey" type="uc:Base64String" use ="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="uclassify">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="texts" type="uc:TextList" minOccurs="0" maxOccurs="1"/>
        <xs:choice>
          <xs:element name="readCalls" type="uc:WebReadCallList"/>
          <xs:element name="writeCalls" type="uc:WebWriteCallList"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="version" type="xs:decimal" use="required"/>
    </xs:complexType>

    <xs:unique name="uniqueTexts">
      <xs:selector xpath="uc:texts/*"/>
      <xs:field xpath="@id"/>
    </xs:unique>

    <xs:unique name="uniqueReadCalls">
      <xs:selector xpath="uc:readCalls/*"/>
      <xs:field xpath="@id"/>
    </xs:unique>

    <xs:unique name="uniqueWriteCalls">
      <xs:selector xpath="uc:writeCalls/*"/>
      <xs:field xpath="@id"/>
    </xs:unique>

    <xs:key name="textIdKey">
      <xs:selector xpath="uc:texts/*"/>
      <xs:field xpath="@id"/>
    </xs:key>

    <xs:keyref name="readCallsTextIdKeyRef" refer="uc:textIdKey">
      <xs:selector xpath="uc:readCalls/*"/>
      <xs:field xpath="@textId"/>
    </xs:keyref>

    <xs:keyref name="writeCallsTextIdKeyRef" refer="uc:textIdKey">
      <xs:selector xpath="uc:writeCalls/*"/>
      <xs:field xpath="@textId"/>
    </xs:keyref>

  </xs:element>
</xs:schema>