<!--
		SIF Infrastructure Specification 3.6

		(June 29, 2023)
		
		Infrastructure Version: 3.6
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sifassociation.org/infrastructure/3.6" targetNamespace="http://www.sifassociation.org/infrastructure/3.6" elementFormDefault="qualified" version="3.6"
>
  <!--SIFInfrastructureServices-->


  <!--environment-->

  <xs:complexType name="environmentType">
    <xs:sequence>
      <xs:element name="fingerprint" minOccurs="0" type="xs:token" />
      <xs:element name="sessionToken" minOccurs="0" type="xs:token" />
      <xs:element name="solutionId" minOccurs="0" type="xs:token" />
      <xs:element name="defaultZone" minOccurs="0" type="defaultZoneType" />
      <xs:element name="authenticationMethod" minOccurs="0" type="xs:token" />
      <xs:element name="instanceId" minOccurs="0" type="xs:token" />
      <xs:element name="userToken" minOccurs="0" type="xs:string" />
      <xs:element name="consumerName" minOccurs="0" type="xs:string" />
      <xs:element name="applicationInfo" minOccurs="0" type="applicationInfoType" />
      <xs:element name="infrastructureServices" minOccurs="0" type="infrastructureServicesType" />
      <xs:element name="provisionedZones" minOccurs="0" type="provisionedZonesType" />
    </xs:sequence>
    <xs:attribute name="type" use="optional" type="environmentTypeType" />
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="environment" type="environmentType">
    <xs:key name="environmentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="environmentCollectionType">
    <xs:sequence>
      <xs:element name="environment" type="environmentType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="environments" type="environmentCollectionType" />


  <!--provisionRequest-->

  <xs:complexType name="provisionRequestType">
    <xs:sequence>
      <xs:element name="provisionedZones" type="provisionedZonesType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
    <xs:attribute name="completionStatus" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="ACCEPTED" />
          <xs:enumeration value="MIXED" />
          <xs:enumeration value="REJECTED" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="provisionRequest" type="provisionRequestType">
    <xs:key name="provisionRequestKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="provisionRequestCollectionType">
    <xs:sequence>
      <xs:element name="provisionRequest" type="provisionRequestType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="provisionRequests" type="provisionRequestCollectionType" />


  <!--queue-->

  <xs:complexType name="queueType">
    <xs:sequence>
      <xs:element name="polling" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="IMMEDIATE" />
            <xs:enumeration value="LONG" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ownerId" minOccurs="0" type="uuidType" />
      <xs:element name="name" minOccurs="0" type="xs:token" />
      <xs:element name="queueUri" minOccurs="0" type="xs:anyURI" />
      <xs:element name="ownerUri" minOccurs="0" type="xs:anyURI" />
      <xs:element name="idleTimeout" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="minWaitTime" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="maxConcurrentConnections" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="created" minOccurs="0" type="xs:dateTime" />
      <xs:element name="lastAccessed" minOccurs="0" type="xs:dateTime" />
      <xs:element name="lastModified" minOccurs="0" type="xs:dateTime" />
      <xs:element name="messageCount" minOccurs="0" type="xs:unsignedInt" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="queue" type="queueType">
    <xs:key name="queueKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="queueCollectionType">
    <xs:sequence>
      <xs:element name="queue" type="queueType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="queues" type="queueCollectionType" />


  <!--subscription-->

  <xs:complexType name="subscriptionType">
    <xs:sequence>
      <xs:element name="zoneId" type="xs:token" />
      <xs:element name="contextId" minOccurs="0" type="xs:token" />
      <xs:element name="serviceType" type="serviceTypeType" />
      <xs:element name="serviceSubType" minOccurs="0" nillable="true" type="serviceSubTypeType" />
      <xs:element name="messageType" minOccurs="0" nillable="true" type="messageTypeType" />
      <xs:element name="serviceName" type="xs:token" />
      <xs:element name="queueId" type="xs:token" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="subscription" type="subscriptionType">
    <xs:key name="subscriptionKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="subscriptionCollectionType">
    <xs:sequence>
      <xs:element name="subscription" type="subscriptionType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="subscriptions" type="subscriptionCollectionType" />


  <!--job-->

  <xs:complexType name="jobType">
    <xs:sequence>
      <xs:element name="name" type="xs:token" />
      <xs:element name="description" minOccurs="0" type="xs:string" />
      <xs:element name="state" minOccurs="0" type="jobStateType" />
      <xs:element name="stateDescription" minOccurs="0" type="xs:string" />
      <xs:element name="created" minOccurs="0" type="xs:dateTime" />
      <xs:element name="lastModified" minOccurs="0" type="xs:dateTime" />
      <xs:element name="timeout" minOccurs="0" type="xs:duration" />
      <xs:element name="phases" minOccurs="0" type="phaseCollectionType" />
      <xs:element name="initialization" minOccurs="0" type="initializationType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="job" type="jobType">
    <xs:key name="jobKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="jobCollectionType">
    <xs:sequence>
      <xs:element name="job" type="jobType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="jobs" type="jobCollectionType" />


  <!--state-->

  <xs:complexType name="stateType">
    <xs:complexContent>
      <xs:extension base="stateCommonType" />
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="state" type="stateType" />

  <xs:complexType name="stateCollectionType">
    <xs:sequence>
      <xs:element name="state" type="stateType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="states" type="stateCollectionType" />


  <!--UtilityServices-->


  <!--alert-->

  <xs:complexType name="alertType">
    <xs:sequence>
      <xs:element name="reporter" type="xs:token" />
      <xs:element name="cause" minOccurs="0" type="xs:token" />
      <xs:element name="exchange">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="REQUEST" />
            <xs:enumeration value="RESPONSE" />
            <xs:enumeration value="EVENT" />
            <xs:enumeration value="TIMEOUT" />
            <xs:enumeration value="OTHER" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="level">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="INFO" />
            <xs:enumeration value="STATECHANGE" />
            <xs:enumeration value="EVENT" />
            <xs:enumeration value="WARNING" />
            <xs:enumeration value="ERROR" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="description" minOccurs="0" type="xs:normalizedString" />
      <xs:element name="messageID" minOccurs="0" type="xs:token" />
      <xs:element name="body" minOccurs="0" type="xs:string" />
      <xs:element name="error" minOccurs="0" type="xs:string" />
      <xs:element name="xpath" minOccurs="0" type="xs:normalizedString" />
      <xs:element name="category" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="code" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="internal" minOccurs="0" type="xs:token" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="alert" type="alertType">
    <xs:key name="alertKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="alertCollectionType">
    <xs:sequence>
      <xs:element name="alert" type="alertType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="alerts" type="alertCollectionType" />


  <!--codeSet-->

  <xs:complexType name="codeSetType">
    <xs:sequence>
      <xs:element name="zone" type="xs:token" />
      <xs:element name="version" type="versionType" />
      <xs:element name="timestamp" type="xs:dateTime" />
      <xs:element name="source" minOccurs="0" type="uriType" />
      <xs:element name="codeItems" minOccurs="0" type="codeItemsType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          <xs:maxLength value="128" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="codeSet" type="codeSetType">
    <xs:key name="codeSetKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="codeSetCollectionType">
    <xs:sequence>
      <xs:element name="codeSet" type="codeSetType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="codeSets" type="codeSetCollectionType" />


  <!--namespace-->

  <xs:complexType name="namespaceType">
    <xs:sequence>
      <xs:element name="zone" type="xs:token" />
      <xs:element name="uri">
        <xs:simpleType>
          <xs:restriction base="xs:anyURI">
            <xs:maxLength value="2048" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="url">
        <xs:simpleType>
          <xs:restriction base="xs:anyURI">
            <xs:maxLength value="2048" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="namespace" type="namespaceType">
    <xs:key name="namespaceKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="namespaceCollectionType">
    <xs:sequence>
      <xs:element name="namespace" type="namespaceType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="namespaces" type="namespaceCollectionType" />


  <!--provider-->

  <xs:complexType name="providerType">
    <xs:sequence>
      <xs:element name="serviceType" type="serviceTypeType" />
      <xs:element name="serviceName" type="xs:token" />
      <xs:element name="contextId" type="xs:token" />
      <xs:element name="zoneId" type="xs:token" />
      <xs:element name="providerName" type="xs:token" />
      <xs:element name="querySupport" type="querySupportType" />
      <xs:element name="mimeTypes" minOccurs="0" type="mediaTypesType" />
      <xs:element name="endPoint" minOccurs="0" type="protocolType" />
      <xs:element name="supportedRequestTypes" minOccurs="0" type="supportedRequestsType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>

  <xs:element name="provider" type="providerType">
    <xs:key name="providerKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="providerCollectionType">
    <xs:sequence>
      <xs:element name="provider" type="providerType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="providers" type="providerCollectionType" />


  <!--xquery-->

  <xs:complexType name="xqueryType">
    <xs:sequence>
      <xs:element name="type">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="SINGULAR" />
            <xs:enumeration value="FORMULA" />
            <xs:enumeration value="EXTENDED" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="status">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="PENDING" />
            <xs:enumeration value="APPROVED" />
            <xs:enumeration value="DISALLOWED" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="qualifier" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="description" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="script">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="parameters" type="parametersType" />
      <xs:element name="returnType" nillable="true" type="xs:anyURI" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
  </xs:complexType>

  <xs:element name="xquery" type="xqueryType">
    <xs:key name="xqueryKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="xqueryCollectionType">
    <xs:sequence>
      <xs:element name="xquery" type="xqueryType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="xquerys" type="xqueryCollectionType" />


  <!--zone-->

  <xs:complexType name="zoneType">
    <xs:sequence>
      <xs:element name="description" minOccurs="0" type="xs:normalizedString" />
      <xs:element name="properties" minOccurs="0" type="propertiesType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
  </xs:complexType>

  <xs:element name="zone" type="zoneType">
    <xs:key name="zoneKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="zoneCollectionType">
    <xs:sequence>
      <xs:element name="zone" type="zoneType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="zones" type="zoneCollectionType" />


  <!--PrivacyServices-->


  <!--pod-->

  <xs:complexType name="podType">
    <xs:sequence>
      <xs:element name="podStatus">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Live" />
            <xs:enumeration value="Draft" />
            <xs:enumeration value="Pending" />
            <xs:enumeration value="Expired" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="podToken" type="gCoreLocalIdType" />
      <xs:element name="podVersion" type="xs:normalizedString" />
      <xs:element name="partyId" type="xs:normalizedString" />
      <xs:element name="privacyList" type="privacyListType" />
    </xs:sequence>
    <xs:attribute name="id" use="required" type="uuidType" />
  </xs:complexType>

  <xs:element name="pod" type="podType">
    <xs:key name="podKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="podCollectionType">
    <xs:sequence>
      <xs:element name="pod" type="podType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="pods" type="podCollectionType" />


  <!--Request-->


  <!--deleteRequest-->

  <xs:complexType name="deleteRequestType">
    <xs:sequence>
      <xs:element name="deletes" type="deleteIdCollectionType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="deleteRequest" type="deleteRequestType" />

  <xs:complexType name="deleteRequestCollectionType">
    <xs:sequence>
      <xs:element name="deleteRequest" type="deleteRequestType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="deleteRequests" type="deleteRequestCollectionType" />


  <!--Response-->


  <!--createResponse-->

  <xs:complexType name="createResponseType">
    <xs:sequence>
      <xs:element name="creates" type="createsType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="createResponse" type="createResponseType" />

  <xs:complexType name="createResponseCollectionType">
    <xs:sequence>
      <xs:element name="createResponse" type="createResponseType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="createResponses" type="createResponseCollectionType" />


  <!--deleteResponse-->

  <xs:complexType name="deleteResponseType">
    <xs:sequence>
      <xs:element name="deletes" type="deleteStatusCollectionType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="deleteResponse" type="deleteResponseType" />

  <xs:complexType name="deleteResponseCollectionType">
    <xs:sequence>
      <xs:element name="deleteResponse" type="deleteResponseType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="deleteResponses" type="deleteResponseCollectionType" />


  <!--error-->

  <xs:complexType name="errorType">
    <xs:complexContent>
      <xs:extension base="errorCommonType" />
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="error" type="errorType" />

  <xs:complexType name="errorCollectionType">
    <xs:sequence>
      <xs:element name="error" type="errorType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="errors" type="errorCollectionType" />


  <!--updateResponse-->

  <xs:complexType name="updateResponseType">
    <xs:sequence>
      <xs:element name="updates" type="updatesType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="updateResponse" type="updateResponseType" />

  <xs:complexType name="updateResponseCollectionType">
    <xs:sequence>
      <xs:element name="updateResponse" type="updateResponseType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="updateResponses" type="updateResponseCollectionType" />


  <!--adminDirective-->

  <xs:complexType name="adminDirectiveType">
    <xs:sequence>
      <xs:element name="timestamp" type="xs:dateTime" />
      <xs:element name="timeout" type="xs:duration" />
      <xs:element name="serviceName" type="xs:token" />
      <xs:element name="method" type="xs:token" />
      <xs:element name="methodParameters" minOccurs="0" type="methodParametersType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
  </xs:complexType>

  <xs:element name="adminDirective" type="adminDirectiveType">
    <xs:key name="adminDirectiveKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@id" />
    </xs:key>
  </xs:element>

  <xs:complexType name="adminDirectiveCollectionType">
    <xs:sequence>
      <xs:element name="adminDirective" type="adminDirectiveType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="adminDirectives" type="adminDirectiveCollectionType" />


  <!--gCoreEmailListType-->

  <xs:complexType name="gCoreEmailListType">
    <xs:sequence>
      <xs:element name="email" maxOccurs="unbounded" type="gCoreEmailType" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreEmailType-->

  <xs:simpleType name="gCoreEmailType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>


  <!--gCorePhoneNumberListType-->

  <xs:complexType name="gCorePhoneNumberListType">
    <xs:sequence>
      <xs:element name="phoneNumber" maxOccurs="unbounded" type="gCorePhoneNumberType" />
    </xs:sequence>
  </xs:complexType>


  <!--gCorePhoneNumberType-->

  <xs:complexType name="gCorePhoneNumberType">
    <xs:sequence>
      <xs:element name="number" type="xs:normalizedString" />
      <xs:element name="extension" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="listedStatus" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="preference" minOccurs="0" nillable="true" type="xs:unsignedInt" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreNameType-->

  <xs:complexType name="gCoreNameType">
    <xs:sequence>
      <xs:element name="title" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="familyName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="givenName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="otherGivenNames" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="familyNameFirst" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="preferredName" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreContactListType-->

  <xs:complexType name="gCoreContactListType">
    <xs:sequence>
      <xs:element name="contact" maxOccurs="unbounded" type="gCoreContactInfoType" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreContactInfoType-->

  <xs:complexType name="gCoreContactInfoType">
    <xs:sequence>
      <xs:element name="name" type="gCoreNameType" />
      <xs:element name="positionTitle" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="role" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="registrationDetails" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="qualifications" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="address" minOccurs="0" nillable="true" type="gCoreAddressType" />
      <xs:element name="emailList" minOccurs="0" nillable="true" type="gCoreEmailListType" />
      <xs:element name="phoneNumberList" minOccurs="0" nillable="true" type="gCorePhoneNumberListType" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreAddressType-->

  <xs:complexType name="gCoreAddressType">
    <xs:sequence>
      <xs:element name="effectiveFromDate" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="effectiveToDate" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="line1" type="xs:normalizedString" />
      <xs:element name="line2" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="line3" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="city" type="xs:normalizedString" />
      <xs:element name="stateProvince" minOccurs="0" nillable="true" type="gCoreStateProvinceType" />
      <xs:element name="country" minOccurs="0" nillable="true" type="gCoreCountryType" />
      <xs:element name="postalCode" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreAddressListType-->

  <xs:complexType name="gCoreAddressListType">
    <xs:sequence>
      <xs:element name="address" maxOccurs="unbounded" type="gCoreAddressType" />
    </xs:sequence>
  </xs:complexType>


  <!--gCoreCountryType-->

  <xs:simpleType name="gCoreCountryType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>


  <!--gCoreLocalIdType-->

  <xs:simpleType name="gCoreLocalIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>


  <!--gCoreStateProvinceIdType-->

  <xs:simpleType name="gCoreStateProvinceIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>


  <!--gCoreStateProvinceType-->

  <xs:simpleType name="gCoreStateProvinceType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>


  <!--gCoreGenderType-->

  <xs:simpleType name="gCoreGenderType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="M" />
      <xs:enumeration value="F" />
      <xs:enumeration value="X" />
      <xs:enumeration value="U" />
    </xs:restriction>
  </xs:simpleType>


  <!--privacyListType-->

  <xs:complexType name="privacyListType">
    <xs:sequence>
      <xs:element name="privacy" minOccurs="0" maxOccurs="unbounded" type="privacyType" />
    </xs:sequence>
  </xs:complexType>


  <!--privacyType-->

  <xs:complexType name="privacyType">
    <xs:sequence>
      <xs:element name="default">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="appIDList" minOccurs="0" nillable="true" type="appIDListType" />
      <xs:element name="adapterFingerprintList" minOccurs="0" nillable="true" type="adapterFingerprintListType" />
      <xs:element name="zoneContextList" minOccurs="0" nillable="true" type="zoneContextListType" />
      <xs:element name="endpointList" minOccurs="0" nillable="true" type="endpointListType" />
      <xs:element name="dataModelNamespace" minOccurs="0" nillable="true" type="xs:anyURI" />
      <xs:element name="dataModelVersionMin" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="dataModelVersionMax" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="privacyObligationsDocument" minOccurs="0" nillable="true" type="privacyObligationsDocumentType" />
    </xs:sequence>
  </xs:complexType>


  <!--privacyObligationsDocumentType-->

  <xs:complexType name="privacyObligationsDocumentType">
    <xs:sequence>
      <xs:element name="contract" minOccurs="0" nillable="true" type="contractType" />
      <xs:element name="legalRequirements" minOccurs="0" nillable="true" type="legalRequirementsType" />
      <xs:element name="technicalRequirements" minOccurs="0" nillable="true" type="technicalRequirementsType" />
      <xs:element name="dataController" minOccurs="0" nillable="true" type="dataControllerType" />
      <xs:element name="dataProcessor" minOccurs="0" nillable="true" type="dataProcessorType" />
      <xs:element name="dataSubProcessorList" minOccurs="0" nillable="true" type="dataSubProcessorListType" />
    </xs:sequence>
  </xs:complexType>


  <!--contractType-->

  <xs:complexType name="contractType">
    <xs:sequence>
      <xs:element name="contractURI" type="xs:anyURI" />
      <xs:element name="contractName" type="xs:normalizedString" />
      <xs:element name="dateValidFrom" type="xs:date" />
      <xs:element name="dateValidTo" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="contractVersion" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="lawList" type="lawListType" />
      <xs:element name="studentDataIPRights" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--lawListType-->

  <xs:complexType name="lawListType">
    <xs:sequence>
      <xs:element name="law" minOccurs="0" maxOccurs="unbounded" type="lawType" />
    </xs:sequence>
  </xs:complexType>


  <!--lawType-->

  <xs:complexType name="lawType">
    <xs:sequence>
      <xs:element name="lawName" type="xs:normalizedString" />
      <xs:element name="lawDescription" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--legalRequirementsType-->

  <xs:complexType name="legalRequirementsType">
    <xs:sequence>
      <xs:element name="clauseList" type="clauseListType" />
    </xs:sequence>
  </xs:complexType>


  <!--clauseListType-->

  <xs:complexType name="clauseListType">
    <xs:sequence>
      <xs:element name="clause" minOccurs="0" maxOccurs="unbounded" type="clauseType" />
    </xs:sequence>
  </xs:complexType>


  <!--clauseType-->

  <xs:complexType name="clauseType">
    <xs:sequence>
      <xs:element name="clauseLabel" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="clauseReference" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="clauseContent" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="obligationList" minOccurs="0" nillable="true" type="obligationListType" />
    </xs:sequence>
  </xs:complexType>


  <!--benchmarkListType-->

  <xs:complexType name="benchmarkListType">
    <xs:sequence>
      <xs:element name="benchmark" minOccurs="0" maxOccurs="unbounded" type="benchmarkType" />
    </xs:sequence>
  </xs:complexType>


  <!--benchmarkType-->

  <xs:complexType name="benchmarkType">
    <xs:sequence>
      <xs:element name="benchmarkName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="benchmarkId" minOccurs="0" nillable="true" type="gCoreLocalIdType" />
      <xs:element name="benchmarkDescription" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="benchmarkURL" minOccurs="0" nillable="true" type="xs:anyURI" />
    </xs:sequence>
  </xs:complexType>


  <!--obligationListType-->

  <xs:complexType name="obligationListType">
    <xs:sequence>
      <xs:element name="obligation" minOccurs="0" maxOccurs="unbounded" type="obligationType" />
    </xs:sequence>
  </xs:complexType>


  <!--obligationType-->

  <xs:complexType name="obligationType">
    <xs:sequence>
      <xs:element name="obligationDescription" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="obligationURL" minOccurs="0" nillable="true" type="xs:anyURI" />
      <xs:element name="benchmarkList" minOccurs="0" nillable="true" type="benchmarkListType" />
    </xs:sequence>
  </xs:complexType>


  <!--technicalRequirementsType-->

  <xs:complexType name="technicalRequirementsType">
    <xs:sequence>
      <xs:element name="dataAccess" minOccurs="0" nillable="true" type="dataAccessType" />
      <xs:element name="conditionList" minOccurs="0" nillable="true" type="conditionListType" />
      <xs:element name="dataSubject" minOccurs="0" nillable="true" type="dataSubjectType" />
      <xs:element name="dataDeletion" minOccurs="0" nillable="true" type="dataDeletionType" />
      <xs:element name="securityTechnologyList" minOccurs="0" nillable="true" type="securityTechnologyListType" />
    </xs:sequence>
  </xs:complexType>


  <!--dataAccessType-->

  <xs:complexType name="dataAccessType">
    <xs:sequence>
      <xs:element name="clauseList" minOccurs="0" nillable="true" type="clauseListType" />
      <xs:element name="fieldList" minOccurs="0" nillable="true" type="fieldListType" />
    </xs:sequence>
  </xs:complexType>


  <!--dataSubjectType-->

  <xs:complexType name="dataSubjectType">
    <xs:sequence>
      <xs:element name="clauseList" minOccurs="0" nillable="true" type="clauseListType" />
      <xs:element name="benchmarkList" minOccurs="0" nillable="true" type="benchmarkListType" />
      <xs:element name="fieldList" minOccurs="0" nillable="true" type="fieldListType" />
      <xs:element name="respondInDays" minOccurs="0" nillable="true" type="xs:integer" />
      <xs:element name="requirePortability" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>


  <!--dataDeletionType-->

  <xs:complexType name="dataDeletionType">
    <xs:sequence>
      <xs:element name="deleteData" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="dataRetention" minOccurs="0" nillable="true" type="xs:integer" />
      <xs:element name="deleteBy" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="partyToDeleteData" minOccurs="0" nillable="true" type="partyToDeleteDataType" />
      <xs:element name="respondInDays" minOccurs="0" nillable="true" type="xs:integer" />
      <xs:element name="requirePortability" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>


  <!--partyToDeleteDataType-->

  <xs:complexType name="partyToDeleteDataType">
    <xs:sequence>
      <xs:element name="organisation" minOccurs="0" nillable="true" type="gCoreLocalIdType" />
      <xs:element name="deletecontactInfo" minOccurs="0" nillable="true" type="gCoreContactInfoType" />
    </xs:sequence>
  </xs:complexType>


  <!--securityTechnologyListType-->

  <xs:complexType name="securityTechnologyListType">
    <xs:sequence>
      <xs:element name="securityTechnology" minOccurs="0" maxOccurs="unbounded" type="securityTechnologyType" />
    </xs:sequence>
  </xs:complexType>


  <!--securityTechnologyType-->

  <xs:complexType name="securityTechnologyType">
    <xs:sequence>
      <xs:element name="clauseList" minOccurs="0" nillable="true" type="clauseListType" />
      <xs:element name="technologyName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="technologyDescription" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="referenceURL" minOccurs="0" nillable="true" type="xs:anyURI" />
      <xs:element name="versionMin" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--fieldListType-->

  <xs:complexType name="fieldListType">
    <xs:sequence>
      <xs:element name="field" minOccurs="0" maxOccurs="unbounded" type="fieldType" />
    </xs:sequence>
  </xs:complexType>


  <!--fieldType-->

  <xs:complexType name="fieldType">
    <xs:sequence>
      <xs:element name="fieldName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="controlrights" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="R" />
            <xs:enumeration value="RW" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>


  <!--dataControllerType-->

  <xs:complexType name="dataControllerType">
    <xs:sequence>
      <xs:element name="dataControllerName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="privacyPolicyURL" type="xs:anyURI" />
      <xs:element name="privacyContactList" minOccurs="0" nillable="true" type="gCoreContactListType" />
      <xs:element name="issuesNotificationContactList" minOccurs="0" nillable="true" type="gCoreContactListType" />
    </xs:sequence>
  </xs:complexType>


  <!--dataSubProcessorListType-->

  <xs:complexType name="dataSubProcessorListType">
    <xs:sequence>
      <xs:element name="dataSubProcessor" minOccurs="0" maxOccurs="unbounded" type="dataSubProcessorType" />
    </xs:sequence>
  </xs:complexType>


  <!--dataProcessorType-->

  <xs:complexType name="dataProcessorType">
    <xs:sequence>
      <xs:element name="dataProcessorName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="privacyPolicyURL" type="xs:anyURI" />
      <xs:element name="privacyContactList" minOccurs="0" nillable="true" type="gCoreContactListType" />
      <xs:element name="notifyDataControllerOnAccessRequests" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="dataProcessorContactForAccessRequestsList" minOccurs="0" nillable="true" type="gCoreContactListType" />
      <xs:element name="purposeList" minOccurs="0" nillable="true" type="purposeListType" />
      <xs:element name="alternatePurposeList" minOccurs="0" nillable="true" type="alternatePurposeListType" />
      <xs:element name="deidentifiedPurposeList" minOccurs="0" nillable="true" type="deidentifiedPurposeListType" />
      <xs:element name="dataUsageMarketingAllowed" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="personalInformationUpdatedFromSource" minOccurs="0" nillable="true" type="xs:integer" />
      <xs:element name="dataBreachNotification" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="dataBreachContactList" minOccurs="0" nillable="true" type="gCoreContactListType" />
      <xs:element name="employeesMustComplyWithAgreement" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="employeeConfidentialityAgreement" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="employeeTrainingList" minOccurs="0" nillable="true" type="employeeTrainingListType" />
      <xs:element name="passwordEmployeeAccessStandard" minOccurs="0" nillable="true" type="passwordEmployeeAccessStandardType" />
      <xs:element name="securityTestRequiredList" minOccurs="0" nillable="true" type="securityTestRequiredListType" />
      <xs:element name="countryImpactedList" minOccurs="0" nillable="true" type="countryImpactedListType" />
    </xs:sequence>
  </xs:complexType>


  <!--dataSubProcessorType-->

  <xs:complexType name="dataSubProcessorType">
    <xs:sequence>
      <xs:element name="subProcessorName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="privacyPolicyURL" type="xs:anyURI" />
      <xs:element name="privacyContactList" minOccurs="0" nillable="true" type="gCoreContactListType" />
      <xs:element name="purposeList" minOccurs="0" nillable="true" type="purposeListType" />
    </xs:sequence>
  </xs:complexType>


  <!--appIDListType-->

  <xs:complexType name="appIDListType">
    <xs:sequence>
      <xs:element name="appID" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--adapterFingerprintListType-->

  <xs:complexType name="adapterFingerprintListType">
    <xs:sequence>
      <xs:element name="adapterFingerprint" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--deidentifiedPurposeListType-->

  <xs:complexType name="deidentifiedPurposeListType">
    <xs:sequence>
      <xs:element name="deidentifiedPurpose" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--purposeListType-->

  <xs:complexType name="purposeListType">
    <xs:sequence>
      <xs:element name="purpose" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--alternatePurposeListType-->

  <xs:complexType name="alternatePurposeListType">
    <xs:sequence>
      <xs:element name="alternatePurpose" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--conditionListType-->

  <xs:complexType name="conditionListType">
    <xs:sequence>
      <xs:element name="condition" minOccurs="0" maxOccurs="unbounded" type="conditionType" />
    </xs:sequence>
  </xs:complexType>


  <!--conditionType-->

  <xs:complexType name="conditionType">
    <xs:sequence>
      <xs:element name="typeOfCondition" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="conditionName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="conditionDescription" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="propertyList" minOccurs="0" nillable="true" type="propertyNVListType" />
    </xs:sequence>
  </xs:complexType>


  <!--zoneContextListType-->

  <xs:complexType name="zoneContextListType">
    <xs:sequence>
      <xs:element name="zoneContext" minOccurs="0" maxOccurs="unbounded" type="zoneContextType" />
    </xs:sequence>
  </xs:complexType>


  <!--zoneContextType-->

  <xs:complexType name="zoneContextType">
    <xs:sequence>
      <xs:element name="zoneId" minOccurs="0" nillable="true" type="gCoreLocalIdType" />
      <xs:element name="contextId" minOccurs="0" nillable="true" type="gCoreLocalIdType" />
    </xs:sequence>
  </xs:complexType>


  <!--endpointListType-->

  <xs:complexType name="endpointListType">
    <xs:sequence>
      <xs:element name="endpoint" minOccurs="0" maxOccurs="unbounded" type="endpointType" />
    </xs:sequence>
  </xs:complexType>


  <!--endpointType-->

  <xs:complexType name="endpointType">
    <xs:sequence>
      <xs:element name="endpointURL" minOccurs="0" nillable="true" type="xs:anyURI" />
      <xs:element name="endpointProviderName" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--employeeTrainingListType-->

  <xs:complexType name="employeeTrainingListType">
    <xs:sequence>
      <xs:element name="employeeTraining" minOccurs="0" maxOccurs="unbounded" type="employeeTrainingType" />
    </xs:sequence>
  </xs:complexType>


  <!--employeeTrainingType-->

  <xs:complexType name="employeeTrainingType">
    <xs:sequence>
      <xs:element name="trainingName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="trainingURL" minOccurs="0" nillable="true" type="xs:anyURI" />
    </xs:sequence>
  </xs:complexType>


  <!--passwordEmployeeAccessStandardType-->

  <xs:complexType name="passwordEmployeeAccessStandardType">
    <xs:sequence>
      <xs:element name="standardName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="standardURL" minOccurs="0" nillable="true" type="xs:anyURI" />
    </xs:sequence>
  </xs:complexType>


  <!--countryImpactedListType-->

  <xs:complexType name="countryImpactedListType">
    <xs:sequence>
      <xs:element name="countryImpacted" minOccurs="0" maxOccurs="unbounded" type="countryImpactedType" />
    </xs:sequence>
  </xs:complexType>


  <!--countryImpactedType-->

  <xs:complexType name="countryImpactedType">
    <xs:sequence>
      <xs:element name="country" minOccurs="0" nillable="true" type="gCoreCountryType" />
      <xs:element name="usage" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--securityTestRequiredListType-->

  <xs:complexType name="securityTestRequiredListType">
    <xs:sequence>
      <xs:element name="securityTestRequired" minOccurs="0" maxOccurs="unbounded" type="securityTestRequiredType" />
    </xs:sequence>
  </xs:complexType>


  <!--securityTestRequiredType-->

  <xs:complexType name="securityTestRequiredType">
    <xs:sequence>
      <xs:element name="testType" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="testFrequency" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="remediationRequiredIn" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="shareResults" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Y" />
            <xs:enumeration value="N" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>


  <!--propertyNVListType-->

  <xs:complexType name="propertyNVListType">
    <xs:sequence>
      <xs:element name="property" minOccurs="0" maxOccurs="unbounded" type="propertyNVType" />
    </xs:sequence>
  </xs:complexType>


  <!--propertyNVType-->

  <xs:complexType name="propertyNVType">
    <xs:sequence>
      <xs:element name="propertyName" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="propertyValue" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>


  <!--DefinedProtocolsType-->

  <xs:simpleType name="DefinedProtocolsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="HTTPS" />
      <xs:enumeration value="HTTP" />
    </xs:restriction>
  </xs:simpleType>


  <!--ExtendedContentType-->

  <xs:complexType name="ExtendedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>


  <!--SelectedContentType-->

  <xs:complexType name="SelectedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>


  <!--provisionedZonesType-->

  <xs:complexType name="provisionedZonesType">
    <xs:sequence>
      <xs:element name="provisionedZone" maxOccurs="unbounded" type="provisionedZoneType" />
    </xs:sequence>
  </xs:complexType>


  <!--provisionedZoneType-->

  <xs:complexType name="provisionedZoneType">
    <xs:sequence>
      <xs:element name="services" minOccurs="0" type="servicesType" />
    </xs:sequence>
    <xs:attribute name="id" use="required" type="xs:string" />
  </xs:complexType>


  <!--createsType-->

  <xs:complexType name="createsType">
    <xs:sequence>
      <xs:element name="create" maxOccurs="unbounded" type="createType" />
    </xs:sequence>
  </xs:complexType>


  <!--createType-->

  <xs:complexType name="createType">
    <xs:sequence>
      <xs:element name="error" minOccurs="0" type="errorCommonType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
    <xs:attribute name="advisoryId" use="required" type="xs:token" />
    <xs:attribute name="statusCode" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="[24-5][0-9]{2}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>


  <!--errorCommonType-->

  <xs:complexType name="errorCommonType">
    <xs:sequence>
      <xs:element name="code" type="xs:unsignedInt" />
      <xs:element name="scope" type="xs:string" />
      <xs:element name="type" minOccurs="0" nillable="true" type="errorTypeType" />
      <xs:element name="subCode" minOccurs="0" nillable="true" type="xs:string" />
      <xs:element name="message" type="xs:string" />
      <xs:element name="description" minOccurs="0" type="xs:string" />
      <xs:element name="errorDetails" minOccurs="0" nillable="true" type="errorDetailsType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
  </xs:complexType>


  <!--errorDetailType-->

  <xs:complexType name="errorDetailType">
    <xs:sequence>
      <xs:element name="type" minOccurs="0" nillable="true" type="errorTypeType" />
      <xs:element name="subCode" minOccurs="0" nillable="true" type="xs:string" />
      <xs:element name="message" type="xs:string" />
      <xs:element name="description" minOccurs="0" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
  </xs:complexType>


  <!--errorTypeType-->

  <xs:simpleType name="errorTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="INFRASTRUCTURE" />
      <xs:enumeration value="DATA" />
    </xs:restriction>
  </xs:simpleType>


  <!--errorDetailsType-->

  <xs:complexType name="errorDetailsType">
    <xs:sequence>
      <xs:element name="errorDetail" minOccurs="0" maxOccurs="unbounded" type="errorDetailType" />
    </xs:sequence>
  </xs:complexType>


  <!--stateListType-->

  <xs:complexType name="stateListType">
    <xs:sequence>
      <xs:element name="state" maxOccurs="unbounded" type="stateCommonType" />
    </xs:sequence>
  </xs:complexType>


  <!--stateCommonType-->

  <xs:complexType name="stateCommonType">
    <xs:sequence>
      <xs:element name="type" type="phaseStateType" />
      <xs:element name="created" minOccurs="0" type="xs:dateTime" />
      <xs:element name="lastModified" minOccurs="0" type="xs:dateTime" />
      <xs:element name="description" minOccurs="0" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="uuidType" />
  </xs:complexType>


  <!--deleteIdCollectionType-->

  <xs:complexType name="deleteIdCollectionType">
    <xs:sequence>
      <xs:element name="delete" maxOccurs="unbounded" type="deleteIdType" />
    </xs:sequence>
  </xs:complexType>


  <!--defaultZoneType-->

  <xs:complexType name="defaultZoneType">
    <xs:sequence>
      <xs:element name="description" minOccurs="0" type="xs:normalizedString" />
      <xs:element name="properties" minOccurs="0" type="propertiesType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
  </xs:complexType>


  <!--environmentTypeType-->

  <xs:simpleType name="environmentTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="DIRECT" />
      <xs:enumeration value="BROKERED" />
    </xs:restriction>
  </xs:simpleType>


  <!--jobStateType-->

  <xs:simpleType name="jobStateType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="NOTSTARTED" />
      <xs:enumeration value="INPROGRESS" />
      <xs:enumeration value="COMPLETED" />
      <xs:enumeration value="FAILED" />
    </xs:restriction>
  </xs:simpleType>


  <!--phaseCollectionType-->

  <xs:complexType name="phaseCollectionType">
    <xs:sequence>
      <xs:element name="phase" maxOccurs="unbounded" type="phaseType" />
    </xs:sequence>
  </xs:complexType>


  <!--phaseType-->

  <xs:complexType name="phaseType">
    <xs:sequence>
      <xs:element name="name" type="xs:token" />
      <xs:element name="states" type="stateListType" />
      <xs:element name="required" type="xs:boolean" />
      <xs:element name="rights" type="rightsType" />
      <xs:element name="statesRights" type="rightsType" />
    </xs:sequence>
  </xs:complexType>


  <!--initializationType-->

  <xs:complexType name="initializationType">
    <xs:sequence>
      <xs:element name="phaseName" minOccurs="0" type="xs:token" />
      <xs:element name="payload" type="xs:anyType" />
    </xs:sequence>
  </xs:complexType>


  <!--phaseStateType-->

  <xs:simpleType name="phaseStateType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="NOTAPPLICABLE" />
      <xs:enumeration value="NOTSTARTED" />
      <xs:enumeration value="PENDING" />
      <xs:enumeration value="SKIPPED" />
      <xs:enumeration value="INPROGRESS" />
      <xs:enumeration value="COMPLETED" />
      <xs:enumeration value="FAILED" />
    </xs:restriction>
  </xs:simpleType>


  <!--enumerationsType-->

  <xs:complexType name="enumerationsType">
    <xs:sequence>
      <xs:element name="enumeration" maxOccurs="unbounded" type="enumerationType" />
    </xs:sequence>
  </xs:complexType>


  <!--enumerationType-->

  <xs:complexType name="enumerationType">
    <xs:sequence>
      <xs:element name="value" type="xs:token" />
      <xs:element name="code" minOccurs="0" type="xs:token" />
    </xs:sequence>
  </xs:complexType>


  <!--parametersType-->

  <xs:complexType name="parametersType">
    <xs:sequence>
      <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="parameterType" />
    </xs:sequence>
  </xs:complexType>


  <!--parameterType-->

  <xs:complexType name="parameterType">
    <xs:sequence>
      <xs:element name="name" type="xs:token" />
      <xs:element name="type" minOccurs="0" type="xs:token" />
      <xs:element name="default" minOccurs="0" type="xs:token" />
      <xs:element name="description" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="required" minOccurs="0" type="xs:boolean" />
      <xs:element name="enumerations" minOccurs="0" type="enumerationsType" />
      <xs:element name="range" minOccurs="0" type="rangeType" />
      <xs:element name="minLength" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="maxLength" minOccurs="0" type="xs:unsignedInt" />
    </xs:sequence>
  </xs:complexType>


  <!--propertiesType-->

  <xs:complexType name="propertiesType">
    <xs:sequence>
      <xs:element name="property" maxOccurs="unbounded" type="propertyType" />
    </xs:sequence>
  </xs:complexType>


  <!--rangeType-->

  <xs:complexType name="rangeType">
    <xs:sequence>
      <xs:element name="start" type="xs:long" />
      <xs:element name="end" type="xs:long" />
    </xs:sequence>
  </xs:complexType>


  <!--propertyType-->

  <xs:complexType name="propertyType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="name" use="required" type="xs:string" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <!--applicationInfoType-->

  <xs:complexType name="applicationInfoType">
    <xs:sequence>
      <xs:element name="applicationKey" minOccurs="0" type="xs:string" />
      <xs:element name="supportedInfrastructureVersion" minOccurs="0" type="xs:string" />
      <xs:element name="dataModelNamespace" minOccurs="0" type="xs:anyURI" />
      <xs:element name="transport" minOccurs="0" type="xs:string" />
      <xs:element name="applicationProduct" minOccurs="0" type="productIdentityType" />
      <xs:element name="adapterProduct" minOccurs="0" type="productIdentityType" />
    </xs:sequence>
  </xs:complexType>


  <!--productIdentityType-->

  <xs:complexType name="productIdentityType">
    <xs:sequence>
      <xs:element name="vendorName" minOccurs="0" type="xs:string" />
      <xs:element name="productName" type="xs:string" />
      <xs:element name="productVersion" minOccurs="0" type="xs:string" />
      <xs:element name="iconURI" minOccurs="0" type="xs:anyURI" />
    </xs:sequence>
  </xs:complexType>


  <!--servicesType-->

  <xs:complexType name="servicesType">
    <xs:sequence>
      <xs:element name="service" maxOccurs="unbounded" type="serviceType" />
    </xs:sequence>
  </xs:complexType>


  <!--serviceType-->

  <xs:complexType name="serviceType">
    <xs:sequence>
      <xs:element name="rights" type="rightsType" />
    </xs:sequence>
    <xs:attribute name="type" use="required" type="serviceTypeType" />
    <xs:attribute name="subType" use="optional" type="serviceSubTypeType" />
    <xs:attribute name="name" use="required" type="xs:string" />
    <xs:attribute name="contextId" use="required" type="xs:string" />
  </xs:complexType>


  <!--rightsType-->

  <xs:complexType name="rightsType">
    <xs:sequence>
      <xs:element name="right" maxOccurs="unbounded" type="rightType" />
    </xs:sequence>
  </xs:complexType>


  <!--rightValueType-->

  <xs:simpleType name="rightValueType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="APPROVED" />
      <xs:enumeration value="SUPPORTED" />
      <xs:enumeration value="REJECTED" />
      <xs:enumeration value="UNSUPPORTED" />
      <xs:enumeration value="REQUESTED" />
    </xs:restriction>
  </xs:simpleType>


  <!--rightTypeType-->

  <xs:simpleType name="rightTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="QUERY" />
      <xs:enumeration value="CREATE" />
      <xs:enumeration value="UPDATE" />
      <xs:enumeration value="DELETE" />
      <xs:enumeration value="SUBSCRIBE" />
      <xs:enumeration value="PROVIDE" />
    </xs:restriction>
  </xs:simpleType>


  <!--rightType-->

  <xs:complexType name="rightType">
    <xs:simpleContent>
      <xs:extension base="rightValueType">
        <xs:attribute name="type" use="required" type="rightTypeType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <!--serviceTypeType-->

  <xs:simpleType name="serviceTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="UTILITY" />
      <xs:enumeration value="OBJECT" />
      <xs:enumeration value="FUNCTIONAL" />
      <xs:enumeration value="SERVICEPATH" />
      <xs:enumeration value="XQUERYTEMPLATE" />
      <xs:enumeration value="SERVICE" />
    </xs:restriction>
  </xs:simpleType>


  <!--serviceSubTypeType-->

  <xs:simpleType name="serviceSubTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="adminDirective" />
    </xs:restriction>
  </xs:simpleType>


  <!--infrastructureServicesType-->

  <xs:complexType name="infrastructureServicesType">
    <xs:sequence>
      <xs:element name="infrastructureService" minOccurs="2" maxOccurs="unbounded" type="infrastructureServiceType" />
    </xs:sequence>
  </xs:complexType>


  <!--infrastructureServiceType-->

  <xs:complexType name="infrastructureServiceType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="name" use="optional" type="infrastructureServiceNamesType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <!--infrastructureServiceNamesType-->

  <xs:simpleType name="infrastructureServiceNamesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="environment" />
      <xs:enumeration value="provisionRequests" />
      <xs:enumeration value="requestsConnector" />
      <xs:enumeration value="eventsConnector" />
      <xs:enumeration value="queues" />
      <xs:enumeration value="subscriptions" />
      <xs:enumeration value="servicesConnector" />
    </xs:restriction>
  </xs:simpleType>


  <!--uuidType-->

  <xs:simpleType name="uuidType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[14][a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>


  <!--versionType-->

  <xs:simpleType name="versionType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="[0-9]{1,3}[.][0-9]{1,3}([.][0-9]{1,3})?" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>


  <!--uriType-->

  <xs:simpleType name="uriType">
    <xs:restriction base="xs:anyURI" />
  </xs:simpleType>


  <!--aliasesType-->

  <xs:complexType name="aliasesType">
    <xs:sequence>
      <xs:element name="alias" maxOccurs="unbounded" type="aliasType" />
    </xs:sequence>
  </xs:complexType>


  <!--querySupportType-->

  <xs:complexType name="querySupportType">
    <xs:sequence>
      <xs:element name="dynamicQuery" minOccurs="0" type="xs:boolean" />
      <xs:element name="queryByExample" minOccurs="0" type="xs:boolean" />
      <xs:element name="changesSinceMarker" minOccurs="0" type="xs:boolean" />
      <xs:element name="paged" minOccurs="0" type="xs:boolean" />
      <xs:element name="maxPageSize" minOccurs="0" type="xs:unsignedInt" />
      <xs:element name="totalCount" minOccurs="0" type="xs:boolean" />
      <xs:element name="applicationProduct" minOccurs="0" type="productIdentityType" />
      <xs:element name="adapterProduct" minOccurs="0" type="productIdentityType" />
    </xs:sequence>
  </xs:complexType>


  <!--aliasType-->

  <xs:complexType name="aliasType">
    <xs:sequence>
      <xs:element name="code" type="codeType" />
      <xs:element name="source" minOccurs="0" nillable="true" type="uriType" />
      <xs:element name="namespace" minOccurs="0" nillable="true" type="uriType" />
    </xs:sequence>
  </xs:complexType>


  <!--codeItemType-->

  <xs:complexType name="codeItemType">
    <xs:sequence>
      <xs:element name="code" type="xs:string" />
      <xs:element name="source" minOccurs="0" nillable="true" type="uriType" />
      <xs:element name="namespace" minOccurs="0" nillable="true" type="uriType" />
      <xs:element name="value" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxLength value="128" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="description" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="definition" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:minLength value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxLength value="4096" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="aliases" minOccurs="0" type="aliasesType" />
      <xs:element name="action">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="ADD" />
            <xs:enumeration value="CHANGE" />
            <xs:enumeration value="DEPRECATED" />
            <xs:enumeration value="DELETE" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="timestamp" type="xs:dateTime" />
    </xs:sequence>
  </xs:complexType>


  <!--codeType-->

  <xs:complexType name="codeType">
    <xs:sequence>
      <xs:element name="old" type="xs:boolean" />
      <xs:element name="official" type="xs:boolean" />
      <xs:element name="value" type="xs:string" />
    </xs:sequence>
  </xs:complexType>


  <!--codeItemsType-->

  <xs:complexType name="codeItemsType">
    <xs:sequence>
      <xs:element name="codeItem" maxOccurs="unbounded" type="codeItemType" />
    </xs:sequence>
  </xs:complexType>


  <!--deleteStatusCollectionType-->

  <xs:complexType name="deleteStatusCollectionType">
    <xs:sequence>
      <xs:element name="delete" maxOccurs="unbounded" type="deleteStatusType" />
    </xs:sequence>
  </xs:complexType>


  <!--deleteStatusType-->

  <xs:complexType name="deleteStatusType">
    <xs:sequence>
      <xs:element name="error" minOccurs="0" type="errorCommonType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
    <xs:attribute name="statusCode" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="[24-5][0-9]{2}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>


  <!--deleteIdType-->

  <xs:complexType name="deleteIdType">
    <xs:attribute name="id" use="required" type="xs:token" />
  </xs:complexType>


  <!--mediaTypesType-->

  <xs:complexType name="mediaTypesType">
    <xs:sequence>
      <xs:element name="mediaType" maxOccurs="unbounded" type="xs:token" />
    </xs:sequence>
  </xs:complexType>


  <!--protocolType-->

  <xs:complexType name="protocolType">
    <xs:sequence>
      <xs:element name="location" type="xs:anyURI" />
      <xs:element name="properties" minOccurs="0" nillable="true" type="propertiesType" />
    </xs:sequence>
  </xs:complexType>


  <!--updatesType-->

  <xs:complexType name="updatesType">
    <xs:sequence>
      <xs:element name="update" maxOccurs="unbounded" type="updateType" />
    </xs:sequence>
  </xs:complexType>


  <!--updateType-->

  <xs:complexType name="updateType">
    <xs:sequence>
      <xs:element name="error" minOccurs="0" type="errorCommonType" />
    </xs:sequence>
    <xs:attribute name="id" use="optional" type="xs:token" />
    <xs:attribute name="statusCode" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="[24-5][0-9]{2}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>


  <!--methodParametersType-->

  <xs:complexType name="methodParametersType">
    <xs:sequence>
      <xs:element name="methodParameter" maxOccurs="unbounded" type="methodParameterType" />
    </xs:sequence>
  </xs:complexType>


  <!--methodParameterType-->

  <xs:complexType name="methodParameterType">
    <xs:sequence>
      <xs:element name="paramName" type="xs:token" />
      <xs:element name="paramValue" type="xs:normalizedString" />
      <xs:element name="comparisonType" minOccurs="0" type="xs:token" />
    </xs:sequence>
  </xs:complexType>


  <!--supportedRequestsType-->

  <xs:complexType name="supportedRequestsType">
    <xs:sequence>
      <xs:element name="supportedRequestType" maxOccurs="unbounded" type="supportedRequestType" />
    </xs:sequence>
  </xs:complexType>


  <!--supportedRequestType-->

  <xs:complexType name="supportedRequestType">
    <xs:sequence>
      <xs:element name="requestType" minOccurs="0" type="requestTypeValueType" />
      <xs:element name="operations" type="operationsType" />
    </xs:sequence>
  </xs:complexType>


  <!--requestTypeValueType-->

  <xs:simpleType name="requestTypeValueType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="IMMEDIATE" />
      <xs:enumeration value="DELAYED" />
    </xs:restriction>
  </xs:simpleType>


  <!--operationsType-->

  <xs:complexType name="operationsType">
    <xs:sequence>
      <xs:element name="operation" maxOccurs="unbounded" type="operationType" />
    </xs:sequence>
  </xs:complexType>


  <!--operationType-->

  <xs:simpleType name="operationType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="QUERY" />
      <xs:enumeration value="CREATE" />
      <xs:enumeration value="UPDATE" />
      <xs:enumeration value="DELETE" />
    </xs:restriction>
  </xs:simpleType>


  <!--messageTypeType-->

  <xs:simpleType name="messageTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="EVENT" />
      <xs:enumeration value="REQUEST" />
    </xs:restriction>
  </xs:simpleType>

</xs:schema>