<!--
		SIF Infrastructure Specification 3.7

		(January 21, 2025)
		
		Infrastructure Version: 3.7
		
		license: 
		    name: Apache  2.0
        identifier: Apache-2.0
        url: 'https://home.a4l.org/legal/'
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sifassociation.org/infrastructure/3.7" targetNamespace="http://www.sifassociation.org/infrastructure/3.7" elementFormDefault="qualified" version="3.7">
  <xs:complexType name="gCoreEmailListType">
    <xs:sequence>
      <xs:element name="email" maxOccurs="unbounded" type="gCoreEmailType" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="gCoreEmailType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:complexType name="gCorePhoneNumberListType">
    <xs:sequence>
      <xs:element name="phoneNumber" maxOccurs="unbounded" type="gCorePhoneNumberType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <xs:complexType name="gCoreContactListType">
    <xs:sequence>
      <xs:element name="contact" maxOccurs="unbounded" type="gCoreContactInfoType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <xs:complexType name="gCoreAddressListType">
    <xs:sequence>
      <xs:element name="address" maxOccurs="unbounded" type="gCoreAddressType" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="gCoreCountryType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:simpleType name="gCoreLocalIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:simpleType name="gCoreStateProvinceIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:simpleType name="gCoreStateProvinceType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <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>

  <xs:complexType name="privacyListType">
    <xs:sequence>
      <xs:element name="privacy" minOccurs="0" maxOccurs="unbounded" type="privacyType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <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>

  <xs:complexType name="lawListType">
    <xs:sequence>
      <xs:element name="law" minOccurs="0" maxOccurs="unbounded" type="lawType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="lawType">
    <xs:sequence>
      <xs:element name="lawName" type="xs:normalizedString" />
      <xs:element name="lawDescription" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="legalRequirementsType">
    <xs:sequence>
      <xs:element name="clauseList" type="clauseListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="clauseListType">
    <xs:sequence>
      <xs:element name="clause" minOccurs="0" maxOccurs="unbounded" type="clauseType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="benchmarkListType">
    <xs:sequence>
      <xs:element name="benchmark" minOccurs="0" maxOccurs="unbounded" type="benchmarkType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="obligationListType">
    <xs:sequence>
      <xs:element name="obligation" minOccurs="0" maxOccurs="unbounded" type="obligationType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <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>

  <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>

  <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>

  <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>

  <xs:complexType name="securityTechnologyListType">
    <xs:sequence>
      <xs:element name="securityTechnology" minOccurs="0" maxOccurs="unbounded" type="securityTechnologyType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="fieldListType">
    <xs:sequence>
      <xs:element name="field" minOccurs="0" maxOccurs="unbounded" type="fieldType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <xs:complexType name="dataSubProcessorListType">
    <xs:sequence>
      <xs:element name="dataSubProcessor" minOccurs="0" maxOccurs="unbounded" type="dataSubProcessorType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <xs:complexType name="appIDListType">
    <xs:sequence>
      <xs:element name="appID" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="adapterFingerprintListType">
    <xs:sequence>
      <xs:element name="adapterFingerprint" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="deidentifiedPurposeListType">
    <xs:sequence>
      <xs:element name="deidentifiedPurpose" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="purposeListType">
    <xs:sequence>
      <xs:element name="purpose" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="alternatePurposeListType">
    <xs:sequence>
      <xs:element name="alternatePurpose" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="conditionListType">
    <xs:sequence>
      <xs:element name="condition" minOccurs="0" maxOccurs="unbounded" type="conditionType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="zoneContextListType">
    <xs:sequence>
      <xs:element name="zoneContext" minOccurs="0" maxOccurs="unbounded" type="zoneContextType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="endpointListType">
    <xs:sequence>
      <xs:element name="endpoint" minOccurs="0" maxOccurs="unbounded" type="endpointType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="employeeTrainingListType">
    <xs:sequence>
      <xs:element name="employeeTraining" minOccurs="0" maxOccurs="unbounded" type="employeeTrainingType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <xs:complexType name="countryImpactedListType">
    <xs:sequence>
      <xs:element name="countryImpacted" minOccurs="0" maxOccurs="unbounded" type="countryImpactedType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="securityTestRequiredListType">
    <xs:sequence>
      <xs:element name="securityTestRequired" minOccurs="0" maxOccurs="unbounded" type="securityTestRequiredType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="propertyNVListType">
    <xs:sequence>
      <xs:element name="property" minOccurs="0" maxOccurs="unbounded" type="propertyNVType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:simpleType name="DefinedProtocolsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="HTTPS" />
      <xs:enumeration value="HTTP" />
    </xs:restriction>
  </xs:simpleType>

  <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>

  <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>

  <xs:complexType name="provisionedZonesType">
    <xs:sequence>
      <xs:element name="provisionedZone" maxOccurs="unbounded" type="provisionedZoneType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="createsType">
    <xs:sequence>
      <xs:element name="create" maxOccurs="unbounded" type="createType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <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>

  <xs:simpleType name="errorTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="INFRASTRUCTURE" />
      <xs:enumeration value="DATA" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="errorDetailsType">
    <xs:sequence>
      <xs:element name="errorDetail" minOccurs="0" maxOccurs="unbounded" type="errorDetailType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stateListType">
    <xs:sequence>
      <xs:element name="state" maxOccurs="unbounded" type="stateCommonType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="deleteIdCollectionType">
    <xs:sequence>
      <xs:element name="delete" maxOccurs="unbounded" type="deleteIdType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:simpleType name="environmentTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="DIRECT" />
      <xs:enumeration value="BROKERED" />
    </xs:restriction>
  </xs:simpleType>

  <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>

  <xs:complexType name="phaseCollectionType">
    <xs:sequence>
      <xs:element name="phase" maxOccurs="unbounded" type="phaseType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <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>

  <xs:complexType name="enumerationsType">
    <xs:sequence>
      <xs:element name="enumeration" maxOccurs="unbounded" type="enumerationType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="parametersType">
    <xs:sequence>
      <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded" type="parameterType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="propertiesType">
    <xs:sequence>
      <xs:element name="property" maxOccurs="unbounded" type="propertyType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="rangeType">
    <xs:sequence>
      <xs:element name="start" type="xs:long" />
      <xs:element name="end" type="xs:long" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <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>

  <xs:complexType name="servicesType">
    <xs:sequence>
      <xs:element name="service" maxOccurs="unbounded" type="serviceType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="rightsType">
    <xs:sequence>
      <xs:element name="right" maxOccurs="unbounded" type="rightType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <xs:complexType name="rightType">
    <xs:simpleContent>
      <xs:extension base="rightValueType">
        <xs:attribute name="type" use="required" type="rightTypeType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <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>

  <xs:simpleType name="serviceSubTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="adminDirective" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="infrastructureServicesType">
    <xs:sequence>
      <xs:element name="infrastructureService" minOccurs="2" maxOccurs="unbounded" type="infrastructureServiceType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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:enumeration value="responsesConnector" />
    </xs:restriction>
  </xs:simpleType>

  <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>

  <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>

  <xs:simpleType name="uriType">
    <xs:restriction base="xs:anyURI" />
  </xs:simpleType>

  <xs:complexType name="aliasesType">
    <xs:sequence>
      <xs:element name="alias" maxOccurs="unbounded" type="aliasType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <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>

  <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>

  <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>

  <xs:complexType name="codeItemsType">
    <xs:sequence>
      <xs:element name="codeItem" maxOccurs="unbounded" type="codeItemType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="deleteStatusCollectionType">
    <xs:sequence>
      <xs:element name="delete" maxOccurs="unbounded" type="deleteStatusType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="deleteIdType">
    <xs:attribute name="id" use="required" type="xs:token" />
  </xs:complexType>

  <xs:complexType name="mediaTypesType">
    <xs:sequence>
      <xs:element name="mediaType" maxOccurs="unbounded" type="xs:token" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="updatesType">
    <xs:sequence>
      <xs:element name="update" maxOccurs="unbounded" type="updateType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="methodParametersType">
    <xs:sequence>
      <xs:element name="methodParameter" maxOccurs="unbounded" type="methodParameterType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:complexType name="supportedRequestsType">
    <xs:sequence>
      <xs:element name="supportedRequestType" maxOccurs="unbounded" type="supportedRequestType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="supportedRequestType">
    <xs:sequence>
      <xs:element name="requestType" minOccurs="0" type="requestTypeValueType" />
      <xs:element name="operations" type="operationsType" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="requestTypeValueType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="IMMEDIATE" />
      <xs:enumeration value="DELAYED" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="operationsType">
    <xs:sequence>
      <xs:element name="operation" maxOccurs="unbounded" type="operationType" />
    </xs:sequence>
  </xs:complexType>

  <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>

  <xs:simpleType name="messageTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="EVENT" />
      <xs:enumeration value="REQUEST" />
    </xs:restriction>
  </xs:simpleType>

</xs:schema>