<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="authenticationRequest" type="authenticationRequest"/>

  <xs:element name="gender" type="gender"/>

  <xs:element name="identifierDomain" type="identifierDomain"/>

  <xs:element name="identifierDomainAttribute" type="identifierDomainAttribute"/>

  <xs:element name="identifierDomainAttributeRequest" type="identifierDomainAttributeRequest"/>

  <xs:element name="identifierUpdateEntry" type="identifierUpdateEntry"/>

  <xs:element name="identifierUpdateEvent" type="identifierUpdateEvent"/>

  <xs:element name="mergePersonsRequest" type="mergePersonsRequest"/>

  <xs:element name="person" type="person"/>

  <xs:element name="personIdentifier" type="personIdentifier"/>

  <xs:element name="personLink" type="personLink"/>

  <xs:element name="personPagedRequest" type="personPagedRequest"/>

  <xs:element name="race" type="race"/>

  <xs:element name="reviewRecordPair" type="reviewRecordPair"/>

  <xs:element name="stringList" type="stringList"/>

  <xs:complexType name="gender">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="genderCd" type="xs:int" minOccurs="0"/>
          <xs:element name="genderCode" type="xs:string" minOccurs="0"/>
          <xs:element name="genderDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="genderName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="baseObject" abstract="true">
    <xs:sequence/>
  </xs:complexType>

  <xs:complexType name="personPagedRequest">
    <xs:sequence>
      <xs:element name="firstResult" type="xs:int"/>
      <xs:element name="maxResults" type="xs:int"/>
      <xs:element ref="person" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="person">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="account" type="xs:string" minOccurs="0"/>
          <xs:element name="accountIdentifierDomain" type="identifierDomain" minOccurs="0"/>
          <xs:element name="address1" type="xs:string" minOccurs="0"/>
          <xs:element name="address2" type="xs:string" minOccurs="0"/>
          <xs:element name="addressType" type="addressType" minOccurs="0"/>
          <xs:element name="birthOrder" type="xs:int" minOccurs="0"/>
          <xs:element name="birthPlace" type="xs:string" minOccurs="0"/>
          <xs:element name="cell" type="xs:string" minOccurs="0"/>
          <xs:element name="cellId" type="xs:string" minOccurs="0"/>
          <xs:element name="city" type="xs:string" minOccurs="0"/>
          <xs:element name="country" type="xs:string" minOccurs="0"/>
          <xs:element name="countryCode" type="xs:string" minOccurs="0"/>
          <xs:element name="custom1" type="xs:string" minOccurs="0"/>
          <xs:element name="custom10" type="xs:string" minOccurs="0"/>
          <xs:element name="custom11" type="xs:string" minOccurs="0"/>
          <xs:element name="custom12" type="xs:string" minOccurs="0"/>
          <xs:element name="custom13" type="xs:string" minOccurs="0"/>
          <xs:element name="custom14" type="xs:string" minOccurs="0"/>
          <xs:element name="custom15" type="xs:string" minOccurs="0"/>
          <xs:element name="custom16" type="xs:string" minOccurs="0"/>
          <xs:element name="custom17" type="xs:string" minOccurs="0"/>
          <xs:element name="custom18" type="xs:string" minOccurs="0"/>
          <xs:element name="custom19" type="xs:string" minOccurs="0"/>
          <xs:element name="custom2" type="xs:string" minOccurs="0"/>
          <xs:element name="custom20" type="xs:string" minOccurs="0"/>
          <xs:element name="custom3" type="xs:string" minOccurs="0"/>
          <xs:element name="custom4" type="xs:string" minOccurs="0"/>
          <xs:element name="custom5" type="xs:string" minOccurs="0"/>
          <xs:element name="custom6" type="xs:string" minOccurs="0"/>
          <xs:element name="custom7" type="xs:string" minOccurs="0"/>
          <xs:element name="custom8" type="xs:string" minOccurs="0"/>
          <xs:element name="custom9" type="xs:string" minOccurs="0"/>
          <xs:element name="dateChanged" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="dateCreated" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="dateOfBirth" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="dateVoided" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="deathInd" type="xs:string" minOccurs="0"/>
          <xs:element name="deathTime" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="degree" type="xs:string" minOccurs="0"/>
          <xs:element name="district" type="xs:string" minOccurs="0"/>
          <xs:element name="districtId" type="xs:string" minOccurs="0"/>
          <xs:element name="email" type="xs:string" minOccurs="0"/>
          <xs:element name="ethnicGroup" type="ethnicGroup" minOccurs="0"/>
          <xs:element name="familyName" type="xs:string" minOccurs="0"/>
          <xs:element name="familyName2" type="xs:string" minOccurs="0"/>
          <xs:element name="fatherName" type="xs:string" minOccurs="0"/>
          <xs:element ref="gender" minOccurs="0"/>
          <xs:element name="givenName" type="xs:string" minOccurs="0"/>
          <xs:element name="groupNumber" type="xs:string" minOccurs="0"/>
          <xs:element name="language" type="language" minOccurs="0"/>
          <xs:element name="maritalStatusCode" type="xs:string" minOccurs="0"/>
          <xs:element name="middleName" type="xs:string" minOccurs="0"/>
          <xs:element name="motherName" type="xs:string" minOccurs="0"/>
          <xs:element name="mothersMaidenName" type="xs:string" minOccurs="0"/>
          <xs:element name="multipleBirthInd" type="xs:string" minOccurs="0"/>
          <xs:element name="nameType" type="nameType" minOccurs="0"/>
          <xs:element name="nationality" type="nationality" minOccurs="0"/>
          <xs:element name="personId" type="xs:int" minOccurs="0"/>
          <xs:element name="personIdentifiers" type="personIdentifier" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="phoneAreaCode" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneCountryCode" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneExt" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneNumber" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneType" type="phoneType" minOccurs="0"/>
          <xs:element name="postalCode" type="xs:string" minOccurs="0"/>
          <xs:element name="prefix" type="xs:string" minOccurs="0"/>
          <xs:element name="province" type="xs:string" minOccurs="0"/>
          <xs:element ref="race" minOccurs="0"/>
          <xs:element name="religion" type="religion" minOccurs="0"/>
          <xs:element name="sector" type="xs:string" minOccurs="0"/>
          <xs:element name="sectorId" type="xs:string" minOccurs="0"/>
          <xs:element name="ssn" type="xs:string" minOccurs="0"/>
          <xs:element name="state" type="xs:string" minOccurs="0"/>
          <xs:element name="suffix" type="xs:string" minOccurs="0"/>
          <xs:element name="userChangedBy" type="user" minOccurs="0"/>
          <xs:element name="userCreatedBy" type="user" minOccurs="0"/>
          <xs:element name="userVoidedBy" type="user" minOccurs="0"/>
          <xs:element name="village" type="xs:string" minOccurs="0"/>
          <xs:element name="villageId" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="identifierDomain">
    <xs:sequence>
      <xs:element name="dateCreated" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="identifierDomainDescription" type="xs:string" minOccurs="0"/>
      <xs:element name="identifierDomainId" type="xs:int" minOccurs="0"/>
      <xs:element name="identifierDomainName" type="xs:string" minOccurs="0"/>
      <xs:element name="namespaceIdentifier" type="xs:string" minOccurs="0"/>
      <xs:element name="universalIdentifier" type="xs:string" minOccurs="0"/>
      <xs:element name="universalIdentifierTypeCode" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="addressType">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="addressTypeCd" type="xs:int" minOccurs="0"/>
          <xs:element name="addressTypeCode" type="xs:string" minOccurs="0"/>
          <xs:element name="addressTypeDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="addressTypeName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ethnicGroup">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="ethnicGroupCd" type="xs:int" minOccurs="0"/>
          <xs:element name="ethnicGroupCode" type="xs:string" minOccurs="0"/>
          <xs:element name="ethnicGroupDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="ethnicGroupName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="language">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="languageCd" type="xs:int" minOccurs="0"/>
          <xs:element name="languageCode" type="xs:string" minOccurs="0"/>
          <xs:element name="languageDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="languageName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="nameType">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="nameTypeCd" type="xs:int" minOccurs="0"/>
          <xs:element name="nameTypeCode" type="xs:string" minOccurs="0"/>
          <xs:element name="nameTypeDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="nameTypeName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="nationality">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="nationalityCd" type="xs:int" minOccurs="0"/>
          <xs:element name="nationalityCode" type="xs:string" minOccurs="0"/>
          <xs:element name="nationalityDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="nationalityName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="personIdentifier">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="dateCreated" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="dateVoided" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="identifier" type="xs:string" minOccurs="0"/>
          <xs:element ref="identifierDomain" minOccurs="0"/>
          <xs:element name="personIdentifierId" type="xs:int" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="phoneType">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="phoneTypeCd" type="xs:int" minOccurs="0"/>
          <xs:element name="phoneTypeCode" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneTypeDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneTypeName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="race">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="raceCd" type="xs:int" minOccurs="0"/>
          <xs:element name="raceCode" type="xs:string" minOccurs="0"/>
          <xs:element name="raceDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="raceName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="religion">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="religionCd" type="xs:int" minOccurs="0"/>
          <xs:element name="religionCode" type="xs:string" minOccurs="0"/>
          <xs:element name="religionDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="religionName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="user">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="accountExpired" type="xs:boolean"/>
          <xs:element name="accountLocked" type="xs:boolean"/>
          <xs:element name="address" type="address" minOccurs="0"/>
          <xs:element name="credentialsExpired" type="xs:boolean"/>
          <xs:element name="email" type="xs:string" minOccurs="0"/>
          <xs:element name="enabled" type="xs:boolean"/>
          <xs:element name="firstName" type="xs:string" minOccurs="0"/>
          <xs:element name="id" type="xs:long" minOccurs="0"/>
          <xs:element name="lastName" type="xs:string" minOccurs="0"/>
          <xs:element name="phoneNumber" type="xs:string" minOccurs="0"/>
          <xs:element name="username" type="xs:string" minOccurs="0"/>
          <xs:element name="website" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="address">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="address" type="xs:string" minOccurs="0"/>
          <xs:element name="city" type="xs:string" minOccurs="0"/>
          <xs:element name="country" type="xs:string" minOccurs="0"/>
          <xs:element name="postalCode" type="xs:string" minOccurs="0"/>
          <xs:element name="province" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="reviewRecordPair">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="dateCreated" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="dateReviewed" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="linkSource" type="linkSource" minOccurs="0"/>
          <xs:element name="personLeft" type="person" minOccurs="0"/>
          <xs:element name="personRight" type="person" minOccurs="0"/>
          <xs:element name="recordsMatch" type="xs:boolean" minOccurs="0"/>
          <xs:element name="reviewRecordPairId" type="xs:int" minOccurs="0"/>
          <xs:element name="userCreatedBy" type="user" minOccurs="0"/>
          <xs:element name="userReviewedBy" type="user" minOccurs="0"/>
          <xs:element name="weight" type="xs:double" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="linkSource">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="linkSourceId" type="xs:int" minOccurs="0"/>
          <xs:element name="sourceDescription" type="xs:string" minOccurs="0"/>
          <xs:element name="sourceName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="personLink">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="clusterId" type="xs:int" minOccurs="0"/>
          <xs:element name="dateCreated" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="linkSource" type="linkSource" minOccurs="0"/>
          <xs:element name="personLeft" type="person" minOccurs="0"/>
          <xs:element name="personLinkId" type="xs:int" minOccurs="0"/>
          <xs:element name="personRight" type="person" minOccurs="0"/>
          <xs:element name="userCreatedBy" type="user" minOccurs="0"/>
          <xs:element name="weight" type="xs:double" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="mergePersonsRequest">
    <xs:sequence>
      <xs:element name="retiredIdentifier" type="personIdentifier" minOccurs="0"/>
      <xs:element name="survivingIdentifer" type="personIdentifier" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="identifierDomainAttribute">
    <xs:sequence>
      <xs:element name="attributeName" type="xs:string" minOccurs="0"/>
      <xs:element name="attributeValue" type="xs:string" minOccurs="0"/>
      <xs:element name="identifierDomainAttributeId" type="xs:int" minOccurs="0"/>
      <xs:element name="identifierDomainId" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="identifierDomainAttributeRequest">
    <xs:sequence>
      <xs:element name="attributeName" type="xs:string" minOccurs="0"/>
      <xs:element name="attributeValue" type="xs:string" minOccurs="0"/>
      <xs:element ref="identifierDomain" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="identifierUpdateEvent">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="dateCreated" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="identifierUpdateEventId" type="xs:long" minOccurs="0"/>
          <xs:element name="postUpdateIdentifiers" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="postUpdateIdentifier" type="identifierUpdateEntry" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="preUpdateIdentifiers" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="preUpdateIdentifier" type="identifierUpdateEntry" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="source" type="xs:string" minOccurs="0"/>
          <xs:element name="transition" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="identifierUpdateEntry">
    <xs:complexContent>
      <xs:extension base="baseObject">
        <xs:sequence>
          <xs:element name="identifier" type="xs:string" minOccurs="0"/>
          <xs:element ref="identifierDomain" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="authenticationRequest">
    <xs:sequence>
      <xs:element name="password" type="xs:string" minOccurs="0"/>
      <xs:element name="username" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stringList">
    <xs:sequence>
      <xs:element name="data" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

