<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:tns="http://access.amazonaws.com/doc/2006-01-01/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://access.amazonaws.com/doc/2006-01-01/" elementFormDefault="qualified">
  <xs:complexType name="Grantee" abstract="true"/>
  <xs:complexType name="AmazonCustomerByEmail">
    <xs:complexContent>
      <xs:extension base="tns:User">
        <xs:sequence>
          <xs:element name="EmailAddress" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AmazonCredential">
    <xs:complexContent>
      <xs:extension base="tns:User">
        <xs:sequence>
          <xs:element name="Credential" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="CanonicalUser">
    <xs:complexContent>
      <xs:extension base="tns:User">
        <xs:sequence>
          <xs:element name="ID" type="xs:string"/>
          <xs:element name="DisplayName" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>   
  <xs:complexType name="User" abstract="true">
    <xs:complexContent>
      <xs:extension base="tns:Grantee"/>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="Group">
    <xs:complexContent>
      <xs:extension base="tns:Grantee">
        <xs:sequence>
          <xs:element name="URI" type="xs:anyURI"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="Grant">
    <xs:sequence>
      <xs:element name="Grantee" type="tns:Grantee" minOccurs="0"/>
      <xs:element name="Permission" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ResponseStatus">
    <xs:sequence>
      <xs:element name="StatusCode" type="xs:string"/>
      <xs:element name="StatusMessage" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AddGrant">
    <xs:sequence>
      <xs:element name="Request" type="tns:AddGrantRequest" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AddGrantRequest">
    <xs:sequence>
      <xs:element name="Grantee" type="tns:Grantee"/>
      <xs:element name="Permission" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AddGrantResponseType">
    <xs:sequence>
      <xs:element name="Response" type="tns:AddGrantResponse" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AddGrantResponse">
    <xs:sequence>
      <xs:element name="ResponseStatus" type="tns:ResponseStatus"/>
    </xs:sequence>
  </xs:complexType>			

  <xs:complexType name="RemoveGrant">
    <xs:sequence>
      <xs:element name="Request" type="tns:RemoveGrantRequest" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RemoveGrantRequest">
    <xs:sequence>
      <xs:element name="Grantee" type="tns:Grantee"/>
      <xs:element name="Permission" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RemoveGrantResponseType">
    <xs:sequence>
      <xs:element name="Response" type="tns:RemoveGrantResponse" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RemoveGrantResponse">
    <xs:sequence>
      <xs:element name="ResponseStatus" type="tns:ResponseStatus"/>
    </xs:sequence>
  </xs:complexType>
    
  <xs:complexType name="ListGrants">
    <xs:sequence>
      <xs:element name="Request" type="tns:ListGrantsRequest" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListGrantsRequest">
    <xs:sequence>
      <xs:element name="Grantee" type="tns:Grantee" minOccurs="0"/>
      <xs:element name="Permission" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListGrantsResponseType">
    <xs:sequence>
      <xs:element name="Response" type="tns:ListGrantsResponse" maxOccurs="unbounded"/>    
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListGrantsResponse">
    <xs:sequence>
      <xs:element name="GrantList" type="tns:Grant" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="ResponseStatus" type="tns:ResponseStatus"/>
    </xs:sequence>
  </xs:complexType>
    
</xs:schema>
