Initial commit to create repository for Identity Service API docs (for Keystone)
Change-Id: Ia3ebb17a7175b287ea92d0a604836f3b7cadcf8b
This commit is contained in:
parent
c2af80449c
commit
23ef2ee0c6
9
README
Normal file
9
README
Normal file
@ -0,0 +1,9 @@
|
||||
This repository contains the RESTful API information for the OpenStack Identity Service, also known as the Keystone project. The Keystone project provides authentication for OpenStack services, with plans to also provide authorization.
|
||||
|
||||
Contributing
|
||||
============
|
||||
Our community welcomes all people interested in open source cloud computing, and there are no formal membership requirements. The best way to join the community is to talk with others online or at a meetup and offer contributions through Launchpad, the OpenStack wiki, or blogs. We welcome all types of contributions, from blueprint designs to documentation to testing to deployment scripts.
|
||||
|
||||
Installing
|
||||
==========
|
||||
Refer to http://keystone.openstack.org to learn more about installing an OpenStack Identity Service server that can respond to these API commands.
|
201
openstack-identity-api/pom.xml
Normal file
201
openstack-identity-api/pom.xml
Normal file
@ -0,0 +1,201 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<!-- POM Build file for the Keystone Developer Guide -->
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.openstack.identity</groupId>
|
||||
<artifactId>docs</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>Keystone Dev Guide</name>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>Rackspace Research Repositories</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>rackspace-research</id>
|
||||
<name>Rackspace Research Repository</name>
|
||||
<url>http://maven.research.rackspacecloud.com/content/groups/public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>rackspace-research</id>
|
||||
<name>Rackspace Research Repository</name>
|
||||
<url>http://maven.research.rackspacecloud.com/content/groups/public/</url>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
</profile>
|
||||
</profiles>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<doctools.version>1.0.5-SNAPSHOT</doctools.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.xml.bind</groupId>
|
||||
<artifactId>jaxb-impl</artifactId>
|
||||
<version>2.1.12</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.thoughtworks.xstream</groupId>
|
||||
<artifactId>xstream</artifactId>
|
||||
<version>1.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jettison</groupId>
|
||||
<artifactId>jettison</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<!-- We need Saxon 9 and clouddocs-maven-plugin here to normalize wadls -->
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.saxon</groupId>
|
||||
<artifactId>saxon</artifactId>
|
||||
<version>9.1.0.8</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.rackspace.cloud.api</groupId>
|
||||
<artifactId>clouddocs-maven-plugin</artifactId>
|
||||
<version>${doctools.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>target/docbkx/pdf</directory>
|
||||
<excludes>
|
||||
<exclude>**/*.fo</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<!-- Unpack the wadl normalization xslts -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>unpack-shared-resources</id>
|
||||
<goals>
|
||||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<phase>generate-sources</phase>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
|
||||
<includeGroupIds>com.rackspace.cloud.api</includeGroupIds>
|
||||
<includeArtifactIds>clouddocs-maven-plugin</includeArtifactIds>
|
||||
<!-- <includeClassifiers>ns-resources</includeClassifiers> -->
|
||||
<excludeTransitive>true</excludeTransitive>
|
||||
<includes>**/normalizeWadl/*.xsl</includes>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- Normalize the wadl -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>ant</id>
|
||||
<phase>generate-sources</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<java
|
||||
jar="${net.sourceforge.saxon:saxon:jar}"
|
||||
fork="true">
|
||||
<arg value="-u"/>
|
||||
<arg value="-s:https://raw.github.com/openstack/keystone/master/keystone/content/service/identity.wadl"/>
|
||||
<arg value="-xsl:${project.build.directory}/generated-resources/cloud/normalizeWadl/normalizeWadl.xsl"/>
|
||||
<arg value="-o:${project.build.directory}/generated-resources/xml/xslt/identity.wadl"/>
|
||||
</java>
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.rackspace.cloud.api</groupId>
|
||||
<artifactId>clouddocs-maven-plugin</artifactId>
|
||||
<version>${doctools.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>g1</id>
|
||||
<goals>
|
||||
<goal>generate-pdf</goal>
|
||||
</goals>
|
||||
<phase>generate-sources</phase>
|
||||
<configuration>
|
||||
<highlightSource>false</highlightSource>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>g2</id>
|
||||
<goals>
|
||||
<goal>generate-webhelp</goal>
|
||||
</goals>
|
||||
<phase>generate-sources</phase>
|
||||
<configuration>
|
||||
<!-- These parameters only apply to webhelp -->
|
||||
<enableDisqus>1</enableDisqus>
|
||||
<disqusShortname>os-identitydevguide</disqusShortname>
|
||||
<enableGoogleAnalytics>1</enableGoogleAnalytics>
|
||||
<googleAnalyticsId>UA-17511903-6</googleAnalyticsId>
|
||||
<generateToc>
|
||||
appendix toc,title
|
||||
article/appendix nop
|
||||
article toc,title
|
||||
book title,figure,table,example,equation
|
||||
chapter toc,title
|
||||
part toc,title
|
||||
preface toc,title
|
||||
qandadiv toc
|
||||
qandaset toc
|
||||
reference toc,title
|
||||
set toc,title
|
||||
</generateToc>
|
||||
<postProcess>
|
||||
<!-- Copies the figures to the correct location for webhelp -->
|
||||
<copy todir="${basedir}/target/docbkx/webhelp/identity-dev-guide/figures">
|
||||
<fileset dir="${basedir}/src/docbkx/img">
|
||||
<include name="**/*.svg" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<!--Moves PDF to the needed placement -->
|
||||
<move failonerror="false"
|
||||
file="${basedir}/target/docbkx/pdf/identity-dev-guide.pdf"
|
||||
tofile="${basedir}/target/docbkx/webhelp/identity-dev-guide/identity-dev-guide.pdf"/>
|
||||
|
||||
</postProcess>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<!-- These parameters apply to pdf and webhelp -->
|
||||
<xincludeSupported>true</xincludeSupported>
|
||||
<sourceDirectory>src/docbkx</sourceDirectory>
|
||||
<includes>
|
||||
identity-dev-guide.xml
|
||||
</includes>
|
||||
<profileSecurity>reviewer</profileSecurity>
|
||||
<branding>openstack</branding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
175
openstack-identity-api/src/docbkx/identity-client-api.xml
Normal file
175
openstack-identity-api/src/docbkx/identity-client-api.xml
Normal file
@ -0,0 +1,175 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!DOCTYPE chapter [<!-- Some useful entities borrowed from HTML -->
|
||||
<!ENTITY ndash "–">
|
||||
<!ENTITY mdash "—">
|
||||
<!ENTITY hellip "…">
|
||||
|
||||
<!-- Useful for describing APIs -->
|
||||
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
|
||||
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
|
||||
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
|
||||
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
|
||||
<!ENTITY HEAD '<command xmlns="http://docbook.org/ns/docbook">HEAD</command>'>
|
||||
|
||||
|
||||
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
|
||||
<imageobject>
|
||||
<imagedata fileref="img/Check_mark_23x20_02.svg"
|
||||
format="SVG" scale="60"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>'>
|
||||
<!ENTITY CODES 'Normal Response Code(s):'>
|
||||
<!ENTITY ERROR_CODES 'Error Response Code(s):'>
|
||||
<!ENTITY NO_REQUEST '<para xmlns="http://docbook.org/ns/docbook">
|
||||
This operation does not require a request body.</para>'>
|
||||
<!ENTITY LONG_URI_REFHEAD '
|
||||
<thead xmlns="http://docbook.org/ns/docbook">
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="4">URI</td>
|
||||
<td colspan="3">Description</td>
|
||||
</tr>
|
||||
</thead>'>
|
||||
<!ENTITY URI_REFHEAD '
|
||||
<thead xmlns="http://docbook.org/ns/docbook">
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="1">URI</td>
|
||||
<td colspan="4">Description</td>
|
||||
</tr>
|
||||
</thead>'>
|
||||
]>
|
||||
<chapter
|
||||
xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="Service_API_Client_Operations-d1e1110"
|
||||
version="5.0">
|
||||
<title>Service API (Client Operations)</title>
|
||||
<para>The operations described in this chapter allow clients to authenticate and get
|
||||
access tokens and service endpoints. </para>
|
||||
<section xml:id="Core_Service_API-d1e1124">
|
||||
<title>Core Service API</title>
|
||||
<para>The following calls are core Keystone Service APIs in version 2.0</para>
|
||||
<informaltable rules="all">
|
||||
&URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &POST; </td>
|
||||
<td colspan="1">/tokens</td>
|
||||
<td colspan="4">Authenticate to generate a token.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="1">/tenants</td>
|
||||
<td colspan="4">Get a list of tenants accessible with supplied token.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
</section>
|
||||
|
||||
<section xml:id="Available-Operations-Service-API-d100001">
|
||||
<title>Available Operations</title>
|
||||
<section xml:id="Authenticate-Service-API-d1e1166">
|
||||
<title>Authenticate for Service API</title>
|
||||
<informaltable rules="all">
|
||||
&URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &POST; </td>
|
||||
<td colspan="1">/tokens</td>
|
||||
<td colspan="4">Authenticate to generate a token.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), userDisabled
|
||||
(<errorcode>403</errorcode>), badRequest (<errorcode>400</errorcode>), identityFault
|
||||
(<errorcode>500</errorcode>), serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
<para>
|
||||
This call will return a token if successful. Each ReST request against other services (or other
|
||||
calls on Keystone such as the GET /tenants call)
|
||||
requires the inclusion of a specific authorization token HTTP x-header, defined as X-Auth-Token.
|
||||
Clients obtain
|
||||
this token, along with the URL to other service APIs, by first authenticating against the
|
||||
Keystone Service and supplying valid credentials.
|
||||
</para>
|
||||
<para>
|
||||
Client authentication is provided via a ReST interface using the POST method,
|
||||
with v2.0/tokens supplied as the path. A payload of credentials must be included
|
||||
in the body.
|
||||
</para>
|
||||
<para>
|
||||
The Keystone Service is a ReSTful web service. It is the entry point to all service APIs.
|
||||
To access the Keystone Service, you must know URL of the Keystone service.
|
||||
</para>
|
||||
<example>
|
||||
<title>XML Auth Request</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/auth_credentials.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Auth Request</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/auth_credentials.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>XML Auth Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/auth.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Auth Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/auth.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
<section xml:id="Get_Tenants-Service-d1e1264">
|
||||
<title>Get Tenants</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants</td>
|
||||
<td colspan="3">Get a list of tenants.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), overLimit(<errorcode>413</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
<para>
|
||||
The operation returns a list of tenants which the supplied token provides
|
||||
access to. This call must be authenticated, so a valid token must
|
||||
be passed in as a header.
|
||||
</para>
|
||||
<example>
|
||||
<title>Tenants Request with Auth Token</title>
|
||||
<programlisting language="text">
|
||||
<xi:include href="samples/tenants-request.txt" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>JSON Tenants Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/tenants.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>XML Tenants Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenants.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
|
99
openstack-identity-api/src/docbkx/identity-concepts.xml
Normal file
99
openstack-identity-api/src/docbkx/identity-concepts.xml
Normal file
@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="Identity-Service-Concepts-e1362">
|
||||
<title>Identity Service Concepts</title>
|
||||
<para>
|
||||
The Keystone Identity Service has several key concepts which are
|
||||
important to understand:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>User</term>
|
||||
<listitem><para>A digital representation of a person, system, or service who uses OpenStack cloud services.
|
||||
Keystone authentication services will validate that incoming request are being made by the user
|
||||
who claims to be making the call. Users have a login and may be assigned tokens to access
|
||||
resources. Users may be directly assigned to a particular tenant and
|
||||
behave as if they are contained in that tenant.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Credentials</term>
|
||||
<listitem><para>
|
||||
Data that belongs to, is owned by, and generally only known by a user that the user can present
|
||||
to prove they are who they are (since nobody else should know that data).
|
||||
</para><para>Examples are:
|
||||
<itemizedlist>
|
||||
<listitem><para>a matching username and password</para></listitem>
|
||||
<listitem><para>a matching username and API key</para></listitem>
|
||||
<listitem><para>yourself and a driver's license with a picture of you</para></listitem>
|
||||
<listitem><para>a token that was issued to you that nobody else knows of</para></listitem>
|
||||
</itemizedlist>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Authentication</term>
|
||||
<listitem><para>
|
||||
In the context of Keystone, authentication is the act of confirming the identity of a
|
||||
user or the truth of a claim.
|
||||
Keystone will confirm that incoming request are being made by the user
|
||||
who claims to be making the call by validating a set of claims that the user is making.
|
||||
These claims are initially in the form of a set of credentials (username & password,
|
||||
or username and API key). After initial confirmation, Keystone will issue the user a token
|
||||
which the user can then provide to demonstrate that their identity has been authenticated
|
||||
when making subsequent requests.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Token</term>
|
||||
<listitem><para>
|
||||
A token is an arbitrary bit of text that is used to access
|
||||
resources. Each token has a scope which describes which
|
||||
resources are accessible with it. A token may be
|
||||
revoked at anytime and is valid for a finite duration.
|
||||
</para>
|
||||
<para>
|
||||
While Keystone supports token-based authentication in this release,
|
||||
the intention is for it to support additional protocols in the
|
||||
future. The intent is for it to be an integration service foremost, and not
|
||||
a aspire to be a full-fledged identity store and management solution.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Tenant</term>
|
||||
<listitem><para>
|
||||
A container used to group or isolate resources and/or identity
|
||||
objects. Depending on the service operator, a tenant may map to a customer,
|
||||
account, organization, or project.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Service</term>
|
||||
<listitem><para>
|
||||
An OpenStack service, such as Compute (Nova), Object Storage (Swift), or Image Service (Glance). A service provides
|
||||
one or more endpoints through which users can access resources and perform
|
||||
(presumably useful) operations.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Endpoint</term>
|
||||
<listitem> <para>
|
||||
An network-accessible address, usually described by URL, where a service may be accessed. If using an extension for templates, you can create an endpoint template, which represents the templates of all the consumable services that are available across the regions.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Role</term>
|
||||
<listitem><para> A personality that a user assumes when performing a specific set of operations.
|
||||
A role includes a set of right and privileges. A user assuming that role inherits
|
||||
those rights and privileges.
|
||||
</para><para>
|
||||
In Keystone, a token that is issued to a user includes the list of roles that user
|
||||
can assume. Services that are being called by that user determine how they interpret the set
|
||||
of roles a user has and which operations or resources each roles grants access to.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
|
||||
</chapter>
|
49
openstack-identity-api/src/docbkx/identity-dev-guide.xml
Executable file
49
openstack-identity-api/src/docbkx/identity-dev-guide.xml
Executable file
@ -0,0 +1,49 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<book xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
xmlns:db="http://docbook.org/ns/docbook"
|
||||
version="5.0"
|
||||
status="draft"
|
||||
xml:id="Keystone-Developer-Guide"
|
||||
>
|
||||
<title>Keystone Developer Guide</title>
|
||||
<info>
|
||||
<author>
|
||||
<personname>
|
||||
<firstname/>
|
||||
<surname/>
|
||||
</personname>
|
||||
<affiliation>
|
||||
<orgname>OpenStack</orgname>
|
||||
</affiliation>
|
||||
</author>
|
||||
<copyright>
|
||||
<year>2010</year>
|
||||
<year>2011</year>
|
||||
<holder>OpenStack</holder>
|
||||
</copyright>
|
||||
<releaseinfo>API v2.0</releaseinfo>
|
||||
<productname>Keystone - OpenStack Identity</productname>
|
||||
<pubdate>2011-08-29</pubdate>
|
||||
<legalnotice role="apache2">
|
||||
<annotation>
|
||||
<remark>Copyright details are filled in by the template.</remark>
|
||||
</annotation>
|
||||
</legalnotice>
|
||||
<abstract>
|
||||
<para>This document is intended for software developers interested in developing
|
||||
applications that utilize the Keystone Identity Service for authentication. This
|
||||
document also includes details on how to integrate services with the Keystone
|
||||
Identity Service. </para>
|
||||
</abstract>
|
||||
</info>
|
||||
<!-- Chapters are referred from the book file through these include statements. You can add additional chapters using these types of statements. -->
|
||||
<xi:include href="identity-concepts.xml"/>
|
||||
<xi:include href="identity-general-api-info.xml"/>
|
||||
<xi:include href="identity-client-api.xml"/>
|
||||
<xi:include href="identity-service-api.xml"/>
|
||||
</book>
|
645
openstack-identity-api/src/docbkx/identity-general-api-info.xml
Normal file
645
openstack-identity-api/src/docbkx/identity-general-api-info.xml
Normal file
@ -0,0 +1,645 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE chapter [<!-- Some useful entities borrowed from HTML -->
|
||||
<!ENTITY ndash "–">
|
||||
<!ENTITY mdash "—">
|
||||
<!ENTITY hellip "…">
|
||||
|
||||
<!-- Useful for describing APIs -->
|
||||
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
|
||||
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
|
||||
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
|
||||
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
|
||||
<!ENTITY HEAD '<command xmlns="http://docbook.org/ns/docbook">HEAD</command>'>
|
||||
|
||||
|
||||
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
|
||||
<imageobject>
|
||||
<imagedata fileref="img/Check_mark_23x20_02.svg"
|
||||
format="SVG" scale="60"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>'>
|
||||
<!ENTITY CODES 'Normal Response Code(s):'>
|
||||
<!ENTITY ERROR_CODES 'Error Response Code(s):'>
|
||||
<!ENTITY NO_REQUEST '<para xmlns="http://docbook.org/ns/docbook">
|
||||
This operation does not require a request body.</para>'>
|
||||
<!ENTITY LONG_URI_REFHEAD '
|
||||
<thead xmlns="http://docbook.org/ns/docbook">
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="4">URI</td>
|
||||
<td colspan="3">Description</td>
|
||||
</tr>
|
||||
</thead>'>
|
||||
<!ENTITY URI_REFHEAD '
|
||||
<thead xmlns="http://docbook.org/ns/docbook">
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="1">URI</td>
|
||||
<td colspan="4">Description</td>
|
||||
</tr>
|
||||
</thead>'>
|
||||
]>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="Overview-Keystone-API-d1e62">
|
||||
<title>Overview of Keystone API</title>
|
||||
<para>The Keystone Identity Service allows clients to obtain tokens that can be used to access
|
||||
OpenStack cloud services. This document is intended for software developers interested in
|
||||
developing applications that utilize the Keystone Identity Service API for authentication.
|
||||
</para>
|
||||
<para>This Guide assumes the reader is familiar with RESTful web services, HTTP/1.1, and JSON
|
||||
and/or XML serialization formats. </para>
|
||||
<section xml:id="General_Keystone_API_Information-d1e141">
|
||||
<title>General API Information</title>
|
||||
<para>The Keystone API is implemented using a RESTful web service interface. All requests to
|
||||
authenticate and operate against the Keystone API should be performed using SSL over HTTP
|
||||
(HTTPS) on TCP port 443.</para>
|
||||
</section>
|
||||
<section xml:id="Request_Response_Types-d1e149">
|
||||
<title>Request/Response Types</title>
|
||||
<para> The Keystone API supports both the JSON and XML data serialization formats. The request
|
||||
format is specified using the <code>Content-Type</code> header and is required for
|
||||
operations that have a request body. The response format can be specified in requests using
|
||||
either the <code>Accept</code> header or adding an <code>.xml</code> or <code>.json</code>
|
||||
extension to the request URI. Note that it is possible for a response to be serialized using
|
||||
a format different from the request (see example below). If no response format is specified,
|
||||
JSON is the default. If conflicting formats are specified using both an <code>Accept</code>
|
||||
header and a query extension, the query extension takes precedence.</para>
|
||||
<table rules="all">
|
||||
<caption>Response Types</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Format</td>
|
||||
<td>Accept Header</td>
|
||||
<td>Query Extension</td>
|
||||
<td>Default</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>JSON</td>
|
||||
<td>application/json</td>
|
||||
<td>.json</td>
|
||||
<td>Yes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>XML</td>
|
||||
<td>application/xml</td>
|
||||
<td>.xml</td>
|
||||
<td>No</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<example>
|
||||
<title>JSON Request with Headers</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/samplerequestheader.txt" parse="text"/>
|
||||
</programlisting>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/auth_credentials.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>XML Response with Headers</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/sampleresponseheader.txt" parse="text"/>
|
||||
</programlisting>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/auth.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
<section xml:id="Content_Compression-d1e262">
|
||||
<title>Content Compression</title>
|
||||
<para>Request and response body data my be encoded with gzip compression in order to
|
||||
accelerate interactive performance of API calls and responses. This is controlled using the
|
||||
<code>Accept-Encoding</code> header on the request from the client and indicated by the
|
||||
<code>Content-Encoding</code> header in the server response. Unless the header is
|
||||
explicitly set, encoding defaults to disabled.</para>
|
||||
<table rules="all">
|
||||
<caption>Compression Headers</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Header Type</td>
|
||||
<td>Name</td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>HTTP/1.1 Request</td>
|
||||
<td>Accept-Encoding</td>
|
||||
<td>gzip</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>HTTP/1.1 Response</td>
|
||||
<td>Content-Encoding</td>
|
||||
<td>gzip</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section xml:id="Paginated_Collections-d1e325">
|
||||
<title>Paginated Collections</title>
|
||||
<para>
|
||||
To reduce load on the service, list operations will
|
||||
return a maximum number of items at a time. The
|
||||
maximum number of items returned is determined by the
|
||||
Identity provider. To navigate the collection, the
|
||||
parameters <parameter>limit</parameter> and
|
||||
<parameter>marker</parameter> can be set in the URI
|
||||
(e.g.?<parameter>limit</parameter>=100&<parameter>marker</parameter>=1234).
|
||||
The <parameter>marker</parameter> parameter is the ID
|
||||
of the last item in the previous list. Items are
|
||||
sorted by update time. When an update time is not
|
||||
available they are sorted by ID. The
|
||||
<parameter>limit</parameter> parameter sets the page
|
||||
size. Both parameters are optional. If the client
|
||||
requests a <parameter>limit</parameter> beyond that
|
||||
which is supported by the deployment an overLimit
|
||||
(<errorcode>413</errorcode>) fault may be thrown. A
|
||||
marker with an invalid ID will return an itemNotFound
|
||||
(<errorcode>404</errorcode>) fault.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Paginated collections never return itemNotFound
|
||||
(<errorcode>404</errorcode>) faults when the
|
||||
collection is empty — clients should expect
|
||||
an empty collection.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
For convenience, collections contain atom "next" and
|
||||
"previous" links. The first page in the list will not
|
||||
contain a "previous" link, the last page in the list
|
||||
will not contain a "next" link. The following examples
|
||||
illustrate three pages in a collection of tenants. The
|
||||
first page was retrieved via a &GET; to
|
||||
http://identity.api.openstack.org/v2.0/1234/tenants?limit=1.
|
||||
In these examples, the <parameter>limit</parameter>
|
||||
parameter sets the page size to a single item.
|
||||
Subsequent "next" and "previous" links will honor the
|
||||
initial page size. Thus, a client may follow links to
|
||||
traverse a paginated collection without having to
|
||||
input the <parameter>marker</parameter> parameter.
|
||||
</para>
|
||||
<example>
|
||||
<title>Tenant Collection, First Page: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenants-1.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Tenant Collection, First Page: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/tenants-1.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Tenant Collection, Second Page: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenants-2.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Tenant Collection, Second Page: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/tenants-2.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Tenant Collection, Last Page: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenants-3.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Tenant Collection, Last Page: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/tenants-3.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
In the JSON representation, paginated collections contain
|
||||
a <property>values</property> property that contains the
|
||||
items in the collections. Links are accessed via the
|
||||
<property>links</property> property. The approach allows
|
||||
for extensibility of both the collection members and of
|
||||
the paginated collection itself. It also allows
|
||||
collections to be embedded in other objects as illustrated
|
||||
below. Here, a subset of groups are presented within a
|
||||
user. Clients must follow the "next" link to continue to
|
||||
retrieve additional groups belonging to a user.
|
||||
</para>
|
||||
<example>
|
||||
<title>Paginated Roles in a User: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/getuser-1.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Paginated Roles in an User: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/getuser-1.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
</section>
|
||||
<section xml:id="Versions-d1e472">
|
||||
<title>Versions</title>
|
||||
<para>
|
||||
The OpenStack Identity API uses both a URI and a MIME
|
||||
type versioning scheme. In the URI scheme, the first
|
||||
element of the path contains the target version
|
||||
identifier (e.g. https://identity.api.openstack.org/
|
||||
v2.0/…). The MIME type versioning scheme uses
|
||||
HTTP content negotiation where the <code>Accept</code>
|
||||
or <code>Content-Type</code> headers contains a MIME
|
||||
type that includes the version ID as a parameter
|
||||
(application/vnd.openstack.identity+xml;version=1.1). A
|
||||
version MIME type is always linked to a base MIME type
|
||||
(application/xml or application/json). If conflicting
|
||||
versions are specified using both an HTTP header and a
|
||||
URI, the URI takes precedence.
|
||||
</para>
|
||||
<example>
|
||||
<title>Request with MIME type versioning</title>
|
||||
<literallayout class="monospaced">
|
||||
GET /tenants HTTP/1.1
|
||||
Host: identity.api.openstack.org
|
||||
Accept: application/vnd.openstack.identity+xml;version=1.1
|
||||
X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
|
||||
</literallayout>
|
||||
</example>
|
||||
<example>
|
||||
<title>Request with URI versioning</title>
|
||||
<literallayout class="monospaced">
|
||||
GET /v1.1/tenants HTTP/1.1
|
||||
Host: identity.api.openstack.org
|
||||
Accept: application/xml
|
||||
X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
|
||||
</literallayout>
|
||||
</example>
|
||||
<note>
|
||||
<para>
|
||||
The MIME type versioning approach allows for the
|
||||
creating of permanent links, because the version
|
||||
scheme is not specified in the URI path:
|
||||
https://api.identity.openstack.org/tenants/12234.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
If a request is made without a version specified in
|
||||
the URI or via HTTP headers, then a multiple-choices
|
||||
response (<returnvalue>300</returnvalue>) will follow
|
||||
providing links and MIME types to available versions.
|
||||
</para>
|
||||
<example>
|
||||
<title>Multiple Choices Response: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/choices.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Multiple Choices Response: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/choices.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
New features and functionality that do not break
|
||||
API-compatibility will be introduced in the current
|
||||
version of the API as extensions (see below) and the
|
||||
URI and MIME types will remain unchanged. Features or
|
||||
functionality changes that would necessitate a break
|
||||
in API-compatibility will require a new version, which
|
||||
will result in URI and MIME type version being updated
|
||||
accordingly. When new API versions are released, older
|
||||
versions will be marked as
|
||||
<code>DEPRECATED</code>. Providers should work with
|
||||
developers and partners to ensure there is adequate
|
||||
time to migrate to the new version before deprecated
|
||||
versions are discontinued.
|
||||
</para>
|
||||
<para>
|
||||
Your application can programmatically determine
|
||||
available API versions by performing a &GET; on the
|
||||
root URL (i.e. with the version and everything to the
|
||||
right of it truncated) returned from the
|
||||
authentication system. Note that an Atom
|
||||
representation of the versions resources is supported
|
||||
when issuing a request with the <code>Accept</code>
|
||||
header containing application/atom+xml or by adding a
|
||||
.atom to the request URI. This allows standard Atom
|
||||
clients to track version changes.
|
||||
</para>
|
||||
<example>
|
||||
<title>Versions List Request</title>
|
||||
<literallayout class="monospaced">
|
||||
GET HTTP/1.1
|
||||
Host: identity.api.openstack.org
|
||||
</literallayout>
|
||||
</example>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; badRequest
|
||||
(<errorcode>400</errorcode>), identityFault
|
||||
(<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>Versions List Response: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/versions.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Versions List Response: Atom</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/versions-atom.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Versions List Response: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/versions.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
You can also obtain additional information about a
|
||||
specific version by performing a &GET; on the base
|
||||
version URL
|
||||
(e.g. https://identity.api.openstack.org/v1.1/).
|
||||
Version request URLs should always end with a trailing
|
||||
slash (/). If the slash is omitted, the server may
|
||||
respond with a <returnvalue>302</returnvalue>
|
||||
redirection request. Format extensions may be placed
|
||||
after the slash
|
||||
(e.g. https://identity.api.openstack.org/v1.1/.xml). Note
|
||||
that this is a special case that does not hold true
|
||||
for other API requests. In general, requests such as
|
||||
/tenants.xml and /tenants/.xml are handled
|
||||
equivalently.
|
||||
</para>
|
||||
<example>
|
||||
<title>Version Details Request</title>
|
||||
<literallayout class="monospaced">
|
||||
GET HTTP/1.1
|
||||
Host: identity.api.openstack.org/v1.1/
|
||||
</literallayout>
|
||||
</example>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; badRequest
|
||||
(<errorcode>400</errorcode>), identityFault
|
||||
(<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>Version Details Response: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/version.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Version Details Response: Atom</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/version-atom.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Version Details Response: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/version.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
The detailed version response contains pointers to
|
||||
both a human-readable and a machine-processable
|
||||
description of the API service. The machine-processable description is written in the Web
|
||||
Application Description Language (WADL).
|
||||
</para>
|
||||
<note>
|
||||
<para>If there is a discrepancy between the two specifications, the WADL is
|
||||
authoritative as it contains the most accurate and up-to-date description of the
|
||||
API service. </para>
|
||||
</note>
|
||||
</section>
|
||||
<section xml:id="Extensions-d1e688">
|
||||
<title>Extensions</title>
|
||||
<para>
|
||||
The OpenStack Identity API is extensible. Extensions
|
||||
serve two purposes: They allow the introduction of new
|
||||
features in the API without requiring a version change
|
||||
and they allow the introduction of vendor specific
|
||||
niche functionality. Applications can programmatically
|
||||
determine what extensions are available by performing
|
||||
a &GET; on the /extensions URI. Note that this is a
|
||||
versioned request — that is, an extension
|
||||
available in one API version may not be available in
|
||||
another.
|
||||
</para>
|
||||
<informaltable rules="all">
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="2">URI</td>
|
||||
<td colspan="3">Description</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1">&GET;</td>
|
||||
<td colspan="2">/extensions</td>
|
||||
<td colspan="3">Returns a list of available extensions</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; badRequest
|
||||
(<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<para>
|
||||
Each extension is identified by two unique identifiers, a
|
||||
<property>namespace</property> and an
|
||||
<property>alias</property>. Additionally an extension
|
||||
contains documentation links in various formats.
|
||||
</para>
|
||||
<example>
|
||||
<title>Extensions Response: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/extensions.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Extensions Response: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/extensions.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Extensions may also be queried individually by their
|
||||
unique alias. This provides the simplest method of
|
||||
checking if an extension is available as an unavailable
|
||||
extension will issue an itemNotFound
|
||||
(<errorcode>404</errorcode>) response.
|
||||
</para>
|
||||
<informaltable rules="all">
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="2">URI</td>
|
||||
<td colspan="3">Description</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1">&GET;</td>
|
||||
<td colspan="2">/extensions/<parameter>alias</parameter></td>
|
||||
<td colspan="3">Return details of a single extension</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; itemNotFound
|
||||
(<errorcode>404</errorcode>), badRequest
|
||||
(<errorcode>400</errorcode>), identityFault
|
||||
(<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>Extension Response: xml</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/extension.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>Extensions Response: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/extension.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Extensions may define new data types, parameters, actions,
|
||||
headers, states, and resources. In XML, additional
|
||||
elements and attributes may be defined. These elements
|
||||
must be defined in the extension's namespace. In JSON, the
|
||||
alias must be used. The volumes element in the <xref
|
||||
linkend="UserEXT" xrefstyle="template: Examples %n"/> and
|
||||
<xref linkend="UserEXTJ" xrefstyle="select: labelnumber"/>
|
||||
is defined in the <code>RS-META</code> namespace. Extended
|
||||
headers are always prefixed with <code>X-</code> followed
|
||||
by the alias and a dash: (<code>X-RS-META-HEADER1</code>).
|
||||
Parameters must be prefixed with the extension alias
|
||||
followed by a colon.
|
||||
</para>
|
||||
<important>
|
||||
<para>
|
||||
Applications should be prepared to ignore response
|
||||
data that contains extension elements. Also,
|
||||
applications should also verify that an extension is
|
||||
available before submitting an extended request.
|
||||
</para>
|
||||
</important>
|
||||
<example xml:id="UserEXT">
|
||||
<title>Extended User Response: XML</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/ext-getuser.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example xml:id="UserEXTJ">
|
||||
<title>Extended User Response: JSON</title>
|
||||
<programlisting language="javascript"><xi:include
|
||||
href="samples/ext-getuser.json" parse="text"/></programlisting>
|
||||
</example>
|
||||
</section>
|
||||
<section xml:id="Faults-d1e908">
|
||||
<title>Faults</title>
|
||||
<para>When an error occurs the system will return an HTTP error response code denoting the
|
||||
type of error. The system will also return additional information about the fault in the
|
||||
body of the response. </para>
|
||||
<example>
|
||||
<title>XML Fault Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/identity_fault.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Fault Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/identity_fault.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para>The error code is returned in the body of the response for convenience. The message
|
||||
section returns a human readable message. The details section is optional and may contain
|
||||
useful information for tracking down an error (e.g a stack trace). </para>
|
||||
<para>The root element of the fault (e.g. identityFault) may change depending on the type of error.
|
||||
The following is an example of an itemNotFound error. </para>
|
||||
<example>
|
||||
<title>XML Not Found Fault</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/item_not_found.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Not Found Fault</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/item_not_found.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<para> The following is a list of possible fault types along with their associated error
|
||||
codes. </para>
|
||||
<table rules="all">
|
||||
<caption>Fault Types</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Fault Element</td>
|
||||
<td>Associated Error Code</td>
|
||||
<td>Expected in All Requests</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr align="center">
|
||||
<td>identityFault</td>
|
||||
<td>500, 400</td>
|
||||
<td> &CHECK; </td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>serviceUnavailable</td>
|
||||
<td>503</td>
|
||||
<td> &CHECK; </td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>badRequest</td>
|
||||
<td>400</td>
|
||||
<td> &CHECK; </td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>unauthorized</td>
|
||||
<td>401</td>
|
||||
<td> &CHECK; </td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>overLimit</td>
|
||||
<td>413</td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>userDisabled</td>
|
||||
<td>403</td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>forbidden</td>
|
||||
<td>403</td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>itemNotFound</td>
|
||||
<td>404</td>
|
||||
<td/>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td>tenantConflict</td>
|
||||
<td>409</td>
|
||||
<td/>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<para>From an XML schema perspective, all API faults are extensions of the base fault type
|
||||
<type>identityFault</type>. When working with a system that binds XML to actual classes (such
|
||||
as JAXB), one should be capable of using <type>identityFault</type> as a “catch-all” if
|
||||
there's no interest in distinguishing between individual fault types. </para>
|
||||
</section>
|
||||
</chapter>
|
591
openstack-identity-api/src/docbkx/identity-service-api.xml
Normal file
591
openstack-identity-api/src/docbkx/identity-service-api.xml
Normal file
@ -0,0 +1,591 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE chapter [<!-- Some useful entities borrowed from HTML -->
|
||||
<!ENTITY ndash "–">
|
||||
<!ENTITY mdash "—">
|
||||
<!ENTITY hellip "…">
|
||||
|
||||
<!-- Useful for describing APIs -->
|
||||
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
|
||||
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
|
||||
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
|
||||
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
|
||||
<!ENTITY HEAD '<command xmlns="http://docbook.org/ns/docbook">HEAD</command>'>
|
||||
|
||||
|
||||
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
|
||||
<imageobject>
|
||||
<imagedata fileref="img/Check_mark_23x20_02.svg"
|
||||
format="SVG" scale="60"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>'>
|
||||
<!ENTITY CODES 'Normal Response Code(s):'>
|
||||
<!ENTITY ERROR_CODES 'Error Response Code(s):'>
|
||||
<!ENTITY NO_REQUEST '<para xmlns="http://docbook.org/ns/docbook">
|
||||
This operation does not require a request body.</para>'>
|
||||
<!ENTITY LONG_URI_REFHEAD '
|
||||
<thead xmlns="http://docbook.org/ns/docbook">
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="4">URI</td>
|
||||
<td colspan="3">Description</td>
|
||||
</tr>
|
||||
</thead>'>
|
||||
<!ENTITY URI_REFHEAD '
|
||||
<thead xmlns="http://docbook.org/ns/docbook">
|
||||
<tr>
|
||||
<td colspan="1">Verb</td>
|
||||
<td colspan="1">URI</td>
|
||||
<td colspan="4">Description</td>
|
||||
</tr>
|
||||
</thead>'>
|
||||
]>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="Admin_API_Service_Developer_Operations-d1e1356"
|
||||
version="5.0">
|
||||
<title>Admin API (Service Developer Operations)</title>
|
||||
|
||||
|
||||
<para>The operations described in this chapter allow service developers to get and validate
|
||||
access tokens, manage users, tenants, roles, and service endpoints. </para>
|
||||
|
||||
<section xml:id="Core_Admin_API-d1e1370">
|
||||
<title>Core Admin API</title>
|
||||
<para>The following calls are core for the Keystone Admin 2.0 APIs</para>
|
||||
|
||||
<section xml:id="Admin_Access-d1e1378">
|
||||
<title>Admin Access</title>
|
||||
<para>Most calls on the Admin API require authentication. The only calls available without authentication are the calls to discover the service (getting version info, WADL contract, dev guide, help, etc…) and the call to authenticate and get a token.</para>
|
||||
<para>
|
||||
Authentication is performed by passing in a valid token in the <code>X-Auth-Token</code> header on the request from the client.
|
||||
Keystone will verify the token has (or belongs to a user that has) the <code>Admin</code> role.
|
||||
</para>
|
||||
<para>
|
||||
See the readme file or administrator guides for how to bootstrap Keystone and create your first administrator.
|
||||
</para>
|
||||
<table rules="all">
|
||||
<caption>Authentication Header</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Header Type</td>
|
||||
<td>Name</td>
|
||||
<td>Value</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>HTTP/1.1 Request</td>
|
||||
<td>X-Auth-Token</td>
|
||||
<td>txfa8426a08eaf</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section xml:id="Tokens-d1e1565">
|
||||
<title>Tokens</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &POST; </td>
|
||||
<td colspan="4">/tokens</td>
|
||||
<td colspan="3">Returns a token in exchange for valid credentials.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tokens/<parameter>tokenId</parameter>?belongsTo=<parameter>tenantId</parameter></td>
|
||||
<td colspan="3">Validate a token.If `belongsTo` is provided, validates that a token belongs to a specific tenant.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &HEAD;</td>
|
||||
<td colspan="4">/tokens/<parameter>tokenId</parameter>?belongsTo=<parameter>tenantId</parameter></td>
|
||||
<td colspan="3">Validate a token.(Quick check).Returns no body.
|
||||
If `belongsTo` is provided, validates that a token belongs to a specific tenant.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
</section>
|
||||
|
||||
<section xml:id="Users-d1e1435">
|
||||
<title>Users</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/users?username=<parameter>userName</parameter></td>
|
||||
<td colspan="3">Returns detailed information about a specific user, by user name.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/users/<parameter>userId</parameter></td>
|
||||
<td colspan="3">Returns detailed information about a specific user, by user id.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1">&GET;
|
||||
</td>
|
||||
<td colspan="4">/users/<parameter>userId</parameter>/roles
|
||||
</td>
|
||||
<td colspan="3">
|
||||
Get a list of global roles for a specific user (excludes tenant roles).
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
</section>
|
||||
|
||||
<section xml:id="Tenants-d1e1606">
|
||||
<title>Tenants</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants</td>
|
||||
<td colspan="3">Get a list of tenants.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants/?tenantname=<parameter>tenantName</parameter></td>
|
||||
<td colspan="3">Returns detailed information about a tenant, by name.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants/<parameter>tenantId</parameter></td>
|
||||
<td colspan="3">Returns detailed information about a tenant, by id.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants/<parameter>tenantId</parameter>/roles</td>
|
||||
<td colspan="3">Get roles of a tenant.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1">&GET;
|
||||
</td>
|
||||
<td colspan="4">/tenants/<parameter>tenantId</parameter>/endpoints
|
||||
</td>
|
||||
<td colspan="3">
|
||||
Get a list of endpoints for a tenant.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1">&GET;
|
||||
</td>
|
||||
<td colspan="4">/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/roles
|
||||
</td>
|
||||
<td colspan="3">
|
||||
Returns a list of roles for a user on a specific tenant.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
</section>
|
||||
</section>
|
||||
<section xml:id="Token_Operations-d1e1900">
|
||||
<title>Token Operations</title>
|
||||
<section xml:id="Authenticate-d1e1166">
|
||||
<title>Authenticate</title>
|
||||
<informaltable rules="all">
|
||||
&URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &POST; </td>
|
||||
<td colspan="1">/tokens</td>
|
||||
<td colspan="4">Authenticate to generate a token.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), userDisabled
|
||||
(<errorcode>403</errorcode>), badRequest (<errorcode>400</errorcode>), identityFault
|
||||
(<errorcode>500</errorcode>), serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
<para>
|
||||
TenantID is optional and may be used to specify that a
|
||||
token should be returned that has access to the resources
|
||||
of that particular tenant.
|
||||
</para>
|
||||
<example>
|
||||
<title>XML Auth Request</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/auth_credentials.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Auth Request</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/auth_credentials.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>XML Auth Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/auth.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Auth Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/auth.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Validate_Token-d1e1914">
|
||||
<title>Validate Token</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4"
|
||||
>/tokens/<parameter>tokenId</parameter>?belongsTo=<parameter>tenantId</parameter></td>
|
||||
<td colspan="3">Check that a token is valid and that it belongs to a particular user
|
||||
and return the permissions relevant to a particular client.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), forbidden
|
||||
(<returnvalue>403</returnvalue>), userDisabled(<returnvalue>403</returnvalue>),
|
||||
badRequest (<errorcode>400</errorcode>), itemNotFound (<errorcode>404</errorcode>),
|
||||
identityFault(<returnvalue>500</returnvalue>),
|
||||
serviceUnavailable(<returnvalue>503</returnvalue>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<para>
|
||||
Valid tokens will exist in the
|
||||
/tokens/<parameter>tokenId</parameter> path and invalid
|
||||
tokens will not. In other words, a user should expect an
|
||||
itemNotFound (<errorcode>404</errorcode>) fault for an
|
||||
invalid token.
|
||||
</para>
|
||||
<example>
|
||||
<title>XML Validate Token Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/validatetoken.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Validate Token Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/validatetoken.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
<section xml:id="Validate_Token-HEAD-d1e1914">
|
||||
<title>Validate Token</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &HEAD; </td>
|
||||
<td colspan="4"
|
||||
>/tokens/<parameter>tokenId</parameter>?belongsTo=<parameter>tenantId</parameter></td>
|
||||
<td colspan="3">Check that a token is valid and that it belongs to a particular user
|
||||
(For perfromance).</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), forbidden
|
||||
(<returnvalue>403</returnvalue>), userDisabled(<returnvalue>403</returnvalue>),
|
||||
badRequest (<errorcode>400</errorcode>), itemNotFound (<errorcode>404</errorcode>),
|
||||
identityFault(<returnvalue>500</returnvalue>),
|
||||
serviceUnavailable(<returnvalue>503</returnvalue>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<para>
|
||||
Valid tokens will exist in the
|
||||
/tokens/<parameter>tokenId</parameter> path and invalid
|
||||
tokens will not. In other words, a user should expect an
|
||||
itemNotFound (<errorcode>404</errorcode>) fault for an
|
||||
invalid token.
|
||||
</para>
|
||||
<example>
|
||||
<title>XML Validate Token Response</title>
|
||||
<programlisting language="xml">
|
||||
No Response body is returned.
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Validate Token Response</title>
|
||||
<programlisting language="javascript">
|
||||
No Response body is returned.
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="User_Operations-d1e1900">
|
||||
<title>User Operations</title>
|
||||
<section xml:id="Get_a_User-d1e2242">
|
||||
<title>Get a User</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/users/<parameter>userId</parameter></td>
|
||||
<td colspan="3">Get a user by user id.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML User Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/user.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON User Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/user.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Get_a_User-By_Name-d1e2242">
|
||||
<title>Get a User</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/users?username=<parameter>userName</parameter></td>
|
||||
<td colspan="3">Get a user by user name.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML User Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/user.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON User Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/user.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Get_User_Roles-d1e2242">
|
||||
<title>Get list of User Roles</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/users/<parameter>user_id</parameter>/roles</td>
|
||||
<td colspan="3">Returns a list of global roles associated with a specific user (excludes tenant roles).</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML User Role Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/roles.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON User Role Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/roles.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="Tenant_Operations-d1e1900">
|
||||
<title>Tenant Operations</title>
|
||||
<section xml:id="Get_Tenants-d1e1264">
|
||||
<title>Get Tenants</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants</td>
|
||||
<td colspan="3">Get a list of tenants.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), overLimit(<errorcode>413</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
<para>
|
||||
The operation returns a list of tenants which the caller has
|
||||
access to. This call must be authenticated, so a valid token must
|
||||
be passed in as a header.
|
||||
</para>
|
||||
<example>
|
||||
<title>Tenants Request with Auth Token</title>
|
||||
<programlisting language="text">
|
||||
<xi:include href="samples/tenants-request.txt" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>JSON Tenants Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/tenants.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>XML Tenants Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenants.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Get_a_Tenant-d1e2242">
|
||||
<title>Get a Tenant</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants/<parameter>tenantId</parameter></td>
|
||||
<td colspan="3">Get a tenant.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML Tenant Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenant.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Tenant Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/tenant.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Get_a_Tenant-By_Name-d1e2242">
|
||||
<title>Get a Tenant by Name</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants?<parameter>name=tenant_name</parameter></td>
|
||||
<td colspan="3">Get a tenant by name.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML Tenant Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/tenant.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Tenant Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/tenant.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Get_Tenant_Endpoints-d1e2242">
|
||||
<title>Get list of Tenant Endpoints</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants/<parameter>tenantId</parameter>/endpoints</td>
|
||||
<td colspan="3"> Returns a list of roles for a user on a specific tenant.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML Tenant Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/endpoints.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Tenant Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/endpoints.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="Get_Tenant_User_Roles-d1e2242">
|
||||
<title>Get list of Roles assigned for a User on a Tenant</title>
|
||||
<informaltable rules="all">
|
||||
&LONG_URI_REFHEAD;
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1"> &GET; </td>
|
||||
<td colspan="4">/tenants/<parameter>tenant_id</parameter>/users/<parameter>user_id</parameter>/roles</td>
|
||||
<td colspan="3">Returns a list of roles assigned to a user for a specific tenant.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
<simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara>
|
||||
<simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>),
|
||||
forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>),
|
||||
badRequest (<errorcode>400</errorcode>), identityFault (<errorcode>500</errorcode>),
|
||||
serviceUnavailable(<errorcode>503</errorcode>)</simpara>
|
||||
&NO_REQUEST;
|
||||
<example>
|
||||
<title>XML Tenant Response</title>
|
||||
<programlisting language="xml">
|
||||
<xi:include href="samples/roles.xml" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>JSON Tenant Response</title>
|
||||
<programlisting language="javascript">
|
||||
<xi:include href="samples/roles.json" parse="text"/>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="19.21315"
|
||||
height="18.294994"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.45"
|
||||
sodipodi:modified="true"
|
||||
version="1.0">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9195959"
|
||||
inkscape:cx="17.757032"
|
||||
inkscape:cy="7.298821"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:window-width="984"
|
||||
inkscape:window-height="852"
|
||||
inkscape:window-x="148"
|
||||
inkscape:window-y="66" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-192.905,-516.02064)">
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="M 197.67968,534.31563 C 197.40468,534.31208 196.21788,532.53719 195.04234,530.37143 L 192.905,526.43368 L 193.45901,525.87968 C 193.76371,525.57497 194.58269,525.32567 195.27896,525.32567 L 196.5449,525.32567 L 197.18129,527.33076 L 197.81768,529.33584 L 202.88215,523.79451 C 205.66761,520.74678 208.88522,517.75085 210.03239,517.13691 L 212.11815,516.02064 L 207.90871,520.80282 C 205.59351,523.43302 202.45735,527.55085 200.93947,529.95355 C 199.42159,532.35625 197.95468,534.31919 197.67968,534.31563 z "
|
||||
id="path2223" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
67
openstack-identity-api/src/docbkx/samples/auth.json
Normal file
67
openstack-identity-api/src/docbkx/samples/auth.json
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"auth": {
|
||||
"token": {
|
||||
"id": "asdasdasd-adsasdads-asdasdasd-adsadsasd",
|
||||
"expires": "2010-11-01T03:32:15-05:00"
|
||||
},
|
||||
"serviceCatalog": [
|
||||
{
|
||||
"name": "Cloud Servers",
|
||||
"type": "compute",
|
||||
"endpoints": [
|
||||
{
|
||||
"publicURL": "https://compute.north.host/v1/1234",
|
||||
"internalURL": "https://compute.north.host/v1/1234",
|
||||
"region": "North",
|
||||
"tenantId": "1234",
|
||||
"versionId": "1.0",
|
||||
"versionInfo": "https://compute.north.host/v1.0/",
|
||||
"versionList": "https://compute.north.host/"
|
||||
}, {
|
||||
"publicURL": "https://compute.north.host/v1.1/3456",
|
||||
"internalURL": "https://compute.north.host/v1.1/3456",
|
||||
"region": "North",
|
||||
"tenantId": "3456",
|
||||
"versionId": "1.1",
|
||||
"versionInfo": "https://compute.north.host/v1.1/",
|
||||
"versionList": "https://compute.north.host/"
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"name": "Cloud Files",
|
||||
"type": "object-store",
|
||||
"endpoints": [
|
||||
{
|
||||
"publicURL": "https://compute.north.host/v1/blah-blah",
|
||||
"internalURL": "https://compute.north.host/v1/blah-blah",
|
||||
"region": "South",
|
||||
"tenantId": "1234",
|
||||
"versionId": "1.0",
|
||||
"versionInfo": "uri",
|
||||
"versionList": "uri"
|
||||
}, {
|
||||
"publicURL": "https://compute.north.host/v1.1/blah-blah",
|
||||
"internalURL": "https://compute.north.host/v1.1/blah-blah",
|
||||
"region": "South",
|
||||
"tenantId": "3456",
|
||||
"versionId": "1.1",
|
||||
"versionInfo": "https://compute.north.host/v1.1/",
|
||||
"versionList": "https://compute.north.host/"
|
||||
}
|
||||
],
|
||||
"endpoint_links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "https://identity.north.host/v2.0/endpoints?marker=2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"serviceCatalog_links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "https://identity.host/v2.0/endpoints?session=2hfh8Ar&marker=2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
60
openstack-identity-api/src/docbkx/samples/auth.xml
Normal file
60
openstack-identity-api/src/docbkx/samples/auth.xml
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<auth xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<token expires="2010-11-01T03:32:15-05:00"
|
||||
id="ab48a9efdfedb23ty3494"/>
|
||||
<serviceCatalog>
|
||||
<service type="compute" name="Computers in the Cloud">
|
||||
<endpoint
|
||||
region="North"
|
||||
tenantId="1234"
|
||||
publicURL="https://north.compute.public.com/v2.0/1234"
|
||||
internalURL="https://north.compute.internal.com/v2.0/1234">
|
||||
<version
|
||||
id="2.0"
|
||||
info="https://north.compute.public.com/v2.0/"
|
||||
list="https://north.compute.public.com/" />
|
||||
</endpoint>
|
||||
<endpoint
|
||||
region="South"
|
||||
tenantId="3456"
|
||||
publicURL="https://south.compute.public.com/v2.0/3456"
|
||||
internalURL="https://south.compute.internal.com/v2.0/3456">
|
||||
<version
|
||||
id="2.0"
|
||||
info="https://south.compute.public.com/v2.0/"
|
||||
list="https://south.compute.public.com/" />
|
||||
</endpoint>
|
||||
</service>
|
||||
<service type="object-store" name="HTTP Object Store">
|
||||
<endpoint
|
||||
region="North"
|
||||
tenantId="1234"
|
||||
publicURL="https://north.object-store.public.com/v1/1234"
|
||||
internalURL="https://north.object-store.internal.com/v1/1234">
|
||||
<version
|
||||
id="1"
|
||||
info="https://north.object-store.public.com/v1/"
|
||||
list="https://north.object-store.public.com/" />
|
||||
</endpoint>
|
||||
<endpoint
|
||||
region="South"
|
||||
tenantId="3456"
|
||||
publicURL="https://south.object-store.public.com/v2.0/3456"
|
||||
internalURL="https://south.object-store.internal.com/v2.0/3456">
|
||||
<version
|
||||
id="2.0"
|
||||
info="https://south.object-store.public.com/v1/"
|
||||
list="https://south.object-store.public.com/" />
|
||||
</endpoint>
|
||||
</service>
|
||||
<service type="dns" name="DNS-as-a-Service">
|
||||
<endpoint
|
||||
publicURL="https://dns.public.com/v2.0/blah-blah">
|
||||
<version
|
||||
id="2.0"
|
||||
info="https://dns.public.com/v2.0/"
|
||||
list="https://dns.public.com/" />
|
||||
</endpoint>
|
||||
</service>
|
||||
</serviceCatalog>
|
||||
</auth>
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"auth": {
|
||||
"OS-EC2-ec2Credentials": {
|
||||
"username": "test_user",
|
||||
"secret": "aaaaa",
|
||||
"signature": "bbb",
|
||||
},
|
||||
"tenantId": "77654"
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<auth
|
||||
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
tenantId="1234">
|
||||
<ec2Credentials
|
||||
xmlns="http://docs.openstack.org/identity/api/ext/OS-EC2/v1.0"
|
||||
username="testuser"
|
||||
key="aaaaa"
|
||||
signature="bbbbb"
|
||||
tenantId="77654"/>
|
||||
</auth>
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"auth": {
|
||||
"RAX-KEY:apikeyCredentials": {
|
||||
"username": "test_user",
|
||||
"apikey": "aaaaa-bbbbb-ccccc-12345678"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<auth xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<apikeyCredentials
|
||||
xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KEY/v1.0"
|
||||
username="testuser"
|
||||
apikey="aaaaa-bbbbb-ccccc-12345678"/>
|
||||
</auth>
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
"auth": {
|
||||
"passwordCredentials": {
|
||||
"username": "test_user",
|
||||
"password": "mypass"
|
||||
},
|
||||
"tenantId": "1234"
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<auth
|
||||
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
tenantId="1234">
|
||||
<passwordCredentials
|
||||
username="testuser"
|
||||
password="P@ssword1"/>
|
||||
</auth>
|
67
openstack-identity-api/src/docbkx/samples/choices.json
Normal file
67
openstack-identity-api/src/docbkx/samples/choices.json
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"choices": {
|
||||
"values": [
|
||||
{
|
||||
"id": "v1.0",
|
||||
"status": "DEPRECATED",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v1.0"
|
||||
}
|
||||
],
|
||||
"media-types": {
|
||||
"values": [
|
||||
{
|
||||
"base": "application/xml",
|
||||
"type": "application/vnd.openstack.identity+xml;version=1.0"
|
||||
}, {
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.identity+json;version=1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}, {
|
||||
"id": "v1.1",
|
||||
"status": "CURRENT",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v1.1"
|
||||
}
|
||||
],
|
||||
"media-types": {
|
||||
"values": [
|
||||
{
|
||||
"base": "application/xml",
|
||||
"type": "application/vnd.openstack.identity+xml;version=1.1"
|
||||
}, {
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.identity+json;version=1.1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}, {
|
||||
"id": "v2.0",
|
||||
"status": "BETA",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v2.0"
|
||||
}
|
||||
],
|
||||
"media-types": {
|
||||
"values": [
|
||||
{
|
||||
"base": "application/xml",
|
||||
"type": "application/vnd.openstack.identity+xml;version=2.0"
|
||||
}, {
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.identity+json;version=2.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
38
openstack-identity-api/src/docbkx/samples/choices.xml
Normal file
38
openstack-identity-api/src/docbkx/samples/choices.xml
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<choices
|
||||
xmlns="http://docs.openstack.org/common/api/v2.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<version id="v1.0" status="DEPRECATED">
|
||||
<media-types>
|
||||
<media-type
|
||||
base="application/xml"
|
||||
type="application/vnd.openstack.identity+xml;version=1.0" />
|
||||
<media-type
|
||||
base="application/json"
|
||||
type="application/vnd.openstack.identity+json;version=1.0" />
|
||||
</media-types>
|
||||
<atom:link rel="self" href="http://identity.api.openstack.org/v1.0" />
|
||||
</version>
|
||||
<version id="v1.1" status="CURRENT">
|
||||
<media-types>
|
||||
<media-type
|
||||
base="application/xml"
|
||||
type="application/vnd.openstack.identity+xml;version=1.1" />
|
||||
<media-type
|
||||
base="application/json"
|
||||
type="application/vnd.openstack.identity+json;version=1.1" />
|
||||
</media-types>
|
||||
<atom:link rel="self" href="http://identity.api.openstack.org/v1.1" />
|
||||
</version>
|
||||
<version id="v2.0" status="BETA">
|
||||
<media-types>
|
||||
<media-type
|
||||
base="application/xml"
|
||||
type="application/vnd.openstack.identity+xml;version=2.0" />
|
||||
<media-type
|
||||
base="application/json"
|
||||
type="application/vnd.openstack.identity+json;version=2.0" />
|
||||
</media-types>
|
||||
<atom:link rel="self" href="http://identity.api.openstack.org/v2.0" />
|
||||
</version>
|
||||
</choices>
|
6
openstack-identity-api/src/docbkx/samples/endpoint.json
Normal file
6
openstack-identity-api/src/docbkx/samples/endpoint.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"endpoint": {
|
||||
"id": 3,
|
||||
"href": "https://auth.keystone.com/v2.0/endpoints/3"
|
||||
}
|
||||
}
|
6
openstack-identity-api/src/docbkx/samples/endpoint.xml
Normal file
6
openstack-identity-api/src/docbkx/samples/endpoint.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<endpoint xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
id="3"
|
||||
href="https://auth.keystone.com/v2.0/endpoints/3"
|
||||
/>
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"endpointTemplate": {
|
||||
"id": 1,
|
||||
"region": "North",
|
||||
"global": true,
|
||||
"type": "compute",
|
||||
"publicURL": "https://compute.north.public.com/v1",
|
||||
"internalURL": "https://compute.north.internal.com/v1",
|
||||
"versionId": "1",
|
||||
"versionInfo": "https://compute.north.public.com/v1/",
|
||||
"versionList": "https://compute.north.public.com/",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<endpointTemplate
|
||||
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
id="1"
|
||||
region="North"
|
||||
global="true"
|
||||
type="compute"
|
||||
publicURL="https://service-public.com/v1"
|
||||
internalURL="https://service-internal.com/v1"
|
||||
enabled="true">
|
||||
<version
|
||||
ID="1"
|
||||
Info="https://compute.north.public.com/v1/"
|
||||
List="https://compute.north.public.com/"
|
||||
/>
|
||||
</endpointTemplate>
|
@ -0,0 +1,54 @@
|
||||
{
|
||||
"endpointsTemplates": [
|
||||
{
|
||||
"id": 1,
|
||||
"region": "North",
|
||||
"global": true,
|
||||
"type": "compute",
|
||||
"publicURL": "https://compute.north.public.com/v1",
|
||||
"internalURL": "https://compute.north.internal.com/v1",
|
||||
"versionId": "1",
|
||||
"versionInfo": "https://compute.north.public.com/v1/",
|
||||
"versionList": "https://compute.north.public.com/",
|
||||
"enabled": true
|
||||
}, {
|
||||
"id": 2,
|
||||
"region": "South",
|
||||
"serviceName": "compute",
|
||||
"publicURL": "https://compute.south.public.com/v1",
|
||||
"internalURL": "https://compute.south.internal.com/v1",
|
||||
"versionId": "1",
|
||||
"versionInfo": "https://compute.south.public.com/v1/",
|
||||
"versionList": "https://compute.south.public.com/",
|
||||
"enabled": false
|
||||
}, {
|
||||
"id": 3,
|
||||
"region": "North",
|
||||
"global": true,
|
||||
"serviceName": "object-store",
|
||||
"publicURL": "https://object-store.north.public.com/v1.0",
|
||||
"versionId": "1.0",
|
||||
"versionInfo": "https://object-store.north.public.com/v1.0/",
|
||||
"versionList": "https://object-store.north.public.com/",
|
||||
"enabled": true
|
||||
}, {
|
||||
"id": 4,
|
||||
"region": "South",
|
||||
"serviceName": "object-store",
|
||||
"publicURL": "https://object-store.south.public.com/v2",
|
||||
"versionId": "2",
|
||||
"versionInfo": "https://object-store.south.public.com/v2/",
|
||||
"versionList": "https://object-store.south.public.com/",
|
||||
"enabled": true
|
||||
}, {
|
||||
"id": 5,
|
||||
"global": true,
|
||||
"serviceName": "OS-DNS:DNS",
|
||||
"publicURL": "https://dns.public.com/v3.2",
|
||||
"versionId": "1.0",
|
||||
"versionInfo": "https://dns.public.com/v1.0/",
|
||||
"versionList": "https://dns.public.com/",
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<endpointTemplates xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<endpointTemplate
|
||||
id="1"
|
||||
region="North"
|
||||
global="true"
|
||||
serviceType="compute"
|
||||
publicURL="https://compute.north.public.com/v1"
|
||||
internalURL="https://compute.north.internal.com/v1"
|
||||
enabled="true">
|
||||
<version
|
||||
ID="1"
|
||||
List="https://compute.north.public.com/"
|
||||
Info="https://compute.north.public.com/v1"/>
|
||||
</endpointTemplate>
|
||||
<endpointTemplate
|
||||
id="2"
|
||||
region="south"
|
||||
serviceType="service2"
|
||||
publicURL="https://service2.public.com/v1"
|
||||
internalURL="https://service2.internal.public.com/v1"
|
||||
enabled="false">
|
||||
<version
|
||||
ID="1"
|
||||
List="https://service1.public.com/"
|
||||
Info="https://service1.public.com/v1"/>
|
||||
</endpointTemplate>
|
||||
<endpointTemplate
|
||||
id="3"
|
||||
region="DFW"
|
||||
global="true"
|
||||
serviceType="service1"
|
||||
publicURL="https://service1.public.com/v1"
|
||||
enabled="true">
|
||||
<version
|
||||
ID="1"
|
||||
List="https://service1.public.com/"
|
||||
Info="https://service1.public.com/v1"/>
|
||||
</endpointTemplate>
|
||||
<endpointTemplate
|
||||
id="4"
|
||||
region="ORD"
|
||||
serviceType="service2"
|
||||
publicURL="https://service2.public.com/v1"
|
||||
enabled="true">
|
||||
<version
|
||||
ID="1"
|
||||
List="https://service1.public.com/"
|
||||
Info="https://service1.public.com/v1"/>
|
||||
</endpointTemplate>
|
||||
<endpointTemplate
|
||||
id="5"
|
||||
global="true"
|
||||
serviceType="service3"
|
||||
publicURL="https://service3.public.com/v1">
|
||||
<version
|
||||
ID="1"
|
||||
List="https://service1.public.com/"
|
||||
Info="https://service1.public.com/v1"/>
|
||||
</endpointTemplate>
|
||||
</endpointTemplates>
|
20
openstack-identity-api/src/docbkx/samples/endpoints.json
Normal file
20
openstack-identity-api/src/docbkx/samples/endpoints.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"endpoints": [
|
||||
{
|
||||
"id": 1,
|
||||
"href": "https://auth.keystone.com/v2.0/endpoints/1"
|
||||
}, {
|
||||
"id": 2,
|
||||
"href": "https://auth.keystone.com/v2.0/endpoints/2"
|
||||
}, {
|
||||
"id": 3,
|
||||
"href": "https://auth.keystone.com/v2.0/endpoints/3"
|
||||
}, {
|
||||
"id": 4,
|
||||
"href": "https://auth.keystone.com/v2.0/endpoints/4"
|
||||
}, {
|
||||
"id": 5,
|
||||
"href": "https://auth.keystone.com/v2.0/endpoints/5"
|
||||
}
|
||||
]
|
||||
}
|
20
openstack-identity-api/src/docbkx/samples/endpoints.xml
Normal file
20
openstack-identity-api/src/docbkx/samples/endpoints.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<endpoints
|
||||
xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<endpoint
|
||||
href="https://auth.keystone.com/v2.0/endpoints/1"
|
||||
id="1" />
|
||||
<endpoint
|
||||
href="https://auth.keystone.com/v2.0/endpoints/2"
|
||||
id="2" />
|
||||
<endpoint
|
||||
href="https://auth.keystone.com/v2.0/endpoints/3"
|
||||
id="3" />
|
||||
<endpoint
|
||||
href="https://auth.keystone.com/v2.0/endpoints/4"
|
||||
id="4" />
|
||||
<endpoint
|
||||
href="https://auth.keystone.com/v2.0/endpoints/5"
|
||||
id="5" />
|
||||
</endpoints>
|
22
openstack-identity-api/src/docbkx/samples/ext-getuser.json
Normal file
22
openstack-identity-api/src/docbkx/samples/ext-getuser.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"user": {
|
||||
"roles": {
|
||||
"values": [
|
||||
{
|
||||
"tenantId": "1234",
|
||||
"id": "Admin"
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "u1000",
|
||||
"username": "jqsmith",
|
||||
"email": "john.smith@example.org",
|
||||
"enabled": true,
|
||||
"RS-META:metadata": {
|
||||
"values": {
|
||||
"MetaKey1": "MetaValue1",
|
||||
"MetaKey2": "MetaValue2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
13
openstack-identity-api/src/docbkx/samples/ext-getuser.xml
Normal file
13
openstack-identity-api/src/docbkx/samples/ext-getuser.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<user xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
enabled="true" email="john.smith@example.org"
|
||||
id="u1000" username="jqsmith">
|
||||
<roles>
|
||||
<role tenantId="1234" id="Admin"/>
|
||||
</roles>
|
||||
<metadata
|
||||
xmlns="http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0">
|
||||
<meta key="MetaKey1">MetaValue1</meta>
|
||||
<meta key="MetaKey2">MetaValue2</meta>
|
||||
</metadata>
|
||||
</user>
|
20
openstack-identity-api/src/docbkx/samples/extension.json
Normal file
20
openstack-identity-api/src/docbkx/samples/extension.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"extension": {
|
||||
"name": "User Metadata Extension",
|
||||
"namespace": "http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0",
|
||||
"alias": "RS-META",
|
||||
"updated": "2011-01-12T11:22:33-06:00",
|
||||
"description": "Allows associating arbritrary metadata with a user.",
|
||||
"links": [
|
||||
{
|
||||
"rel": "describedby",
|
||||
"type": "application/pdf",
|
||||
"href": "http://docs.rackspacecloud.com/identity/api/ext/identity-meta-20111201.pdf"
|
||||
}, {
|
||||
"rel": "describedby",
|
||||
"type": "application/vnd.sun.wadl+xml",
|
||||
"href": "http://docs.rackspacecloud.com/identity/api/ext/identity-cbs.wadl"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
23
openstack-identity-api/src/docbkx/samples/extension.xml
Normal file
23
openstack-identity-api/src/docbkx/samples/extension.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<extension xmlns="http://docs.openstack.org/common/api/v1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
name="User Metadata Extension"
|
||||
namespace="http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0"
|
||||
alias="RS-META"
|
||||
updated="2011-01-12T11:22:33-06:00">
|
||||
|
||||
<description>
|
||||
Allows associating arbritrary metadata with a user.
|
||||
</description>
|
||||
|
||||
<atom:link rel="describedby"
|
||||
type="application/pdf"
|
||||
href="http://docs.rackspacecloud.com/identity/api/ext/identity-meta-20111201.pdf"/>
|
||||
<atom:link rel="describedby"
|
||||
type="application/vnd.sun.wadl+xml"
|
||||
href="http://docs.rackspacecloud.com/identity/api/ext/identity-meta.wadl"/>
|
||||
|
||||
</extension>
|
||||
|
||||
|
41
openstack-identity-api/src/docbkx/samples/extensions.json
Normal file
41
openstack-identity-api/src/docbkx/samples/extensions.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"extensions": {
|
||||
"values": [
|
||||
{
|
||||
"name": "Reset Password Extension",
|
||||
"namespace": "http://docs.rackspacecloud.com/identity/api/ext/rpe/v2.0",
|
||||
"alias": "RS-RPE",
|
||||
"updated": "2011-01-22T13:25:27-06:00",
|
||||
"description": "Adds the capability to reset a user's password. The user is emailed when the password has been reset.",
|
||||
"links": [
|
||||
{
|
||||
"rel": "describedby",
|
||||
"type": "application/pdf",
|
||||
"href": "http://docs.rackspacecloud.com/identity/api/ext/identity-rpe-20111111.pdf"
|
||||
}, {
|
||||
"rel": "describedby",
|
||||
"type": "application/vnd.sun.wadl+xml",
|
||||
"href": "http://docs.rackspacecloud.com/identity/api/ext/identity-rpe.wadl"
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"name": "User Metadata Extension",
|
||||
"namespace": "http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0",
|
||||
"alias": "RS-META",
|
||||
"updated": "2011-01-12T11:22:33-06:00",
|
||||
"description": "Allows associating arbritrary metadata with a user.",
|
||||
"links": [
|
||||
{
|
||||
"rel": "describedby",
|
||||
"type": "application/pdf",
|
||||
"href": "http://docs.rackspacecloud.com/identity/api/ext/identity-meta-20111201.pdf"
|
||||
}, {
|
||||
"rel": "describedby",
|
||||
"type": "application/vnd.sun.wadl+xml",
|
||||
"href": "http://docs.rackspacecloud.com/identity/api/ext/identity-meta.wadl"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
39
openstack-identity-api/src/docbkx/samples/extensions.xml
Normal file
39
openstack-identity-api/src/docbkx/samples/extensions.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<extensions xmlns="http://docs.openstack.org/common/api/v1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<extension
|
||||
name="Reset Password Extension"
|
||||
namespace="http://docs.rackspacecloud.com/identity/api/ext/rpe/v1.0"
|
||||
alias="RS-RPE"
|
||||
updated="2011-01-22T13:25:27-06:00">
|
||||
|
||||
<description>
|
||||
Adds the capability to reset a user's password. The user is
|
||||
emailed when the password has been reset.
|
||||
</description>
|
||||
|
||||
<atom:link rel="describedby"
|
||||
type="application/pdf"
|
||||
href="http://docs.rackspacecloud.com/identity/api/ext/identity-rpe-20111111.pdf"/>
|
||||
<atom:link rel="describedby"
|
||||
type="application/vnd.sun.wadl+xml"
|
||||
href="http://docs.rackspacecloud.com/identity/api/ext/identity-rpe.wadl"/>
|
||||
</extension>
|
||||
<extension
|
||||
name="User Metadata Extension"
|
||||
namespace="http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0"
|
||||
alias="RS-META"
|
||||
updated="2011-01-12T11:22:33-06:00">
|
||||
<description>
|
||||
Allows associating arbritrary metadata with a user.
|
||||
</description>
|
||||
|
||||
<atom:link rel="describedby"
|
||||
type="application/pdf"
|
||||
href="http://docs.rackspacecloud.com/identity/api/ext/identity-meta-20111201.pdf"/>
|
||||
<atom:link rel="describedby"
|
||||
type="application/vnd.sun.wadl+xml"
|
||||
href="http://docs.rackspacecloud.com/identity/api/ext/identity-meta.wadl"/>
|
||||
</extension>
|
||||
</extensions>
|
25
openstack-identity-api/src/docbkx/samples/getuser-1.json
Normal file
25
openstack-identity-api/src/docbkx/samples/getuser-1.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"user": {
|
||||
"roles": {
|
||||
"values": [
|
||||
{
|
||||
"tenantId": "1234",
|
||||
"id": "Admin"
|
||||
}, {
|
||||
"tenantId": "1234",
|
||||
"id": "DBUser"
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "http://identity.api.openstack.org/v2.0/tenants/1234/users/u1000/roles?marker=Super"
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "u1000",
|
||||
"username": "jqsmith",
|
||||
"email": "john.smith@example.org",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
13
openstack-identity-api/src/docbkx/samples/getuser-1.xml
Normal file
13
openstack-identity-api/src/docbkx/samples/getuser-1.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<user xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
enabled="true" email="john.smith@example.org"
|
||||
username="jqsmith" id="u1000">
|
||||
<roles>
|
||||
<role tenantId="1234" id="Admin"/>
|
||||
<role tenantId="1234" id="DBUser"/>
|
||||
<atom:link
|
||||
rel="next"
|
||||
href="http://identity.api.openstack.org/v2.0/tenants/1234/users/u1000/groups?marker=Super"/>
|
||||
</roles>
|
||||
</user>
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"identityFault": {
|
||||
"message": "Fault",
|
||||
"details": "Error Details...",
|
||||
"code": 500
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<identityFault xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
code="500">
|
||||
<message>Fault</message>
|
||||
<details>Error Details...</details>
|
||||
</identityFault>
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"itemNotFound": {
|
||||
"message": "Item not found.",
|
||||
"details": "Error Details...",
|
||||
"code": 404
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<itemNotFound xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
code="404">
|
||||
<message>Item not found.</message>
|
||||
<details>Error Details...</details>
|
||||
</itemNotFound>
|
6
openstack-identity-api/src/docbkx/samples/role.json
Normal file
6
openstack-identity-api/src/docbkx/samples/role.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"role": {
|
||||
"id": "Guest",
|
||||
"description": "Guest Access"
|
||||
}
|
||||
}
|
4
openstack-identity-api/src/docbkx/samples/role.xml
Normal file
4
openstack-identity-api/src/docbkx/samples/role.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<role xmlns="http://docs.openstack.org/identity/api/v2.0" id="Admin"
|
||||
description="All Access" />
|
13
openstack-identity-api/src/docbkx/samples/roles.json
Normal file
13
openstack-identity-api/src/docbkx/samples/roles.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"roles": [
|
||||
{
|
||||
"id": "Admin",
|
||||
"tenantId": "1234",
|
||||
"description": "All access"
|
||||
}, {
|
||||
"id": "Guest",
|
||||
"tenantId": "3456",
|
||||
"description": "Guest Access"
|
||||
}
|
||||
]
|
||||
}
|
6
openstack-identity-api/src/docbkx/samples/roles.xml
Normal file
6
openstack-identity-api/src/docbkx/samples/roles.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<roles xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<role id="Admin" tenantId="1234" description="All Access" />
|
||||
<role id="Guest" tenantId="3456" description="Guest Access" />
|
||||
</roles>
|
@ -0,0 +1,4 @@
|
||||
POST /v2.0/tokens HTTP/1.1
|
||||
Host: identity.api.openstack.org
|
||||
Content-Type: application/json
|
||||
Accept: application/xml
|
@ -0,0 +1,4 @@
|
||||
HTTP/1.1 200 OKAY
|
||||
Date: Mon, 12 Nov 2010 15:55:01 GMT
|
||||
Content-Length:
|
||||
Content-Type: application/xml; charset=UTF-8
|
7
openstack-identity-api/src/docbkx/samples/service.json
Normal file
7
openstack-identity-api/src/docbkx/samples/service.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"service": {
|
||||
"id": "nova",
|
||||
"type": "compute",
|
||||
"description": "A description ..."
|
||||
}
|
||||
}
|
4
openstack-identity-api/src/docbkx/samples/service.xml
Normal file
4
openstack-identity-api/src/docbkx/samples/service.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<service xmlns="http://docs.openstack.org/identity/api/v2.0" id="nova"
|
||||
type="compute" description="OpenStack Compute Service" />
|
13
openstack-identity-api/src/docbkx/samples/services.json
Normal file
13
openstack-identity-api/src/docbkx/samples/services.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"services": [
|
||||
{
|
||||
"id": "nova",
|
||||
"type": "compute",
|
||||
"description": "Computers in the Cloud"
|
||||
}, {
|
||||
"id": "glance",
|
||||
"type": "image-service",
|
||||
"description": "Server Images"
|
||||
}
|
||||
]
|
||||
}
|
6
openstack-identity-api/src/docbkx/samples/services.xml
Normal file
6
openstack-identity-api/src/docbkx/samples/services.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<services xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<service id="Nova" type="compute" description="Openstack Service" />
|
||||
<service id="Glance" type="image-service" description="Openstack Service" />
|
||||
</services>
|
8
openstack-identity-api/src/docbkx/samples/tenant.json
Normal file
8
openstack-identity-api/src/docbkx/samples/tenant.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"tenant": {
|
||||
"id": "1234",
|
||||
"name": "ACME corp",
|
||||
"description": "A description ...",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
5
openstack-identity-api/src/docbkx/samples/tenant.xml
Normal file
5
openstack-identity-api/src/docbkx/samples/tenant.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenant xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
enabled="true" id="1234" name="ACME Corp">
|
||||
<description>A description...</description>
|
||||
</tenant>
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"tenant": {
|
||||
"description": "A NEW description..."
|
||||
}
|
||||
}
|
4
openstack-identity-api/src/docbkx/samples/tenantlock.xml
Normal file
4
openstack-identity-api/src/docbkx/samples/tenantlock.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenant xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<description>A NEW description...</description>
|
||||
</tenant>
|
18
openstack-identity-api/src/docbkx/samples/tenants-1.json
Normal file
18
openstack-identity-api/src/docbkx/samples/tenants-1.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"tenants": {
|
||||
"values": [
|
||||
{
|
||||
"id": "1234",
|
||||
"name": "ACME corp",
|
||||
"description": "A description ...",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "http://identity.api.openstack.org/v2.0/tenants?limit=1&marker=1234"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
10
openstack-identity-api/src/docbkx/samples/tenants-1.xml
Normal file
10
openstack-identity-api/src/docbkx/samples/tenants-1.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenants xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<tenant enabled="true" id="1234" name="ACME Corp">
|
||||
<description>A description...</description>
|
||||
</tenant>
|
||||
<atom:link
|
||||
rel="next"
|
||||
href="http://identity.api.openstack.org/v2.0/tenants?limit=1&marker=1234"/>
|
||||
</tenants>
|
21
openstack-identity-api/src/docbkx/samples/tenants-2.json
Normal file
21
openstack-identity-api/src/docbkx/samples/tenants-2.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"tenants": {
|
||||
"values": [
|
||||
{
|
||||
"id": "3645",
|
||||
"name": "Iron Works",
|
||||
"description": "A description ...",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"rel": "next",
|
||||
"href": "http://identity.api.openstack.org/v2.0/tenants?limit=1&marker=3645"
|
||||
}, {
|
||||
"rel": "previous",
|
||||
"href": "http://identity.api.openstack.org/v2.0/tenants?limit=1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
13
openstack-identity-api/src/docbkx/samples/tenants-2.xml
Normal file
13
openstack-identity-api/src/docbkx/samples/tenants-2.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenants xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<tenant enabled="true" id="3645" name="Iron Works">
|
||||
<description>A description...</description>
|
||||
</tenant>
|
||||
<atom:link
|
||||
rel="previous"
|
||||
href="http://identity.api.openstack.org/v2.0/tenants?limit=1"/>
|
||||
<atom:link
|
||||
rel="next"
|
||||
href="http://identity.api.openstack.org/v2.0/tenants?limit=1&marker=3645"/>
|
||||
</tenants>
|
18
openstack-identity-api/src/docbkx/samples/tenants-3.json
Normal file
18
openstack-identity-api/src/docbkx/samples/tenants-3.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"tenants": {
|
||||
"values": [
|
||||
{
|
||||
"id": "9999",
|
||||
"name": "Bigz",
|
||||
"description": "A description ...",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"rel": "previous",
|
||||
"href": "http://identity.api.openstack.org/v2.0/tenants?limit=1&marker=1234"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
10
openstack-identity-api/src/docbkx/samples/tenants-3.xml
Normal file
10
openstack-identity-api/src/docbkx/samples/tenants-3.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenants xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<tenant enabled="true" id="9999" name="Bigz">
|
||||
<description>A description...</description>
|
||||
</tenant>
|
||||
<atom:link
|
||||
rel="previous"
|
||||
href="http://identity.api.openstack.org/v2.0/tenants?limit=1&marker=1234"/>
|
||||
</tenants>
|
@ -0,0 +1,5 @@
|
||||
GET /v2.0/tenants HTTP/1.1
|
||||
Host: identity.api.openstack.org
|
||||
Content-Type: application/json
|
||||
X-Auth-Token: fa8426a0-8eaf-4d22-8e13-7c1b16a9370c
|
||||
Accept: application/json
|
17
openstack-identity-api/src/docbkx/samples/tenants.json
Normal file
17
openstack-identity-api/src/docbkx/samples/tenants.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"tenants": {
|
||||
"values": [
|
||||
{
|
||||
"id": "1234",
|
||||
"name": "ACME Corp",
|
||||
"description": "A description ...",
|
||||
"enabled": true
|
||||
}, {
|
||||
"id": "3456",
|
||||
"name": "Iron Works",
|
||||
"description": "A description ...",
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
14
openstack-identity-api/src/docbkx/samples/tenants.xml
Normal file
14
openstack-identity-api/src/docbkx/samples/tenants.xml
Normal file
@ -0,0 +1,14 @@
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/xml; charset=UTF-8
|
||||
Content-Length: 200
|
||||
Date: Sun, 1 Jan 2011 9:00:00 GMT
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenants xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<tenant enabled="true" id="1234" name="ACME Corp">
|
||||
<description>A description...</description>
|
||||
</tenant>
|
||||
<tenant enabled="true" id="3645" name="Iron Works">
|
||||
<description>A description...</description>
|
||||
</tenant>
|
||||
</tenants>
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"tenant": {
|
||||
"id": "1234",
|
||||
"name": "ACME Corp",
|
||||
"description": "A NEW description...",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tenant xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
enabled="true" id="1234" name="ACME Corp">
|
||||
<description>A NEW description...</description>
|
||||
</tenant>
|
8
openstack-identity-api/src/docbkx/samples/user.json
Normal file
8
openstack-identity-api/src/docbkx/samples/user.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"user": {
|
||||
"id": "u1000",
|
||||
"username": "jqsmith",
|
||||
"email": "john.smith@example.org",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
5
openstack-identity-api/src/docbkx/samples/user.xml
Normal file
5
openstack-identity-api/src/docbkx/samples/user.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<user xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
enabled="true" email="john.smith@example.org"
|
||||
username="jqsmith" id="u1000">
|
||||
</user>
|
19
openstack-identity-api/src/docbkx/samples/validatetoken.json
Normal file
19
openstack-identity-api/src/docbkx/samples/validatetoken.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"auth": {
|
||||
"token": {
|
||||
"expires": "2010-11-01T03:32:15-05:00",
|
||||
"id": "ab48a9efdfedb23ty3494"
|
||||
},
|
||||
"user": {
|
||||
"username": "jqsmith",
|
||||
"roles": [
|
||||
{
|
||||
"id": "Admin",
|
||||
"tenantId": "one"
|
||||
}, {
|
||||
"id": "compute:cloud_admin"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
13
openstack-identity-api/src/docbkx/samples/validatetoken.xml
Normal file
13
openstack-identity-api/src/docbkx/samples/validatetoken.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<auth xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<token expires="2010-11-01T03:32:15-05:00"
|
||||
id="ab48a9efdfedb23ty3494"/>
|
||||
<user username="jqsmith">
|
||||
<roles xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||
<role xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
id="Admin" tenantId="one"/>
|
||||
<role xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||
id="compute:cloud_admin"/>
|
||||
</roles>
|
||||
</user>
|
||||
</auth>
|
19
openstack-identity-api/src/docbkx/samples/version-atom.xml
Normal file
19
openstack-identity-api/src/docbkx/samples/version-atom.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title type="text">About This Version</title>
|
||||
<updated>2011-01-21T11:33:21-06:00</updated>
|
||||
<id>http://identity.api.openstack.org/v2.0/</id>
|
||||
<author><name>OpenStack</name><uri>http://www.openstack.org/</uri></author>
|
||||
<link rel="self" href="http://identity.api.openstack.org/v2.0/"/>
|
||||
<entry>
|
||||
<id>http://identity.api.openstack.org/v2.0/</id>
|
||||
<title type="text">Version v2.0</title>
|
||||
<updated>2011-01-21T11:33:21-06:00</updated>
|
||||
<link rel="self" href="http://identity.api.openstack.org/v2.0/"/>
|
||||
<link rel="describedby" type="application/pdf"
|
||||
href="http://docs.openstack.org/identity/api/v2.0/identity-latest.pdf"/>
|
||||
<link rel="describedby" type="application/vnd.sun.wadl+xml"
|
||||
href="http://docs.openstack.org/identity/api/v2.0/application.wadl"/>
|
||||
<content type="text">Version v2.0 CURRENT (2011-01-21T11:33:21-06:00)</content>
|
||||
</entry>
|
||||
</feed>
|
30
openstack-identity-api/src/docbkx/samples/version.json
Normal file
30
openstack-identity-api/src/docbkx/samples/version.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"version": {
|
||||
"id": "v2.0",
|
||||
"status": "CURRENT",
|
||||
"updated": "2011-01-21T11:33:21-06:00",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v2.0/"
|
||||
}, {
|
||||
"rel": "describedby",
|
||||
"type": "application/pdf",
|
||||
"href": "http://docs.openstack.org/identity/api/v2.0/identity-latest.pdf"
|
||||
}, {
|
||||
"rel": "describedby",
|
||||
"type": "application/vnd.sun.wadl+xml",
|
||||
"href": "http://docs.openstack.org/identity/api/v2.0/identity.wadl"
|
||||
}
|
||||
],
|
||||
"media-types": [
|
||||
{
|
||||
"base": "application/xml",
|
||||
"type": "application/vnd.openstack.identity+xml;version=2.0"
|
||||
}, {
|
||||
"base": "application/json",
|
||||
"type": "application/vnd.openstack.identity+json;version=2.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
23
openstack-identity-api/src/docbkx/samples/version.xml
Normal file
23
openstack-identity-api/src/docbkx/samples/version.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<version xmlns="http://docs.openstack.org/common/api/v1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
id="v2.0" status="CURRENT" updated="2011-01-21T11:33:21-06:00">
|
||||
|
||||
<media-types>
|
||||
<media-type base="application/xml"
|
||||
type="application/vnd.openstack.identity+xml;version=2.0"/>
|
||||
<media-type base="application/json"
|
||||
type="application/vnd.openstack.identity+json;version=2.0"/>
|
||||
</media-types>
|
||||
|
||||
<atom:link rel="self"
|
||||
href="http://identity.api.openstack.org/v2.0/"/>
|
||||
|
||||
<atom:link rel="describedby"
|
||||
type="application/pdf"
|
||||
href="http://docs.openstack.org/identity/api/v2.0/identity-latest.pdf" />
|
||||
|
||||
<atom:link rel="describedby"
|
||||
type="application/vnd.sun.wadl+xml"
|
||||
href="http://docs.openstack.org/identity/api/v2.0/identity.wadl" />
|
||||
</version>
|
29
openstack-identity-api/src/docbkx/samples/versions-atom.xml
Normal file
29
openstack-identity-api/src/docbkx/samples/versions-atom.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title type="text">Available API Versions</title>
|
||||
<updated>2010-12-12T18:30:02.25Z</updated>
|
||||
<id>http://identity.api.openstack.org/</id>
|
||||
<author><name>OpenStack</name><uri>http://www.openstack.org/</uri></author>
|
||||
<link rel="self" href="http://identity.api.openstack.org/"/>
|
||||
<entry>
|
||||
<id>http://identity.api.openstack.org/v2.0/</id>
|
||||
<title type="text">Version v2.0</title>
|
||||
<updated>2011-05-27T20:22:02.25Z</updated>
|
||||
<link rel="self" href="http://identity.api.openstack.org/v2.0/"/>
|
||||
<content type="text">Version v2.1 CURRENT (2011-05-27T20:22:02.25Z)</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>http://identity.api.openstack.org/v1.1/</id>
|
||||
<title type="text">Version v1.1</title>
|
||||
<updated>2010-12-12T18:30:02.25Z</updated>
|
||||
<link rel="self" href="http://identity.api.openstack.org/v1.1/"/>
|
||||
<content type="text">Version v1.1 CURRENT (2010-12-12T18:30:02.25Z)</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>http://identity.api.openstack.org/v1.0/</id>
|
||||
<title type="text">Version v1.0</title>
|
||||
<updated>2009-10-09T11:30:00Z</updated>
|
||||
<link rel="self" href="http://identity.api.openstack.org/v1.0/"/>
|
||||
<content type="text">Version v1.0 DEPRECATED (2009-10-09T11:30:00Z)</content>
|
||||
</entry>
|
||||
</feed>
|
37
openstack-identity-api/src/docbkx/samples/versions.json
Normal file
37
openstack-identity-api/src/docbkx/samples/versions.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"versions": {
|
||||
"values": [
|
||||
{
|
||||
"id": "v1.0",
|
||||
"status": "DEPRECATED",
|
||||
"updated": "2009-10-09T11:30:00Z",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v1.0/"
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"id": "v1.1",
|
||||
"status": "CURRENT",
|
||||
"updated": "2010-12-12T18:30:02.25Z",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v1.1/"
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"id": "v2.0",
|
||||
"status": "BETA",
|
||||
"updated": "2011-05-27T20:22:02.25Z",
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://identity.api.openstack.org/v2.0/"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
24
openstack-identity-api/src/docbkx/samples/versions.xml
Normal file
24
openstack-identity-api/src/docbkx/samples/versions.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<versions xmlns="http://docs.openstack.org/common/api/v1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
|
||||
<version id="v1.0" status="DEPRECATED"
|
||||
updated="2009-10-09T11:30:00Z">
|
||||
<atom:link rel="self"
|
||||
href="http://identity.api.openstack.org/v1.0/"/>
|
||||
</version>
|
||||
|
||||
<version id="v1.1" status="CURRENT"
|
||||
updated="2010-12-12T18:30:02.25Z">
|
||||
<atom:link rel="self"
|
||||
href="http://identity.api.openstack.org/v1.1/"/>
|
||||
</version>
|
||||
|
||||
<version id="v2.0" status="BETA"
|
||||
updated="2011-05-27T20:22:02.25Z">
|
||||
<atom:link rel="self"
|
||||
href="http://identity.api.openstack.org/v2.0/"/>
|
||||
</version>
|
||||
|
||||
</versions>
|
Loading…
x
Reference in New Issue
Block a user