+ '>
+]>
+
+ Cloud Identity Developer Guide
+
+
+
+
+
+
+
+ Rackspace Cloud
+
+
+
+ 2010
+ 2011
+ Rackspace Hosting, Inc.
+
+ API v1.0
+ Cloud Identity
+ 2011-04-11
+
+
+ Copyright details are filled in by the template.
+
+
+
+ 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.
+
+
+
+ Overview
+ 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:
+
+
+ Service Developers
+
+ Service developers are interested in writing client for Rackspace IdM service.
+
+
+
+
+ This Guide assumes the reader is familiar with RESTful web services, HTTP/1.1, and JSON
+ and/or XML serialization formats.
+
+
+ Concepts
+ The IdM system has several key concepts that are important to understand:
+
+ Token
+
+ 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.
+
+
+
+ Tenant
+
+ Depending on the operator, a tenant may map to a customer,
+ account, organization, or project. Users are always placed
+ under a tenant.
+
+
+
+ User
+
+ Individuals under a tenant. Users have a login and may be
+ assigned tokens to access resources.
+
+
+
+ Tenant Group
+
+ 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.
+
+
+
+ Global Group
+
+ 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.
+
+
+
+
+ General API Information
+ 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.
+
+ Request/Response Types
+ The IdM API supports both the JSON and XML data serialization formats. The request
+ format is specified using the Content-Type header and is required for
+ operations that have a request body. The response format can be specified in requests using
+ either the Accept header or adding an .xml or .json
+ 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 Accept
+ header and a query extension, the query extension takes precedence.
+
+
Response Types
+
+
+
Format
+
Accept Header
+
Query Extension
+
Default
+
+
+
+
+
JSON
+
application/json
+
.json
+
Yes
+
+
+
XML
+
application/xml
+
.xml
+
No
+
+
+
+
+ JSON Request with Headers
+
+
+
+
+
+
+
+
+ XML Response with Headers
+
+
+
+
+
+
+
+
+
+ Content Compression
+ 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
+ Accept-Encoding header on the request from the client and indicated by the
+ Content-Encoding header in the server response. Unless the header is
+ explicitly set, encoding defaults to disabled.
+
+
Compression Headers
+
+
+
Header Type
+
Name
+
Value
+
+
+
+
+
HTTP/1.1 Request
+
Accept-Encoding
+
gzip
+
+
+
HTTP/1.1 Response
+
Content-Encoding
+
gzip
+
+
+
+
+
+ Paginated Collections
+
+ 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 limit and
+ marker can be set in the URI
+ (e.g.?limit=100&marker=1234).
+ The marker 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
+ limit parameter sets the page
+ size. Both parameters are optional. If the client
+ requests a limit beyond that
+ which is supported by the deployment an overLimit
+ (413) fault may be thrown. A
+ marker with an invalid ID will return an itemNotFound
+ (404) fault.
+
+
+
+ Paginated collections never return itemNotFound
+ (404) faults when the
+ collection is empty — clients should expect
+ an empty collection.
+
+
+
+ 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 limit
+ 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 marker parameter.
+
+
+ Tenant Collection, First Page: XML
+
+
+
+
+
+ Tenant Collection, First Page: JSON
+
+
+
+ Tenant Collection, Second Page: XML
+
+
+
+
+
+ Tenant Collection, Second Page: JSON
+
+
+
+ Tenant Collection, Last Page: XML
+
+
+
+
+
+ Tenant Collection, Last Page: JSON
+
+
+
+ In the JSON representation, paginated collections contain
+ a values property that contains the
+ items in the collections. Links are accessed via the
+ links 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.
+
+
+ Paginated Groups in a User: XML
+
+
+
+
+
+ Paginated Groups in an User: JSON
+
+
+
+
+ Versions
+
+ 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 Accept
+ or Content-Type 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.
+
+
+ Request with MIME type versioning
+
+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
+
+
+
+ Request with URI versioning
+
+GET /v1.1/tenants HTTP/1.1
+Host: idm.api.openstack.org
+Accept: application/xml
+X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
+
+
+
+
+ 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.
+
+
+
+ If a request is made without a version specified in
+ the URI or via HTTP headers, then a multiple-choices
+ response (300) will follow
+ providing links and MIME types to available versions.
+
+
+ Multiple Choices Response: XML
+
+
+
+
+
+ Multiple Choices Response: JSON
+
+
+
+ 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
+ DEPRECATED. Providers should work with
+ developers and partners to ensure there is adequate
+ time to migrate to the new version before deprecated
+ versions are discontinued.
+
+
+ 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 Accept
+ header containing application/atom+xml or by adding a
+ .atom to the request URI. This allows standard Atom
+ clients to track version changes.
+
+
+ Versions List Request
+
+GET HTTP/1.1
+Host: idm.api.openstack.org
+
+
+ &CODES;200, 203
+ &ERROR_CODES; badRequest
+ (400), idmFault
+ (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Versions List Response: XML
+
+
+
+
+
+ Versions List Response: Atom
+
+
+
+
+
+ Versions List Response: JSON
+
+
+
+ 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 302
+ 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.
+
+
+ Version Details Request
+
+GET HTTP/1.1
+Host: idm.api.openstack.org/v1.1/
+
+
+ &CODES;200, 203
+ &ERROR_CODES; badRequest
+ (400), idmFault
+ (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Version Details Response: XML
+
+
+
+
+
+ Version Details Response: Atom
+
+
+
+
+
+ Version Details Response: JSON
+
+
+
+ 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).
+
+
+ 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.
+
+
+
+ Extensions
+
+ 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.
+
+
+
+
+
Verb
+
URI
+
Description
+
+
+
+
+
&GET;
+
/extensions
+
Returns a list of available extensions
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden (403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Each extension is identified by two unique identifiers, a
+ namespace and an
+ alias. Additionally an extension
+ contains documentation links in various formats.
+
+
+ Extensions Response: XML
+
+
+
+
+
+ Extensions Response: JSON
+
+
+
+ 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
+ (404) response.
+
+
+
+
+
Verb
+
URI
+
Description
+
+
+
+
+
&GET;
+
/extensions/alias
+
Return details of a single extension
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden (403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Extension Response: xml
+
+
+
+
+
+ Extensions Response: JSON
+
+
+
+ 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 and
+
+ is defined in the RS-META namespace. Extended
+ headers are always prefixed with X- followed
+ by the alias and a dash: (X-RS-META-HEADER1).
+ Parameters must be prefixed with the extension alias
+ followed by a colon.
+
+
+
+ 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.
+
+
+
+ Extended User Response: XML
+
+
+
+
+
+ Extended User Response: JSON
+
+
+
+
+ Faults
+ 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.
+
+ XML Fault Response
+
+
+
+
+
+ JSON Fault Response
+
+
+
+
+ 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).
+ 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.
+
+ XML Not Found Fault
+
+
+
+
+
+ JSON Not Found Fault
+
+
+
+
+ The following is a list of possible fault types along with their associated error
+ codes.
+
+
Fault Types
+
+
+
Fault Element
+
Associated Error Code
+
Expected in All Requests
+
+
+
+
+
idmFault
+
500, 400
+
✓
+
+
+
serviceUnavailable
+
503
+
✓
+
+
+
badRequest
+
400
+
✓
+
+
+
unauthorized
+
401
+
✓
+
+
+
overLimit
+
413
+
+
+
+
userDisabled
+
403
+
+
+
+
forbidden
+
403
+
+
+
+
itemNotFound
+
404
+
+
+
+
tenantConflict
+
409
+
+
+
+
usernameConflict
+
409
+
+
+
+
groupConflict
+
409
+
+
+
+
+ From an XML schema perspective, all API faults are extensions of the base fault type
+ idmFault. When working with a system that binds XML to actual classes (such
+ as JAXB), one should be capable of using idmFault as a “catch-all” if
+ there's no interest in distinguishing between individual fault types.
+
+
+
+ Service Developer Operations
+
+ Overview
+ The operations described in this chapter allow service developers to get and validate
+ access tokens, manage users, and manage tenants.
+
+
+ Token Operations
+
+ Authenticate
+
+ &URI_REFHEAD;
+
+
+
&POST;
+
/token
+
Authenticate to generate a token and a service catalog.
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), userDisabled
+ (403), badRequest (400), idmFault
+ (500), serviceUnavailable(503)
+
+ TenantID is optional and may be used to specify that a
+ token should be returned that has access for resources
+ that particular tenant.
+
+
+ XML Auth Request
+
+
+
+
+
+ JSON Auth Request
+
+
+
+
+
+ XML Auth Response
+
+
+
+
+
+ JSON Auth Response
+
+
+
+
+
+
+ Validate Token
+
+ &LONG_URI_REFHEAD;
+
+
+
&GET;
+
/token/tokenId?belongsTo=tenantId
+
Check that a token is valid and that it belongs to a particular user
+ and return the permissions relevant to a particular client.
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401),
+ forbidden(403), overLimit(413),
+ badRequest (400), idmFault (500),
+ serviceUnavailable(503)
+
+ The operation returns a list of tenants. The list may be
+ filtered to return only those tenants which the caller has
+ access to.
+
+ &NO_REQUEST;
+
+ XML Tenants Response
+
+
+
+
+
+ JSON Tenants Response
+
+
+
+
+
+
+ Get a Tenant
+
+ &LONG_URI_REFHEAD;
+
+
Create a new user. If a blank password is passed in, the API generates
+ a random password for the user.
+
+
+
+ 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.
+ &CODES;201
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), passwordValidation(400), forbidden
+ (403), itemNotFound (404),
+ usernameConflict(409), emailConflict(409),
+ idmFault (500),
+ serviceUnavailable(503)
+
+ XML User Request
+
+
+
+
+
+ JSON User Request
+
+
+
+
+
+ XML User Response
+
+
+
+
+
+ JSON User Response
+
+
+
+
+
+
+ Get a User
+
+ &LONG_URI_REFHEAD;
+
+
+
+
+ &CODES;200
+ &ERROR_CODES; unauthorized (401),
+ forbidden(403), itemNotFound(404),
+ badRequest (400), idmFault (500),
+ serviceUnavailable(503)
+
+ XML Group Update Request
+
+
+
+
+
+ JSON Group Update Request
+
+
+
+
+
+ XML Group Update Response
+
+
+
+
+
+ JSON Group Update Response
+
+
+
+
+
+
+ Delete a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&DELETE;
+
/groups/groupId
+
Delete a group.
+
+
+
+ &CODES;204
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden (403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+
+ Get Users in a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&GET;
+
/groups/groupId/users
+
Gets a list of users in a group.
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden(403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ XML Group User List Response
+
+
+
+
+
+ JSON Group User List Response
+
+
+
+
+
+
+ Add a User to a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&PUT;
+
/groups/groupId/users
+
Add a user to a group.
+
+
+
+ &CODES;200
+ &ERROR_CODES; unauthorized
+ (401), badRequest
+ (400), forbidden
+ (403), itemNotFound
+ (404), usernameConflict
+ (409), emailConflict
+ (409), idmFault
+ (500), serviceUnavailable
+ (503)
+ &NO_REQUEST;
+
+
+ Remove a User from a Group
+
+ &LONG_URI_REFHEAD;
+
+
+ '>
+]>
+
+ Cloud Identity Developer Guide
+
+
+
+
+
+
+
+ Rackspace Cloud
+
+
+
+ 2010
+ 2011
+ Rackspace Hosting, Inc.
+
+ API v1.0
+ Cloud Identity
+ 2011-04-11
+
+
+ Copyright details are filled in by the template.
+
+
+
+ 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.
+
+
+
+ Overview
+ 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:
+
+
+ Service Developers
+
+ Service developers are interested in writing client for Rackspace IdM service.
+
+
+
+
+ This Guide assumes the reader is familiar with RESTful web services, HTTP/1.1, and JSON
+ and/or XML serialization formats.
+
+
+ Concepts
+ The IdM system has several key concepts that are important to understand:
+
+ Token
+
+ 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.
+
+
+
+ Tenant
+
+ Depending on the operator, a tenant may map to a customer,
+ account, organization, or project. Users are always placed
+ under a tenant.
+
+
+
+ User
+
+ Individuals under a tenant. Users have a login and may be
+ assigned tokens to access resources.
+
+
+
+ Tenant Group
+
+ 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.
+
+
+
+ Global Group
+
+ 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.
+
+
+
+
+ General API Information
+ 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.
+
+ Request/Response Types
+ The IdM API supports both the JSON and XML data serialization formats. The request
+ format is specified using the Content-Type header and is required for
+ operations that have a request body. The response format can be specified in requests using
+ either the Accept header or adding an .xml or .json
+ 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 Accept
+ header and a query extension, the query extension takes precedence.
+
+
Response Types
+
+
+
Format
+
Accept Header
+
Query Extension
+
Default
+
+
+
+
+
JSON
+
application/json
+
.json
+
Yes
+
+
+
XML
+
application/xml
+
.xml
+
No
+
+
+
+
+ JSON Request with Headers
+
+
+
+
+
+
+
+
+ XML Response with Headers
+
+
+
+
+
+
+
+
+
+ Content Compression
+ 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
+ Accept-Encoding header on the request from the client and indicated by the
+ Content-Encoding header in the server response. Unless the header is
+ explicitly set, encoding defaults to disabled.
+
+
Compression Headers
+
+
+
Header Type
+
Name
+
Value
+
+
+
+
+
HTTP/1.1 Request
+
Accept-Encoding
+
gzip
+
+
+
HTTP/1.1 Response
+
Content-Encoding
+
gzip
+
+
+
+
+
+ Paginated Collections
+
+ 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 limit and
+ marker can be set in the URI
+ (e.g.?limit=100&marker=1234).
+ The marker 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
+ limit parameter sets the page
+ size. Both parameters are optional. If the client
+ requests a limit beyond that
+ which is supported by the deployment an overLimit
+ (413) fault may be thrown. A
+ marker with an invalid ID will return an itemNotFound
+ (404) fault.
+
+
+
+ Paginated collections never return itemNotFound
+ (404) faults when the
+ collection is empty — clients should expect
+ an empty collection.
+
+
+
+ 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 limit
+ 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 marker parameter.
+
+
+ Tenant Collection, First Page: XML
+
+
+
+
+
+ Tenant Collection, First Page: JSON
+
+
+
+ Tenant Collection, Second Page: XML
+
+
+
+
+
+ Tenant Collection, Second Page: JSON
+
+
+
+ Tenant Collection, Last Page: XML
+
+
+
+
+
+ Tenant Collection, Last Page: JSON
+
+
+
+ In the JSON representation, paginated collections contain
+ a values property that contains the
+ items in the collections. Links are accessed via the
+ links 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.
+
+
+ Paginated Groups in a User: XML
+
+
+
+
+
+ Paginated Groups in an User: JSON
+
+
+
+
+ Versions
+
+ 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 Accept
+ or Content-Type 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.
+
+
+ Request with MIME type versioning
+
+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
+
+
+
+ Request with URI versioning
+
+GET /v1.1/tenants HTTP/1.1
+Host: idm.api.openstack.org
+Accept: application/xml
+X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
+
+
+
+
+ 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.
+
+
+
+ If a request is made without a version specified in
+ the URI or via HTTP headers, then a multiple-choices
+ response (300) will follow
+ providing links and MIME types to available versions.
+
+
+ Multiple Choices Response: XML
+
+
+
+
+
+ Multiple Choices Response: JSON
+
+
+
+ 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
+ DEPRECATED. Providers should work with
+ developers and partners to ensure there is adequate
+ time to migrate to the new version before deprecated
+ versions are discontinued.
+
+
+ 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 Accept
+ header containing application/atom+xml or by adding a
+ .atom to the request URI. This allows standard Atom
+ clients to track version changes.
+
+
+ Versions List Request
+
+GET HTTP/1.1
+Host: idm.api.openstack.org
+
+
+ &CODES;200, 203
+ &ERROR_CODES; badRequest
+ (400), idmFault
+ (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Versions List Response: XML
+
+
+
+
+
+ Versions List Response: Atom
+
+
+
+
+
+ Versions List Response: JSON
+
+
+
+ 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 302
+ 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.
+
+
+ Version Details Request
+
+GET HTTP/1.1
+Host: idm.api.openstack.org/v1.1/
+
+
+ &CODES;200, 203
+ &ERROR_CODES; badRequest
+ (400), idmFault
+ (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Version Details Response: XML
+
+
+
+
+
+ Version Details Response: Atom
+
+
+
+
+
+ Version Details Response: JSON
+
+
+
+ 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).
+
+
+ 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.
+
+
+
+ Extensions
+
+ 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.
+
+
+
+
+
Verb
+
URI
+
Description
+
+
+
+
+
&GET;
+
/extensions
+
Returns a list of available extensions
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden (403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Each extension is identified by two unique identifiers, a
+ namespace and an
+ alias. Additionally an extension
+ contains documentation links in various formats.
+
+
+ Extensions Response: XML
+
+
+
+
+
+ Extensions Response: JSON
+
+
+
+ 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
+ (404) response.
+
+
+
+
+
Verb
+
URI
+
Description
+
+
+
+
+
&GET;
+
/extensions/alias
+
Return details of a single extension
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden (403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ Extension Response: xml
+
+
+
+
+
+ Extensions Response: JSON
+
+
+
+ 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 and
+
+ is defined in the RS-META namespace. Extended
+ headers are always prefixed with X- followed
+ by the alias and a dash: (X-RS-META-HEADER1).
+ Parameters must be prefixed with the extension alias
+ followed by a colon.
+
+
+
+ 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.
+
+
+
+ Extended User Response: XML
+
+
+
+
+
+ Extended User Response: JSON
+
+
+
+
+ Faults
+ 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.
+
+ XML Fault Response
+
+
+
+
+
+ JSON Fault Response
+
+
+
+
+ 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).
+ 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.
+
+ XML Not Found Fault
+
+
+
+
+
+ JSON Not Found Fault
+
+
+
+
+ The following is a list of possible fault types along with their associated error
+ codes.
+
+
Fault Types
+
+
+
Fault Element
+
Associated Error Code
+
Expected in All Requests
+
+
+
+
+
idmFault
+
500, 400
+
✓
+
+
+
serviceUnavailable
+
503
+
✓
+
+
+
badRequest
+
400
+
✓
+
+
+
unauthorized
+
401
+
✓
+
+
+
overLimit
+
413
+
+
+
+
userDisabled
+
403
+
+
+
+
forbidden
+
403
+
+
+
+
itemNotFound
+
404
+
+
+
+
tenantConflict
+
409
+
+
+
+
usernameConflict
+
409
+
+
+
+
groupConflict
+
409
+
+
+
+
+ From an XML schema perspective, all API faults are extensions of the base fault type
+ idmFault. When working with a system that binds XML to actual classes (such
+ as JAXB), one should be capable of using idmFault as a “catch-all” if
+ there's no interest in distinguishing between individual fault types.
+
+
+
+ Service Developer Operations
+
+ Overview
+ The operations described in this chapter allow service developers to get and validate
+ access tokens, manage users, and manage tenants.
+
+
+ Token Operations
+
+ Authenticate
+
+ &URI_REFHEAD;
+
+
+
&POST;
+
/token
+
Authenticate to generate a token and a service catalog.
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), userDisabled
+ (403), badRequest (400), idmFault
+ (500), serviceUnavailable(503)
+
+ TenantID is optional and may be used to specify that a
+ token should be returned that has access for resources
+ that particular tenant.
+
+
+ XML Auth Request
+
+
+
+
+
+ JSON Auth Request
+
+
+
+
+
+ XML Auth Response
+
+
+
+
+
+ JSON Auth Response
+
+
+
+
+
+
+ Validate Token
+
+ &LONG_URI_REFHEAD;
+
+
+
&GET;
+
/token/tokenId?belongsTo=tenantId
+
Check that a token is valid and that it belongs to a particular user
+ and return the permissions relevant to a particular client.
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401),
+ forbidden(403), overLimit(413),
+ badRequest (400), idmFault (500),
+ serviceUnavailable(503)
+
+ The operation returns a list of tenants. The list may be
+ filtered to return only those tenants which the caller has
+ access to.
+
+ &NO_REQUEST;
+
+ XML Tenants Response
+
+
+
+
+
+ JSON Tenants Response
+
+
+
+
+
+
+ Get a Tenant
+
+ &LONG_URI_REFHEAD;
+
+
Create a new user. If a blank password is passed in, the API generates
+ a random password for the user.
+
+
+
+ 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.
+ &CODES;201
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), passwordValidation(400), forbidden
+ (403), itemNotFound (404),
+ usernameConflict(409), emailConflict(409),
+ idmFault (500),
+ serviceUnavailable(503)
+
+ XML User Request
+
+
+
+
+
+ JSON User Request
+
+
+
+
+
+ XML User Response
+
+
+
+
+
+ JSON User Response
+
+
+
+
+
+
+ Get a User
+
+ &LONG_URI_REFHEAD;
+
+
+
+
+ &CODES;200
+ &ERROR_CODES; unauthorized (401),
+ forbidden(403), itemNotFound(404),
+ badRequest (400), idmFault (500),
+ serviceUnavailable(503)
+
+ XML Group Update Request
+
+
+
+
+
+ JSON Group Update Request
+
+
+
+
+
+ XML Group Update Response
+
+
+
+
+
+ JSON Group Update Response
+
+
+
+
+
+
+ Delete a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&DELETE;
+
/groups/groupId
+
Delete a group.
+
+
+
+ &CODES;204
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden (403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+
+ Get Users in a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&GET;
+
/groups/groupId/users
+
Gets a list of users in a group.
+
+
+
+ &CODES;200, 203
+ &ERROR_CODES; unauthorized (401), badRequest
+ (400), forbidden(403), itemNotFound
+ (404), idmFault (500),
+ serviceUnavailable(503)
+ &NO_REQUEST;
+
+ XML Group User List Response
+
+
+
+
+
+ JSON Group User List Response
+
+
+
+
+
+
+ Add a User to a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&PUT;
+
/groups/groupId/users
+
Add a user to a group.
+
+
+
+ &CODES;200
+ &ERROR_CODES; unauthorized
+ (401), badRequest
+ (400), forbidden
+ (403), itemNotFound
+ (404), usernameConflict
+ (409), emailConflict
+ (409), idmFault
+ (500), serviceUnavailable
+ (503)
+ &NO_REQUEST;
+
+
+ Remove a User from a Group
+
+ &LONG_URI_REFHEAD;
+
+
+
&DELETE;
+
/groups/groupId/users
+
Remove a user from a group.
+
+
+
+ &CODES;204
+ &ERROR_CODES; unauthorized
+ (401), badRequest
+ (400), forbidden
+ (403), itemNotFound
+ (404), usernameConflict
+ (409), emailConflict
+ (409), idmFault
+ (500), serviceUnavailable
+ (503)
+ &NO_REQUEST;
+
+
+
+
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 0000000000..3051a2f937
--- /dev/null
+++ b/docs/guide/src/docbkx/img/Check_mark_23x20_02.svg
@@ -0,0 +1,60 @@
+
+
+
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 0000000000..ddbe52dae8
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/add-baseurl-input.xml
@@ -0,0 +1,11 @@
+
+
+
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 0000000000..7dd65a082d
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/add-baseurlRef-input.xml
@@ -0,0 +1,6 @@
+
+
+
diff --git a/docs/guide/src/docbkx/samples/addclient.json b/docs/guide/src/docbkx/samples/addclient.json
new file mode 100644
index 0000000000..7a279e23d2
--- /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 0000000000..85cf6b7269
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/addclient.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ 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 0000000000..76555364aa
--- /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 0000000000..f4631ad00d
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/addedclient.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ 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 0000000000..0566f29b95
--- /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 0000000000..651152516c
--- /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 0000000000..0b4f225951
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/addfirstuserresponse.xml
@@ -0,0 +1,8 @@
+
+
+
\ 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 0000000000..3bf8ca3b58
--- /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 0000000000..60816acdcc
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/adduser.xml
@@ -0,0 +1,4 @@
+
+
diff --git a/docs/guide/src/docbkx/samples/adduserresponse.xml b/docs/guide/src/docbkx/samples/adduserresponse.xml
new file mode 100644
index 0000000000..add18f5277
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/adduserresponse.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/docs/guide/src/docbkx/samples/auth.json b/docs/guide/src/docbkx/samples/auth.json
new file mode 100644
index 0000000000..fe368811e7
--- /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 0000000000..3558798ca1
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/auth.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..67b06304cf
--- /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 0000000000..fbdf56336b
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/auth_credentials.xml
@@ -0,0 +1,5 @@
+
+
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 0000000000..257969914a
--- /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 0000000000..275a40b69f
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/bad_request.xml
@@ -0,0 +1,7 @@
+
+
+
+ Bad Request!
+ Error Details...
+
\ 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 0000000000..30e56d45cf
--- /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 0000000000..a33c34e872
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/baseURLRefs.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
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 0000000000..65bc55c300
--- /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 0000000000..ab90847a15
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/base_url_ref_response.xml
@@ -0,0 +1,6 @@
+
+
+
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 0000000000..41ca4de6aa
--- /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 0000000000..8310eec4bd
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/base_url_response.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ 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 0000000000..284bccdb2a
--- /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 0000000000..eb52f45f15
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/base_urls_response.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/docs/guide/src/docbkx/samples/choices.json b/docs/guide/src/docbkx/samples/choices.json
new file mode 100644
index 0000000000..6b0b260785
--- /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 0000000000..a9a91ecefe
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/choices.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..96f07aaa14
--- /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 0000000000..dd881ca525
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/client-credentials-response.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/docs/guide/src/docbkx/samples/client.json b/docs/guide/src/docbkx/samples/client.json
new file mode 100644
index 0000000000..faef1dd086
--- /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 0000000000..e2a621bcf2
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/client.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ 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 0000000000..75e8185962
--- /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 0000000000..55ef045676
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/clientGroup.xml
@@ -0,0 +1,5 @@
+
+
+
\ 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 0000000000..b8c62c93e3
--- /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 0000000000..e761dc94a9
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/clientGroups.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ 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 0000000000..410afe9970
--- /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 0000000000..8c73be4845
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/clientWithOnlySoftDeleted.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..3de72a8fa2
--- /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 0000000000..c9eba3bd38
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/client_credentials.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..9b0640156d
--- /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 0000000000..0694d96e85
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/clientname_conflict.xml
@@ -0,0 +1,7 @@
+
+
+
+ Clientname already taken.
+ Error Details...
+
\ 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 0000000000..3c5193eb2b
--- /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 0000000000..2d870f9b20
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/clients.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
\ 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 0000000000..7ff7ce3215
--- /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 0000000000..ea6a63dc92
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/customer.xml
@@ -0,0 +1,5 @@
+
+
+ A description...
+
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 0000000000..4fd3a6a823
--- /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 0000000000..5641ad3438
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/customer_conflict.xml
@@ -0,0 +1,7 @@
+
+
+
+ CustomerId already taken.
+ Error Details...
+
\ 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 0000000000..584c21a46f
--- /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 0000000000..9d7081d427
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/customerlock.xml
@@ -0,0 +1,4 @@
+
+
+ A NEW description...
+
diff --git a/docs/guide/src/docbkx/samples/customers.json b/docs/guide/src/docbkx/samples/customers.json
new file mode 100644
index 0000000000..7fb848f744
--- /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 0000000000..9b503ce273
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/customers.xml
@@ -0,0 +1,9 @@
+
+
+
+ A description...
+
+
+ A description...
+
+
diff --git a/docs/guide/src/docbkx/samples/definedpermissions.json b/docs/guide/src/docbkx/samples/definedpermissions.json
new file mode 100644
index 0000000000..f725235c9e
--- /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 0000000000..b8b28a5b3a
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/definedpermissions.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ 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 0000000000..aa9ba6efdc
--- /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 0000000000..c30052bc13
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/email_conflict.xml
@@ -0,0 +1,7 @@
+
+
+
+ Email Address already taken.
+ Error Details...
+
\ 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 0000000000..03f74dda62
--- /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 0000000000..07c185b1fd
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/ext-getuser.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ MetaValue1
+ MetaValue2
+
+
diff --git a/docs/guide/src/docbkx/samples/extension.json b/docs/guide/src/docbkx/samples/extension.json
new file mode 100644
index 0000000000..1d7e8bb3ed
--- /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 0000000000..8d932f4996
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/extension.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Allows associating arbritrary metadata with a user.
+
+
+
+
+
+
+
+
diff --git a/docs/guide/src/docbkx/samples/extensions.json b/docs/guide/src/docbkx/samples/extensions.json
new file mode 100644
index 0000000000..885387706f
--- /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 0000000000..ddd7e173f1
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/extensions.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ Adds the capability to reset a user's password. The user is
+ emailed when the password has been reset.
+
+
+
+
+
+
+
+ Allows associating arbritrary metadata with a user.
+
+
+
+
+
+
diff --git a/docs/guide/src/docbkx/samples/feed.xml b/docs/guide/src/docbkx/samples/feed.xml
new file mode 100644
index 0000000000..15603de1b0
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/feed.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ User, "mkovacs" was modified.
+ User, "mkovacs" was modified.
+
+ urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
+ 2003-12-13T18:30:02Z
+
+
+ User, "hueyly" was created.
+ User, "hueyly" was created.
+
+ urn:uuid:1225c695-cfb8-4ebb-aaaa-920474efa234
+ 2003-12-13T18:29:20Z
+
+
\ 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 0000000000..48b23ea56c
--- /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 0000000000..231238058e
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/forbidden.xml
@@ -0,0 +1,7 @@
+
+
+
+ Forbidden
+ Error Details...
+
\ 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 0000000000..e8d2114aa7
--- /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 0000000000..53a7a1a8c1
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/forgot_password.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
\ 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 0000000000..544d460079
--- /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 0000000000..2b513072ed
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/getuser-1.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
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 0000000000..4ba14bbc9f
--- /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 0000000000..26c12ede2b
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/getuser-with-mosso-id.xml
@@ -0,0 +1,21 @@
+
+
+
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 0000000000..4ba14bbc9f
--- /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 0000000000..26c12ede2b
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/getuser-with-nast-id.xml
@@ -0,0 +1,21 @@
+
+
+
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 0000000000..4ba14bbc9f
--- /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 0000000000..5e92fb9c74
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/getuser-with-username.xml
@@ -0,0 +1,21 @@
+
+
+
diff --git a/docs/guide/src/docbkx/samples/getuser.json b/docs/guide/src/docbkx/samples/getuser.json
new file mode 100644
index 0000000000..b9d00949d9
--- /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 0000000000..095db4efab
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/getuser.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/docs/guide/src/docbkx/samples/globalgroup.json b/docs/guide/src/docbkx/samples/globalgroup.json
new file mode 100644
index 0000000000..8c524d61d6
--- /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 0000000000..387611c9f9
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/globalgroup.xml
@@ -0,0 +1,5 @@
+
+
+
\ 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 0000000000..523bb2229d
--- /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 0000000000..c272f37059
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/globalgroups.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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 0000000000..8269646e4b
--- /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 0000000000..07ca960d87
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/grantedpermissions.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ 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 0000000000..4f5a15f75f
--- /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 0000000000..fbba3c61cb
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/group-create.xml
@@ -0,0 +1,5 @@
+
+
+ A Description of the 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 0000000000..004fa36863
--- /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 0000000000..1e10d24a50
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/group-updated-nt.xml
@@ -0,0 +1,5 @@
+
+
+ A New description of the 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 0000000000..da20dac5b4
--- /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 0000000000..991a6b1e8e
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/group-updated.xml
@@ -0,0 +1,5 @@
+
+
+ A New description of the group...
+
diff --git a/docs/guide/src/docbkx/samples/group.json b/docs/guide/src/docbkx/samples/group.json
new file mode 100644
index 0000000000..22efc41f68
--- /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 0000000000..ba3063ae4f
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/group.xml
@@ -0,0 +1,5 @@
+
+
+ A Description of the 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 0000000000..b183edac5c
--- /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 0000000000..7dd515aa9a
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/groups-nt.xml
@@ -0,0 +1,9 @@
+
+
+
+ A Description of the group...
+
+
+ Another description...
+
+
diff --git a/docs/guide/src/docbkx/samples/groups.json b/docs/guide/src/docbkx/samples/groups.json
new file mode 100644
index 0000000000..1c6f6c0352
--- /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 0000000000..3f5ba19aa8
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/groups.xml
@@ -0,0 +1,9 @@
+
+
+
+ A Description of the group...
+
+
+ Another description...
+
+
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 0000000000..84e3908e64
--- /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 0000000000..e0f695f25b
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/idm_fault.xml
@@ -0,0 +1,6 @@
+
+
+ Fault
+ Error Details...
+
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 0000000000..dda88a59b7
--- /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 0000000000..f967b76a69
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/item_not_found.xml
@@ -0,0 +1,6 @@
+
+
+ Item not found.
+ Error Details...
+
diff --git a/docs/guide/src/docbkx/samples/methodnotallowedfault.json b/docs/guide/src/docbkx/samples/methodnotallowedfault.json
new file mode 100644
index 0000000000..ad9cec4b2a
--- /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 0000000000..0106857212
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/methodnotallowedfault.xml
@@ -0,0 +1,7 @@
+
+
+
+ Method Not Allowed
+ Error Details...
+
\ 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 0000000000..a257f72ea0
--- /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 0000000000..9d1330fc21
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/missing_username.xml
@@ -0,0 +1,7 @@
+
+
+
+ What username?
+ Error Details...
+
\ 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 0000000000..e071f01c46
--- /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 0000000000..6bce8a033e
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/mosso-id-authentication-response.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 0000000000..1735233127
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/mossoCredentials.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/docs/guide/src/docbkx/samples/nastCredentials.xml b/docs/guide/src/docbkx/samples/nastCredentials.xml
new file mode 100644
index 0000000000..b478c3e651
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/nastCredentials.xml
@@ -0,0 +1,5 @@
+
+
+
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 0000000000..4650969a83
--- /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 0000000000..d13922e7c1
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/password_recovery.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ 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 0000000000..fe03ec4a1f
--- /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 0000000000..7803822873
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/password_rule.xml
@@ -0,0 +1,6 @@
+
+
+
\ 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 0000000000..1c538dcebe
--- /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 0000000000..3e17ddab44
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/password_rule_result.xml
@@ -0,0 +1,7 @@
+
+
+
\ 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 0000000000..4a811cf40a
--- /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 0000000000..8a48eb7006
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/password_rule_results.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ 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 0000000000..d65c3f9fcc
--- /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 0000000000..e6375876c2
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/password_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ 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 0000000000..3d4d86be14
--- /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 0000000000..a7619130f3
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/password_validation.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
\ 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 0000000000..828289bbab
--- /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 0000000000..d4316dc4b7
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/passwordrotation.xml
@@ -0,0 +1,6 @@
+
+
+
\ 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 0000000000..29b70594f4
--- /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 0000000000..efe6c3e879
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/passwordvalidationfault.xml
@@ -0,0 +1,7 @@
+
+
+
+ Password Failed Validation
+ Error Details...
+
\ 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 0000000000..cb7b261cd2
--- /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 0000000000..d8157aa1a6
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/permission.xml
@@ -0,0 +1,7 @@
+
+
+POST /customers
\ 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 0000000000..aef0cd9d11
--- /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 0000000000..84c2de6066
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/permissions.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 0000000000..38cb9e1f0e
--- /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 0000000000..187b91221a
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/reset_user_password.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..7eaf859be8
--- /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 0000000000..1710f51ce8
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/resourceId_conflict.xml
@@ -0,0 +1,7 @@
+
+
+
+ ResourceId already taken.
+ Error Details...
+
\ 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 0000000000..bc4bb59da1
--- /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 0000000000..3c91848d8c
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/role.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..465f36b107
--- /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 0000000000..e8b57c0a04
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/roles.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ 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 0000000000..a46470766a
--- /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 0000000000..0b08f684ac
--- /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 0000000000..6e6f6533a4
--- /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 0000000000..0cdb9222de
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/service-catalog-response.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
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 0000000000..6f45f1c89b
--- /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 0000000000..67101816db
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/tenants-1.xml
@@ -0,0 +1,10 @@
+
+
+
+ A description...
+
+
+
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 0000000000..7cb3ca6be7
--- /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 0000000000..7be4f537e7
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/tenants-2.xml
@@ -0,0 +1,13 @@
+
+
+
+ A description...
+
+
+
+
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 0000000000..febcf225a1
--- /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 0000000000..5e5b49fab1
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/tenants-3.xml
@@ -0,0 +1,10 @@
+
+
+
+ A description...
+
+
+
diff --git a/docs/guide/src/docbkx/samples/token.json b/docs/guide/src/docbkx/samples/token.json
new file mode 100644
index 0000000000..a25f1530f9
--- /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 0000000000..98b78611d2
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/token.xml
@@ -0,0 +1,5 @@
+
+
+
\ 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 0000000000..e969fc0ec9
--- /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 0000000000..6dad6bca2c
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/unauthorized.xml
@@ -0,0 +1,7 @@
+
+
+
+ Oh no you don't.
+ Error Details...
+
\ 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 0000000000..b91a23e7d5
--- /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 0000000000..ebd9f106d8
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/unavailable.xml
@@ -0,0 +1,6 @@
+
+
+ The IdM Service is Unavailable at the moment.
+ Error Details...
+
\ 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 0000000000..05df6a3a2b
--- /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 0000000000..8bcce9bf0a
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/updatedcustomer.xml
@@ -0,0 +1,5 @@
+
+
+ A NEW description...
+
diff --git a/docs/guide/src/docbkx/samples/updateduser.json b/docs/guide/src/docbkx/samples/updateduser.json
new file mode 100644
index 0000000000..73a67c6a7b
--- /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 0000000000..c11bc8fc7e
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/updateduser.xml
@@ -0,0 +1,4 @@
+
+
diff --git a/docs/guide/src/docbkx/samples/updateuser.json b/docs/guide/src/docbkx/samples/updateuser.json
new file mode 100644
index 0000000000..2e431d9a4e
--- /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 0000000000..7d1988e450
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/updateuser.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/docs/guide/src/docbkx/samples/user.json b/docs/guide/src/docbkx/samples/user.json
new file mode 100644
index 0000000000..1051172ce7
--- /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 0000000000..c252696df8
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/user.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ 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 0000000000..dc7b3f3bcb
--- /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 0000000000..16f73c5151
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/userGroups.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/guide/src/docbkx/samples/userWithOnlyLock.json b/docs/guide/src/docbkx/samples/userWithOnlyLock.json
new file mode 100644
index 0000000000..11d640e69c
--- /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 0000000000..42eecba2e6
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/userWithOnlyLock.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.json b/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.json
new file mode 100644
index 0000000000..bc3a14ff0b
--- /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 0000000000..6284eb549f
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/userWithOnlySoftDeleted.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..d4bd36c920
--- /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 0000000000..30e7b12717
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/userWithOnlyStatus.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..ff5dd33af7
--- /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 0000000000..24f8693572
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/user_api_key.xml
@@ -0,0 +1,3 @@
+
+
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 0000000000..dbcb997709
--- /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 0000000000..56dc27760f
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/user_credentials.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ 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 0000000000..5eeb83f247
--- /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 0000000000..9f6b528e5a
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/user_disabled.xml
@@ -0,0 +1,7 @@
+
+
+
+ The user has been disabled.
+ Error Details...
+
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 0000000000..1e1643b9e9
--- /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 0000000000..ba8a49cbd9
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/user_password.xml
@@ -0,0 +1,4 @@
+
+
+
\ 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 0000000000..e0a4a6a873
--- /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 0000000000..d1ab561092
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/user_secret.xml
@@ -0,0 +1,5 @@
+
+
+
\ 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 0000000000..4d03497d9a
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/usernameCredentials.xml
@@ -0,0 +1,5 @@
+
+
+
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 0000000000..e30c009d49
--- /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 0000000000..a3d3dbbcca
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/username_conflict.xml
@@ -0,0 +1,7 @@
+
+
+
+ Username already taken.
+ Error Details...
+
\ 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 0000000000..4bac51c98f
--- /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 0000000000..c30c1550f0
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/users.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/docs/guide/src/docbkx/samples/validatetoken.json b/docs/guide/src/docbkx/samples/validatetoken.json
new file mode 100644
index 0000000000..c472187366
--- /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 0000000000..b091c7af85
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/validatetoken.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
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 0000000000..8cf3dc88a5
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/version-atom.xml
@@ -0,0 +1,19 @@
+
+
+ About This Version
+ 2011-01-21T11:33:21-06:00
+ http://idm.api.openstack.org/v1.0/
+ Rackspacehttp://www.rackspace.com/
+
+
+ http://idm.api.openstack.org/v1.0/
+ Version v1.0
+ 2011-01-21T11:33:21-06:00
+
+
+
+ Version v1.0 CURRENT (2011-01-21T11:33:21-06:00)
+
+
diff --git a/docs/guide/src/docbkx/samples/version.json b/docs/guide/src/docbkx/samples/version.json
new file mode 100644
index 0000000000..74bae5bdac
--- /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 0000000000..4f499322ad
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/version.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000000..e75cf41676
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/versions-atom.xml
@@ -0,0 +1,22 @@
+
+
+ Available API Versions
+ 2010-12-12T18:30:02.25Z
+ http://idm.api.openstack.org/
+ Rackspacehttp://www.rackspace.com/
+
+
+ http://idm.api.openstack.org/v1.1/
+ Version v1.1
+ 2010-12-12T18:30:02.25Z
+
+ Version v1.1 CURRENT (2010-12-12T18:30:02.25Z)
+
+
+ http://idm.api.openstack.org/v1.0/
+ Version v1.0
+ 2009-10-09T11:30:00Z
+
+ Version v1.0 DEPRECATED (2009-10-09T11:30:00Z)
+
+
diff --git a/docs/guide/src/docbkx/samples/versions.json b/docs/guide/src/docbkx/samples/versions.json
new file mode 100644
index 0000000000..330a26e907
--- /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 0000000000..7c3b153560
--- /dev/null
+++ b/docs/guide/src/docbkx/samples/versions.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+