<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:epagestypes="urn://epages.de/WebService/EpagesTypes/2005/01"
           xmlns:shoptypes="urn://epages.de/WebService/ShopTypes/2011/01"
           xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
           xmlns:tns="urn://epages.de/WebService/UserTypes/2011/03"
           targetNamespace="urn://epages.de/WebService/UserTypes/2011/03">
  <xs:import namespace="urn://epages.de/WebService/EpagesTypes/2005/01"
             schemaLocation="EpagesTypes.xsd" />
  <xs:import namespace="urn://epages.de/WebService/ShopTypes/2011/01"
             schemaLocation="ShopTypes3.xsd" />
  <!-- GetInfo -->
  <xs:complexType name="TGetInfo_Return">
    <xs:annotation>
      <xs:documentation>
        a single return value of a getInfo() user call.
        the path will be always returned.
        the error element will be returned in case of error.
        all other elements will be returned if no error has occured.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Path"
                  type="xs:string">
        <xs:annotation>
          <xs:documentation>user object path</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Alias"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user alias (=login)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Class"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>path to user's class</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocaleID"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's locale id (e.g. 'en_US')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageCode"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's shop language code (e.g. 'en')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CurrencyID"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's currency (e.g. 'EUR')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Password"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's password</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsActivated"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's activ state</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DeleteConfirmation"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's delete confirmation preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsLoginCookieAllowed"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's login cookie preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsHtmlEMailAllowed"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's html email preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReminderQuestion"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's reminder question</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChallengePhrase"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's challenge phrase</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EMail"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's email</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's display name</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BillingAddress"
                  type="shoptypes:TAddressNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's billing address</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ShippingAddress"
                  type="shoptypes:TAddressNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's shipping address</xs:documentation>
        </xs:annotation>
      </xs:element>
       <xs:element name="AdditionalAddresses"
                  type="tns:ListOfAddressesNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>all user addresses including the refered ShippingAddress and BilliungAddress (see below)</xs:documentation>
        </xs:annotation>
      </xs:element>
     <xs:element name="Customers"
                  type="tns:ListOfCustomerPaths"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>list of assigned customers (see usertypes:ListOfCustomerPaths)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Attributes"
                  type="epagestypes:ListOfAttributes"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>list of requested attributes (see epagestypes:ListOfAttributes)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Error"
                  type="epagestypes:TError"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>error object (see epagestypes:TError)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <!-- Exists -->
  <xs:complexType name="TExists_Return">
    <xs:annotation>
      <xs:documentation>
        a single return value of a exists() user call.
        the path will be always returned.
        the error element will be returned in case of error.
        the exists flag will be returned if no error has occured.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Path"
                  type="xs:string" />
      <xs:element name="exists"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>a boolean flag indicating that this user exists</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Error"
                  type="epagestypes:TError"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>error object (see epagestypes:TError)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <!-- SendPassword -->
  <xs:complexType name="TSendPassword_Return">
    <xs:annotation>
      <xs:documentation>
        a single return value of a sendPassword() user call.
        the path will be always returned.
        the error element will be returned in case of error.
        the sent flag will be returned if no error has occured.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Path"
                  type="xs:string" />
      <xs:element name="sent"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>a boolean flag indicating that the email was sent to user</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Error"
                  type="epagestypes:TError"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>error object (see epagestypes:TError)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <!-- Delete -->
  <xs:complexType name="TDelete_Return">
    <xs:annotation>
      <xs:documentation>
        a single return value of a delete() user call.
        the path will be always returned.
        the error element will be returned in case of error.
        the deleted flag will be returned if no error has occured.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Path"
                  type="xs:string" />
      <xs:element name="deleted"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>a boolean flag indicating that this user was deleted</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Error"
                  type="epagestypes:TError"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>error object (see epagestypes:TError)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <!-- Update -->
  <xs:complexType name="TUpdate_Input">
    <xs:annotation>
      <xs:documentation>
        input arguments of a single update() user call.
        a set of optional user specific attributes that will be updated.
        the path element is mandatory.
        all others are optional.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Path"
                  type="xs:string">
        <xs:annotation>
          <xs:documentation>user object path</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocaleID"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's locale id (e.g. 'en_US')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageCode"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's shop language code (e.g. 'en')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CurrencyID"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's currency (e.g. 'EUR')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Password"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's password (crypted)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsActivated"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's activ state</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DeleteConfirmation"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's delete confirmation preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsLoginCookieAllowed"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's login cookie preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsHtmlEMailAllowed"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's html email preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReminderQuestion"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's reminder question</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChallengePhrase"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's challenge phrase</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EMail"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's email</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's display name</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BillingAddress"
                  type="shoptypes:TAddressNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's billing address</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ShippingAddress"
                  type="shoptypes:TAddressNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's shipping address</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AdditionalAddresses"
                  type="tns:ListOfAddressesNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>all user's shipping addresses identified by alias</xs:documentation>
        </xs:annotation>
     </xs:element>
     <xs:element name="Customers"
                  type="tns:ListOfCustomerPaths"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>list of assigned customers (see usertypes:ListOfCustomerPaths)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Attributes"
                  type="epagestypes:ListOfAttributes"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>list of requested attributes (see epagestypes:ListOfAttributes)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="TUpdate_Return">
    <xs:annotation>
      <xs:documentation>
        a single return value of a update() user call.
        the path will be always returned.
        the error element will be returned in case of error.
        the updated flag will be returned if no error has occured.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Path"
                  type="xs:string" />
      <xs:element name="updated"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>a boolean flag indicating that this user was updated</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Error"
                  type="epagestypes:TError"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>error object (see epagestypes:TError)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <!-- Create -->
  <xs:complexType name="TCreate_Input">
    <xs:annotation>
      <xs:documentation>
        input arguments of a single create() user call.
        a set of customer specific attributes that will be used to create a user.
        alias, password, email, name, billing address, shipping address are mandatory.
        all others are optional.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Alias"
                  type="xs:string">
        <xs:annotation>
          <xs:documentation>user alias (=login)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocaleID"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's locale id (e.g. 'en_US')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageCode"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's shop language code (e.g. 'en')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CurrencyID"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's currency (e.g. 'EUR')</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Password"
                  type="xs:string">
        <xs:annotation>
          <xs:documentation>user's password (crypted)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsActivated"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's activ state</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DeleteConfirmation"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's delete confirmation preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsLoginCookieAllowed"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's login cookie preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IsHtmlEMailAllowed"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's html email preference</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReminderQuestion"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's reminder question</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChallengePhrase"
                  type="xs:string"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>user's challenge phrase</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EMail"
                  type="xs:string">
        <xs:annotation>
          <xs:documentation>user's email</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name"
                  type="xs:string">
        <xs:annotation>
          <xs:documentation>user's display name</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BillingAddress"
                  type="shoptypes:TAddressNamed">
        <xs:annotation>
          <xs:documentation>user's billing address</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ShippingAddress"
                  type="shoptypes:TAddressNamed">
        <xs:annotation>
          <xs:documentation>user's shipping address</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AdditionalAddresses"
                  type="tns:ListOfAddressesNamed"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>all user's shipping addresses identified by alias</xs:documentation>
        </xs:annotation>
     </xs:element>
      <xs:element name="Customers"
                  type="tns:ListOfCustomerPaths"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>list of assigned customers (see usertypes:ListOfCustomerPaths)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Attributes"
                  type="epagestypes:ListOfAttributes"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>list of requested attributes (see epagestypes:ListOfAttributes)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="TCreate_Return">
    <xs:annotation>
      <xs:documentation>
        a single return value of a create() user call.
        the alias will be always returned.
        the error element will be returned in case of error.
        the created flag and path will be returned if no error has occured.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="Alias"
                  type="xs:string" />
      <xs:element name="Path"
                  type="xs:string"
                  minOccurs="0" />
      <xs:element name="created"
                  type="xs:boolean"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>a boolean flag indicating that this user was created</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Error"
                  type="epagestypes:TError"
                  minOccurs="0">
        <xs:annotation>
          <xs:documentation>error object (see epagestypes:TError)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
 </xs:complexType>

  <!-- Additional -->
  <xs:complexType name="ListOfCustomerPaths">
    <xs:annotation>
      <xs:documentation>
        list of customer paths.
        each element is a object path of a customer.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="soapenc:Array">
        <xs:attribute ref="soapenc:arrayType"
                      wsdl:arrayType="xs:string[]" />
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ListOfAddressesNamed">
    <xs:annotation>
      <xs:documentation>
        list of user addresses
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="soapenc:Array">
        <xs:attribute ref="soapenc:arrayType"
                      wsdl:arrayType="shoptypes:TAddressNamed[]" />
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

</xs:schema>
