<?xml version="1.0" encoding="UTF-8"?>
<s:schema xmlns:echo="http://echo.nasa.gov/echo/v10/types" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://echo.nasa.gov/echo/v10/types" elementFormDefault="qualified" version="1.0">
  <s:complexType name="Address">
    <s:annotation>
      <s:documentation>
        <p>Represents a named address. The address can be in either the standard US format
						or in a somewhat free format for international addresses. Use the boolean field
						&apos;USFormat&apos; to declare whether the address is using the standard US format or
						not. The country field must not exceed 40 characters.</p>
        <p>The US format requires at least one street address to be filled as well as have
						the city, state, zip code, and country fields filled out. While an
						international address can still be filled in a US format, a US address can not take a non-US format.</p>
        <p>The non-US format only requires one street address, city, and the country
						field. In the non-US free format all the five street fields should be used to
						fill out most of the address information. Keep in mind, the country and city
						fields must always be filled out.</p>
      </s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AddressName" type="xs:string">
        <s:annotation>
          <s:documentation>The user specified name of this address. This field is
					restricted to 100 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UsFormat" type="xs:boolean">
        <s:annotation>
          <s:documentation>Indicates that the address is in a US format (true) or an international
							format (false).</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Street1" type="xs:string">
        <s:annotation>
          <s:documentation>The first street of the address.  This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Street2" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The optional second street.  This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Street3" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The optional third street.  This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Street4" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The optional forth street.  This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Street5" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The optional fifth street. This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="City" type="xs:string">
        <s:annotation>
          <s:documentation>The city. This field is
					restricted to 100 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="State" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The state. This field is
					restricted to 100 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Zip" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The zip code. This field is
					restricted to 20 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Country" type="xs:string">
        <s:annotation>
          <s:documentation>Country field is limited to 40 characters</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SpecialInstructions" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>Special instructions related to this address as supplied by the user such
							as &quot;Leave packages with the front desk&quot;. This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="BooleanCondition">
    <s:annotation>
      <s:documentation>A condition that is always true or false</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ConditionName" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The description of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="BooleanFlag" type="xs:boolean">
        <s:annotation>
          <s:documentation>Flag to indicate the type of the condition, either true or false.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="UserPreferences">
    <s:annotation>
      <s:documentation>The preferences selected by a user that ECHO will use in various locations such as
					ordering.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The guid assigned to these preferences.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ShippingContact" type="echo:Contact" minOccurs="0">
        <s:annotation>
          <s:documentation>Contact used for shipping items. This preference is normally used when
							placing an order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="BillingContact" type="echo:Contact" minOccurs="0">
        <s:annotation>
          <s:documentation>Contact used for billing items. This preference is normally used when
							placing an order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="GeneralContact" type="echo:Contact" minOccurs="0">
        <s:annotation>
          <s:documentation>Contact used for general communications with the user in response to some
							requested action. This preference is normally used when placing an order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrderNotificationLevel" type="echo:NotificationLevel" minOccurs="0">
        <s:annotation>
          <s:documentation>The notification level to use when placing an order. This may be set
							explicitly when placing the order or it will be defaulted to the given
							preference. This is the only preference that ECHO will automatically use.
							The other user preferences should be used by a client application when
							placing an order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Properties" type="echo:AnyElements" minOccurs="0">
        <s:annotation>
          <s:documentation>Custom properties set by a client application. ECHO does not normally use
							these internally, but can simply store them for a client application. A
							client application should honor and preserve the custom properties set by a
							different client application.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ProviderPolicies">
    <s:annotation>
      <s:documentation>Contains all the policies related to ordering from the provider. This information
					includes the endpoint URI and retry information. Normally a provider establishes
					the policies to initialize ordering support in ECHO for the provider&apos;s data.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="EndPoint" type="xs:string">
        <s:annotation>
          <s:documentation>The provider&apos;s server location. This is in the form of a URI. For provider
							that speak HTTP, this would be a full URL. For providers with a specialized
							server and protocol, this would be in the format of server:port.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RetryAttempts" type="xs:int">
        <s:annotation>
          <s:documentation>Number of times that ECHO will try to connect to the provider if the
							transmission fails.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RetryWaitTime" type="xs:int">
        <s:annotation>
          <s:documentation>Amount of time that ECHO will wait before trying to connect. The time is
							measured in seconds.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Routing" type="echo:RoutingType">
        <s:annotation>
          <s:documentation>Indicates the routing mechanism used to contact the provider. The routing
							mechanism determines if ECHO is using a local order adapter, a remote order
							adapter, or connecting to the provider directly.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SslPolicy" type="echo:SSLPolicy">
        <s:annotation>
          <s:documentation>The SSL policy for these provider policies. The SSL policies contain all
							the SSL related information for this provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrderSupportsDuplicateCatalogItems" type="xs:boolean">
        <s:annotation>
          <s:documentation>This indicates whether or not the provider supports separate order items
							with the same catalog item in the same order. If this is set to false ECHO
							will not allow an order to contain more than one order item to have a
							particular catalog item.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SupportedTransactions" type="echo:ListOfOrderTransactionTypes">
        <s:annotation>
          <s:documentation>The transactions that provider supports. Each supported transaction will be
							listed in this set.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Properties" type="echo:AnyElements" minOccurs="0">
        <s:annotation>
          <s:documentation>Extra information that will not be used by ECHO but will simply be passed
							through ECHO to the provider. If the provider is using an adapter, the
							adapter may make use of this information to contact the real provider
							endpoint or perform actions on behalf of the provider (such as quoting).</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="SSLPolicy">
    <s:annotation>
      <s:documentation>Contains all the provider policy information related to establishing an SSL
					connection to the provider when sending an order for submit, cancel, or quote.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="SslCertificateActivated" type="xs:boolean" minOccurs="0">
        <s:annotation>
          <s:documentation>A flag to indicate if the certificate has been activated by operations. If
							false, the certificate has not been activated and should not be used for
							order transmissions.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SslEnabled" type="xs:boolean">
        <s:annotation>
          <s:documentation>A flag to indicate if the certificate is enabled. If false, the certificate
							should not be used for order transmissions, even if the certificate has
							been activated.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SslCertificate" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>
            <p>The actual SSL certificate.</p>
            <p>The certificate must be encoded according to the standards for
								privacy-enhanced mail (PEM) as defined in RFC 1421
								(http://tools.ietf.org/html/rfc1421) which depends on RFC 934 (
								http://www.apps.ietf.org/rfc/rfc934.html). In its printable encoding
								format, the encoded certificate is bounded at the beginning by</p>
            <p>
              <code>-----BEGIN CERTIFICATE-----[CRLF]</code>
            </p>
            <p>and at the end by</p>
            <p>
              <code>[CRLF]-----END CERTIFICATE-----</code>
            </p>
            <p>where [CRLF] represents the new line character.</p>
          </s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SslLastUpdate" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The date the ssl certificate was last updated.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="CatalogItem">
    <s:annotation>
      <s:documentation>Describes an entry in the ECHO product catalog such as a collection or granule.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ItemGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the catalog item.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Type" type="echo:CatalogItemType">
        <s:annotation>
          <s:documentation>The type of the catalog item. This will be one of collection or granule.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the provider that owns this catalog item.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ListPrice" type="xs:float">
        <s:annotation>
          <s:documentation>The price of the catalog item if it were to be ordered from the provider.
							Not all catalog items are orderable.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OptionDefinitionGuids" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>The GUIDs of the assigned Option Definitions to this catalog item. Ordering
							this catalog item will require an option selection for one of the
							associated option definitions.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="CatalogItemOrderInformation">
    <s:annotation>
      <s:documentation>Used to describe entries in the ECHO product catalog and any information required
					for ordering the item.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Items" type="echo:ListOfCatalogItems">
        <s:annotation>
          <s:documentation>The catalog items that may be ordered. Each catalog item has a list of
							option definition guids that indicate what the associate option definitions
							are.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Options" type="echo:ListOfOptionDefinitions">
        <s:annotation>
          <s:documentation>A list of option definitions for the catalog items. The option definitions
							indicate information such as how the item may be ordered. Normally
							selections must be provided to these definitions when ordering the item
							from the provider.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="CatalogItemOrderInformation2">
    <s:annotation>
      <s:documentation>Used to describe entries in the ECHO product catalog and any information required
					for ordering the item with possible enhanced option definition information.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Items" type="echo:ListOfCatalogItems">
        <s:annotation>
          <s:documentation>The catalog items that may be ordered. Each catalog item has a list of
							option definition guids that indicate what the associate option definitions
							are.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Options" type="echo:ListOfOptionDefinitions2">
        <s:annotation>
          <s:documentation>
          	A list of option definitions for the catalog items with
          	possible enhanced option definition information. The
          	option definitions indicate information such as how the
          	item may be ordered. Normally selections must be provided
          	to these definitions when ordering the item from the
          	provider.
          </s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Classification">
    <s:annotation>
      <s:documentation>Represents a classification using a taxonomy entry.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Type" type="echo:ClassificationType">
        <s:annotation>
          <s:documentation>The classification type.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Entry" type="echo:TaxonomyEntry">
        <s:annotation>
          <s:documentation>The taxonomy entry being used to classify.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ClientInformation">
    <s:annotation>
      <s:documentation>Information about a client application and the user of the application. This
					information is used for metric information within ECHO and is required by some
					providers when placing an order.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ClientId" type="xs:string">
        <s:annotation>
          <s:documentation>The identifier of the client application. This is used by ECHO and
							providers to track which client applications are being used to interface
							with ECHO.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserIpAddress" type="xs:string">
        <s:annotation>
          <s:documentation>The IP address of the user interacting with ECHO. Note that this may be
							different than the client IP address if the client application is a web
							application. The user IP address should be the address where the 
                            actual <i>user</i> is making requests from. This must be of the format <i>d.d.d.d</i>
                            where <i>d</i> is a base 10 integer between 0 and 255.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Contact">
    <s:annotation>
      <s:documentation>Contact information for an individual including name, address, phone numbers, and
					email address. The contact may be named, such as &quot;Manager&quot; or &quot;Billing Specialist&quot;.
					The role is used to aid users in identifying a particular contact.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the contact.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Role" type="xs:string">
        <s:annotation>
          <s:documentation>The user supplied role of the contact. This field is
					restricted to 50 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Title" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The title of the person to contact in regards to the address this data
							type is associated with.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="FirstName" type="xs:string">
        <s:annotation>
          <s:documentation>The first name of the person to contact in regards to the address this data
							type is associated with. This field is restricted to 30 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="MiddleInitial" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The middle initial of the person to contact in regards to the address this data
							type is associated with.  This must be of length 1 and can only contain the characters A-Z 
							and a-z.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="LastName" type="xs:string">
        <s:annotation>
          <s:documentation>The last name of the person to contact in regards to the address this data
							type is associated with. This field is restricted to 100 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Address" type="echo:Address" minOccurs="0">
        <s:annotation>
          <s:documentation>The address information for the contact. Must be supplied in contacts 
					        associated with orders.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Phones" type="echo:ListOfPhones" minOccurs="0">
        <s:annotation>
          <s:documentation>The phone numbers for the contact, including home, business, and fax 
					        numbers.  At least one phone number must be supplied in contacts associated with 
					        orders.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Email" type="xs:string">
        <s:annotation>
          <s:documentation>The email address of the contact. This field is
					restricted to 100 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Organization" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The organization name of the contact. This field is
					restricted to 1024 characters.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="DataAccessRule">
    <s:annotation>
      <s:documentation>
        <p>A rule in the Echo system that applies to data. A rule applies to a specific
						set of meta data with specific criteria. A rule contains a condition which is
						used when applying the rule. A rule can only contain one condition, therefore
						only one condition type may be specified in a rule.</p>
        <p>It is important to note that a list of group guids is part of this data type.
						The current implementation ignores the guids if the rule type is a RESTRICTION.</p>
      </s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the rule.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RuleName" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the rule as specified by the user.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The human readable description of the rule.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RuleType" type="echo:AccessRuleType">
        <s:annotation>
          <s:documentation>The type of the rule. Permissions grant access to specific groups while
							restrictions remove access to all groups.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Action" type="echo:ActionType">
        <s:annotation>
          <s:documentation>The action that the user may perform that would cause this rule to apply.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="BooleanConditionField" type="echo:BooleanCondition" minOccurs="0">
        <s:annotation>
          <s:documentation>A boolean condition for this rule. Only one condition type may be specified.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="TemporalConditionField" type="echo:TemporalCondition" minOccurs="0">
        <s:annotation>
          <s:documentation>A temporal condition for this rule. Only one condition type may be
							specified.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RollingTemporalConditionField" type="echo:RollingTemporalCondition" minOccurs="0">
        <s:annotation>
          <s:documentation>A rolling temporal condition for this rule. Only one condition type may be
							specified.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RestrictionFlagConditionField" type="echo:RestrictionFlagCondition" minOccurs="0">
        <s:annotation>
          <s:documentation>A restriction flag condition for this rule. Only one condition type may be
							specified.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ConditionComparator" type="echo:Comparator">
        <s:annotation>
          <s:documentation>The comparator to use when applying the condition. Some conditions only
							support a subset of the comparators.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="GroupGuids" type="echo:ListOfStrings" minOccurs="0">
        <s:annotation>
          <s:documentation>The guids of the groups that this rule applies to if it is of type
							permission.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DataType" type="echo:CatalogItemType">
        <s:annotation>
          <s:documentation>The type of the data that this rule applies to. This is one of collection
							or granule.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DataValue" type="echo:ListOfStrings" minOccurs="0">
        <s:annotation>
          <s:documentation>The values that this rule applies to. The values are the dataset ids if the
							data type is collection or the granule UR if the data type is granule. If
							the data values are null, then the rule will apply to all collections or
							granules. Note that an empty array will be treated as a null array.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="DeliveryInfo">
    <s:annotation>
      <s:documentation>Contains delivery information.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="DeliveryMethod" type="echo:DeliveryType">
        <s:annotation>
          <s:documentation>set as EMAIL or FTPPUSH</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DeliveryAddress" type="xs:string">
        <s:annotation>
          <s:documentation>in the format of userid@domain.name</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Password" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>specified only if the deliveryType is a FTPPUSH</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DeliveryFolder" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>specified only if the deliveryType is a FTPPUSH</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="LimitSize" type="xs:float">
        <s:annotation>
          <s:documentation>measured in MB(bytes)</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ErrorCode">
    <s:sequence>
      <s:element name="Code" type="xs:string">
        <s:annotation>
          <s:documentation>The error code constant supported by ECHO.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OpsMessage" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The operations message for this error code. This field may not be set if
							the error code has no ops message.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="EventSubscription">
    <s:annotation>
      <s:documentation>Represents a subscription to an event in ECHO. When the event occurs, the filter
					will be applied to see if the notification should be delivered to the notify to
					address.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The guid of this event subscription.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The user assigned name of the subscription.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="EndTo" type="xs:anyURI" minOccurs="0">
        <s:annotation>
          <s:documentation>The URL to post the message indicating that the subscription has ended
							before the expiration date.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="NotifyTo" type="xs:anyURI">
        <s:annotation>
          <s:documentation>
            <p>The URI to send all notifications to. This URI takes on different forms
								depending on the deliver mode.</p>
            <p>
              <ul>
                <li>Ftp Push: An FTP URL in the format<code>ftp://[user
											ID:password@]&lt;host_name&gt;[:port]/[path_name/][file name]</code>
                </li>
                <li>Email: a standard email address</li>
                <li>HTTP Soap: An HTTP URL normally to a web service endpoint
										implementing the event notification sink WSDL defined
										interface.</li>
              </ul>
            </p>
          </s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DeliveryMode" type="echo:NotificationDeliveryMode">
        <s:annotation>
          <s:documentation>The selected delivery mode for the subscription. Based on the delivery
							mode, different notify to addressing schemes can be used.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Expires" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The expiration date of the subscription.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Filter" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The filter to apply to all outgoing notifications.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="FilterDialect" type="echo:FilterDialect" minOccurs="0">
        <s:annotation>
          <s:documentation>The selected filter dialect. Based on the filter dialect, different
							filterlanguages and structures acan be used.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Properties" type="echo:AnyElements" minOccurs="0">
        <s:annotation>
          <s:documentation>The reference properties provided by the client. These properties will be
							sent back to the client with each notification.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="AnyElements">
    <s:annotation>
      <s:documentation>Contains any XML elements. It is important to note that any CDATA sections received
					in the reference properties will be sent to the client escaped as normal text.
					Clients should not be made dependent on processing the XML by looking for the CDATA
					tags. This is normally used when ECHO does not use the data, but simply stores it
					or passes it to a third party on behalf of a client application. For an example,
					see the provider policies or user preferences.</s:documentation>
    </s:annotation>
    <s:simpleContent>
      <s:extension base="xs:string"/>
    </s:simpleContent>
  </s:complexType>
  <s:complexType name="AnyElement">
    <s:annotation>
      <s:documentation>Contains any single XML element. It is important to note that any CDATA sections
					received in the reference properties will be sent to the client escaped as normal
					text. Clients should not be made dependent on processing the XML by looking for the
					CDATA tags. This is normally used when ECHO does not use the data, but simply
					stores it or passes it to a third party on behalf of a client application.</s:documentation>
    </s:annotation>
    <s:simpleContent>
      <s:extension base="xs:string"/>
    </s:simpleContent>
  </s:complexType>
  <s:complexType name="Group">
    <s:annotation>
      <s:documentation>This data type is used to describe the information contained within a group.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id for the group.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The user supplied name of the group.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The description of the group.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ManagerGuids" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>The guids of all the managers in the group.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="MemberGuids" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>The guids of all the users in the group.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="InvocationParameter">
    <s:annotation>
      <s:documentation>One parameter to use when invoking an operation.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>the name of the parameter</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Value" type="xs:string">
        <s:annotation>
          <s:documentation>the value to pass to the operation</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="InvocationResults">
    <s:annotation>
      <s:documentation>The results of an invocation. This contains the last status and the results if the
					invocation is complete.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="InvocationGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The unique id of the invocation</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="InvocationResults" type="xs:string">
        <s:annotation>
          <s:documentation>the results returned from the operation invoked</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="LastStatus" type="echo:StatusEntry">
        <s:annotation>
          <s:documentation>the status of the invocation</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfAddresses">
    <s:annotation>
      <s:documentation>A list of address information</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Item" type="echo:Address" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfCatalogItems">
    <s:sequence>
      <s:element name="Item" type="echo:CatalogItem" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfClassificationTypes">
    <s:sequence>
      <s:element name="Item" type="echo:ClassificationType" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfClassifications">
    <s:sequence>
      <s:element name="Item" type="echo:Classification" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfContacts">
    <s:sequence>
      <s:element name="Item" type="echo:Contact" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfDataAccessRules">
    <s:sequence>
      <s:element name="Item" type="echo:DataAccessRule" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfEventSubscriptions">
    <s:sequence>
      <s:element name="Item" type="echo:EventSubscription" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfGroups">
    <s:sequence>
      <s:element name="Item" type="echo:Group" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfInts">
    <s:sequence>
      <s:element name="Item" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfInvocationParameters">
    <s:sequence>
      <s:element name="Item" type="echo:InvocationParameter" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfInvocationResults">
    <s:sequence>
      <s:element name="Item" type="echo:InvocationResults" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfMetadataPaths">
    <s:sequence>
      <s:element name="Item" type="echo:MetadataPath" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfMetadataResolvedPaths">
    <s:sequence>
      <s:element name="Item" type="echo:MetadataResolvedPath" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfMetadataSubscriptions">
    <s:sequence>
      <s:element name="Item" type="echo:MetadataSubscription" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfNameGuids">
    <s:sequence>
      <s:element name="Item" type="echo:NameGuid" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOptionAssignments">
    <s:sequence>
      <s:element name="Item" type="echo:OptionAssignment" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOptionDefinitions">
    <s:sequence>
      <s:element name="Item" type="echo:OptionDefinition" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOptionDefinitions2">
    <s:sequence>
      <s:element name="Item" type="echo:OptionDefinition2" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOrderItems">
    <s:sequence>
      <s:element name="Item" type="echo:OrderItem" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOrderStates">
    <s:sequence>
      <s:element name="Item" type="echo:OrderState" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOrderTransactionTypes">
    <s:annotation>
      <s:documentation>A list of order transaction types.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Item" type="echo:OrderTransactionType" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfOrders">
    <s:sequence>
      <s:element name="Item" type="echo:Order" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfPhones">
    <s:sequence>
      <s:element name="Item" type="echo:Phone" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfProviderHoldings">
    <s:sequence>
      <s:element name="Item" type="echo:ProviderHolding" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfProviderOrderGuids">
    <s:sequence>
      <s:element name="Item" type="echo:ProviderOrderGuid" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfProviderOrderStates">
    <s:sequence>
      <s:element name="Item" type="echo:ProviderOrderState" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfProviderOrders">
    <s:sequence>
      <s:element name="Item" type="echo:ProviderOrder" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfProviderTypes">
    <s:sequence>
      <s:element name="Item" type="echo:ProviderType" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfProviders">
    <s:sequence>
      <s:element name="Item" type="echo:Provider" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfRoles">
    <s:sequence>
      <s:element name="Item" type="echo:Role" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfSavedQueries">
    <s:sequence>
      <s:element name="Item" type="echo:SavedQuery" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfSecurityTokenInformations">
    <s:sequence>
      <s:element name="Item" type="echo:SecurityTokenInformation" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfStatusAnnotations">
    <s:sequence>
      <s:element name="Item" type="echo:StatusAnnotation" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfStatusEntries">
    <s:sequence>
      <s:element name="Item" type="echo:StatusEntry" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfStrings">
    <s:sequence>
      <s:element name="Item" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfDates">
    <s:sequence>
      <s:element name="Item" type="xs:dateTime" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfGYearMonths">
    <s:sequence>
      <s:element name="Item" type="xs:gYearMonth" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfTaxonomies">
    <s:sequence>
      <s:element name="Item" type="echo:Taxonomy" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfTaxonomyEntries">
    <s:sequence>
      <s:element name="Item" type="echo:TaxonomyEntry" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfTemporalRanges">
    <s:sequence>
      <s:element name="Item" type="echo:TemporalRange" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfMetadataAttributes">
    <s:sequence>
      <s:element name="Item" type="echo:MetadataAttribute" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfUserAuthenticators">
    <s:sequence>
      <s:element name="Item" type="echo:UserAuthenticator" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfUsers">
    <s:sequence>
      <s:element name="Item" type="echo:User" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfVirtualTaxonomyTypes">
    <s:sequence>
      <s:element name="Item" type="echo:VirtualTaxonomyType" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfVisibilityFlagSettings">
    <s:sequence>
      <s:element name="Item" type="echo:VisibilityFlagSetting" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfVisibilityFlags">
    <s:sequence>
      <s:element name="Item" type="echo:VisibilityFlag" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfVisibilityFlagTypes">
    <s:sequence>
      <s:element name="Item" type="echo:VisibilityFlagType" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWSAdvertisements">
    <s:sequence>
      <s:element name="Item" type="echo:WSAdvertisement" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWSGuis">
    <s:sequence>
      <s:element name="Item" type="echo:WSGui" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWSImplementations">
    <s:sequence>
      <s:element name="Item" type="echo:WSImplementation" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWSInterfaces">
    <s:sequence>
      <s:element name="Item" type="echo:WSInterface" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWSOperations">
    <s:sequence>
      <s:element name="Item" type="echo:WSOperation" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWSParameters">
    <s:sequence>
      <s:element name="Item" type="echo:WSParameter" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ListOfWebServiceListings">
    <s:sequence>
      <s:element name="Item" type="echo:WebServiceListing" minOccurs="0" maxOccurs="unbounded"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="MetadataActionInfo">
    <s:annotation>
      <s:documentation>Represents any actions to take on the data.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="MetadataAttributes" type="echo:ListOfMetadataAttributes" minOccurs="0">
        <s:annotation>
          <s:documentation>used to define the attributes that will be returned</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CompressionMethod" type="echo:CompressionType">
        <s:annotation>
          <s:documentation>set as UNCOMPRESSED or GZIP</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UpdateType" type="echo:SubscriptionUpdateType">
        <s:annotation>
          <s:documentation>set as BOTH, COLLECTIONS_ONLY, GRANULES_ONLY, or ALL_COLLECTIONS</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="MetadataFilterInfo">
    <s:annotation>
      <s:documentation>This represents a way to filter the metadata subscribed to.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Query" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>Any Valid IIMS AQL. If this is a granule query then collection events will be filtered out 
					for this subscription.  The opposite applies if this is a collection query. If a provider
					guid of * is specified in the subscription, the query must use a data center id of 'all'. If
					a single provider guid is a specified in the subscription, the data center id must be
					a single 'value' element (not a 'list') which matches the data center id for the provider.
					</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="NumberOfDays" type="xs:int" minOccurs="0">
        <s:annotation>
          <s:documentation>Rolling temporal condition which limits the results to any items added to
							the catalog within the given number of days from the date the subscription
							is executed.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="MetadataPath">
    <s:annotation>
      <s:documentation>A path into the metadata of a collection or granule. The path includes the item
					guid and one or more XPaths into the metadata.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Xpaths" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>Standard XPaths into the metadata. The XPath must be valid against the
							metadata that is normally retrieved for an item.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ItemGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the item the path applies to.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="MetadataResolvedPath">
    <s:annotation>
      <s:documentation>A resolved metadata path. A resolved path includes the item guid and the values
					that were resolved based on the XPaths given in the original path.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Values" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>The values extracted from the metadata using the previously supplied
							XPaths.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ItemGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the item the path applies to.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="MetadataSubscription">
    <s:annotation>
      <s:documentation>This type represents the info for a metadata subscription request.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the subscription.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="State" type="echo:SubscriptionState" minOccurs="0">
        <s:annotation>
          <s:documentation>The current state of the subscription. This is one of paused, active, or
							expired.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SubscriptionName" type="xs:string">
        <s:annotation>
          <s:documentation>the name of the subscription</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>the provider the subscription references. you may use * to indicate all
							providers. A provider guid of * can be used in a subscription with a filter query if 
							and only if the query data center id is set to 'all'. If a specific provider
							guid is specified and a filter query is used, the filter query may only list the
							single data center id for the provider using a single 'value' element (not
							a 'list').
							</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DatasetName" type="xs:string">
        <s:annotation>
          <s:documentation>the dataset the subscription references. you may use * to indicate all
							datasets.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="FilterInfo" type="echo:MetadataFilterInfo">
        <s:annotation>
          <s:documentation>the narrowing information used to limit the size of the metadata subscribed
							to</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ActionInfo" type="echo:MetadataActionInfo">
        <s:annotation>
          <s:documentation>any actions to take on the data prior to delivery</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DeliveryInformation" type="echo:DeliveryInfo">
        <s:annotation>
          <s:documentation>the delivery information for the subscription</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="StopTime" type="xs:dateTime">
        <s:annotation>
          <s:documentation>when the MetadataSubscription should expire.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:simpleType name="SubscriptionState">
    <s:restriction base="xs:string">
      <s:enumeration value="ACTIVE">
        <s:annotation>
          <s:documentation>The subscription is active and will be processed when new data is detected.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="EXPIRED">
        <s:annotation>
          <s:documentation>The subscription is expired and will no longer be process unless it is
							renewed.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="PAUSED">
        <s:annotation>
          <s:documentation>The subscription is paused and will not be processed until it is resumed.</s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:complexType name="NameGuid">
    <s:annotation>
      <s:documentation>A simple type that contains a name and guid. This type is normally used when
					listing a large number of items to allow a client application to display the name
					to the user while using the guids to page through the objects using other services.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The human readable name of the item. The value of the name field changes
							depending on the use of this type, however the name is human readable and a
							client can depend on being able to present it to the user.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>The unique id for the item corresponding to the human readable name. The
							client application can use this field to request the entire object of
							interest.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="OptionAssignment">
    <s:annotation>
      <s:documentation>An assignment of a catalog item option definition to a catalog item collection and
					its granules. The assignment to granules is determined throught the filter XPath.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id assigned by ECHO for this option assignment.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OptionDefinitionGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The GUID of the option definition to assign to the catalog item.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CatalogItemGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The GUID of the catalog item to assign the option definition to. Only
							collections may be indicated here. The GUID of the collection is also known as the ECHO Item ID in the query results.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="FilterXPath" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>An optional XPath into the granule catalog item metadata that will indicate
							if the granules in the collection are assigned the option definition. If
							this is not given then the granules will have the option definition applied
							to them.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="OptionDefinition">
    <s:annotation>
      <s:documentation>Option definitions describe XML using some description language. This allows third
					parties to define parts of the API on ECHO. Option Selections contain XML that must
					conform the definition of the form in this.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id assigned by ECHO for this option definition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
        	<s:documentation>
        		The name of the definition. The name is a shortened name
        		used to distinguish between other option definitions.
        		This field must be unique per provider and is restricted to 30 characters.
        	</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Scope" type="echo:OptionScope">
        <s:annotation>
          <s:documentation>The scope of the definition. Only administrators may add system level
							definitions and only providers may add provider level definitions.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Deprecated" type="xs:boolean" minOccurs="0">
        <s:annotation>
          <s:documentation>
            <p>Indicates if the definition is deprecated. Deprecated definitions will
								be returned to the client and will be considered valid when validating
								an order, however new order items cannot be added using the definition
								and existing order items cannot be updated using the definition.</p>
            <p>This flag is ignored when creating an option definition, however it
								will always be set and returned once the definition has been created in
								ECHO.</p>
          </s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Form" type="echo:AnyElement">
        <s:annotation>
          <s:documentation>The ECHO Form. Contents must conform to ECHO Forms schema. See the ECHO
							Forms Specification for more information.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="OptionDefinition2">
  	<s:annotation>
      <s:documentation>An option definition with fields added during ECHO 10.1 to enhance option definition description and display.</s:documentation>
    </s:annotation>
  	<xsd:complexContent>
  		<xsd:extension base="echo:OptionDefinition">
  			<xsd:sequence>
  				<s:element name="Description">
  					<s:annotation>
  						<s:documentation>
  							The description of the definition. The
  							description is a longer, human-readable
  							description of the option definition type
  							or contents, intended for client display.
  							This field is restricted to 1024
  							characters.
  						</s:documentation>
  					</s:annotation>
  					<xs:simpleType>
  						<xs:restriction base="xs:string">
  							<xs:maxLength value="1024" />
  							<xs:minLength value="1" />
  						</xs:restriction>
  					</xs:simpleType>
  				</s:element>
  				<s:element name="SortKey"  minOccurs="0">
  					<s:annotation>
  						<s:documentation>
  							The alpha-numeric sort key.  The sort key is used to indicate
  							the preferred display order among other definitions. This field
  							is restricted to 5 characters.
  						</s:documentation>
  					</s:annotation>
  					<xs:simpleType>
  						<xs:restriction base="xs:string">
  							<xs:maxLength value="5" />
  							<xs:minLength value="1" />  							
							<xs:pattern value="[A-Za-z0-9]+" />
  						</xs:restriction>
  					</xs:simpleType>
  				</s:element>
  			</xsd:sequence>
  		</xsd:extension>
  	</xsd:complexContent>    
  </s:complexType>
  <s:complexType name="OptionSelection">
    <s:annotation>
      <s:documentation>Option Selections contain XML that must conform to option definitions.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id assigned by ECHO for this</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the definition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Content" type="echo:AnyElement">
        <s:annotation>
          <s:documentation>The XML content of the selection. This must conform the XML described by
							the form in the option definition.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Order">
    <s:annotation>
      <s:documentation>This data type is the top-level structure for a user order from one or more
					providers. An order is comprised of many provider orders. A provider order is a
					request for data that will be fulfilled by a particular provider. The order type
					type is used to express global order option selections, order status, pricing as
					well as possibly necessary shipping, billing, or contact information.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="OwnerGuid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The guid of the user who owns this order. This field will be null for
							orders owned by a guest user.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="PrimaryStudyArea" type="echo:PrimaryStudyArea" minOccurs="0">
        <s:annotation>
          <s:documentation>
            <em>Deprecated</em>
            This field may be removed in the future. The research field
            of the user that placed this order.
          </s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="EmsUserType" type="echo:UserType" minOccurs="0">
        <s:annotation>
          <s:documentation>
            <em>Deprecated</em>
            This field may be removed in the future. The user type of
            the user that placed this order.
          </s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserDomain" type="echo:UserDomain">
        <s:annotation>
          <s:documentation>The domain of the user that placed this order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserRegion" type="echo:UserRegion">
        <s:annotation>
          <s:documentation>The region the user was located in when they placed the order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>The unique ID of an order in the system.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="State" type="echo:OrderState">
        <s:annotation>
          <s:documentation>This data type is used to categorize the state of an order for products or
							services. This state is derived from the aggregation of the states of
							associated provider orders. [STATE]_WITH_EXCEPTIONS indicates that there is
							an anomaly in the states of the order&apos;s associated provider orders For
							example, PROCESSING_WITH_EXCEPTIONS could indicate that one or more
							associated provider orders have been rejected or canceled while the
							remainder of the order has been accepted normally.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CreationDate" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The date that the order was created in GMT.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SubmissionDate" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The date that the order was submitted in GMT.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="LastUpdateDate" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The date that the order was last updated in state or by the provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ShippingAddress" type="echo:Contact" minOccurs="0">
        <s:annotation>
          <s:documentation>Describes the postal address to which an order for data should be
							delivered.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="BillingAddress" type="echo:Contact" minOccurs="0">
        <s:annotation>
          <s:documentation>Represents the address to which billing information will be sent.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ContactAddress" type="echo:Contact" minOccurs="0">
        <s:annotation>
          <s:documentation>Represents the contact to be used for general inquiries or problems with
							the order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="NotifyLevel" type="echo:NotificationLevel" minOccurs="0">
        <s:annotation>
          <s:documentation>This data type is used to categorize the user&apos;s preference for receiving
							the updated status of a particular order. The types of email that will received
							with each level is documented in the service.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ClientIdentity" type="xs:string">
        <s:annotation>
          <s:documentation>Unique ID of the client who access ECHO software. This information will
							also pass over along with the order to the data providers. This information
							is extracted from the client information provided at login.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrderPrice" type="xs:float">
        <s:annotation>
          <s:documentation>The total price calculated by summing the provider order prices when the
							order was accepted by the providers.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderOrders" type="echo:ListOfProviderOrders">
        <s:annotation>
          <s:documentation>A request for data from a particular provider. The provider order does not
							contain information on the particular order line items. That information
							must be obtained separately. A provider order is automatically added to an
							order when an item owned by that provider is added to the order.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="OrderItem">
    <s:annotation>
      <s:documentation>Used to define ordering characteristics for particular catalog item so as to be
					used within an order. An order item defines both the product to be ordered, and the
					amount to be ordered. It may also include specifying options associated with and
					available for that catalog item. Generally, these options are packaging and
					distribution options. Only the particular options specified for this catalog item
					are available for setting. To retrieve all the available options for a catalog item
					(including whether an option is required or not), use the order management service
					to get the catalog item order information.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the order item.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OwningProviderOrderGuid" type="echo:ProviderOrderGuid" minOccurs="0">
        <s:annotation>
          <s:documentation>The guid of the provider order to which this item belongs.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ItemGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the item being ordered.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="State" type="echo:OrderItemState" minOccurs="0">
        <s:annotation>
          <s:documentation>The state of the order item. This state may change as the order is
							processed by the provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="QuantityOrdered" type="xs:short">
        <s:annotation>
          <s:documentation>The quantity of the item being ordered.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OptionSelection" type="echo:OptionSelection" minOccurs="0">
        <s:annotation>
          <s:documentation>The selection for a catalog item option definitions assigned to the item
							being ordered.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Phone">
    <s:annotation>
      <s:documentation>This data type is used to express telephone information such as a home, business,
					or fax number.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the telephone number.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CustomTypeName" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The custom type name of the phone if the phone type is CUSTOM. This field
							allows a user to specify a type name for the phone that is not a standard
							type name. Be aware that the type name may not be recognized by clients
							because it is custom. This field is restricted to 150 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Number" type="xs:string">
        <s:annotation>
          <s:documentation>The phone number. This field is
					restricted to 50 characters.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="PhoneNumberType" type="echo:PhoneType">
        <s:annotation>
          <s:documentation>The type of the phone number. If none of the standard types meet the needs
							of the user, a type of CUSTOM can be used and the custom type name can be
							specified as a string.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="PriceInformation">
    <s:annotation>
      <s:documentation>Price information about an order from a provider. Normally a provider returns price
					information in response to a quote or submit request from the client.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="TotalPrice" type="xs:float">
        <s:annotation>
          <s:documentation>The total price of the order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DataPrice" type="xs:float">
        <s:annotation>
          <s:documentation>The price for the actual data.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="MediaPrice" type="xs:float">
        <s:annotation>
          <s:documentation>The price for the media used to distribute the data.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ShippingFee" type="xs:float">
        <s:annotation>
          <s:documentation>The fee for shipping the media.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="HandlingFee" type="xs:float">
        <s:annotation>
          <s:documentation>The fee for handling and packaging the media.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Discount" type="xs:float">
        <s:annotation>
          <s:documentation>Any discount that was given to the order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="QuantityOfMedia" type="xs:int">
        <s:annotation>
          <s:documentation>The number of media units used to fulfill the order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AdditionalInformation" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>Any additional information about the price information that the provider
							needs to relay to the user.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Provider">
    <s:annotation>
      <s:documentation>
        <p>A provider in the ECHO system. A provider can provide data or services.
						Although a provider is a top level entity and is associated with information, a
						provider never actually logs into the system. A user can be granted access to a
						provider role and can then act on behalf of that provider. This allows multiple
						users to act on behalf of the same provider while maintaining system security.</p>
        <p>Acting on behalf of a provider is required when maintaining the provider&apos;s
						assets such as data or services.</p>
      </s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id for the provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderId" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The readable provider id. This id is normally unique in ECHO, however it is
							a name that is negotiated between ECHO operations and the provider. This
							name may change as the provider&apos;s organization or operational goals change.
							This ID is different from the guid in that the guid is uniquely machine
							generated and may never change for the lifetime of the provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrganizationName" type="xs:string">
        <s:annotation>
          <s:documentation>The organization name that the provider represents.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderTypes" type="echo:ListOfProviderTypes">
        <s:annotation>
          <s:documentation>The type of the provider such as service or data. A data provider can
							provide data such as collections or granules. A service provider can
							provide web service items such as advertisements, implementations,
							interfaces, and guis. A provider may be both a service and data provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DiscoveryUrls" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>Identifies a provider web site so users can find more information about the
							provider or obtain direct access to data or services.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DescriptionOfHoldings" type="xs:string">
        <s:annotation>
          <s:documentation>A description of the type of data holdings the provider maintains. This
							field may not contain data for service providers.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DescriptionOfServices" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>A description of the type of service holdings the provider maintains. This
							field may not contain data for data providers.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AdditionalInformation" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>Any additional information about the provider that is relevant.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Contacts" type="echo:ListOfContacts">
        <s:annotation>
          <s:documentation>Contacts for the provider such as the primary maintainer or the data access
							center.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ProviderHolding">
    <s:annotation>
      <s:documentation>A description of a data set owned by a data provider.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="DataSetId" type="xs:string">
        <s:annotation>
          <s:documentation>The dataset ID of a collection owned by a provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CollectionGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The ECHO collection GUID of a collection owned by a provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="GranuleCount" type="xs:int">
        <s:annotation>
          <s:documentation>The number of granules in the collection.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ProviderOrder">
    <s:annotation>
      <s:documentation>Represents a request for products and services from a particular provider. A
					provider order is contained within a larger order. ECHO automatically maintains
					creating and removing provider orders when items are added and removed from an
					order. The provider orders will be delivered to providers when the order is quoted
					or submitted.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="echo:ProviderOrderGuid">
        <s:annotation>
          <s:documentation>The unique ID of a provider order in the system.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderTrackingId" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The provider specified tracking id used to track the order when it is being
							processed.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="State" type="echo:ProviderOrderState">
        <s:annotation>
          <s:documentation>The state of the provider order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ClosedDate" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The date that the provider order was closed in GMT.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrderQuote" type="echo:ProviderOrderQuote" minOccurs="0">
        <s:annotation>
          <s:documentation>The quoted price information for the provider order. This field will only
							be valid after a quote is requested and the provider has supplied the
							information.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrderReceipt" type="echo:ProviderOrderReceipt" minOccurs="0">
        <s:annotation>
          <s:documentation>The submitted price information for the provider order. This field will
							only be valid after a submit is requested and the provider has supplied the
							information.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AuthenticationKey" type="echo:OptionSelection" minOccurs="0">
        <s:annotation>
          <s:documentation>The authentication key selected by the user to be used when the order is
							submitted to the provider. Some providers require that an order have an
							authentication key before being submitted.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="StatusMessage" type="xs:string">
        <s:annotation>
          <s:documentation>All of the status messages supplied by the provider as the order is being
							processed.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ProviderOrderGuid">
    <s:annotation>
      <s:documentation>The unique ID of a provider order in the system. It&apos;s an aggregate of the
					provider&apos;s guid and the order guid from the order which the provider order belongs.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The provider guid that the items in the order belong to.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the order to which this provider order belongs.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ProviderOrderQuote">
    <s:annotation>
      <s:documentation>Used to express the quoted price for an order from a provider.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Pricing" type="echo:PriceInformation">
        <s:annotation>
          <s:documentation>The price information for the items in the quoted order.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="QuoteExpirationDate" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The date that this quote expires. After this date, the provider may change
							the prices originally provided.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RecommendedMedia" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The recommended media for the order based on the provider&apos;s calculations.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ProviderOrderReceipt">
    <s:annotation>
      <s:documentation>This data type represents information about a provider order when the provider
					accept the user&apos;s submitted order.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="LatestCancelDate" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The last date that the order may be cancelled. A provider cannot promise to
							cancel an order if the cancel request is received after this date.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="EstimatedShipDate" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The date that the order is estimated to ship from the provider if a
							physical media type is required in the order. This field may not be set if
							the provider does not support estimating a ship date.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AcceptanceDate" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The date that the provider accepted the order in GMT.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Pricing" type="echo:PriceInformation">
        <s:annotation>
          <s:documentation>The price information for the final order as calculated by the provider.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="QueryResponse">
    <s:annotation>
      <s:documentation>Contains the results of executing a query on the ECHO catalog. The contents of this
					type will depend upon the Result Type specified in the Query Request.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="QueryResultType" type="echo:ResultType">
        <s:annotation>
          <s:documentation>The result type that was requested in the original query.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Results" type="echo:QueryResults" minOccurs="0">
        <s:annotation>
          <s:documentation>The inline results if they are appropriate for the given result type.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ItemGuids" type="echo:ListOfStrings" minOccurs="0">
        <s:annotation>
          <s:documentation>The inline item guids if they are appropriate for the given result type.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="QueryResults">
    <s:annotation>
      <s:documentation>The inline result information from executing a query on the ECHO catalog.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ResultSetGuid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the result set. This ID is only valid if the result type
							is one that stores results on the server.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ReturnData" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The inline return data. This field is only valid if the result type is one
							that returns data.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Cursor" type="xs:int">
        <s:annotation>
          <s:documentation>The current position of the cursor in the overall result set. The cursor
							can be thought of as a pointer to some row in the result set.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Hits" type="echo:ResultSetCount">
        <s:annotation>
          <s:documentation>The total number of hits in the result set.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Status" type="echo:QueryStatus">
        <s:annotation>
          <s:documentation>The status of the query. This field is only useful if the query is
							executing asynchronously.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CursorAtEnd" type="xs:boolean">
        <s:annotation>
          <s:documentation>Indicates if the cursor is at the end of the available results. If true,
							there is currently no more data available in the result set. If false,
							another request can be made to access more data. Note that if the query is
							asynchronous, this flag may be true but more data could be added to the
							result set at a later time.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="ResultSetCount">
    <s:annotation>
      <s:documentation>The number of hits in the result set.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Size" type="xs:int">
        <s:annotation>
          <s:documentation>The size of the result set in number of items</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Estimated" type="xs:boolean">
        <s:annotation>
          <s:documentation>If this is true it indicates the size is estimated.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="RestrictionFlagCondition">
    <s:annotation>
      <s:documentation>A data rule condition based on a restriction flag in the data.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ConditionName" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The description of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Lower" type="xs:int">
        <s:annotation>
          <s:documentation>The lower value of the restricted field.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Role">
    <s:annotation>
      <s:documentation>This data type is used to represent the access level that a user in the system may
					have. Currently users can have either provider roles or administrator roles</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Type" type="echo:RoleType">
        <s:annotation>
          <s:documentation>The type of the role, either provider or admin.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="RoleName" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The name of the role. For a provider role, this is the provider guid. For
							an admin role, this field is not used.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the role.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="RollingTemporalCondition">
    <s:annotation>
      <s:documentation>A data rule condition that is based on time. The time is a rolling time expressed
					as a duration.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ConditionName" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The description of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Duration" type="xs:long">
        <s:annotation>
          <s:documentation>
            <p>The duration of the rolling time in milliseconds. The conversion used
								for v8 is only accurate to hours. Any seconds or millisecond remainder
								will be truncated. In v9 and v10 the accuracy will be preserved.</p>
            <p>The XML Schema type duration was not used because of a lack of support
								in major languages and tools. In the future, this field may be
								converted to an XSD duration.</p>
          </s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="TargetTemporalField" type="echo:TemporalType">
        <s:annotation>
          <s:documentation>The time field of the data that should be used when performing the
							comparison with this condition.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="SavedQuery">
    <s:annotation>
      <s:documentation>Contains all the information about a query that was previously saved. A saved query
					may be executed at a later time using the catalog service.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The user specified name of the query.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>The unique id of the query.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Query" type="xs:string">
        <s:annotation>
          <s:documentation>The AQL query that was previously saved.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="SecurityTokenInformation">
    <s:annotation>
      <s:documentation>Contains the information behind a token in ECHO.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Token" type="xs:string">
        <s:annotation>
          <s:documentation>The token string used by the user and client.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the user assigned this token</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ActAsUserGuid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The guid of the user the user is acting as. Only ECHO Administrators are
							allowed to act as another user</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OnBehalfOfProviderGuid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The guid of the provider the user is acting on behalf of. Only ECHO
							Administrators and those users that are specifically granted Provider role
							for a particular provider are allowed to act on behalf of a Provider</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Created" type="xs:dateTime">
        <s:annotation>
          <s:documentation>Date that this token was created</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Expires" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>Date that this token expires. Null indicates that this token never expires</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Guest" type="xs:boolean">
        <s:annotation>
          <s:documentation>Whether this token is for a guest (true) or a registered user (false)</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Revoked" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>Date that this token was revoked. Null indicates token in not revoked</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="StatusAnnotation">
    <s:annotation>
      <s:documentation>This is a string annotation to a status state. It is similar to a log message.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Annotation" type="xs:string">
        <s:annotation>
          <s:documentation>the actual string annotation</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CreationDate" type="xs:dateTime">
        <s:annotation>
          <s:documentation>the date the string annotation was added</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="StatusEntry">
    <s:annotation>
      <s:documentation>This represents one state of a transaction. It holds the state and string
					annotations to that state.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="TransactionGuid" type="xs:string">
        <s:annotation>
          <s:documentation>Guid of the transaction this status entry is for</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="State" type="xs:string">
        <s:annotation>
          <s:documentation>a state entered on the transaction</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Annotations" type="echo:ListOfStatusAnnotations">
        <s:annotation>
          <s:documentation>A list of string annotations to this state.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CreationDate" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The date the transaction entered this state</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="Taxonomy">
    <s:annotation>
      <s:documentation>A taxonomy can be used to classify web service objects. A taxonomy contains a tree
					of taxonomy entries which are name value pairs. The value of any taxonomy entry
					must be unique within the taxonomy.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>name of the taxonomy</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Uuid" type="xs:string">
        <s:annotation>
          <s:documentation>Universally unique id for the taxonomy. Unlike other guids in ECHO, this
							UUID must be specified by the user.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OverviewUrl" type="xs:string">
        <s:annotation>
          <s:documentation>Overview url for the taxonomy. This is the url that a user may use to find
							more information about the taxonomy.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The description of the taxonomy</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="TaxonomyEntry">
    <s:annotation>
      <s:documentation>A name value pair in a taxonomy that represents one classification within the
					taxonomy.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the taxonomy entry.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Value" type="xs:string">
        <s:annotation>
          <s:documentation>unique value for this taxonomy entry. The value must be unique within the
							owning taxonomy.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="TaxonomyUuid" type="xs:string">
        <s:annotation>
          <s:documentation>universally unique id for the taxonomy which this entry belongs to</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="TemporalCondition">
    <s:annotation>
      <s:documentation>A data rule condition that is based on a start and end time.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="ConditionName" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The description of the condition.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="StartTime" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The start time that the date must be after. This only has a precision of
							seconds.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="StopTime" type="xs:dateTime">
        <s:annotation>
          <s:documentation>The stop time that the date must be before. This only has a precision of
							seconds.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="TargetTemporalField" type="echo:TemporalType">
        <s:annotation>
          <s:documentation>The time field of the data that should be used when performing the
							comparison with this condition.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="MetadataAttribute">
    <s:annotation>
      <s:documentation>Provides a set of attribute name and value type pairs.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="AttributeName" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the metadata attribute.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="PrimitiveValueType" type="echo:PrimitiveTypeName">
        <s:annotation>
          <s:documentation>The primitive type of the value of the metadata attribute.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="User">
    <s:annotation>
      <s:documentation>A registered user in ECHO. A user is the most common actor in the ECHO system. A
					user has general information such as addresses and phone numbers as well as access
					levels called roles. After being granted provider roles, a user can act on behalf
					of a provider to manage data or services. A user can also execute queries and place
					orders. A user is used to enforce basic security within ECHO.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The unique id of the user in ECHO.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserDomain" type="echo:UserDomain">
        <s:annotation>
          <s:documentation>The domain of user this is.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserRegion" type="echo:UserRegion">
        <s:annotation>
          <s:documentation>The region the user is located in.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="PrimaryStudyArea" type="echo:PrimaryStudyArea">
        <s:annotation>
          <s:documentation>The user&apos;s research field.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="UserType" type="echo:UserType">
        <s:annotation>
          <s:documentation>The user&apos;s type.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Username" type="xs:string">
        <s:annotation>
          <s:documentation>The user name of the user. This is sometimes referred to as the user ID.
							This field is selected by the user when the account is created.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Title" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The user&apos;s title.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="FirstName" type="xs:string">
        <s:annotation>
          <s:documentation>The user&apos;s first name.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="MiddleInitial" type="xs:string" minOccurs="0">
        <s:annotation>
          <s:documentation>The user&apos;s middle initial.  This must be of length 1 and can 
					        only contain the characters A-Z and a-z.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="LastName" type="xs:string">
        <s:annotation>
          <s:documentation>The user&apos;s last name.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Email" type="xs:string">
        <s:annotation>
          <s:documentation>The email address of the user.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OptIn" type="xs:boolean">
        <s:annotation>
          <s:documentation>Indicates if user wants to be notified of changes within ECHO or not.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OrganizationName" type="xs:string">
        <s:annotation>
          <s:documentation>Name of the organization the user is a part of.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Addresses" type="echo:ListOfAddresses" minOccurs="0">
        <s:annotation>
          <s:documentation>The addresses to be used when communicating with the user. Addresses are
					optional. A null list will be treated as an empty list. An empty list will always be 
					returned if there are no addresses.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Phones" type="echo:ListOfPhones" minOccurs="0">
        <s:annotation>
          <s:documentation>The phone numbers associated with the user. A phone number may be a home,
							business, or fax number. Phone numbers are optional. An null list will be treated as
							an empty list. An empty list will always be returned if there are no phones.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Roles" type="echo:ListOfRoles" minOccurs="0">
        <s:annotation>
          <s:documentation>The roles the user has been granted. The roles currently include one or
							more provider roles and an admin role. An empty list will be returned if
							there are no roles.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="CreationDate" type="xs:dateTime" minOccurs="0">
        <s:annotation>
          <s:documentation>The date that the user was created in GMT.  The value of CreationDate is 
					generated by the system and only used used for user display.  Therefore, ECHO will ignore any 
					provided value, it will always use the generated value for the lifetime of the user</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="UserAuthenticator">
    <s:annotation>
      <s:documentation>A user authenticator is used to define credentials for users when they submit an
					order to a provider. The provider defines authenticator option definitions and a
					user provides selections for the authenticators. An authenticator can then be
					attached to a provider order at a later time.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>The unique id of the authenticator.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The user specified name of the authenticator.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the provider to which this is an authenticator for.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Selection" type="echo:OptionSelection">
        <s:annotation>
          <s:documentation>The option selection that is a valid selection on the authenticator
							definition created by the provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="OwnerGuid" type="xs:string">
        <s:annotation>
          <s:documentation>The guid of the user who owns the authenticator.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="VisibilityFlagSetting">
    <s:annotation>
      <s:documentation>Indicates the visibility flag setting (visible or not visible) for a set of
					datasets.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="VisibilityFlag" type="echo:VisibilityFlagType">
        <s:annotation>
          <s:documentation>The visibility flag of the datasets. This is one of open or restricted.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="DataSetIds" type="echo:ListOfStrings" minOccurs="0">
        <s:annotation>
          <s:documentation>The ids of the datasets that this flag applies to.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="VisibilityFlag">
    <s:annotation>
      <s:documentation>Indicates the visibility for one item, either a collection or a granule.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Visible" type="xs:boolean">
        <s:annotation>
          <s:documentation>The visibility state of the item, either a collection or a granule.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ItemId" type="xs:string">
        <s:annotation>
          <s:documentation>The ID of the item, either dataset ID for collections or granule UR for granules.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WSAdvertisement">
    <s:annotation>
      <s:documentation>This is an advertisement for a service that may be available through the web.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>Unique identifier for this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>Guid of the provider who owns this</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>Name of the web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AccessPoint" type="xs:string">
        <s:annotation>
          <s:documentation>Url where this service can be accessed</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>Description of this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Classifications" type="echo:ListOfClassifications">
        <s:annotation>
          <s:documentation>The taxonomy values that this web service is classified by</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WSGui">
    <s:annotation>
      <s:documentation>This represents a user interface to a web service. It can represent user interfaces
					to web service implementations and interfaces registered in ECHO.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>Unique identifier for this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>Guid of the provider who owns this</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>Name of the web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="AccessPoint" type="xs:string">
        <s:annotation>
          <s:documentation>Url where this GUI can be accessed</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>Description of this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="InterfaceGuids" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>Service guids of the associated interfaces registered in ECHO</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ImplementationGuids" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>Service guids of the associated implementations registered in ECHO</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Classifications" type="echo:ListOfClassifications">
        <s:annotation>
          <s:documentation>The taxonomy values that this web service is classified by</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WSImplementation">
    <s:annotation>
      <s:documentation>This represents an executable web service with an available endpoint.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>Unique identifier for this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>Guid of the provider who owns this</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>Name of the web service. Taken from the service element in the WSDL.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="WsdlUrl" type="xs:string">
        <s:annotation>
          <s:documentation>Url of the WSDL</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>Description of this web service. This comes from the documentation of the
							service element in the WSDL file or as set by the provider.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="InterfaceGuids" type="echo:ListOfStrings">
        <s:annotation>
          <s:documentation>Guids of the interfaces in ECHO that this implementation implements. This
							is determined by the interfaces in the WSDL file that the implementation
							imports.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Classifications" type="echo:ListOfClassifications">
        <s:annotation>
          <s:documentation>The taxonomy values that this web service is classified by</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WSInterface">
    <s:annotation>
      <s:documentation>Represents an interface to a web service.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Guid" type="xs:string">
        <s:annotation>
          <s:documentation>Unique identifier for this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ProviderGuid" type="xs:string">
        <s:annotation>
          <s:documentation>Guid of the provider who owns this</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>Name of the web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="WsdlUrl" type="xs:string">
        <s:annotation>
          <s:documentation>Url of the WSDL</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>Description of this web service</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Classifications" type="echo:ListOfClassifications">
        <s:annotation>
          <s:documentation>The taxonomy values that this web service is classified by</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WSOperation">
    <s:annotation>
      <s:documentation>This represents an operation on a web service. Note that this only represents
					operations that take simple types as parameters and return only zero or one simple
					type.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the operation</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Namespace" type="xs:string">
        <s:annotation>
          <s:documentation>The namespace the operation belongs to.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Description" type="xs:string">
        <s:annotation>
          <s:documentation>The operation description</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="ReturnType" type="echo:PrimitiveTypeName">
        <s:annotation>
          <s:documentation>The return type of the operation.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Parameters" type="echo:ListOfWSParameters">
        <s:annotation>
          <s:documentation>The names and types of the parameters to the operation</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="SoapAction" type="xs:string">
        <s:annotation>
          <s:documentation>The soap action to call the operation.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WSParameter">
    <s:annotation>
      <s:documentation>This represents a simple type parameter to a web service operation.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="Name" type="xs:string">
        <s:annotation>
          <s:documentation>The name of the parameter.</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="Type" type="echo:PrimitiveTypeName">
        <s:annotation>
          <s:documentation>The parameter simple type.</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:complexType name="WebServiceListing">
    <s:annotation>
      <s:documentation>This contains a list of web service interfaces, implementation, GUIs, and
					advertisements.</s:documentation>
    </s:annotation>
    <s:sequence>
      <s:element name="WSImplementations" type="echo:ListOfNameGuids">
        <s:annotation>
          <s:documentation>The list of implementations</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="WSInterfaces" type="echo:ListOfNameGuids">
        <s:annotation>
          <s:documentation>The list of interfaces</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="WSGuis" type="echo:ListOfNameGuids">
        <s:annotation>
          <s:documentation>The list of GUIs</s:documentation>
        </s:annotation>
      </s:element>
      <s:element name="WSAdvertisements" type="echo:ListOfNameGuids">
        <s:annotation>
          <s:documentation>The list of advertisements</s:documentation>
        </s:annotation>
      </s:element>
    </s:sequence>
  </s:complexType>
  <s:simpleType name="ActionType">
    <s:annotation>
      <s:documentation>This data type provides an enumeration of the types of action that can be taken on
					metadata.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="VIEW">
        <s:annotation>
          <s:documentation>Viewing the metadata through a simple get operation.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="ORDER">
        <s:annotation>
          <s:documentation>Ordering the data using the ordering API.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="BROWSE"/>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="CatalogItemType">
    <s:annotation>
      <s:documentation>This enumeration is used to identify the type of a catalog item.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="COLLECTION">
        <s:annotation>
          <s:documentation>A collection of granules. This is also referred to as a dataset.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="GRANULE">
        <s:annotation>
          <s:documentation>A granule or a single unit of data.</s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="ClassificationType">
    <s:annotation>
      <s:documentation>An enumerated type for the different types of classifications.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="INHERITED">
        <s:annotation>
          <s:documentation>This means the classification was inherited from an associated object.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="SYSTEM">
        <s:annotation>
          <s:documentation>This means the classification was applied by ECHO.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="EXPLICIT">
        <s:annotation>
          <s:documentation>This means the classification was explicitly applied by the provider.</s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="Comparator">
    <s:annotation>
      <s:documentation>This data type provides an enumeration of all the different methods of comparison
					within the Echo system.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="LESS_THAN">
        <s:annotation>
          <s:documentation>The left operand is less than the right operand.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="LESS_THAN_OR_EQUAL">
        <s:annotation>
          <s:documentation>The left operand is less than or equal to the right operand.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="GREATER_THAN">
        <s:annotation>
          <s:documentation>The left operand is greater than the right operand.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="GREATER_THAN_OR_EQUAL">
        <s:annotation>
          <s:documentation>The left operand is greater than or equal to the right operand.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="EQUALS">
        <s:annotation>
          <s:documentation>The left operand equals the right operand.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="NOT_EQUALS">
        <s:annotation>
          <s:documentation>The left operand does not equal the right operand.</s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="ComplexOptionType">
    <s:annotation>
      <s:documentation>The possible usage types for a complex option definition.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="STRUCTURE">
        <s:annotation>
          <s:documentation>The selection for the definition may contain any number of children or
							fields.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="CHOICE">
        <s:annotation>
          <s:documentation>The selection for the definition may contain only a single child or field.</s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="CompressionType">
    <s:annotation>
      <s:documentation>A list of supported compression types.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="UNCOMPRESSED">
        <s:annotation>
          <s:documentation>No compression.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="GZIP">
        <s:annotation>
          <s:documentation>Standard g-zip compression.</s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="DeliveryType">
    <s:annotation>
      <s:documentation>Possible data delivery types.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="EMAIL">
        <s:annotation>
          <s:documentation>An email attachment.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="FTPPUSH">
        <s:annotation>
          <s:documentation>Pushed to an FTP server directory.</s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="INLINE"/>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="FilterDialect">
    <s:annotation>
      <s:documentation>Possible filter dialects used in subscription filters. The dialect indicates the
					type of filter. ECHO will apply the filter based on the dialect indicated in the
					subscription.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="XPATH">
        <s:annotation>
          <s:documentation>
            <p>The filter must be an XPath that must match in order for the
								notification to be delivered. The XPath will be executed on the event
								notification XML that is about to be delivered to the subscriber. The
								event notification XML is defined by the Event Notification schema.</p>
            <p>The XPath context will be setup such that the context node is the root
								node of the document. Also, the<code>eventv10</code>namespace alias will be mapped to<code>http://echo.nasa.gov/v10/eventnotification/events</code>.</p>
            <p>The XPath will be evaluated in a<code>boolean()</code>XPath function to determine if the XPath matches.</p>
          </s:documentation>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="TOPIC">
        <s:annotation>
          <s:documentation>
            <p>The filter must be one or more topics that must match for the
								notification to be delivered. The topics may be space separated to
								indicate an<i>or</i>relationship. If multiple topics are specified in this way, if any of
								them match, the notification will be delivered.</p>
            <p>The known topics are:<ul>
                <li>
                  <b>extendedservices</b>: notification relates to extended services such as update,
										remove, or create web services</li>
                <li>
                  <b>catalog</b>: notification relates to the ECHO catalog such as update,
										remove, or create catalog items.</li>
                <li>
                  <b>provider</b>: notification relates to the ECHO providers such as update,
										remove, or create providers.</li>
                <li>
                  <b>eventnotification</b>: notification relates to event notifications</li>
                <li>
                  <b>eventnotification.subscription</b>: notification relates to a specific event notification
										subscription</li>
                <li>
                  <b>eventnotification.subscription.end</b>: notification relates to a specific event notification ending</li>
              </ul>
            </p>
          </s:documentation>
        </s:annotation>
      </s:enumeration>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="NotificationDeliveryMode">
    <s:annotation>
      <s:documentation>Possible delivery modes for notification of events.</s:documentation>
    </s:annotation>
    <s:restriction base="xs:string">
      <s:enumeration value="EMAIL">
        <s:annotation>
          <s:documentation/>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="FTPPUSH">
        <s:annotation>
          <s:documentation/>
        </s:annotation>
      </s:enumeration>
      <s:enumeration value="HTTPSOAP"/>
    </s:restriction>
  </s:simpleType>
  <s:simpleType name="NotificationLevel">
    <s:annotation>
      <s:documen