<?xml version="1.0" encoding="UTF-8"?>
<!--
  Schema for Hexillion authentication XML output, version 2
  Revised 2016-06-27
  MIME type: application/vnd.hexillion.auth-v2+xml
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="https://hexillion.com/namespaces/xml/auth/2" xmlns:auth="https://hexillion.com/namespaces/xml/auth/2">
  <xs:element name="AuthResult" type="auth:AuthResultContent"/>
  <xs:complexType name="AuthResultContent">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="auth:ErrorCode"/>
      <xs:element ref="auth:Message"/>
      <xs:element ref="auth:SessionKey"/>
      <xs:element ref="auth:Accounting"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="ErrorCode" type="auth:ErrorCodeContent"/>
  <xs:element name="Message" type="xs:string"/>
  <xs:element name="SessionKey" type="xs:string"/>
  <xs:element name="Accounting" type="auth:AccountingContent"/>
  <xs:simpleType name="ErrorCodeContent">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Success"/>
      <xs:enumeration value="AuthenticationFailed"/>
      <xs:enumeration value="InvalidSessionKey"/>
      <xs:enumeration value="Unexpected"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AccountingContent">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="auth:QueryDate"/>
      <xs:element ref="auth:QueryCost"/>
      <xs:element ref="auth:QueryCostDetails"/>
      <xs:element ref="auth:Username"/>
      <xs:element ref="auth:UserIPAddress"/>
      <xs:element ref="auth:CurrentBalance"/>
      <xs:element ref="auth:AvailableBalance"/>
      <xs:element ref="auth:BalanceAfterLastRefill"/>
      <xs:element ref="auth:LastRefillDate"/>
      <xs:element ref="auth:EstimatedDepletionDate"/>
      <xs:element ref="auth:UsageRateSinceLastRefill"/>
      <xs:element ref="auth:NextRefillDate"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="QueryDate" type="xs:dateTime"/>
  <xs:element name="QueryCost" type="auth:ServiceUnitContent"/>
  <xs:element name="QueryCostDetails" type="auth:QueryCostDetailsContent"/>
  <xs:element name="Username" type="xs:string"/>
  <xs:element name="UserIPAddress" type="auth:IPAddressContent"/>
  <xs:element name="CurrentBalance" type="auth:ServiceUnitContent"/>
  <xs:element name="AvailableBalance" type="auth:ServiceUnitContent"/>
  <xs:element name="BalanceAfterLastRefill" type="auth:ServiceUnitContent"/>
  <xs:element name="LastRefillDate" type="xs:dateTime"/>
  <xs:element name="EstimatedDepletionDate" type="xs:dateTime"/>
  <xs:element name="UsageRateSinceLastRefill" type="auth:ServiceUnitContent"/>
  <xs:element name="NextRefillDate" type="xs:dateTime"/>
  <xs:simpleType name="ServiceUnitContent">
    <xs:restriction base="xs:decimal"/>
  </xs:simpleType>
  <xs:simpleType name="IPAddressContent">
    <xs:union memberTypes="auth:IPv4AddressContent auth:IPv6AddressContent"/>
  </xs:simpleType>
  <xs:simpleType name="IPv4AddressContent">
    <xs:restriction base="xs:string">
      <xs:pattern value="(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="IPv6AddressContent">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Fa-f0-9]{1,4}(:[A-Fa-f0-9]{1,4}){7}|:(:[A-Fa-f0-9]{1,4}){1,7}|([A-Fa-f0-9]{1,4}:){1,7}:|::|[A-Fa-f0-9]{1,4}:(:[A-Fa-f0-9]{1,4}){1,6}|([A-Fa-f0-9]{1,4}:){2}(:[A-Fa-f0-9]{1,4}){1,5}|([A-Fa-f0-9]{1,4}:){3}(:[A-Fa-f0-9]{1,4}){1,4}|([A-Fa-f0-9]{1,4}:){4}(:[A-Fa-f0-9]{1,4}){1,3}|([A-Fa-f0-9]{1,4}:){5}(:[A-Fa-f0-9]{1,4}){1,2}|([A-Fa-f0-9]{1,4}:){6}:[A-Fa-f0-9]{1,4}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="QueryCostDetailsContent">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" ref="auth:QueryCostLine"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="QueryCostLine" type="auth:QueryCostLineContent"/>
  <xs:complexType name="QueryCostLineContent">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="auth:ItemCode"/>
      <xs:element ref="auth:Description"/>
      <xs:element ref="auth:Amount"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="ItemCode" type="xs:string"/>
  <xs:element name="Description" type="xs:string"/>
  <xs:element name="Amount" type="auth:ServiceUnitContent"/>
</xs:schema>
<!-- end -->
