diff options
| author | Jorge L. Williams <jorge.williams@rackspace.com> | 2011-04-14 17:48:31 -0500 |
|---|---|---|
| committer | Jorge L. Williams <jorge.williams@rackspace.com> | 2011-04-14 17:48:31 -0500 |
| commit | be6eda09f221bd65e5e430ba370c9b206196c100 (patch) | |
| tree | 7a88bbbdcf0bebad5f69100c1df3aabfd1cb67db /docs/guide | |
| parent | a84d1711dadba3073a6ac1fef8c86c29784574a4 (diff) | |
Initial docs import.
Diffstat (limited to 'docs/guide')
194 files changed, 5982 insertions, 0 deletions
diff --git a/docs/guide/pom.xml b/docs/guide/pom.xml new file mode 100644 index 00000000..ec944cf4 --- /dev/null +++ b/docs/guide/pom.xml @@ -0,0 +1,99 @@ +<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"> + <modelVersion>4.0.0</modelVersion> + + <groupId>com.rackspace.idm</groupId> + <artifactId>docs</artifactId> + <version>0.0.1-SNAPSHOT</version> + <packaging>jar</packaging> + + <name>docs</name> + <url>http://maven.apache.org</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </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> + </dependencies> + <build> + <resources> + <resource> + <directory>target/docbkx/pdf</directory> + <excludes> + <exclude>**/*.fo</exclude> + </excludes> + </resource> + </resources> + <plugins> + <plugin> + <groupId>com.rackspace.cloud.api</groupId> + <artifactId>clouddocs-maven-plugin</artifactId> + <version>1.0.4-SNAPSHOT</version> + <executions> + <execution> + <goals> + <goal>generate-pdf</goal> + <goal>generate-webhelp</goal> + </goals> + <phase>generate-sources</phase> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.docbook</groupId> + <artifactId>docbook-xml</artifactId> + <version>4.4</version> + <scope>runtime</scope> + </dependency> + </dependencies> + <configuration> + <xincludeSupported>true</xincludeSupported> + </configuration> + </plugin> + </plugins> + </build> + <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> +</project> diff --git a/docs/guide/src/docbkx/idmdevguide.xml b/docs/guide/src/docbkx/idmdevguide.xml new file mode 100644 index 00000000..406bbf2c --- /dev/null +++ b/docs/guide/src/docbkx/idmdevguide.xml @@ -0,0 +1,1853 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE book [<!-- 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 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>'> +]> +<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:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:db="http://docbook.org/ns/docbook" version="5.0" status="draft"> + <title>Cloud Identity Developer Guide</title> + <info> + <author> + <personname> + <firstname/> + <surname/> + </personname> + <affiliation> + <orgname>Rackspace Cloud</orgname> + </affiliation> + </author> + <copyright> + <year>2010</year> + <year>2011</year> + <holder>Rackspace Hosting, Inc.</holder> + </copyright> + <releaseinfo>API v1.0</releaseinfo> + <productname>Cloud Identity</productname> + <pubdate>2011-04-11</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 + which utilizes Organization Identity Management System as the authentication engine. It includes + details on how to integrate with IdM. </para> + </abstract> + </info> + <chapter> + <title>Overview</title> + <para>The IdM Service allows Rackspace Applications to obtain tokens that can be used to access + resources in the Rackspace Cloud. This document is intended for: </para> + <variablelist> + <varlistentry> + <term>Service Developers</term> + <listitem> + <para> Service developers are interested in writing client for Rackspace IdM service. + </para> + </listitem> + </varlistentry> + </variablelist> + <para> This Guide assumes the reader is familiar with RESTful web services, HTTP/1.1, and JSON + and/or XML serialization formats. </para> + </chapter> + <chapter> + <title>Concepts</title> + <para> The IdM system has several key concepts that are important to understand: </para> + <section> + <title>Token</title> + <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> + </section> + <section> + <title>Tenant</title> + <para> + Depending on the operator, a tenant may map to a customer, + account, organization, or project. Users are always placed + under a tenant. + </para> + </section> + <section> + <title>User</title> + <para> + Individuals under a tenant. Users have a login and may be + assigned tokens to access resources. + </para> + </section> + <section> + <title>Tenant Group</title> + <para> + A group of users under a tenant. Tenant groups are managed + by tenants. They are used to organize and assign + privileges to group of related users. For example a tenant + may add administrator privileges to users in the "admin" group. + </para> + </section> + <section> + <title>Global Group</title> + <para> + A global group of users. Global groups are managed by + operators. They are used to organize and assign privileges + to a group of related users. For example, an operator may + create a "delinquent" group, which will assign limited + privileges to users who have past due bills. + </para> + </section> + </chapter> + <chapter> + <title>General API Information</title> + <para>The IdM API is implemented using a RESTful web service interface. All requests to + authenticate and operate against the IdM API are performed using SSL over HTTP (HTTPS) on TCP + port 443.</para> + <section> + <title>Request/Response Types</title> + <para> The IdM 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.json" parse="text"/> +</programlisting> + <programlisting language="xml"> +<xi:include href="samples/auth_credentials.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Response with Headers</title> + <programlisting language="xml"> +<xi:include href="samples/sampleresponseheader.json" parse="text"/> +</programlisting> + <programlisting language="xml"> +<xi:include href="samples/auth.xml" parse="text"/> +</programlisting> + </example> + </section> + <section> + <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> + <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 + IDM 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://idm.api.openstack.org/v1.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 grups are presented within a + user. Clients must follow the "next" link to continue to + retrive additonal groups belonging to a user. + </para> + <example> + <title>Paginated Groups in a User: XML</title> + <programlisting language="xml"> +<xi:include href="samples/getuser-1.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Paginated Groups in an User: JSON</title> + <programlisting language="javascript"><xi:include + href="samples/getuser-1.json" parse="text"/></programlisting> + </example> + </section> + <section> + <title>Versions</title> + <para> + The OpenStack IDM 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://idm.api.openstack.org/ + v1.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 identifies the version + (application/vnd.openstack.idm-v1.1+xml). 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: idm.api.openstack.org +Accept: application/vnd.openstack.idm-v1.1+xml +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: idm.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.idm.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: idm.api.openstack.org + </literallayout> + </example> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; badRequest + (<errorcode>400</errorcode>), idmFault + (<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://idm.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://idm.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: idm.api.openstack.org/v1.1/ + </literallayout> + </example> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; badRequest + (<errorcode>400</errorcode>), idmFault + (<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> + <title>Extensions</title> + <para> + The OpenStack IDM 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; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<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; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<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> + <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/idm_fault.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Fault Response</title> + <programlisting language="javascript"> +<xi:include href="samples/idm_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. idmFault) 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>idmFault</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> + <tr align="center"> + <td>usernameConflict</td> + <td>409</td> + <td/> + </tr> + <tr align="center"> + <td>groupConflict</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>idmFault</type>. When working with a system that binds XML to actual classes (such + as JAXB), one should be capable of using <type>idmFault</type> as a “catch-all” if + there's no interest in distinguishing between individual fault types. </para> + </section> + </chapter> + <chapter> + <title>Service Developer Operations</title> + <section> + <title>Overview</title> + <para>The operations described in this chapter allow service developers to get and validate + access tokens, manage users, and manage tenants. </para> + </section> + <section> + <title>Token Operations</title> + <section> + <title>Authenticate</title> + <informaltable rules="all"> + &URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &POST; </td> + <td colspan="1">/token</td> + <td colspan="4">Authenticate to generate a token and a service catalog.</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>), idmFault + (<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 for resources + 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> + <title>Validate Token</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/token/<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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>)</simpara> + &NO_REQUEST; + <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> + <title>Revoke Token</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &DELETE; </td> + <td colspan="4">/token/<parameter>tokenId</parameter></td> + <td colspan="3"> Revoke an existing token.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>)</simpara> + &NO_REQUEST; + </section> + </section> + <section> + <title>Tenant Operations </title> + <section> + <title>Create a Tenant</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &POST; </td> + <td colspan="4">/tenants</td> + <td colspan="3">Create a tenant</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Tenant Create Request</title> + <programlisting language="xml"> +<xi:include href="samples/customer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Create Request</title> + <programlisting language="javascript"> +<xi:include href="samples/customer.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Tenant Create Response</title> + <programlisting language="xml"> +<xi:include href="samples/customer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Create Response</title> + <programlisting language="javascript"> +<xi:include href="samples/customer.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <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>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <para> + The operation returns a list of tenants. The list may be + filtered to return only those tenants which the caller has + access to. + </para> + &NO_REQUEST; + <example> + <title>XML Tenants Response</title> + <programlisting language="xml"> +<xi:include href="samples/customers.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenants Response</title> + <programlisting language="javascript"> +<xi:include href="samples/customers.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <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>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Response</title> + <programlisting language="xml"> +<xi:include href="samples/customer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Response</title> + <programlisting language="javascript"> +<xi:include href="samples/customer.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Update a Tenant</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &PUT; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter></td> + <td colspan="3">Update a tenant..</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Tenant Update Request</title> + <programlisting language="xml"> +<xi:include href="samples/customerlock.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Update Request</title> + <programlisting language="javascript"> +<xi:include href="samples/customerlock.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Tenant Update Response</title> + <programlisting language="xml"> +<xi:include href="samples/updatedcustomer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Update Response</title> + <programlisting language="javascript"> +<xi:include href="samples/updatedcustomer.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Delete a Tenant</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &DELETE; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter></td> + <td colspan="3">Delete a Tenant.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + </section> + <section> + <title>User Operations</title> + <section> + <title>Create a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &POST; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/users</td> + <td colspan="3">Create a new user. If a blank password is passed in, the API generates + a random password for the user.</td> + </tr> + </tbody> + </informaltable> + <simpara>The Id attribute and Password element are required in this request. If a + blank password is passed in the Password element, the API will generate a random password + for the user.</simpara> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), passwordValidation(<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound (<errorcode>404</errorcode>), + usernameConflict(<errorcode>409</errorcode>), emailConflict(<errorcode>409</errorcode>), + idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML User Request</title> + <programlisting language="xml"> +<xi:include href="samples/adduser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Request</title> + <programlisting language="javascript"> +<xi:include href="samples/adduser.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="samples/adduserresponse.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="samples/addeduser.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Get a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter></td> + <td colspan="3">Get a user. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="samples/getuser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="samples/getuser.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Update a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &PUT; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter></td> + <td colspan="3">Update a user. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), emailConflict (409), idmFault + (<errorcode>500</errorcode>), serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML User Request</title> + <programlisting language="xml"> +<xi:include href="samples/updateuser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Request</title> + <programlisting language="javascript"> +<xi:include href="samples/updateuser.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="samples/updateduser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="samples/updateduser.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Delete User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter></td> + <td colspan="3">Delete a user. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Get Users</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users</td> + <td colspan="3"> Gets a list of users.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), overLimit + (<errorcode>413</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML User List Response</title> + <programlisting language="xml"> +<xi:include href="samples/users.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User List Response</title> + <programlisting language="javascript"> +<xi:include href="samples/users.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Set a User's Password</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/password</td> + <td colspan="3">Set a user's password. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Set User Password Reqeust</title> + <programlisting language="xml"> +<xi:include href="samples/user_api_key.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Set User Password Request</title> + <programlisting language="javascript"> +<xi:include href="samples/user_api_key.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Set User Password Response</title> + <programlisting language="xml"> +<xi:include href="samples/user_api_key.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Set User Password Response</title> + <programlisting language="javascript"> +<xi:include href="samples/user_api_key.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Enable / Disable a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &PUT; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/enabled</td> + <td colspan="3"> Set a user's lock</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML User Enable Request</title> + <programlisting language="xml"> +<xi:include href="samples/userWithOnlyLock.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Enable Request</title> + <programlisting language="javascript"> +<xi:include href="samples/userWithOnlyLock.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML User Enable Response</title> + <programlisting language="xml"> +<xi:include href="samples/userWithOnlyLock.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Enable Response</title> + <programlisting language="javascript"> +<xi:include href="samples/userWithOnlyLock.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Get Groups for a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/groups</td> + <td colspan="3">Get groups for a user.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="samples/userGroups.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="samples/userGroups.json" parse="text"/> +</programlisting> + </example> + </section> + </section> + <section> + <title>Tenant Groups</title> + <section> + <title>Create Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&POST;</td> + <td colspan="4" + >/tenant/<parameter>tenantId</parameter>/groups</td> + <td colspan="3">Creates a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), userDisabled(<returnvalue>403</returnvalue>), + badRequest (<errorcode>400</errorcode>), groupConflict(<returnvalue>409</returnvalue>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + <example> + <title>XML Tenant Group Create Request</title> + <programlisting language="xml"> +<xi:include href="samples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Create Request</title> + <programlisting language="javascript"> +<xi:include href="samples/group-create.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Tenant Group Create Response</title> + <programlisting language="xml"> +<xi:include href="samples/group.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Create Response</title> + <programlisting language="javascript"> +<xi:include href="samples/group.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get Tenant Groups</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4" + >/tenant/<parameter>tenantId</parameter>/groups</td> + <td colspan="3">Get a list of tenant groups.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), overLimit + (<returnvalue>413</returnvalue>), userDisabled + (<returnvalue>403</returnvalue>), badRequest + (<errorcode>400</errorcode>), idmFault + (<returnvalue>500</returnvalue>), serviceUnavailable + (<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Groups Response</title> + <programlisting language="xml"> +<xi:include href="samples/groups.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Groups Response</title> + <programlisting language="javascript"> +<xi:include href="samples/groups.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4" + >/tenant/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter></td> + <td colspan="3">Get a tenant group.</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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Group Response</title> + <programlisting language="xml"> +<xi:include href="samples/group.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Groups Response</title> + <programlisting language="javascript"> +<xi:include href="samples/group.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Update a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/tenant/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter></td> + <td colspan="3">Update a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Tenant Group Update Request</title> + <programlisting language="xml"> +<xi:include href="samples/group-updated.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Update Request</title> + <programlisting language="javascript"> +<xi:include href="samples/group-updated.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Tenant Group Update Response</title> + <programlisting language="xml"> +<xi:include href="samples/group-updated.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Update Response</title> + <programlisting language="javascript"> +<xi:include href="samples/group-updated.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Delete a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/tenant/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter></td> + <td colspan="3">Delete a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Get Users in Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3"> Gets a list of users in a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), overLimit + (<errorcode>413</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Group User List Response</title> + <programlisting language="xml"> +<xi:include href="samples/users.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Group User List Response</title> + <programlisting language="javascript"> +<xi:include href="samples/users.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Add a User to a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Add a user to a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Remove a User from a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Remove a user from a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + </section> + <section> + <title>Global Groups</title> + <section> + <title>Create a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&POST;</td> + <td colspan="4">/groups</td> + <td colspan="3">Creates a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), userDisabled(<returnvalue>403</returnvalue>), + badRequest (<errorcode>400</errorcode>), groupConflict(<returnvalue>409</returnvalue>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + <example> + <title>XML Group Create Request</title> + <programlisting language="xml"> +<xi:include href="samples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Create Request</title> + <programlisting language="javascript"> +<xi:include href="samples/group-create.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Group Create Response</title> + <programlisting language="xml"> +<xi:include href="samples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Create Response</title> + <programlisting language="javascript"> +<xi:include href="samples/group-create.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get Groups</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4">/groups</td> + <td colspan="3">Get a list of groups.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), overLimit + (<returnvalue>413</returnvalue>), userDisabled + (<returnvalue>403</returnvalue>), badRequest + (<errorcode>400</errorcode>), idmFault + (<returnvalue>500</returnvalue>), serviceUnavailable + (<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Groups Response</title> + <programlisting language="xml"> +<xi:include href="samples/groups-nt.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Groups Response</title> + <programlisting language="javascript"> +<xi:include href="samples/groups-nt.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4">/groups/<parameter>groupId</parameter></td> + <td colspan="3">Get a group.</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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Group Response</title> + <programlisting language="xml"> +<xi:include href="samples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Groups Response</title> + <programlisting language="javascript"> +<xi:include href="samples/group-create.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Update a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/groups/<parameter>groupId</parameter></td> + <td colspan="3">Update a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Group Update Request</title> + <programlisting language="xml"> +<xi:include href="samples/group-updated-nt.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Update Request</title> + <programlisting language="javascript"> +<xi:include href="samples/group-updated-nt.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Group Update Response</title> + <programlisting language="xml"> +<xi:include href="samples/group-updated-nt.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Update Response</title> + <programlisting language="javascript"> +<xi:include href="samples/group-updated-nt.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Delete a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/groups/<parameter>groupId</parameter></td> + <td colspan="3">Delete a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Get Users in a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4">/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3"> Gets a list of users in a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML Group User List Response</title> + <programlisting language="xml"> +<xi:include href="samples/users.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Group User List Response</title> + <programlisting language="javascript"> +<xi:include href="samples/users.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Add a User to a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Add a user to a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Remove a User from a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Remove a user from a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + </section> + </chapter> +</book> diff --git a/docs/guide/src/docbkx/idmdevguide.xml~ b/docs/guide/src/docbkx/idmdevguide.xml~ new file mode 100644 index 00000000..6828a564 --- /dev/null +++ b/docs/guide/src/docbkx/idmdevguide.xml~ @@ -0,0 +1,1853 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE book [<!-- 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 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>'> +]> +<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:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:db="http://docbook.org/ns/docbook" version="5.0" status="draft"> + <title>Cloud Identity Developer Guide</title> + <info> + <author> + <personname> + <firstname/> + <surname/> + </personname> + <affiliation> + <orgname>Rackspace Cloud</orgname> + </affiliation> + </author> + <copyright> + <year>2010</year> + <year>2011</year> + <holder>Rackspace Hosting, Inc.</holder> + </copyright> + <releaseinfo>API v1.0</releaseinfo> + <productname>Cloud Identity</productname> + <pubdate>2011-04-11</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 + which utilizes Organization Identity Management System as the authentication engine. It includes + details on how to integrate with IdM. </para> + </abstract> + </info> + <chapter> + <title>Overview</title> + <para>The IdM Service allows Rackspace Applications to obtain tokens that can be used to access + resources in the Rackspace Cloud. This document is intended for: </para> + <variablelist> + <varlistentry> + <term>Service Developers</term> + <listitem> + <para> Service developers are interested in writing client for Rackspace IdM service. + </para> + </listitem> + </varlistentry> + </variablelist> + <para> This Guide assumes the reader is familiar with RESTful web services, HTTP/1.1, and JSON + and/or XML serialization formats. </para> + </chapter> + <chapter> + <title>Concepts</title> + <para> The IdM system has several key concepts that are important to understand: </para> + <section> + <title>Token</title> + <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> + </section> + <section> + <title>Tenant</title> + <para> + Depending on the operator, a tenant may map to a customer, + account, organization, or project. Users are always placed + under a tenant. + </para> + </section> + <section> + <title>User</title> + <para> + Individuals under a tenant. Users have a login and may be + assigned tokens to access resources. + </para> + </section> + <section> + <title>Tenant Group</title> + <para> + A group of users under a tenant. Tenant groups are managed + by tenants. They are used to organize and assign + privileges to group of related users. For example a tenant + may add administrator privileges to users in the "admin" group. + </para> + </section> + <section> + <title>Global Group</title> + <para> + A global group of users. Global groups are managed by + operators. They are used to organize and assign privileges + to a group of related users. For example, an operator may + create a "delinquent" group, which will assign limited + privileges to users who have past due bills. + </para> + </section> + </chapter> + <chapter> + <title>General API Information</title> + <para>The IdM API is implemented using a RESTful web service interface. All requests to + authenticate and operate against the IdM API are performed using SSL over HTTP (HTTPS) on TCP + port 443.</para> + <section> + <title>Request/Response Types</title> + <para> The IdM 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="../../formattedsamples/samplerequestheader.json" parse="text"/> +</programlisting> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/auth_credentials.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Response with Headers</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/sampleresponseheader.json" parse="text"/> +</programlisting> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/auth.xml" parse="text"/> +</programlisting> + </example> + </section> + <section> + <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> + <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 + IDM 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://idm.api.openstack.org/v1.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="../../formattedsamples/tenants-1.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Tenant Collection, First Page: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/tenants-1.json" parse="text"/></programlisting> + </example> + <example> + <title>Tenant Collection, Second Page: XML</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/tenants-2.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Tenant Collection, Second Page: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/tenants-2.json" parse="text"/></programlisting> + </example> + <example> + <title>Tenant Collection, Last Page: XML</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/tenants-3.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Tenant Collection, Last Page: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/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 grups are presented within a + user. Clients must follow the "next" link to continue to + retrive additonal groups belonging to a user. + </para> + <example> + <title>Paginated Groups in a User: XML</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/getuser-1.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Paginated Groups in an User: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/getuser-1.json" parse="text"/></programlisting> + </example> + </section> + <section> + <title>Versions</title> + <para> + The OpenStack IDM 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://idm.api.openstack.org/ + v1.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 identifies the version + (application/vnd.openstack.idm-v1.1+xml). 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: idm.api.openstack.org +Accept: application/vnd.openstack.idm-v1.1+xml +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: idm.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.idm.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="../../formattedsamples/choices.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Multiple Choices Response: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/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: idm.api.openstack.org + </literallayout> + </example> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; badRequest + (<errorcode>400</errorcode>), idmFault + (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>Versions List Response: XML</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/versions.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Versions List Response: Atom</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/versions-atom.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Versions List Response: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/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://idm.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://idm.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: idm.api.openstack.org/v1.1/ + </literallayout> + </example> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; badRequest + (<errorcode>400</errorcode>), idmFault + (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>Version Details Response: XML</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/version.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Version Details Response: Atom</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/version-atom.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Version Details Response: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/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> + <title>Extensions</title> + <para> + The OpenStack IDM 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; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<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="../../formattedsamples/extensions.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Extensions Response: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/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; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>Extension Response: xml</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/extension.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>Extensions Response: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/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="../../formattedsamples/ext-getuser.xml" parse="text"/> + </programlisting> + </example> + <example xml:id="UserEXTJ"> + <title>Extended User Response: JSON</title> + <programlisting language="javascript"><xi:include + href="../../formattedsamples/ext-getuser.json" parse="text"/></programlisting> + </example> + </section> + <section> + <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="../../formattedsamples/idm_fault.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Fault Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/idm_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. idmFault) 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="../../formattedsamples/item_not_found.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Not Found Fault</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/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>idmFault</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> + <tr align="center"> + <td>usernameConflict</td> + <td>409</td> + <td/> + </tr> + <tr align="center"> + <td>groupConflict</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>idmFault</type>. When working with a system that binds XML to actual classes (such + as JAXB), one should be capable of using <type>idmFault</type> as a “catch-all” if + there's no interest in distinguishing between individual fault types. </para> + </section> + </chapter> + <chapter> + <title>Service Developer Operations</title> + <section> + <title>Overview</title> + <para>The operations described in this chapter allow service developers to get and validate + access tokens, manage users, and manage tenants. </para> + </section> + <section> + <title>Token Operations</title> + <section> + <title>Authenticate</title> + <informaltable rules="all"> + &URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &POST; </td> + <td colspan="1">/token</td> + <td colspan="4">Authenticate to generate a token and a service catalog.</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>), idmFault + (<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 for resources + that particular tenant. + </para> + <example> + <title>XML Auth Request</title> + <programlisting language="xml"> + <xi:include href="../../formattedsamples/auth_credentials.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Auth Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/auth_credentials.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Auth Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/auth.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Auth Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/auth.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Validate Token</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/token/<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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>)</simpara> + &NO_REQUEST; + <example> + <title>XML Validate Token Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/validatetoken.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Validate Token Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/validatetoken.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Revoke Token</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &DELETE; </td> + <td colspan="4">/token/<parameter>tokenId</parameter></td> + <td colspan="3"> Revoke an existing token.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>)</simpara> + &NO_REQUEST; + </section> + </section> + <section> + <title>Tenant Operations </title> + <section> + <title>Create a Tenant</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &POST; </td> + <td colspan="4">/tenants</td> + <td colspan="3">Create a tenant</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Tenant Create Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/customer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Create Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/customer.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Tenant Create Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/customer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Create Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/customer.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <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>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <para> + The operation returns a list of tenants. The list may be + filtered to return only those tenants which the caller has + access to. + </para> + &NO_REQUEST; + <example> + <title>XML Tenants Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/customers.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenants Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/customers.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <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>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/customer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/customer.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Update a Tenant</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &PUT; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter></td> + <td colspan="3">Update a tenant..</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Tenant Update Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/customerlock.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Update Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/customerlock.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Tenant Update Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/updatedcustomer.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Update Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/updatedcustomer.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Delete a Tenant</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &DELETE; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter></td> + <td colspan="3">Delete a Tenant.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + </section> + <section> + <title>User Operations</title> + <section> + <title>Create a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &POST; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/users</td> + <td colspan="3">Create a new user. If a blank password is passed in, the API generates + a random password for the user.</td> + </tr> + </tbody> + </informaltable> + <simpara>The Id attribute and Password element are required in this request. If a + blank password is passed in the Password element, the API will generate a random password + for the user.</simpara> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), passwordValidation(<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound (<errorcode>404</errorcode>), + usernameConflict(<errorcode>409</errorcode>), emailConflict(<errorcode>409</errorcode>), + idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML User Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/adduser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/adduser.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/adduserresponse.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/addeduser.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Get a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter></td> + <td colspan="3">Get a user. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/getuser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/getuser.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Update a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &PUT; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter></td> + <td colspan="3">Update a user. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), emailConflict (409), idmFault + (<errorcode>500</errorcode>), serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML User Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/updateuser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/updateuser.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/updateduser.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/updateduser.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Delete User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter></td> + <td colspan="3">Delete a user. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Get Users</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users</td> + <td colspan="3"> Gets a list of users.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), overLimit + (<errorcode>413</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML User List Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/users.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User List Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/users.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Set a User's Password</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/password</td> + <td colspan="3">Set a user's password. </td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Set User Password Reqeust</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/user_api_key.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Set User Password Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/user_api_key.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML Set User Password Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/user_api_key.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Set User Password Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/user_api_key.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Enable / Disable a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &PUT; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/enabled</td> + <td colspan="3"> Set a user's lock</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML User Enable Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/userWithOnlyLock.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Enable Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/userWithOnlyLock.json" parse="text"/> +</programlisting> + </example> + <example> + <title>XML User Enable Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/userWithOnlyLock.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Enable Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/userWithOnlyLock.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Get Groups for a User</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/users/<parameter>userId</parameter>/groups</td> + <td colspan="3">Get groups for a user.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML User Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/userGroups.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON User Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/userGroups.json" parse="text"/> +</programlisting> + </example> + </section> + </section> + <section> + <title>Tenant Groups</title> + <section> + <title>Create Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&POST;</td> + <td colspan="4" + >/tenant/<parameter>tenantId</parameter>/groups</td> + <td colspan="3">Creates a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), userDisabled(<returnvalue>403</returnvalue>), + badRequest (<errorcode>400</errorcode>), groupConflict(<returnvalue>409</returnvalue>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + <example> + <title>XML Tenant Group Create Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Create Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-create.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Tenant Group Create Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Create Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get Tenant Groups</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4" + >/tenant/<parameter>tenantId</parameter>/groups</td> + <td colspan="3">Get a list of tenant groups.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), overLimit + (<returnvalue>413</returnvalue>), userDisabled + (<returnvalue>403</returnvalue>), badRequest + (<errorcode>400</errorcode>), idmFault + (<returnvalue>500</returnvalue>), serviceUnavailable + (<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Groups Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/groups.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Groups Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/groups.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4" + >/tenant/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter></td> + <td colspan="3">Get a tenant group.</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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Group Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Groups Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Update a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/tenant/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter></td> + <td colspan="3">Update a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Tenant Group Update Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-updated.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Update Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-updated.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Tenant Group Update Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-updated.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Tenant Group Update Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-updated.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Delete a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/tenant/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter></td> + <td colspan="3">Delete a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Get Users in Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4" + >/tenants/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3"> Gets a list of users in a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), overLimit + (<errorcode>413</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML Tenant Group User List Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/users.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Tenant Group User List Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/users.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Add a User to a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Add a user to a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Remove a User from a Tenant Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/tenants/<parameter>tenantId</parameter>/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Remove a user from a tenant group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + </section> + <section> + <title>Global Groups</title> + <section> + <title>Create a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&POST;</td> + <td colspan="4">/groups</td> + <td colspan="3">Creates a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>201</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), userDisabled(<returnvalue>403</returnvalue>), + badRequest (<errorcode>400</errorcode>), groupConflict(<returnvalue>409</returnvalue>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + <example> + <title>XML Group Create Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Create Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-create.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Group Create Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Create Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-create.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get Groups</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4">/groups</td> + <td colspan="3">Get a list of groups.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara> + &ERROR_CODES; + unauthorized (<errorcode>401</errorcode>), forbidden + (<returnvalue>403</returnvalue>), overLimit + (<returnvalue>413</returnvalue>), userDisabled + (<returnvalue>403</returnvalue>), badRequest + (<errorcode>400</errorcode>), idmFault + (<returnvalue>500</returnvalue>), serviceUnavailable + (<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Groups Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/groups-nt.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Groups Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/groups-nt.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Get a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&GET;</td> + <td colspan="4">/groups/<parameter>groupId</parameter></td> + <td colspan="3">Get a group.</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>), + idmFault(<returnvalue>500</returnvalue>), + serviceUnavailable(<returnvalue>503</returnvalue>) + </simpara> + &NO_REQUEST; + <example> + <title>XML Group Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-create.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Groups Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-create.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Update a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/groups/<parameter>groupId</parameter></td> + <td colspan="3">Update a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), + forbidden(<errorcode>403</errorcode>), itemNotFound(<errorcode>404</errorcode>), + badRequest (<errorcode>400</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + <example> + <title>XML Group Update Request</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-updated-nt.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Update Request</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-updated-nt.json" parse="text"/> + </programlisting> + </example> + <example> + <title>XML Group Update Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/group-updated-nt.xml" parse="text"/> + </programlisting> + </example> + <example> + <title>JSON Group Update Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/group-updated-nt.json" parse="text"/> + </programlisting> + </example> + </section> + <section> + <title>Delete a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/groups/<parameter>groupId</parameter></td> + <td colspan="3">Delete a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Get Users in a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1"> &GET; </td> + <td colspan="4">/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3"> Gets a list of users in a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue>, <returnvalue>203</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden(<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), idmFault (<errorcode>500</errorcode>), + serviceUnavailable(<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + <example> + <title>XML Group User List Response</title> + <programlisting language="xml"> +<xi:include href="../../formattedsamples/users.xml" parse="text"/> +</programlisting> + </example> + <example> + <title>JSON Group User List Response</title> + <programlisting language="javascript"> +<xi:include href="../../formattedsamples/users.json" parse="text"/> +</programlisting> + </example> + </section> + <section> + <title>Add a User to a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&PUT;</td> + <td colspan="4">/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Add a user to a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>200</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + <section> + <title>Remove a User from a Group</title> + <informaltable rules="all"> + &LONG_URI_REFHEAD; + <tbody> + <tr> + <td colspan="1">&DELETE;</td> + <td colspan="4">/groups/<parameter>groupId</parameter>/users</td> + <td colspan="3">Remove a user from a group.</td> + </tr> + </tbody> + </informaltable> + <simpara>&CODES;<returnvalue>204</returnvalue></simpara> + <simpara>&ERROR_CODES; unauthorized + (<errorcode>401</errorcode>), badRequest + (<errorcode>400</errorcode>), forbidden + (<errorcode>403</errorcode>), itemNotFound + (<errorcode>404</errorcode>), usernameConflict + (<errorcode>409</errorcode>), emailConflict + (<errorcode>409</errorcode>), idmFault + (<errorcode>500</errorcode>), serviceUnavailable + (<errorcode>503</errorcode>)</simpara> + &NO_REQUEST; + </section> + </section> + </chapter> +</book> diff --git a/docs/guide/src/docbkx/img/Check_mark_23x20_02.svg b/docs/guide/src/docbkx/img/Check_mark_23x20_02.svg new file mode 100644 index 00000000..3051a2f9 --- /dev/null +++ b/docs/guide/src/docbkx/img/Check_mark_23x20_02.svg @@ -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> diff --git a/docs/guide/src/docbkx/samples/add-baseurl-input.xml b/docs/guide/src/docbkx/samples/add-baseurl-input.xml new file mode 100644 index 00000000..ddbe52da --- /dev/null +++ b/docs/guide/src/docbkx/samples/add-baseurl-input.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<baseURL xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + id="111114" + userType="NAST" + serviceName="cloudFiles" + region="DFW" + publicURL="https://storage.clouddrive.com/v1" + internalURL="https://storage-snet.clouddrive.com/v1" + adminURL="https://storage-snet.clouddrive.com/v1" + default="true"/> diff --git a/docs/guide/src/docbkx/samples/add-baseurlRef-input.xml b/docs/guide/src/docbkx/samples/add-baseurlRef-input.xml new file mode 100644 index 00000000..7dd65a08 --- /dev/null +++ b/docs/guide/src/docbkx/samples/add-baseurlRef-input.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<baseURLRef xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + id="111114" + href="https://storage-snet.clouddrive.com/v1" + v1Default="true"/> diff --git a/docs/guide/src/docbkx/samples/addclient.json b/docs/guide/src/docbkx/samples/addclient.json new file mode 100644 index 00000000..7a279e23 --- /dev/null +++ b/docs/guide/src/docbkx/samples/addclient.json @@ -0,0 +1,4 @@ +{ + "customerId": "RCN-000-000-000", + "name": "Test Application2" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/addclient.xml b/docs/guide/src/docbkx/samples/addclient.xml new file mode 100644 index 00000000..85cf6b72 --- /dev/null +++ b/docs/guide/src/docbkx/samples/addclient.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<client xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + name="Test Application2" + customerId="RCN-000-000-000"> +</client>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/addedclient.json b/docs/guide/src/docbkx/samples/addedclient.json new file mode 100644 index 00000000..76555364 --- /dev/null +++ b/docs/guide/src/docbkx/samples/addedclient.json @@ -0,0 +1,12 @@ +{ + "credentials": { + "clientSecret": "3af738fbeiwu23" + }, + "clientId": "ab4820dhcb39347", + "customerId": "RCN-000-000-000", + "name": "Test Application2", + "inum": "@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0001", + "status": "ACTIVE", + "locked": false, + "softDeleted": false +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/addedclient.xml b/docs/guide/src/docbkx/samples/addedclient.xml new file mode 100644 index 00000000..f4631ad0 --- /dev/null +++ b/docs/guide/src/docbkx/samples/addedclient.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<client xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + softDeleted="false" + locked="false" + status="ACTIVE" + inum="@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0001" + name="Test Application2" + customerId="RCN-000-000-000" + clientId="ab4820dhcb39347"> + <credentials clientSecret="3af738fbeiwu23" /> +</client>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/addeduser.json b/docs/guide/src/docbkx/samples/addeduser.json new file mode 100644 index 00000000..0566f29b --- /dev/null +++ b/docs/guide/src/docbkx/samples/addeduser.json @@ -0,0 +1,9 @@ +{"user": + { + "password": "P@ssword1", + "id": "jqsmith", + "tenantId": "12234", + "email": "john.smith@example.org", + "enabled" : true + } +} diff --git a/docs/guide/src/docbkx/samples/addfirstuserresponse.json b/docs/guide/src/docbkx/samples/addfirstuserresponse.json new file mode 100644 index 00000000..65115251 --- /dev/null +++ b/docs/guide/src/docbkx/samples/addfirstuserresponse.json @@ -0,0 +1,7 @@ +{ + "password": "P@ssword1", + "username": "jqsmith", + "tenantId": "12234", + "email": "john.smith@example.org", + "enabled" : true +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/addfirstuserresponse.xml b/docs/guide/src/docbkx/samples/addfirstuserresponse.xml new file mode 100644 index 00000000..0b4f2259 --- /dev/null +++ b/docs/guide/src/docbkx/samples/addfirstuserresponse.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + email="john.smith@example.org" + tenantId="1234" + username="jqsmith" + enabled="true" + password="C@n+f001me!" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/adduser.json b/docs/guide/src/docbkx/samples/adduser.json new file mode 100644 index 00000000..3bf8ca3b --- /dev/null +++ b/docs/guide/src/docbkx/samples/adduser.json @@ -0,0 +1,8 @@ +{"user": + { + "password": "P@ssword1", + "id": "jqsmith", + "tenantId": "12234", + "email": "john.smith@example.org" + } +} diff --git a/docs/guide/src/docbkx/samples/adduser.xml b/docs/guide/src/docbkx/samples/adduser.xml new file mode 100644 index 00000000..60816acd --- /dev/null +++ b/docs/guide/src/docbkx/samples/adduser.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + email="john.smith@example.org" tenantId="1234" + id="jqsmith" password="C@n+f001me!"/> diff --git a/docs/guide/src/docbkx/samples/adduserresponse.xml b/docs/guide/src/docbkx/samples/adduserresponse.xml new file mode 100644 index 00000000..add18f52 --- /dev/null +++ b/docs/guide/src/docbkx/samples/adduserresponse.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + email="john.smith@example.org" + tenantId="1234" id="jqsmith" + enabled="true" password="C@n+f001me!"/> diff --git a/docs/guide/src/docbkx/samples/auth.json b/docs/guide/src/docbkx/samples/auth.json new file mode 100644 index 00000000..fe368811 --- /dev/null +++ b/docs/guide/src/docbkx/samples/auth.json @@ -0,0 +1,48 @@ +{ + "auth" : { + "token": { + "id": "ab48a9efdfedb23ty3494", + "expires": "2010-11-01T03:32:15-05:00" + }, + "user" : { + "groups": { + "group": [ + { + "tenantId" : "1234", + "name": "Admin" + } + ]}, + "username": "jqsmith", + "tenantId": "1234", + } + "serviceCatalog" : { + "cloudFiles" : [ + { + "region" : "DFW", + "publicURL" : "https://storage.clouddrive.com/v1/MossoCloudFS_blah-blah", + "internalURL" : "https://storage-snet.clouddrive.com/v1/MossoCloudFS_blah-blah" + }, + { + "region" : "ORD", + "publicURL" : "https://otherstorage.clouddrive.com/v1/MossoCloudFS_blah-blah", + "internalURL" : "https://otherstorage-snet.clouddrive.com/v1/MossoCloudFS_blah-blah" + } + ], + "cloudFilesCDN" : [ + { + "region" : "DFW", + "publicURL" : "https://cdn.clouddrive.com/v1/MossoCloudFS_blah-blah" + }, + { + "region" : "ORD", + "publicURL" : "https://othercdn.clouddrive.com/v1/MossoCloudFS_blah-blah" + } + ], + "cloudServers" : [ + { + "publicURL" : "https://servers.api.rackspacecloud.com/v1.0/322781" + } + ] + } + } +} diff --git a/docs/guide/src/docbkx/samples/auth.xml b/docs/guide/src/docbkx/samples/auth.xml new file mode 100644 index 00000000..3558798c --- /dev/null +++ b/docs/guide/src/docbkx/samples/auth.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<auth xmlns="http://docs.openstack.org/idm/api/v1.0"> + <token expires="2010-11-01T03:32:15-05:00" + id="ab48a9efdfedb23ty3494"/> + <user tenantId="1245" username="jqsmith"> + <groups> + <group tenantId="1245" name="Admin"/> + </groups> + </user> + <serviceCatalog> + <service name="cloudFiles"> + <endpoint + region="DFW" + publicURL="https://storage.clouddrive.com/v1/MossoCloudFS_blah-blah" + internalURL="https://storage-snet.clouddrive.com/v1/MossoCloudFS_blah-blah"/> + <endpoint + region="ORD" + publicURL="https://otherstorage.clouddrive.com/v1/MossoCloudFS_blah-blah" + internalURL="https://otherstorage-snet.clouddrive.com/v1/MossoCloudFS_blah-blah"/> + </service> + <service name="cloudFilesCDN"> + <endpoint + region="DFW" + publicURL="https://cdn.clouddrive.com/v1/MossoCloudFS_blah-blah"/> + <endpoint + region="ORD" + publicURL="https://othercdn.clouddrive.com/v1/MossoCloudFS_blah-blah"/> + </service> + <service name="cloudServers"> + <endpoint + publicURL="https://servers.api.rackspacecloud.com/v1.0/322781"/> + </service> + </serviceCatalog> +</auth> diff --git a/docs/guide/src/docbkx/samples/auth_credentials.json b/docs/guide/src/docbkx/samples/auth_credentials.json new file mode 100644 index 00000000..67b06304 --- /dev/null +++ b/docs/guide/src/docbkx/samples/auth_credentials.json @@ -0,0 +1,7 @@ +{ + "passwordCredentials" : { + "username" : "test_user", + "password" : "a86850deb2742ec3cb41518e26aa2d89", + "tenantId" : "77654" + } +} diff --git a/docs/guide/src/docbkx/samples/auth_credentials.xml b/docs/guide/src/docbkx/samples/auth_credentials.xml new file mode 100644 index 00000000..fbdf5633 --- /dev/null +++ b/docs/guide/src/docbkx/samples/auth_credentials.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<passwordCredentials + xmlns="http://docs.openstack.org/idm/api/v1.0" + password="P@ssword1" username="testuser" + tenantId="77654"/> diff --git a/docs/guide/src/docbkx/samples/bad_request.json b/docs/guide/src/docbkx/samples/bad_request.json new file mode 100644 index 00000000..25796991 --- /dev/null +++ b/docs/guide/src/docbkx/samples/bad_request.json @@ -0,0 +1,5 @@ +{ + "message": "Bad Request!", + "details": "Error Details...", + "code": 400 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/bad_request.xml b/docs/guide/src/docbkx/samples/bad_request.xml new file mode 100644 index 00000000..275a40b6 --- /dev/null +++ b/docs/guide/src/docbkx/samples/bad_request.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<badRequest xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="400"> + <message>Bad Request!</message> + <details>Error Details...</details> +</badRequest>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/baseURLRefs.json b/docs/guide/src/docbkx/samples/baseURLRefs.json new file mode 100644 index 00000000..30e56d45 --- /dev/null +++ b/docs/guide/src/docbkx/samples/baseURLRefs.json @@ -0,0 +1,27 @@ +{ + "baseURLRefs" : [ + { + "id" : 1, + "href" : "https://auth.api.rackspacecloud.com/v1.1/baseURLs/1", + "v1Default" : true + }, + { + "id" : 2, + "href" : "https://auth.api.rackspacecloud.com/v1.1/baseURLs/2" + }, + { + "id" : 3, + "href" : "https://auth.api.rackspacecloud.com/v1.1/baseURLs/3", + "v1Default" : true + }, + { + "id" : 4, + "href" : "https://auth.api.rackspacecloud.com/v1.1/baseURLs/4" + }, + { + "id" : 5, + "href" : "https://auth.api.rackspacecloud.com/v1.1/baseURLs/5", + "v1Default" : true + } + ] +} diff --git a/docs/guide/src/docbkx/samples/baseURLRefs.xml b/docs/guide/src/docbkx/samples/baseURLRefs.xml new file mode 100644 index 00000000..a33c34e8 --- /dev/null +++ b/docs/guide/src/docbkx/samples/baseURLRefs.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<baseURLRefs xmlns="http://docs.rackspacecloud.com/auth/api/v1.1"> + <baseURLRef + href="https://auth.api.rackspacecloud.com/v1.1/baseURLs/1" + id="1" + v1Default="true" /> + <baseURLRef + href="https://auth.api.rackspacecloud.com/v1.1/baseURLs/2" + id="2" /> + <baseURLRef + href="https://auth.api.rackspacecloud.com/v1.1/baseURLs/3" + id="3" + v1Default="true" /> + <baseURLRef + href="https://auth.api.rackspacecloud.com/v1.1/baseURLs/4" + id="4" /> + <baseURLRef + href="https://auth.api.rackspacecloud.com/v1.1/baseURLs/5" + id="5" + v1Default="true" /> +</baseURLRefs> diff --git a/docs/guide/src/docbkx/samples/base_url_ref_response.json b/docs/guide/src/docbkx/samples/base_url_ref_response.json new file mode 100644 index 00000000..65bc55c3 --- /dev/null +++ b/docs/guide/src/docbkx/samples/base_url_ref_response.json @@ -0,0 +1,5 @@ +{ + "id": 111111, + "href": "https://idm.rackspace.com/v1.0/baseurls/111111", + "v1Default": true +} diff --git a/docs/guide/src/docbkx/samples/base_url_ref_response.xml b/docs/guide/src/docbkx/samples/base_url_ref_response.xml new file mode 100644 index 00000000..ab90847a --- /dev/null +++ b/docs/guide/src/docbkx/samples/base_url_ref_response.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<baseURLRef xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + id="111111" + href="https://idm.rackspace.com/v1.0/baseurls/111111" + v1Default="true" /> diff --git a/docs/guide/src/docbkx/samples/base_url_response.json b/docs/guide/src/docbkx/samples/base_url_response.json new file mode 100644 index 00000000..41ca4de6 --- /dev/null +++ b/docs/guide/src/docbkx/samples/base_url_response.json @@ -0,0 +1,10 @@ +{ + "id": 111111, + "userType": "NAST", + "serviceName": "cloudFiles", + "region": "DFW", + "publicURL": "https://storage.clouddrive.com/v1", + "internalURL": "https://storage-snet.clouddrive.com/v1", + "adminURL": null, + "default": true +} diff --git a/docs/guide/src/docbkx/samples/base_url_response.xml b/docs/guide/src/docbkx/samples/base_url_response.xml new file mode 100644 index 00000000..8310eec4 --- /dev/null +++ b/docs/guide/src/docbkx/samples/base_url_response.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<Response xmlns="http://10.127.7.164/v1.0/baseurls/111111" + adminURL="https://storage-snet.clouddrive.com/v1" + default="true" + id="111111" + internalURL="https://storage-snet.clouddrive.com/v1" + publicURL="https://storage.clouddrive.com/v1" + region="DFW" + serviceName="cloudFiles" + userType="NAST"/> +
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/base_urls_response.json b/docs/guide/src/docbkx/samples/base_urls_response.json new file mode 100644 index 00000000..284bccdb --- /dev/null +++ b/docs/guide/src/docbkx/samples/base_urls_response.json @@ -0,0 +1,22 @@ +{"baseURL": [ + { + "id": 111111, + "userType": "NAST", + "serviceName": "cloudFiles", + "region": "DFW", + "publicURL": "https://storage.clouddrive.com/v1", + "internalURL": "https://storage-snet.clouddrive.com/v1", + "adminURL": null, + "default": true + }, + { + "id": 222222, + "userType": "MOSSO", + "serviceName": "cloudServers", + "region": null, + "publicURL": "https://servers.api.rackspacecloud.com/v1.0", + "internalURL": null, + "adminURL": null, + "default": true + } +]} diff --git a/docs/guide/src/docbkx/samples/base_urls_response.xml b/docs/guide/src/docbkx/samples/base_urls_response.xml new file mode 100644 index 00000000..eb52f45f --- /dev/null +++ b/docs/guide/src/docbkx/samples/base_urls_response.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<baseURLs xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <baseURL + id="111111" + userType="NAST" + serviceName="cloudFiles" + region="DFW" + publicURL="https://storage.clouddrive.com/v1" + internalURL="https://storage-snet.clouddrive.com/v1" + default="true"/> + <baseURL + id="222222" + userType="MOSSO" + serviceName="cloudServers" + publicURL="https://servers.api.rackspacecloud.com/v1.0" + default="true"/> +</baseURLs> diff --git a/docs/guide/src/docbkx/samples/choices.json b/docs/guide/src/docbkx/samples/choices.json new file mode 100644 index 00000000..6b0b2607 --- /dev/null +++ b/docs/guide/src/docbkx/samples/choices.json @@ -0,0 +1,50 @@ +{ + "choices" : { + "values" : [ + { + "id" : "v1.0", + "status" : "DEPRECATED", + "links": [ + { + "rel" : "self", + "href" : "http://idm.api.openstack.org/v1.0/tenants/12" + } + ], + "media-types": { + "values" : [ + { + "base" : "application/xml", + "type" : "application/vnd.openstack.idm-v1.0+xml" + }, + { + "base" : "application/json", + "type" : "application/vnd.openstack.idm-v1.0+json" + } + ] + } + }, + { + "id" : "v1.1", + "status" : "CURRENT", + "links": [ + { + "rel" : "self", + "href" : "http://idm.api.openstack.org/v1.1/tenants/12" + } + ], + "media-types": { + "values" : [ + { + "base" : "application/xml", + "type" : "application/vnd.openstack.idm-v1.1+xml" + }, + { + "base" : "application/json", + "type" : "application/vnd.openstack.idm-v1.1+json" + } + ] + } + } + ] + } +} diff --git a/docs/guide/src/docbkx/samples/choices.xml b/docs/guide/src/docbkx/samples/choices.xml new file mode 100644 index 00000000..a9a91ece --- /dev/null +++ b/docs/guide/src/docbkx/samples/choices.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<choices xmlns="http://docs.openstack.org/common/api/v1.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.idm-v1.0+xml"/> + <media-type base="application/json" + type="application/vnd.openstack.idm-v1.0+json"/> + </media-types> + + <atom:link rel="self" + href="http://idm.api.openstack.org/v1.0/tenants/12"/> + </version> + + <version id="v1.1" status="CURRENT"> + <media-types> + <media-type base="application/xml" + type="application/vnd.openstack.idm-v1.1+xml"/> + <media-type base="application/json" + type="application/vnd.openstack.idm-v1.1+json"/> + </media-types> + + <atom:link rel="self" + href="http://idm.api.openstack.org/v1.1/tenants/12"/> + </version> +</choices> diff --git a/docs/guide/src/docbkx/samples/client-credentials-response.json b/docs/guide/src/docbkx/samples/client-credentials-response.json new file mode 100644 index 00000000..96f07aaa --- /dev/null +++ b/docs/guide/src/docbkx/samples/client-credentials-response.json @@ -0,0 +1,3 @@ +{ + "clientSecret" : "eca2d413a1790dc6473842ab5a49387a29996757" +} diff --git a/docs/guide/src/docbkx/samples/client-credentials-response.xml b/docs/guide/src/docbkx/samples/client-credentials-response.xml new file mode 100644 index 00000000..dd881ca5 --- /dev/null +++ b/docs/guide/src/docbkx/samples/client-credentials-response.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<clientCredentials xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + clientSecret="c582fe94dda4c0da19bf234c504db0b63df96daa" /> diff --git a/docs/guide/src/docbkx/samples/client.json b/docs/guide/src/docbkx/samples/client.json new file mode 100644 index 00000000..faef1dd0 --- /dev/null +++ b/docs/guide/src/docbkx/samples/client.json @@ -0,0 +1,16 @@ +{ "permissions": { + "permission": [ + { + "resourceId": "addCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + } + ]}, + "clientId": "ab4820dhcb39347", + "customerId": "RCN-000-000-000", + "name": "Test Application2", + "inum": "@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0001", + "status": "ACTIVE", + "locked": false, + "softDeleted": false +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/client.xml b/docs/guide/src/docbkx/samples/client.xml new file mode 100644 index 00000000..e2a621bc --- /dev/null +++ b/docs/guide/src/docbkx/samples/client.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<client xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + softDeleted="false" + locked="false" + status="ACTIVE" + iname="@Rackspace*Rackspace*ControlPanel" + inum="@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0001" + name="Test Application2" + customerId="RCN-000-000-000" + clientId="ab4820dhcb39347"> + <permissions> + <permission clientId="IDM" + customerId="RCN-000-000-000" + resourceId="addCustomer" /> + </permissions> +</client>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientGroup.json b/docs/guide/src/docbkx/samples/clientGroup.json new file mode 100644 index 00000000..75e81859 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientGroup.json @@ -0,0 +1,4 @@ +{ + "tenantId" : "1234", + "name" : "Admin" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientGroup.xml b/docs/guide/src/docbkx/samples/clientGroup.xml new file mode 100644 index 00000000..55ef0456 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientGroup.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<group xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + tenantId="1234" + name="Admin" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientGroups.json b/docs/guide/src/docbkx/samples/clientGroups.json new file mode 100644 index 00000000..b8c62c93 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientGroups.json @@ -0,0 +1,6 @@ +{"group": [ + { + "tenantId" : "1234", + "name" : "Admin" + }] +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientGroups.xml b/docs/guide/src/docbkx/samples/clientGroups.xml new file mode 100644 index 00000000..e761dc94 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientGroups.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<groups xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <group xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + tenantId="1234" + name="Admin" /> +</groups>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.json b/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.json new file mode 100644 index 00000000..410afe99 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.json @@ -0,0 +1,3 @@ +{ + "softDeleted": "true" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.xml b/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.xml new file mode 100644 index 00000000..8c73be48 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<client xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + softDeleted="true" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/client_credentials.json b/docs/guide/src/docbkx/samples/client_credentials.json new file mode 100644 index 00000000..3de72a8f --- /dev/null +++ b/docs/guide/src/docbkx/samples/client_credentials.json @@ -0,0 +1,3 @@ +{ + "clientSecret": "cncv9823823bfb" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/client_credentials.xml b/docs/guide/src/docbkx/samples/client_credentials.xml new file mode 100644 index 00000000..c9eba3bd --- /dev/null +++ b/docs/guide/src/docbkx/samples/client_credentials.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<clientCredentials xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + clientSecret="cncv9823823bfb" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientname_conflict.json b/docs/guide/src/docbkx/samples/clientname_conflict.json new file mode 100644 index 00000000..9b064015 --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientname_conflict.json @@ -0,0 +1,5 @@ +{ + "message": "Clientname already taken.", + "details": "Error Details...", + "code": 409 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clientname_conflict.xml b/docs/guide/src/docbkx/samples/clientname_conflict.xml new file mode 100644 index 00000000..0694d96e --- /dev/null +++ b/docs/guide/src/docbkx/samples/clientname_conflict.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<clientnameConflict xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>Clientname already taken.</message> + <details>Error Details...</details> +</clientnameConflict>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clients.json b/docs/guide/src/docbkx/samples/clients.json new file mode 100644 index 00000000..3c5193eb --- /dev/null +++ b/docs/guide/src/docbkx/samples/clients.json @@ -0,0 +1,22 @@ +{ + "client": [ + { + "clientId": "ab4820dhcb39347", + "customerId": "RCN-000-000-000", + "name": "Test Application2", + "inum": "@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0001", + "status": "ACTIVE", + "locked": false, + "softDeleted": false + }, + { + "clientId": "632h389cv902bde", + "customerId": "RCN-000-000-000", + "name": "Test Application2", + "inum": "@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0002", + "status": "ACTIVE", + "locked": false, + "softDeleted": false + } + ] +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/clients.xml b/docs/guide/src/docbkx/samples/clients.xml new file mode 100644 index 00000000..2d870f9b --- /dev/null +++ b/docs/guide/src/docbkx/samples/clients.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<clients xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <client + softDeleted="false" + locked="false" + status="ACTIVE" + inum="@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0001" + name="Test Application2" + customerId="RCN-000-000-000" + clientId="ab4820dhcb39347"> + </client> + <client + softDeleted="false" + locked="false" + status="ACTIVE" + inum="@FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!0002" + name="Test Application2" + customerId="RCN-000-000-000" + clientId="632h389cv902bde"> + </client> +</clients>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/customer.json b/docs/guide/src/docbkx/samples/customer.json new file mode 100644 index 00000000..7ff7ce32 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customer.json @@ -0,0 +1,7 @@ +{"tenant": + { + "id": "1234", + "description": "A description ...", + "enabled": true + } +} diff --git a/docs/guide/src/docbkx/samples/customer.xml b/docs/guide/src/docbkx/samples/customer.xml new file mode 100644 index 00000000..ea6a63dc --- /dev/null +++ b/docs/guide/src/docbkx/samples/customer.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenant xmlns="http://docs.openstack.org/idm/api/v1.0" + enabled="true" id="1234"> + <description>A description...</description> +</tenant> diff --git a/docs/guide/src/docbkx/samples/customer_conflict.json b/docs/guide/src/docbkx/samples/customer_conflict.json new file mode 100644 index 00000000..4fd3a6a8 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customer_conflict.json @@ -0,0 +1,5 @@ +{ + "message": "CustomerId already taken.", + "details": "Error Details...", + "code": 409 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/customer_conflict.xml b/docs/guide/src/docbkx/samples/customer_conflict.xml new file mode 100644 index 00000000..5641ad34 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customer_conflict.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<customerIdConflict xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>CustomerId already taken.</message> + <details>Error Details...</details> +</customerIdConflict>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/customerlock.json b/docs/guide/src/docbkx/samples/customerlock.json new file mode 100644 index 00000000..584c21a4 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customerlock.json @@ -0,0 +1,5 @@ +{"tenant": + { + "description": "A NEW description..." + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/customerlock.xml b/docs/guide/src/docbkx/samples/customerlock.xml new file mode 100644 index 00000000..9d7081d4 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customerlock.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenant xmlns="http://docs.openstack.org/idm/api/v1.0"> + <description>A NEW description...</description> +</tenant> diff --git a/docs/guide/src/docbkx/samples/customers.json b/docs/guide/src/docbkx/samples/customers.json new file mode 100644 index 00000000..7fb848f7 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customers.json @@ -0,0 +1,15 @@ +{"tenants": { + "values" : [ + { + "id": "1234", + "description": "A description ...", + "enabled": true + }, + { + "id": "3456", + "description": "A description ...", + "enabled": true + } + ] +} +} diff --git a/docs/guide/src/docbkx/samples/customers.xml b/docs/guide/src/docbkx/samples/customers.xml new file mode 100644 index 00000000..9b503ce2 --- /dev/null +++ b/docs/guide/src/docbkx/samples/customers.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenants xmlns="http://docs.openstack.org/idm/api/v1.0"> + <tenant enabled="true" id="1234"> + <description>A description...</description> + </tenant> + <tenant enabled="true" id="3645"> + <description>A description...</description> + </tenant> +</tenants> diff --git a/docs/guide/src/docbkx/samples/definedpermissions.json b/docs/guide/src/docbkx/samples/definedpermissions.json new file mode 100644 index 00000000..f725235c --- /dev/null +++ b/docs/guide/src/docbkx/samples/definedpermissions.json @@ -0,0 +1,16 @@ +{ + "defined": { + "permission": [ + { + "permissionId": "addCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + }, + { + "permissionId": "getCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + } + ] + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/definedpermissions.xml b/docs/guide/src/docbkx/samples/definedpermissions.xml new file mode 100644 index 00000000..b8b28a5b --- /dev/null +++ b/docs/guide/src/docbkx/samples/definedpermissions.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<permissions xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <defined> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="addCustomer"/> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="getCustomer"/> + </defined> +</permissions>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/email_conflict.json b/docs/guide/src/docbkx/samples/email_conflict.json new file mode 100644 index 00000000..aa9ba6ef --- /dev/null +++ b/docs/guide/src/docbkx/samples/email_conflict.json @@ -0,0 +1,5 @@ +{ + "message": "Email Address already taken.", + "details": "Error Details...", + "code": 409 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/email_conflict.xml b/docs/guide/src/docbkx/samples/email_conflict.xml new file mode 100644 index 00000000..c30052bc --- /dev/null +++ b/docs/guide/src/docbkx/samples/email_conflict.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<emailConflict xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>Email Address already taken.</message> + <details>Error Details...</details> +</emailConflict>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/ext-getuser.json b/docs/guide/src/docbkx/samples/ext-getuser.json new file mode 100644 index 00000000..03f74dda --- /dev/null +++ b/docs/guide/src/docbkx/samples/ext-getuser.json @@ -0,0 +1,21 @@ +{"user": + { + "groups": { + "values": [ + { + "tenantId" : "1234", + "id": "Admin" + } + ]}, + "id": "jqsmith", + "tenantId": "1234", + "email": "john.smith@example.org", + "enabled": true, + "RS-META:metadata" : { + "values" : { + "MetaKey1" : "MetaValue1", + "MetaKey2" : "MetaValue2" + } + }, + } +} diff --git a/docs/guide/src/docbkx/samples/ext-getuser.xml b/docs/guide/src/docbkx/samples/ext-getuser.xml new file mode 100644 index 00000000..07c185b1 --- /dev/null +++ b/docs/guide/src/docbkx/samples/ext-getuser.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + enabled="true" email="john.smith@example.org" + tenantId="1234" id="jqsmith"> + <groups> + <group tenantId="1234" id="Admin"/> + </groups> + <metadata + xmlns="http://docs.rackspacecloud.com/idm/api/ext/meta/v1.0"> + <meta key="MetaKey1">MetaValue1</meta> + <meta key="MetaKey2">MetaValue2</meta> + </metadata> +</user> diff --git a/docs/guide/src/docbkx/samples/extension.json b/docs/guide/src/docbkx/samples/extension.json new file mode 100644 index 00000000..1d7e8bb3 --- /dev/null +++ b/docs/guide/src/docbkx/samples/extension.json @@ -0,0 +1,21 @@ +{ + "extension" : { + "name" : "User Metadata Extension", + "namespace" : "http://docs.rackspacecloud.com/idm/api/ext/meta/v1.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/idm/api/ext/idm-meta-20111201.pdf" + }, + { + "rel" : "describedby", + "type" : "application/vnd.sun.wadl+xml", + "href" : "http://docs.rackspacecloud.com/idm/api/ext/idm-cbs.wadl" + } + ] + } +} diff --git a/docs/guide/src/docbkx/samples/extension.xml b/docs/guide/src/docbkx/samples/extension.xml new file mode 100644 index 00000000..8d932f49 --- /dev/null +++ b/docs/guide/src/docbkx/samples/extension.xml @@ -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/idm/api/ext/meta/v1.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/idm/api/ext/idm-meta-20111201.pdf"/> + <atom:link rel="describedby" + type="application/vnd.sun.wadl+xml" + href="http://docs.rackspacecloud.com/idm/api/ext/idm-meta.wadl"/> + +</extension> + + diff --git a/docs/guide/src/docbkx/samples/extensions.json b/docs/guide/src/docbkx/samples/extensions.json new file mode 100644 index 00000000..88538770 --- /dev/null +++ b/docs/guide/src/docbkx/samples/extensions.json @@ -0,0 +1,42 @@ +{ + "extensions" : [ + { + "name" : "Reset Password Extension", + "namespace" : "http://docs.rackspacecloud.com/idm/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.", + "links" : [ + { + "rel" : "describedby", + "type" : "application/pdf", + "href" : "http://docs.rackspacecloud.com/idm/api/ext/idm-rpe-20111111.pdf" + }, + { + "rel" : "describedby", + "type" : "application/vnd.sun.wadl+xml", + "href" : "http://docs.rackspacecloud.com/idm/api/ext/idm-rpe.wadl" + } + ] + }, + { + "name" : "User Metadata Extension", + "namespace" : "http://docs.rackspacecloud.com/idm/api/ext/meta/v1.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/idm/api/ext/idm-meta-20111201.pdf" + }, + { + "rel" : "describedby", + "type" : "application/vnd.sun.wadl+xml", + "href" : "http://docs.rackspacecloud.com/idm/api/ext/idm-cbs.wadl" + } + ] + } + ] +} diff --git a/docs/guide/src/docbkx/samples/extensions.xml b/docs/guide/src/docbkx/samples/extensions.xml new file mode 100644 index 00000000..ddd7e173 --- /dev/null +++ b/docs/guide/src/docbkx/samples/extensions.xml @@ -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/idm/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/idm/api/ext/idm-rpe-20111111.pdf"/> + <atom:link rel="describedby" + type="application/vnd.sun.wadl+xml" + href="http://docs.rackspacecloud.com/idm/api/ext/idm-rpe.wadl"/> + </extension> + <extension + name="User Metadata Extension" + namespace="http://docs.rackspacecloud.com/idm/api/ext/meta/v1.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/idm/api/ext/idm-meta-20111201.pdf"/> + <atom:link rel="describedby" + type="application/vnd.sun.wadl+xml" + href="http://docs.rackspacecloud.com/idm/api/ext/idm-meta.wadl"/> + </extension> +</extensions> diff --git a/docs/guide/src/docbkx/samples/feed.xml b/docs/guide/src/docbkx/samples/feed.xml new file mode 100644 index 00000000..15603de1 --- /dev/null +++ b/docs/guide/src/docbkx/samples/feed.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<feed xmlns="http://www.w3.org/2005/Atom" + xml:lang="en-US"> +<entry> + <title>User, "mkovacs" was modified.</title> + <summary>User, "mkovacs" was modified.</summary> + <link rel="actual" + href="/customers/RCN-000-000-000/users/mkovacs" /> + <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> + <updated>2003-12-13T18:30:02Z</updated> +</entry> +<entry> + <title>User, "hueyly" was created.</title> + <summary>User, "hueyly" was created.</summary> + <link rel="actual" + href="/customers/RCN-000-000-000/users/hueyly" /> + <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-920474efa234</id> + <updated>2003-12-13T18:29:20Z</updated> +</entry> +</feed>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/forbidden.json b/docs/guide/src/docbkx/samples/forbidden.json new file mode 100644 index 00000000..48b23ea5 --- /dev/null +++ b/docs/guide/src/docbkx/samples/forbidden.json @@ -0,0 +1,5 @@ +{ + "message": "Forbidden", + "details": "Error Details...", + "code": 403 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/forbidden.xml b/docs/guide/src/docbkx/samples/forbidden.xml new file mode 100644 index 00000000..23123805 --- /dev/null +++ b/docs/guide/src/docbkx/samples/forbidden.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<forbidden xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="403"> + <message>Forbidden</message> + <details>Error Details...</details> +</forbidden>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/forgot_password.json b/docs/guide/src/docbkx/samples/forgot_password.json new file mode 100644 index 00000000..e8d2114a --- /dev/null +++ b/docs/guide/src/docbkx/samples/forgot_password.json @@ -0,0 +1,17 @@ +{ + "customParams" : [ + { + "name": "%%FirstName%%", + "value": "Steve" + }, + { + "name": "%%LastName%%", + "value": "Smith" + } + ], + "templateUrl": "http://cp.rackspace.com/files/passwordRecovery.txt", + "callbackUrl": "http://cp.rackspace.com/passwordRecovery.html", + "from": "Rackspace Control Panel", + "replyTo": "cpsupport@rackspace.com", + "subject": "Rackspace Password Reset" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/forgot_password.xml b/docs/guide/src/docbkx/samples/forgot_password.xml new file mode 100644 index 00000000..53a7a1a8 --- /dev/null +++ b/docs/guide/src/docbkx/samples/forgot_password.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<passwordRecovery xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + templateUrl="http://cp.rackspace.com/files/passwordRecovery.txt" + callbackUrl="http://cp.rackspace.com/passwordRecovery.html" + from="Rackspace Control Panel" + replyTo="cpsupport@rackspace.com" + subject="Rackspace Password Reset"> + <customParams> + <customParam name="%%FirstName%%" value="Steve" /> + <customParam name="%%LastName%%" value="Smith" /> + </customParams> +</passwordRecovery>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/getuser-1.json b/docs/guide/src/docbkx/samples/getuser-1.json new file mode 100644 index 00000000..544d4600 --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-1.json @@ -0,0 +1,29 @@ +{"user": + { + "groups": { + "values": [ + { + "tenantId" : "1234", + "id": "Admin" + }, + { + "tenantId" : "1234", + "id" : "DBUser" + }, + { + "id" : "Super" + } + ], + "links" : [ + { + "rel" : "next", + "href" : "http://idm.api.openstack.org/v1.0/1234/tenants/1234/users/jqsmith/groups?marker=Super" + } + ] + }, + "id": "jqsmith", + "tenantId": "1234", + "email": "john.smith@example.org", + "enabled": true + } +} diff --git a/docs/guide/src/docbkx/samples/getuser-1.xml b/docs/guide/src/docbkx/samples/getuser-1.xml new file mode 100644 index 00000000..2b513072 --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-1.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + xmlns:atom="http://www.w3.org/2005/Atom" + enabled="true" email="john.smith@example.org" + tenantId="1234" id="jqsmith"> + <groups> + <group tenantId="1234" id="Admin"/> + <group tenantId="1234" id="DBUser"/> + <group id="Super"/> + <atom:link + rel="next" + href="http://idm.api.openstack.org/v1.0/1234/tenants/1234/users/jqsmith/groups?marker=Super"/> + </groups> +</user> diff --git a/docs/guide/src/docbkx/samples/getuser-with-mosso-id.json b/docs/guide/src/docbkx/samples/getuser-with-mosso-id.json new file mode 100644 index 00000000..4ba14bbc --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-with-mosso-id.json @@ -0,0 +1,20 @@ +{ + "username": "qauser", + "customerId": "RCN-QATestingCustomer", + "customerInum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.999", + "email": "quauser@example.com", + "personId": "RPN-qauser-000-10001", + "firstName": "qauser", + "middleName": "none", + "lastName": "Tester", + "displayName": "qauser", + "prefLanguage": "en-us", + "inum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.999!10001", + "status": "ACTIVE", + "locked": false, + "softDeleted": false, + "country": "USA", + "timeZone": "America/Chicago", + "mossoId": 999112358, + "nastId": "nastid-qauser" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/getuser-with-mosso-id.xml b/docs/guide/src/docbkx/samples/getuser-with-mosso-id.xml new file mode 100644 index 00000000..26c12ede --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-with-mosso-id.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + username="qauser" + customerId="RCN-QATestingCustomer" + customerInum="@!FFFF.FFFF.FFFF.FFFF!EEEE.999" + email="quauser@example.com" + personId="RPN-qauser-000-10001" + firstName="qauser" + middleName="none" + lastName="Tester" + displayName="qauser" + prefLanguage="en-us" + inum="@!FFFF.FFFF.FFFF.FFFF!EEEE.999!10001" + status="ACTIVE" + locked="false" + softDeleted="false" + country="USA" + timeZone="America/Chicago" + mossoId="999112358" + nastId="nastid-qauser"/> diff --git a/docs/guide/src/docbkx/samples/getuser-with-nast-id.json b/docs/guide/src/docbkx/samples/getuser-with-nast-id.json new file mode 100644 index 00000000..4ba14bbc --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-with-nast-id.json @@ -0,0 +1,20 @@ +{ + "username": "qauser", + "customerId": "RCN-QATestingCustomer", + "customerInum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.999", + "email": "quauser@example.com", + "personId": "RPN-qauser-000-10001", + "firstName": "qauser", + "middleName": "none", + "lastName": "Tester", + "displayName": "qauser", + "prefLanguage": "en-us", + "inum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.999!10001", + "status": "ACTIVE", + "locked": false, + "softDeleted": false, + "country": "USA", + "timeZone": "America/Chicago", + "mossoId": 999112358, + "nastId": "nastid-qauser" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/getuser-with-nast-id.xml b/docs/guide/src/docbkx/samples/getuser-with-nast-id.xml new file mode 100644 index 00000000..26c12ede --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-with-nast-id.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + username="qauser" + customerId="RCN-QATestingCustomer" + customerInum="@!FFFF.FFFF.FFFF.FFFF!EEEE.999" + email="quauser@example.com" + personId="RPN-qauser-000-10001" + firstName="qauser" + middleName="none" + lastName="Tester" + displayName="qauser" + prefLanguage="en-us" + inum="@!FFFF.FFFF.FFFF.FFFF!EEEE.999!10001" + status="ACTIVE" + locked="false" + softDeleted="false" + country="USA" + timeZone="America/Chicago" + mossoId="999112358" + nastId="nastid-qauser"/> diff --git a/docs/guide/src/docbkx/samples/getuser-with-username.json b/docs/guide/src/docbkx/samples/getuser-with-username.json new file mode 100644 index 00000000..4ba14bbc --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-with-username.json @@ -0,0 +1,20 @@ +{ + "username": "qauser", + "customerId": "RCN-QATestingCustomer", + "customerInum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.999", + "email": "quauser@example.com", + "personId": "RPN-qauser-000-10001", + "firstName": "qauser", + "middleName": "none", + "lastName": "Tester", + "displayName": "qauser", + "prefLanguage": "en-us", + "inum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.999!10001", + "status": "ACTIVE", + "locked": false, + "softDeleted": false, + "country": "USA", + "timeZone": "America/Chicago", + "mossoId": 999112358, + "nastId": "nastid-qauser" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/getuser-with-username.xml b/docs/guide/src/docbkx/samples/getuser-with-username.xml new file mode 100644 index 00000000..5e92fb9c --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser-with-username.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + username="qauser" + customerId="RCN-QATestingCustomer" + customerInum="@!FFFF.FFFF.FFFF.FFFF!EEEE.999" + email="quauser@example.com" + personId="RPN-qauser-000-10001" + firstName="qauser" + middleName="none" + lastName="Tester" + displayName="qauser" + prefLanguage="en-us" + inum="@!FFFF.FFFF.FFFF.FFFF!EEEE.999!10001" + status="ACTIVE" + locked="false" + softDeleted="false" + country="USA" + timeZone="America/Chicago" + mossoId="999112358" + nastId="nastid-qauser"/> diff --git a/docs/guide/src/docbkx/samples/getuser.json b/docs/guide/src/docbkx/samples/getuser.json new file mode 100644 index 00000000..b9d00949 --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser.json @@ -0,0 +1,15 @@ +{"user": + { + "groups": { + "values": [ + { + "tenantId" : "1234", + "id": "Admin" + } + ]}, + "id": "jqsmith", + "tenantId": "1234", + "email": "john.smith@example.org", + "enabled": true + } +} diff --git a/docs/guide/src/docbkx/samples/getuser.xml b/docs/guide/src/docbkx/samples/getuser.xml new file mode 100644 index 00000000..095db4ef --- /dev/null +++ b/docs/guide/src/docbkx/samples/getuser.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + enabled="true" email="john.smith@example.org" + tenantId="1234" id="jqsmith"> + <groups> + <group tenantId="1234" id="Admin"/> + </groups> +</user> diff --git a/docs/guide/src/docbkx/samples/globalgroup.json b/docs/guide/src/docbkx/samples/globalgroup.json new file mode 100644 index 00000000..8c524d61 --- /dev/null +++ b/docs/guide/src/docbkx/samples/globalgroup.json @@ -0,0 +1,6 @@ +{"group": + { + "name" : "Admin", + "description" : "A description ..." + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/globalgroup.xml b/docs/guide/src/docbkx/samples/globalgroup.xml new file mode 100644 index 00000000..387611c9 --- /dev/null +++ b/docs/guide/src/docbkx/samples/globalgroup.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<group xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + name="Admin" + description="A description..." />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/globalgroups.json b/docs/guide/src/docbkx/samples/globalgroups.json new file mode 100644 index 00000000..523bb222 --- /dev/null +++ b/docs/guide/src/docbkx/samples/globalgroups.json @@ -0,0 +1,10 @@ +{"groups": [ + { + "name" : "Admin", + "description" : "A description ..." + }, + { + "name" : "Technical", + "description" : "Another description ..." + }] +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/globalgroups.xml b/docs/guide/src/docbkx/samples/globalgroups.xml new file mode 100644 index 00000000..c272f370 --- /dev/null +++ b/docs/guide/src/docbkx/samples/globalgroups.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<groups xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <group + name="Admin" + description="A description..."/> + <group + name="Technical" + description="Another description..."/> +</groups>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/grantedpermissions.json b/docs/guide/src/docbkx/samples/grantedpermissions.json new file mode 100644 index 00000000..8269646e --- /dev/null +++ b/docs/guide/src/docbkx/samples/grantedpermissions.json @@ -0,0 +1,16 @@ +{ + "granted": { + "permission": [ + { + "permissionId": "addCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + }, + { + "permissionId": "getCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + } + ] + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/grantedpermissions.xml b/docs/guide/src/docbkx/samples/grantedpermissions.xml new file mode 100644 index 00000000..07ca960d --- /dev/null +++ b/docs/guide/src/docbkx/samples/grantedpermissions.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<permissions xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <granted> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="addCustomer"/> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="getCustomer"/> + </granted> +</permissions>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/group-create.json b/docs/guide/src/docbkx/samples/group-create.json new file mode 100644 index 00000000..4f5a15f7 --- /dev/null +++ b/docs/guide/src/docbkx/samples/group-create.json @@ -0,0 +1,6 @@ +{"group": + { + "id" : "Admin", + "description" : "A Description of the group..." + } +} diff --git a/docs/guide/src/docbkx/samples/group-create.xml b/docs/guide/src/docbkx/samples/group-create.xml new file mode 100644 index 00000000..fbba3c61 --- /dev/null +++ b/docs/guide/src/docbkx/samples/group-create.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<group xmlns="http://docs.openstack.org/idm/api/v1.0" + id="Admin"> + <description>A Description of the group...</description> +</group> diff --git a/docs/guide/src/docbkx/samples/group-updated-nt.json b/docs/guide/src/docbkx/samples/group-updated-nt.json new file mode 100644 index 00000000..004fa368 --- /dev/null +++ b/docs/guide/src/docbkx/samples/group-updated-nt.json @@ -0,0 +1,6 @@ +{"group": + { + "id" : "Admin", + "description" : "A New description of the group..." + } +} diff --git a/docs/guide/src/docbkx/samples/group-updated-nt.xml b/docs/guide/src/docbkx/samples/group-updated-nt.xml new file mode 100644 index 00000000..1e10d24a --- /dev/null +++ b/docs/guide/src/docbkx/samples/group-updated-nt.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<group xmlns="http://docs.openstack.org/idm/api/v1.0" + id="Admin"> + <description>A New description of the group...</description> +</group> diff --git a/docs/guide/src/docbkx/samples/group-updated.json b/docs/guide/src/docbkx/samples/group-updated.json new file mode 100644 index 00000000..da20dac5 --- /dev/null +++ b/docs/guide/src/docbkx/samples/group-updated.json @@ -0,0 +1,7 @@ +{"group": + { + "tenantId" : "1234", + "id" : "Admin", + "description" : "A New description of the group..." + } +} diff --git a/docs/guide/src/docbkx/samples/group-updated.xml b/docs/guide/src/docbkx/samples/group-updated.xml new file mode 100644 index 00000000..991a6b1e --- /dev/null +++ b/docs/guide/src/docbkx/samples/group-updated.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<group xmlns="http://docs.openstack.org/idm/api/v1.0" + tenantId="1234" id="Admin"> + <description>A New description of the group...</description> +</group> diff --git a/docs/guide/src/docbkx/samples/group.json b/docs/guide/src/docbkx/samples/group.json new file mode 100644 index 00000000..22efc41f --- /dev/null +++ b/docs/guide/src/docbkx/samples/group.json @@ -0,0 +1,7 @@ +{"group": + { + "tenantId" : "1234", + "id" : "Admin", + "description" : "A Description of the group..." + } +} diff --git a/docs/guide/src/docbkx/samples/group.xml b/docs/guide/src/docbkx/samples/group.xml new file mode 100644 index 00000000..ba3063ae --- /dev/null +++ b/docs/guide/src/docbkx/samples/group.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<group xmlns="http://docs.openstack.org/idm/api/v1.0" + tenantId="1234" id="Admin"> + <description>A Description of the group...</description> +</group> diff --git a/docs/guide/src/docbkx/samples/groups-nt.json b/docs/guide/src/docbkx/samples/groups-nt.json new file mode 100644 index 00000000..b183edac --- /dev/null +++ b/docs/guide/src/docbkx/samples/groups-nt.json @@ -0,0 +1,12 @@ +{"groups": { + "values" : [ + { + "id" : "Admin", + "description" : "A description ..." + }, + { + "id" : "Technical", + "description" : "Another description ..." + }] +} +} diff --git a/docs/guide/src/docbkx/samples/groups-nt.xml b/docs/guide/src/docbkx/samples/groups-nt.xml new file mode 100644 index 00000000..7dd515aa --- /dev/null +++ b/docs/guide/src/docbkx/samples/groups-nt.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<groups xmlns="http://docs.openstack.org/idm/api/v1.0"> + <group id="Admin"> + <description>A Description of the group...</description> + </group> + <group id="Technical"> + <description>Another description...</description> + </group> +</groups> diff --git a/docs/guide/src/docbkx/samples/groups.json b/docs/guide/src/docbkx/samples/groups.json new file mode 100644 index 00000000..1c6f6c03 --- /dev/null +++ b/docs/guide/src/docbkx/samples/groups.json @@ -0,0 +1,15 @@ +{"groups": { + "values" : [ + { + "tenantId" : "1234", + "id" : "Admin", + "description" : "A description ..." + }, + { + "tenantId" : "1234", + "id" : "Technical", + "description" : "Another description ..." + } + ] +} +} diff --git a/docs/guide/src/docbkx/samples/groups.xml b/docs/guide/src/docbkx/samples/groups.xml new file mode 100644 index 00000000..3f5ba19a --- /dev/null +++ b/docs/guide/src/docbkx/samples/groups.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<groups xmlns="http://docs.openstack.org/idm/api/v1.0"> + <group tenantId="1234" id="Admin"> + <description>A Description of the group...</description> + </group> + <group tenantId="1234" id="Technical"> + <description>Another description...</description> + </group> +</groups> diff --git a/docs/guide/src/docbkx/samples/idm_fault.json b/docs/guide/src/docbkx/samples/idm_fault.json new file mode 100644 index 00000000..84e3908e --- /dev/null +++ b/docs/guide/src/docbkx/samples/idm_fault.json @@ -0,0 +1,7 @@ +{"idmFault": + { + "message": "Fault", + "details": "Error Details...", + "code": 500 + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/idm_fault.xml b/docs/guide/src/docbkx/samples/idm_fault.xml new file mode 100644 index 00000000..e0f695f2 --- /dev/null +++ b/docs/guide/src/docbkx/samples/idm_fault.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<idmFault xmlns="http://docs.openstack.org/idm/api/v1.0" + code="500"> + <message>Fault</message> + <details>Error Details...</details> +</idmFault> diff --git a/docs/guide/src/docbkx/samples/item_not_found.json b/docs/guide/src/docbkx/samples/item_not_found.json new file mode 100644 index 00000000..dda88a59 --- /dev/null +++ b/docs/guide/src/docbkx/samples/item_not_found.json @@ -0,0 +1,7 @@ +{"itemNotFound": + { + "message": "Item not found.", + "details": "Error Details...", + "code": 404 + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/item_not_found.xml b/docs/guide/src/docbkx/samples/item_not_found.xml new file mode 100644 index 00000000..f967b76a --- /dev/null +++ b/docs/guide/src/docbkx/samples/item_not_found.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<itemNotFound xmlns="http://docs.openstack.org/idm/api/v1.0" + code="404"> + <message>Item not found.</message> + <details>Error Details...</details> +</itemNotFound> diff --git a/docs/guide/src/docbkx/samples/methodnotallowedfault.json b/docs/guide/src/docbkx/samples/methodnotallowedfault.json new file mode 100644 index 00000000..ad9cec4b --- /dev/null +++ b/docs/guide/src/docbkx/samples/methodnotallowedfault.json @@ -0,0 +1,5 @@ +{ + "message": "Method Not Allowed", + "details": "Error Details...", + "code": 405 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/methodnotallowedfault.xml b/docs/guide/src/docbkx/samples/methodnotallowedfault.xml new file mode 100644 index 00000000..01068572 --- /dev/null +++ b/docs/guide/src/docbkx/samples/methodnotallowedfault.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<methodNotAllowed xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="405"> + <message>Method Not Allowed</message> + <details>Error Details...</details> +</methodNotAllowed>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/missing_username.json b/docs/guide/src/docbkx/samples/missing_username.json new file mode 100644 index 00000000..a257f72e --- /dev/null +++ b/docs/guide/src/docbkx/samples/missing_username.json @@ -0,0 +1,5 @@ +{ + "message": "What username?", + "details": "Error Details...", + "code": 400 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/missing_username.xml b/docs/guide/src/docbkx/samples/missing_username.xml new file mode 100644 index 00000000..9d1330fc --- /dev/null +++ b/docs/guide/src/docbkx/samples/missing_username.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<missingUsername xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="400"> + <message>What username?</message> + <details>Error Details...</details> +</missingUsername>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/mosso-id-authentication-response.json b/docs/guide/src/docbkx/samples/mosso-id-authentication-response.json new file mode 100644 index 00000000..e071f01c --- /dev/null +++ b/docs/guide/src/docbkx/samples/mosso-id-authentication-response.json @@ -0,0 +1,4 @@ +{"token": { + "id": "DFW-c6dfc4456f6545f8b8265ff5b6bda775", + "expires_in": 16110 +}} diff --git a/docs/guide/src/docbkx/samples/mosso-id-authentication-response.xml b/docs/guide/src/docbkx/samples/mosso-id-authentication-response.xml new file mode 100644 index 00000000..6bce8a03 --- /dev/null +++ b/docs/guide/src/docbkx/samples/mosso-id-authentication-response.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<cloudAuth xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <token id="DFW-c6dfc4456f6545f8b8265ff5b6bda775" + expires_in="16640"/> + <serviceCatalog xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <service name="cloudFiles"> + <endpoint region="DFW" + v1Default="true" + publicURL="https://storage.clouddrive.com/v1/KovacsNastId" + internalURL="https://storage-snet.clouddrive.com/v1/KovacsNastId"/> + </service> + <service name="cloudServers"> + <endpoint v1Default="false" + publicURL="https://servers.api.rackspacecloud.com/v1.0/90000"/> + </service> + </serviceCatalog> +</cloudAuth>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/mossoCredentials.xml b/docs/guide/src/docbkx/samples/mossoCredentials.xml new file mode 100644 index 00000000..17352331 --- /dev/null +++ b/docs/guide/src/docbkx/samples/mossoCredentials.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<mossoCredentials xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + mossoId="999112358" + key="qauser-000-001" /> diff --git a/docs/guide/src/docbkx/samples/nastCredentials.xml b/docs/guide/src/docbkx/samples/nastCredentials.xml new file mode 100644 index 00000000..b478c3e6 --- /dev/null +++ b/docs/guide/src/docbkx/samples/nastCredentials.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<nastCredentials xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + nastId="nastid-qauser" + key="qauser-000-001" /> diff --git a/docs/guide/src/docbkx/samples/password_recovery.json b/docs/guide/src/docbkx/samples/password_recovery.json new file mode 100644 index 00000000..4650969a --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_recovery.json @@ -0,0 +1,15 @@ +{ + "customParams": { + "param": [ + { + "name": "FirstName", + "value": "Steve" + } + ] + }, + "callbackUrl": "http://www.someurl.com", + "templateUrl": "http://www.someurl.com", + "from": "email@email.com", + "replyTo": "replay@email.com", + "subject": "Password Recovery" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_recovery.xml b/docs/guide/src/docbkx/samples/password_recovery.xml new file mode 100644 index 00000000..d13922e7 --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_recovery.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<passwordRecovery xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + subject="Password Recovery" + replyTo="replay@email.com" + from="email@email.com" + templateUrl="http://www.someurl.com" + callbackUrl="http://www.someurl.com"> + <customParams> + <params value="Steve" name="FirstName" /> + </customParams> +</passwordRecovery>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rule.json b/docs/guide/src/docbkx/samples/password_rule.json new file mode 100644 index 00000000..fe03ec4a --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rule.json @@ -0,0 +1,5 @@ +{ + "id": 1, + "name": "Mininum Legth", + "message": "Password must be at least 7 characters long." +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rule.xml b/docs/guide/src/docbkx/samples/password_rule.xml new file mode 100644 index 00000000..78038228 --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rule.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<passwordRule xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + message="Password must be at least 7 characters long." + name="Mininum Legth" + id="1" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rule_result.json b/docs/guide/src/docbkx/samples/password_rule_result.json new file mode 100644 index 00000000..1c538dce --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rule_result.json @@ -0,0 +1,6 @@ +{ + "passed": true, + "ruleId": 1, + "ruleName": "Minimum Length", + "ruleMessage": "Password must be at least 7 characters long." +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rule_result.xml b/docs/guide/src/docbkx/samples/password_rule_result.xml new file mode 100644 index 00000000..3e17ddab --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rule_result.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<passwordRuleResult xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + ruleMessage="Password must be at least 7 characters long." + ruleName="Minimum Length" + ruleId="1" + passed="true" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rule_results.json b/docs/guide/src/docbkx/samples/password_rule_results.json new file mode 100644 index 00000000..4a811cf4 --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rule_results.json @@ -0,0 +1,16 @@ +{ + "passwordRuleResult": [ + { + "passed": true, + "ruleId": 1, + "ruleName": "Minimum Length", + "ruleMessage": "Password must be at least 7 characters long." + }, + { + "passed": true, + "ruleId": 2, + "ruleName": "Lowercase Character", + "ruleMessage": "Password must contain a lowercase character." + } + ] +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rule_results.xml b/docs/guide/src/docbkx/samples/password_rule_results.xml new file mode 100644 index 00000000..8a48eb70 --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rule_results.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<passwordRuleResults + xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <passwordRuleResults + ruleMessage="Password must be at least 7 characters." + ruleName="Minimum Length" + ruleId="1" + passed="true" /> + <passwordRuleResults + ruleMessage="Password must contain a lowercase." + ruleName="Lowercase Character" + ruleId="2" + passed="true" /> +</passwordRuleResults>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rules.json b/docs/guide/src/docbkx/samples/password_rules.json new file mode 100644 index 00000000..d65c3f9f --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rules.json @@ -0,0 +1,14 @@ +{ + "passwordRule": [ + { + "id": 1, + "name": "Mininum Legth", + "message": "Password must be at least 7 characters long." + }, + { + "id": 2, + "name": "Lowercase Character", + "message": "Password must contain a lowercase character." + } + ] +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_rules.xml b/docs/guide/src/docbkx/samples/password_rules.xml new file mode 100644 index 00000000..e6375876 --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_rules.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<passwordRules + xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <passwordRule + message="Password must be at least 7 characters." + name="Mininum Legth" + id="1" /> + <passwordRule + message="Password must contain a lowercase." + name="Lowercase Character" + id="2" /> +</passwordRules>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_validation.json b/docs/guide/src/docbkx/samples/password_validation.json new file mode 100644 index 00000000..3d4d86be --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_validation.json @@ -0,0 +1,17 @@ +{"passwordRuleResults":{ + "passwordRuleResults":[ + { + "passed":true, + "ruleId":1,"ruleName": + "Mininumn Length", + "ruleMessage":"The password must be at least 7 characters long" + }, + { + "passed":false, + "ruleId":2,"ruleName": + "Uppercase Rule","ruleMessage": + "The password must contain an uppercase charater" + } + ]}, + "validPassword":false +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/password_validation.xml b/docs/guide/src/docbkx/samples/password_validation.xml new file mode 100644 index 00000000..a7619130 --- /dev/null +++ b/docs/guide/src/docbkx/samples/password_validation.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<passwordValidation xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + validPassword="true"> + <passwordRuleResults> + <passwordRuleResults + ruleMessage="Password must be at least 7 characters long." + ruleName="Minimum Length" + ruleId="1" + passed="true" /> + <passwordRuleResults + ruleMessage="Password must contain a lowercase character." + ruleName="Lowercase Character" + ruleId="2" + passed="true" /> + </passwordRuleResults> +</passwordValidation>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/passwordrotation.json b/docs/guide/src/docbkx/samples/passwordrotation.json new file mode 100644 index 00000000..828289bb --- /dev/null +++ b/docs/guide/src/docbkx/samples/passwordrotation.json @@ -0,0 +1,4 @@ +{ + "enabled": true, + "duration": "60" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/passwordrotation.xml b/docs/guide/src/docbkx/samples/passwordrotation.xml new file mode 100644 index 00000000..d4316dc4 --- /dev/null +++ b/docs/guide/src/docbkx/samples/passwordrotation.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<passwordRotationPolicy xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + enabled="true" + duration="90" +</passwordRotationPolicy>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/passwordvalidationfault.json b/docs/guide/src/docbkx/samples/passwordvalidationfault.json new file mode 100644 index 00000000..29b70594 --- /dev/null +++ b/docs/guide/src/docbkx/samples/passwordvalidationfault.json @@ -0,0 +1,5 @@ +{ + "message": "Password Failed Validation", + "details": "Error Details...", + "code": 409 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/passwordvalidationfault.xml b/docs/guide/src/docbkx/samples/passwordvalidationfault.xml new file mode 100644 index 00000000..efe6c3e8 --- /dev/null +++ b/docs/guide/src/docbkx/samples/passwordvalidationfault.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<passwordValidationFault xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>Password Failed Validation</message> + <details>Error Details...</details> +</passwordValidationFault>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/permission.json b/docs/guide/src/docbkx/samples/permission.json new file mode 100644 index 00000000..cb7b261c --- /dev/null +++ b/docs/guide/src/docbkx/samples/permission.json @@ -0,0 +1,7 @@ +{ + "value": "POST /customers", + "permissionId": "addCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM", + "type": "application/text" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/permission.xml b/docs/guide/src/docbkx/samples/permission.xml new file mode 100644 index 00000000..d8157aa1 --- /dev/null +++ b/docs/guide/src/docbkx/samples/permission.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<permission xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + type="application/text" + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="addCustomer">POST /customers</permission>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/permissions.json b/docs/guide/src/docbkx/samples/permissions.json new file mode 100644 index 00000000..aef0cd9d --- /dev/null +++ b/docs/guide/src/docbkx/samples/permissions.json @@ -0,0 +1,30 @@ +{ + "granted": { + "permission": [ + { + "permissionId": "addCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + }, + { + "permissionId": "getCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + } + ] + }, + "defined": { + "permission": [ + { + "permissionId": "addCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + }, + { + "permissionId": "getCustomer", + "customerId": "RCN-000-000-000", + "clientId": "IDM" + } + ] + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/permissions.xml b/docs/guide/src/docbkx/samples/permissions.xml new file mode 100644 index 00000000..84c2de60 --- /dev/null +++ b/docs/guide/src/docbkx/samples/permissions.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<permissions xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <granted> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="addCustomer"/> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="getCustomer"/> + </granted> + <defined> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="addCustomer"/> + <permission + clientId="IDM" + customerId="RCN-000-000-000" + permissionId="getCustomer"/> + </defined> +</permissions>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/reset_user_password.json b/docs/guide/src/docbkx/samples/reset_user_password.json new file mode 100644 index 00000000..38cb9e1f --- /dev/null +++ b/docs/guide/src/docbkx/samples/reset_user_password.json @@ -0,0 +1,3 @@ +{ + "password": "7ud$dnF" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/reset_user_password.xml b/docs/guide/src/docbkx/samples/reset_user_password.xml new file mode 100644 index 00000000..187b9122 --- /dev/null +++ b/docs/guide/src/docbkx/samples/reset_user_password.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<userPassword xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + password="7ud$dnF" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/resourceId_conflict.json b/docs/guide/src/docbkx/samples/resourceId_conflict.json new file mode 100644 index 00000000..7eaf859b --- /dev/null +++ b/docs/guide/src/docbkx/samples/resourceId_conflict.json @@ -0,0 +1,5 @@ +{ + "message": "ResourceId already taken.", + "details": "Error Details...", + "code": 409 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/resourceId_conflict.xml b/docs/guide/src/docbkx/samples/resourceId_conflict.xml new file mode 100644 index 00000000..1710f51c --- /dev/null +++ b/docs/guide/src/docbkx/samples/resourceId_conflict.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<resourceIdConflict xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>ResourceId already taken.</message> + <details>Error Details...</details> +</resourceIdConflict>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/role.json b/docs/guide/src/docbkx/samples/role.json new file mode 100644 index 00000000..bc4bb59d --- /dev/null +++ b/docs/guide/src/docbkx/samples/role.json @@ -0,0 +1,4 @@ +{ + "name": "Admin", + "type": "RackspaceDefined" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/role.xml b/docs/guide/src/docbkx/samples/role.xml new file mode 100644 index 00000000..3c91848d --- /dev/null +++ b/docs/guide/src/docbkx/samples/role.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<role type="RackspaceDefined" + name="Admin" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/roles.json b/docs/guide/src/docbkx/samples/roles.json new file mode 100644 index 00000000..465f36b1 --- /dev/null +++ b/docs/guide/src/docbkx/samples/roles.json @@ -0,0 +1,12 @@ +{ + "role": [ + { + "name": "Admin", + "type": "RackspaceDefined" + }, + { + "name": "HR", + "type": "CustomerDefined" + } + ] +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/roles.xml b/docs/guide/src/docbkx/samples/roles.xml new file mode 100644 index 00000000..e8b57c0a --- /dev/null +++ b/docs/guide/src/docbkx/samples/roles.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<roles xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <role type="RackspaceDefined" + name="Admin" /> + <role type="CustomerDefined" + name="HR" /> +</roles>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/samplerequestheader.json b/docs/guide/src/docbkx/samples/samplerequestheader.json new file mode 100644 index 00000000..a4647076 --- /dev/null +++ b/docs/guide/src/docbkx/samples/samplerequestheader.json @@ -0,0 +1,4 @@ +POST /v1.0/token HTTP/1.1 +Host: idm.api.rackspace.com +Content-Type: application/json +Accept: application/xml
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/sampleresponseheader.json b/docs/guide/src/docbkx/samples/sampleresponseheader.json new file mode 100644 index 00000000..0b08f684 --- /dev/null +++ b/docs/guide/src/docbkx/samples/sampleresponseheader.json @@ -0,0 +1,5 @@ +HTTP/1.1 200 OKAY +Date: Mon, 12 Nov 2010 15:55:01 GMT +Server: Apache +Content-Length: +Content-Type: application/xml; charset=UTF-8
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/service-catalog-response.json b/docs/guide/src/docbkx/samples/service-catalog-response.json new file mode 100644 index 00000000..6e6f6533 --- /dev/null +++ b/docs/guide/src/docbkx/samples/service-catalog-response.json @@ -0,0 +1,22 @@ +{"service": [ + { + "endpoint": [ { + "region": "DFW", + "v1Default": true, + "publicURL": "https://storage.clouddrive.com/v1/KovacsNastId", + "internalURL": "https://storage-snet.clouddrive.com/v1/KovacsNastId", + "adminURL": null + }], + "name": "cloudFiles" + }, + { + "endpoint": [ { + "region": null, + "v1Default": false, + "publicURL": "https://servers.api.rackspacecloud.com/v1.0/90000", + "internalURL": null, + "adminURL": null + }], + "name": "cloudServers" + } +]} diff --git a/docs/guide/src/docbkx/samples/service-catalog-response.xml b/docs/guide/src/docbkx/samples/service-catalog-response.xml new file mode 100644 index 00000000..0cdb9222 --- /dev/null +++ b/docs/guide/src/docbkx/samples/service-catalog-response.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<serviceCatalog xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <service name="cloudFiles"> + <endpoint region="DFW" + v1Default="true" + publicURL="https://storage.clouddrive.com/v1/KovacsNastId" + internalURL="https://storage-snet.clouddrive.com/v1/KovacsNastId"/> + </service> + <service name="cloudServers"> + <endpoint v1Default="false" + publicURL="https://servers.api.rackspacecloud.com/v1.0/90000"/> + </service> +</serviceCatalog> diff --git a/docs/guide/src/docbkx/samples/tenants-1.json b/docs/guide/src/docbkx/samples/tenants-1.json new file mode 100644 index 00000000..6f45f1c8 --- /dev/null +++ b/docs/guide/src/docbkx/samples/tenants-1.json @@ -0,0 +1,16 @@ +{ +"tenants": { + "values" : [ + { + "id": "1234", + "description": "A description ...", + "enabled": true + } + ], + "links" : [ + { + "rel" : "next", + "href" : "http://idm.api.openstack.org/v1.0/1234/tenants?limit=1&marker=1234" + } + ] +} diff --git a/docs/guide/src/docbkx/samples/tenants-1.xml b/docs/guide/src/docbkx/samples/tenants-1.xml new file mode 100644 index 00000000..67101816 --- /dev/null +++ b/docs/guide/src/docbkx/samples/tenants-1.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenants xmlns="http://docs.openstack.org/idm/api/v1.0" + xmlns:atom="http://www.w3.org/2005/Atom"> + <tenant enabled="true" id="1234"> + <description>A description...</description> + </tenant> + <atom:link + rel="next" + href="http://idm.api.openstack.org/v1.0/1234/tenants?limit=1&marker=1234"/> +</tenants> diff --git a/docs/guide/src/docbkx/samples/tenants-2.json b/docs/guide/src/docbkx/samples/tenants-2.json new file mode 100644 index 00000000..7cb3ca6b --- /dev/null +++ b/docs/guide/src/docbkx/samples/tenants-2.json @@ -0,0 +1,20 @@ +{ +"tenants": { + "values" : [ + { + "id": "3645", + "description": "A description ...", + "enabled": true + } + ], + "links" : [ + { + "rel" : "next", + "href" : "http://idm.api.openstack.org/v1.0/1234/tenants?limit=1&marker=3645" + }, + { + "rel" : "previous", + "href" : "http://idm.api.openstack.org/v1.0/1234/tenants?limit=1" + } + ] +} diff --git a/docs/guide/src/docbkx/samples/tenants-2.xml b/docs/guide/src/docbkx/samples/tenants-2.xml new file mode 100644 index 00000000..7be4f537 --- /dev/null +++ b/docs/guide/src/docbkx/samples/tenants-2.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenants xmlns="http://docs.openstack.org/idm/api/v1.0" + xmlns:atom="http://www.w3.org/2005/Atom"> + <tenant enabled="true" id="3645"> + <description>A description...</description> + </tenant> + <atom:link + rel="previous" + href="http://idm.api.openstack.org/v1.0/1234/tenants?limit=1"/> + <atom:link + rel="next" + href="http://idm.api.openstack.org/v1.0/1234/tenants?limit=1&marker=3645"/> +</tenants> diff --git a/docs/guide/src/docbkx/samples/tenants-3.json b/docs/guide/src/docbkx/samples/tenants-3.json new file mode 100644 index 00000000..febcf225 --- /dev/null +++ b/docs/guide/src/docbkx/samples/tenants-3.json @@ -0,0 +1,16 @@ +{ +"tenants": { + "values" : [ + { + "id": "9999", + "description": "A description ...", + "enabled": true + } + ], + "links" : [ + { + "rel" : "previous", + "href" : "http://idm.api.openstack.org/v1.0/1234/tenants?limit=1&marker=1234" + } + ] +} diff --git a/docs/guide/src/docbkx/samples/tenants-3.xml b/docs/guide/src/docbkx/samples/tenants-3.xml new file mode 100644 index 00000000..5e5b49fa --- /dev/null +++ b/docs/guide/src/docbkx/samples/tenants-3.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenants xmlns="http://docs.openstack.org/idm/api/v1.0" + xmlns:atom="http://www.w3.org/2005/Atom"> + <tenant enabled="true" id="9999"> + <description>A description...</description> + </tenant> + <atom:link + rel="previous" + href="http://idm.api.openstack.org/v1.0/1234/tenants?limit=1&marker=1234"/> +</tenants> diff --git a/docs/guide/src/docbkx/samples/token.json b/docs/guide/src/docbkx/samples/token.json new file mode 100644 index 00000000..a25f1530 --- /dev/null +++ b/docs/guide/src/docbkx/samples/token.json @@ -0,0 +1,4 @@ +{ + "id": "309487987f0892397a9439875900b", + "expiresIn": 3600 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/token.xml b/docs/guide/src/docbkx/samples/token.xml new file mode 100644 index 00000000..98b78611 --- /dev/null +++ b/docs/guide/src/docbkx/samples/token.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<token xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + expires_in="3600" + id="309487987f0892397a9439875900b" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/unauthorized.json b/docs/guide/src/docbkx/samples/unauthorized.json new file mode 100644 index 00000000..e969fc0e --- /dev/null +++ b/docs/guide/src/docbkx/samples/unauthorized.json @@ -0,0 +1,5 @@ +{ + "message": "Oh no you don't.", + "details": "Error Details...", + "code": 401 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/unauthorized.xml b/docs/guide/src/docbkx/samples/unauthorized.xml new file mode 100644 index 00000000..6dad6bca --- /dev/null +++ b/docs/guide/src/docbkx/samples/unauthorized.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<unauthorized xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="401"> + <message>Oh no you don't.</message> + <details>Error Details...</details> +</unauthorized>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/unavailable.json b/docs/guide/src/docbkx/samples/unavailable.json new file mode 100644 index 00000000..b91a23e7 --- /dev/null +++ b/docs/guide/src/docbkx/samples/unavailable.json @@ -0,0 +1,5 @@ +{ + "message": "The IdM Service is Unavailable at the moment.", + "details": "Error Details...", + "code": 503 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/unavailable.xml b/docs/guide/src/docbkx/samples/unavailable.xml new file mode 100644 index 00000000..ebd9f106 --- /dev/null +++ b/docs/guide/src/docbkx/samples/unavailable.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<serviceUnavailable xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="503"> + <message>The IdM Service is Unavailable at the moment.</message> + <details>Error Details...</details> +</serviceUnavailable>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/updatedcustomer.json b/docs/guide/src/docbkx/samples/updatedcustomer.json new file mode 100644 index 00000000..05df6a3a --- /dev/null +++ b/docs/guide/src/docbkx/samples/updatedcustomer.json @@ -0,0 +1,7 @@ +{"tenant": + { + "id": "1234", + "description": "A NEW description...", + "enabled": true + } +} diff --git a/docs/guide/src/docbkx/samples/updatedcustomer.xml b/docs/guide/src/docbkx/samples/updatedcustomer.xml new file mode 100644 index 00000000..8bcce9bf --- /dev/null +++ b/docs/guide/src/docbkx/samples/updatedcustomer.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tenant xmlns="http://docs.openstack.org/idm/api/v1.0" + enabled="true" id="1234"> + <description>A NEW description...</description> +</tenant> diff --git a/docs/guide/src/docbkx/samples/updateduser.json b/docs/guide/src/docbkx/samples/updateduser.json new file mode 100644 index 00000000..73a67c6a --- /dev/null +++ b/docs/guide/src/docbkx/samples/updateduser.json @@ -0,0 +1,8 @@ +{"user": + { + "id": "jqsmith", + "tenantId": "1234", + "email": "john.smith@somenewemail.org", + "enabled": true + } +} diff --git a/docs/guide/src/docbkx/samples/updateduser.xml b/docs/guide/src/docbkx/samples/updateduser.xml new file mode 100644 index 00000000..c11bc8fc --- /dev/null +++ b/docs/guide/src/docbkx/samples/updateduser.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + email="john.smith@somenewemail.org" tenantId="1234" + id="jqsmith" enabled="true"/> diff --git a/docs/guide/src/docbkx/samples/updateuser.json b/docs/guide/src/docbkx/samples/updateuser.json new file mode 100644 index 00000000..2e431d9a --- /dev/null +++ b/docs/guide/src/docbkx/samples/updateuser.json @@ -0,0 +1,6 @@ +{"user": + { + "email": "john.smith@somenewemail.org", + "id": "jqsmith" + } +} diff --git a/docs/guide/src/docbkx/samples/updateuser.xml b/docs/guide/src/docbkx/samples/updateuser.xml new file mode 100644 index 00000000..7d1988e4 --- /dev/null +++ b/docs/guide/src/docbkx/samples/updateuser.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + email="john.smith@somenewemail.org" id="jqsmith" /> diff --git a/docs/guide/src/docbkx/samples/user.json b/docs/guide/src/docbkx/samples/user.json new file mode 100644 index 00000000..1051172c --- /dev/null +++ b/docs/guide/src/docbkx/samples/user.json @@ -0,0 +1,41 @@ +{ + "secret": { + "secretQuestion": "What is the middle name of your best fried, spelled backward?", + "secretAnswer": "sicnarF" + }, + "password": { + "password": "C@n+f001me!" + }, + "apiKey": { + "apiKey": "10388a8497547f8w77e" + }, + "roles": [ + { + "name": "Admin", + "type": "RackspaceDefined" + } + ], + "permissions": [ + { + "description": "POST /users", + "name": "AddUser" + }, + {} + ], + "username": "jqsmith", + "customerId": "RCN-000-000-000", + "customerInum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.EEEE", + "email": "john.smith@example.org", + "personId": "RPN-111-111-111", + "firstName": "John", + "middleName": "Quincy", + "lastName": "Smith", + "displayName": "John Smith", + "prefLanguage": "US_en", + "inum": "@!FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!1111", + "iname": "@Example.Smith*John", + "region": "America/Chicago", + "status": "ACTIVE", + "locked": false, + "softDeleted": false +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user.xml b/docs/guide/src/docbkx/samples/user.xml new file mode 100644 index 00000000..c252696d --- /dev/null +++ b/docs/guide/src/docbkx/samples/user.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + softDeleted="false" locked="false" + status="ACTIVE" timeZone="America/Chicago" + region="SAT" iname="@Example.Smith*John" + inum="@!FFFF.FFFF.FFFF.FFFF!EEEE.EEEE!1111" + prefLanguage="US_en" displayName="John Smith" + lastName="Smith" middleName="Quincy" + firstName="John" personId="RPN-111-111-111" + email="john.smith@example.org" + customerInum="@!FFFF.FFFF.FFFF.FFFF!EEEE.EEEE" + customerId="RCN-000-000-000" + username="jqsmith"> + <roles> + <role type="RackspaceDefined" + name="Admin" /> + </roles> +</user>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/userGroups.json b/docs/guide/src/docbkx/samples/userGroups.json new file mode 100644 index 00000000..dc7b3f3b --- /dev/null +++ b/docs/guide/src/docbkx/samples/userGroups.json @@ -0,0 +1,16 @@ +{"groups": { + "values" : [ + { + "tenantId" : "1234", + "id" : "Admin", + }, + { + "tenantId" : "1234", + "id" : "Technical", + }, + { + "id" : "Customer", + } + ] +} +} diff --git a/docs/guide/src/docbkx/samples/userGroups.xml b/docs/guide/src/docbkx/samples/userGroups.xml new file mode 100644 index 00000000..16f73c51 --- /dev/null +++ b/docs/guide/src/docbkx/samples/userGroups.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<groups xmlns="http://docs.openstack.org/idm/api/v1.0"> + <group tenantId="1234" id="Admin" /> + <group tenantId="1234" id="Technical"/> + <group id="Customer"/> +</groups> diff --git a/docs/guide/src/docbkx/samples/userWithOnlyLock.json b/docs/guide/src/docbkx/samples/userWithOnlyLock.json new file mode 100644 index 00000000..11d640e6 --- /dev/null +++ b/docs/guide/src/docbkx/samples/userWithOnlyLock.json @@ -0,0 +1,5 @@ +{"user": + { + "enabled": "true" + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/userWithOnlyLock.xml b/docs/guide/src/docbkx/samples/userWithOnlyLock.xml new file mode 100644 index 00000000..42eecba2 --- /dev/null +++ b/docs/guide/src/docbkx/samples/userWithOnlyLock.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + enabled="true"/> diff --git a/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.json b/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.json new file mode 100644 index 00000000..bc3a14ff --- /dev/null +++ b/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.json @@ -0,0 +1,3 @@ +{ + "softDeleted": "true" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.xml b/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.xml new file mode 100644 index 00000000..6284eb54 --- /dev/null +++ b/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + softDeleted="true" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/userWithOnlyStatus.json b/docs/guide/src/docbkx/samples/userWithOnlyStatus.json new file mode 100644 index 00000000..d4bd36c9 --- /dev/null +++ b/docs/guide/src/docbkx/samples/userWithOnlyStatus.json @@ -0,0 +1,3 @@ +{ + "status": "INACTIVE" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/userWithOnlyStatus.xml b/docs/guide/src/docbkx/samples/userWithOnlyStatus.xml new file mode 100644 index 00000000..30e7b127 --- /dev/null +++ b/docs/guide/src/docbkx/samples/userWithOnlyStatus.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<user xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + status="ACTIVE" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_api_key.json b/docs/guide/src/docbkx/samples/user_api_key.json new file mode 100644 index 00000000..ff5dd33a --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_api_key.json @@ -0,0 +1,5 @@ +{"user": + { + "password": "P@$$word1" + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_api_key.xml b/docs/guide/src/docbkx/samples/user_api_key.xml new file mode 100644 index 00000000..24f86935 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_api_key.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<user xmlns="http://docs.openstack.org/idm/api/v1.0" + password="P@$$word1"/> diff --git a/docs/guide/src/docbkx/samples/user_credentials.json b/docs/guide/src/docbkx/samples/user_credentials.json new file mode 100644 index 00000000..dbcb9977 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_credentials.json @@ -0,0 +1,8 @@ +{ + "newPassword": { + "password": "newpassword" + }, + "currentPassword": { + "password": "oldpassword" + } +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_credentials.xml b/docs/guide/src/docbkx/samples/user_credentials.xml new file mode 100644 index 00000000..56dc2776 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_credentials.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<userCredentials xmlns="http://docs.rackspacecloud.com/idm/api/v1.0"> + <newPassword password="newpassword" /> + <currentPassword password="oldpassword" /> +</userCredentials>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_disabled.json b/docs/guide/src/docbkx/samples/user_disabled.json new file mode 100644 index 00000000..5eeb83f2 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_disabled.json @@ -0,0 +1,5 @@ +{ + "message": "The user has been disabled.", + "details": "Error Details...", + "code": 403 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_disabled.xml b/docs/guide/src/docbkx/samples/user_disabled.xml new file mode 100644 index 00000000..9f6b528e --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_disabled.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<userDisabled xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>The user has been disabled.</message> + <details>Error Details...</details> +</userDisabled> diff --git a/docs/guide/src/docbkx/samples/user_password.json b/docs/guide/src/docbkx/samples/user_password.json new file mode 100644 index 00000000..1e1643b9 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_password.json @@ -0,0 +1,3 @@ +{ + "password": "newpassword" +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_password.xml b/docs/guide/src/docbkx/samples/user_password.xml new file mode 100644 index 00000000..ba8a49cb --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_password.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<userPassword xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + password="newpassword" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_secret.json b/docs/guide/src/docbkx/samples/user_secret.json new file mode 100644 index 00000000..e0a4a6a8 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_secret.json @@ -0,0 +1,4 @@ +{ + "secretQuestion": "Is this a secret question?", + "secretAnswer": "Not a very good one." +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/user_secret.xml b/docs/guide/src/docbkx/samples/user_secret.xml new file mode 100644 index 00000000..d1ab5610 --- /dev/null +++ b/docs/guide/src/docbkx/samples/user_secret.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<userSecret xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + secretAnswer="Not a very good one." + secretQuestion="Is this a secret question?" />
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/usernameCredentials.xml b/docs/guide/src/docbkx/samples/usernameCredentials.xml new file mode 100644 index 00000000..4d03497d --- /dev/null +++ b/docs/guide/src/docbkx/samples/usernameCredentials.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<usernameCredentials xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + username="qauser" + key="qauser-000-001" /> diff --git a/docs/guide/src/docbkx/samples/username_conflict.json b/docs/guide/src/docbkx/samples/username_conflict.json new file mode 100644 index 00000000..e30c009d --- /dev/null +++ b/docs/guide/src/docbkx/samples/username_conflict.json @@ -0,0 +1,5 @@ +{ + "message": "Username already taken.", + "details": "Error Details...", + "code": 409 +}
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/username_conflict.xml b/docs/guide/src/docbkx/samples/username_conflict.xml new file mode 100644 index 00000000..a3d3dbbc --- /dev/null +++ b/docs/guide/src/docbkx/samples/username_conflict.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + +<usernameConflict xmlns="http://docs.rackspacecloud.com/idm/api/v1.0" + code="409"> + <message>Username already taken.</message> + <details>Error Details...</details> +</usernameConflict>
\ No newline at end of file diff --git a/docs/guide/src/docbkx/samples/users.json b/docs/guide/src/docbkx/samples/users.json new file mode 100644 index 00000000..4bac51c9 --- /dev/null +++ b/docs/guide/src/docbkx/samples/users.json @@ -0,0 +1,17 @@ +{"users": { + "values" : [ + { + "id": "jqsmith", + "tenantId": "1234", + "email": "john.smith@example.org", + "enabled": true + }, + { + "id": "jdoe", + "tenantId": "1234", + "email": "john.doe@example.org", + "enabled": true + } + ] +} +} diff --git a/docs/guide/src/docbkx/samples/users.xml b/docs/guide/src/docbkx/samples/users.xml new file mode 100644 index 00000000..c30c1550 --- /dev/null +++ b/docs/guide/src/docbkx/samples/users.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<users xmlns="http://docs.openstack.org/idm/api/v1.0"> + <user enabled="true" tenantId="1234" + email="john.smith@example.org" id="jqsmith"/> + <user enabled="true" tenantId="1234" + email="john.doe@example.org" id="jdoe"/> +</users> diff --git a/docs/guide/src/docbkx/samples/validatetoken.json b/docs/guide/src/docbkx/samples/validatetoken.json new file mode 100644 index 00000000..c4721873 --- /dev/null +++ b/docs/guide/src/docbkx/samples/validatetoken.json @@ -0,0 +1,19 @@ +{ + "auth" : { + "token": { + "id": "ab48a9efdfedb23ty3494", + "expires": "2010-11-01T03:32:15-05:00" + }, + "user" : { + "groups": { + "group": [ + { + "tenantId" : "1234", + "name": "Admin" + } + ]}, + "username": "jqsmith", + "tenantId": "1234", + } + } +} diff --git a/docs/guide/src/docbkx/samples/validatetoken.xml b/docs/guide/src/docbkx/samples/validatetoken.xml new file mode 100644 index 00000000..b091c7af --- /dev/null +++ b/docs/guide/src/docbkx/samples/validatetoken.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<auth xmlns="http://docs.openstack.org/idm/api/v1.0"> + <token expires="2010-11-01T03:32:15-05:00" + id="ab48a9efdfedb23ty3494"/> + <user tenantId="1245" username="jqsmith"> + <groups> + <group tenantId="1245" name="Admin"/> + </groups> + </user> +</auth> diff --git a/docs/guide/src/docbkx/samples/version-atom.xml b/docs/guide/src/docbkx/samples/version-atom.xml new file mode 100644 index 00000000..8cf3dc88 --- /dev/null +++ b/docs/guide/src/docbkx/samples/version-atom.xml @@ -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://idm.api.openstack.org/v1.0/</id> + <author><name>Rackspace</name><uri>http://www.rackspace.com/</uri></author> + <link rel="self" href="http://idm.api.openstack.org/v1.0/"/> + <entry> + <id>http://idm.api.openstack.org/v1.0/</id> + <title type="text">Version v1.0</title> + <updated>2011-01-21T11:33:21-06:00</updated> + <link rel="self" href="http://idm.api.openstack.org/v1.0/"/> + <link rel="describedby" type="application/pdf" + href="http://docs.rackspacecloud.com/idm/api/v1.0/idm-devguide-20110125.pdf"/> + <link rel="describedby" type="application/vnd.sun.wadl+xml" + href="http://docs.rackspacecloud.com/idm/api/v1.0/application.wadl"/> + <content type="text">Version v1.0 CURRENT (2011-01-21T11:33:21-06:00)</content> + </entry> +</feed> diff --git a/docs/guide/src/docbkx/samples/version.json b/docs/guide/src/docbkx/samples/version.json new file mode 100644 index 00000000..74bae5bd --- /dev/null +++ b/docs/guide/src/docbkx/samples/version.json @@ -0,0 +1,33 @@ +{ + "version" : { + "id" : "v1.0", + "status" : "CURRENT", + "updated" : "2011-01-21T11:33:21-06:00", + "links": [ + { + "rel" : "self", + "href" : "http://idm.api.openstack.org/v1.0/" + }, + { + "rel" : "describedby", + "type" : "application/pdf", + "href" : "http://docs.rackspacecloud.com/idm/api/v1.0/idm-devguide-20110125.pdf" + }, + { + "rel" : "describedby", + "type" : "application/vnd.sun.wadl+xml", + "href" : "http://docs.rackspacecloud.com/idm/api/v1.0/application.wadl" + } + ], + "media-types": [ + { + "base" : "application/xml", + "type" : "application/vnd.openstack.idm-v1.0+xml" + }, + { + "base" : "application/json", + "type" : "application/vnd.openstack.idm-v1.0+json" + } + ] + } +} diff --git a/docs/guide/src/docbkx/samples/version.xml b/docs/guide/src/docbkx/samples/version.xml new file mode 100644 index 00000000..4f499322 --- /dev/null +++ b/docs/guide/src/docbkx/samples/version.xml @@ -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="v1.0" status="CURRENT" updated="2011-01-21T11:33:21-06:00"> + + <media-types> + <media-type base="application/xml" + type="application/vnd.openstack.idm-v1.0+xml"/> + <media-type base="application/json" + type="application/vnd.openstack.idm-v1.0+json"/> + </media-types> + + <atom:link rel="self" + href="http://idm.api.openstack.org/v1.0/"/> + + <atom:link rel="describedby" + type="application/pdf" + href="http://docs.rackspacecloud.com/idm/api/v1.0/idm-devguide-20110125.pdf" /> + + <atom:link rel="describedby" + type="application/vnd.sun.wadl+xml" + href="http://docs.rackspacecloud.com/idm/api/v1.0/application.wadl" /> +</version> diff --git a/docs/guide/src/docbkx/samples/versions-atom.xml b/docs/guide/src/docbkx/samples/versions-atom.xml new file mode 100644 index 00000000..e75cf416 --- /dev/null +++ b/docs/guide/src/docbkx/samples/versions-atom.xml @@ -0,0 +1,22 @@ +<?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://idm.api.openstack.org/</id> + <author><name>Rackspace</name><uri>http://www.rackspace.com/</uri></author> + <link rel="self" href="http://idm.api.openstack.org/"/> + <entry> + <id>http://idm.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://idm.api.openstack.org/v1.1/"/> + <content type="text">Version v1.1 CURRENT (2010-12-12T18:30:02.25Z)</content> + </entry> + <entry> + <id>http://idm.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://idm.api.openstack.org/v1.0/"/> + <content type="text">Version v1.0 DEPRECATED (2009-10-09T11:30:00Z)</content> + </entry> +</feed> diff --git a/docs/guide/src/docbkx/samples/versions.json b/docs/guide/src/docbkx/samples/versions.json new file mode 100644 index 00000000..330a26e9 --- /dev/null +++ b/docs/guide/src/docbkx/samples/versions.json @@ -0,0 +1,28 @@ +{ + "versions" : { + "values" : [ + { + "id" : "v1.0", + "status" : "DEPRECATED", + "updated" : "2009-10-09T11:30:00Z", + "links": [ + { + "rel" : "self", + "href" : "http://idm.api.openstack.org/v1.0/" + } + ] + }, + { + "id" : "v1.1", + "status" : "CURRENT", + "updated" : "2010-12-12T18:30:02.25Z", + "links": [ + { + "rel" : "self", + "href" : "http://idm.api.openstack.org/v1.1/" + } + ] + } + ] + } +} diff --git a/docs/guide/src/docbkx/samples/versions.xml b/docs/guide/src/docbkx/samples/versions.xml new file mode 100644 index 00000000..7c3b1535 --- /dev/null +++ b/docs/guide/src/docbkx/samples/versions.xml @@ -0,0 +1,18 @@ +<?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://idm.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://idm.api.openstack.org/v1.1/"/> + </version> + +</versions> |
