<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../xslt/schema.xslt"?>

<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->

<schema
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"   
    xmlns:atom="http://www.w3.org/2005/Atom"
    targetNamespace="http://docs.openstack.org/identity/api/v2.0" 
>

    <!-- Import ATOM specific schema definitions -->
    <import vc:minVersion="1.1" namespace="http://www.w3.org/2005/Atom"
            schemaLocation="atom/atom.xsd" />

    <!-- Elements -->
    <element name="users" type="identity:UserList"  >
        <annotation>
            <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/2001/XMLSchema">
                <p>
                    A list of Users.
                </p>
            </xsd:documentation>
        </annotation>
    </element>

    <element name="user" type="identity:User">
        <annotation>
            <xsd:documentation
                xml:lang="EN"
                xmlns="http://www.w3.org/2001/XMLSchema">
                <p>
                    A Keystone User.
                </p>
            </xsd:documentation>
        </annotation>
    </element>

    <!-- Complex Types -->
    <complexType name="User">
        <attribute name="id" type="xsd:string" use="optional">            
            <annotation>
                <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/1999/xhtml">
                    <p>
                        An automatically generated, unique, immutable (it will never change) identifier
                        for the user. This is generated by the backend this user is stored in.
                    </p>
                </xsd:documentation>
            </annotation>
        </attribute>
        <attribute name="username" type="xsd:string" use="optional">            
            <annotation>
                <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/1999/xhtml">
                    <p>
                        A unique, mutable (it can change) user name that may be used by the user
                        an identifier when presenting credentials.
                    </p>
                </xsd:documentation>
            </annotation>
        </attribute>
        <attribute name="email" type="xsd:string" use="optional"/>
        <attribute name="enabled" type="xsd:boolean" default="true" use="optional">            
            <annotation>
                <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/1999/xhtml">
                    <p>
                        A true/false value that determines if the user may authenticate or not.
                        If enabled is false, the user will not be able to authenticate.
                        How this value is stored or generated is dependent on the backend in use.
                    </p>
                </xsd:documentation>
            </annotation>
        </attribute>
        <attribute name="display-name" type="xsd:string" use="optional">
            <annotation>
                <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/1999/xhtml">
                    <p>
                        A human-readable, friendly name for use in user interfaces.
                    </p>
                </xsd:documentation>
            </annotation>
        </attribute>
        <attribute name="updated" type="xsd:dateTime" use="optional">
            <annotation>
                <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/1999/xhtml">
                    <p>
                        A time-stamp identifying the modification time of the
                        user.
                    </p>
                </xsd:documentation>
            </annotation>
        </attribute>
        <attribute name="created" type="xsd:dateTime" use="optional">
            <annotation>
                <xsd:documentation
                    xml:lang="EN"
                    xmlns="http://www.w3.org/1999/xhtml">
                    <p>
                        A creation time-stamp for the user.
                    </p>
                </xsd:documentation>
            </annotation>
        </attribute>
        <anyAttribute namespace="##other" processContents="lax"/>        
    </complexType>

    <complexType name="UserList">
        <sequence>
            <element name="user" type="identity:User" minOccurs="0" maxOccurs="unbounded"/>
            <element vc:minVersion="1.1" ref="atom:link" minOccurs="0" maxOccurs="unbounded" />
            <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </sequence>
        <anyAttribute namespace="##other" processContents="lax"/>
    </complexType>
</schema>
