Moves wadls and docs to API repo, bug 928059

Please enter the commit message for your changes. Lines starting

Change-Id: I39cef24f69347a24a89a43861ad3c87251083d1c
This commit is contained in:
annegentle 2012-02-28 08:16:11 -06:00
parent 61fd0267d2
commit edaec6a102
242 changed files with 15229 additions and 775 deletions

View File

@ -33,7 +33,7 @@
</profiles>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<doctools.version>1.0.9-SNAPSHOT</doctools.version>
<doctools.version>1.0.11-SNAPSHOT</doctools.version>
</properties>
<dependencies>
@ -117,7 +117,7 @@
jar="${net.sourceforge.saxon:saxon:jar}"
fork="true">
<arg value="-u"/>
<arg value="-s:https://raw.github.com/openstack/keystone/master/keystone/content/admin/identity-admin.wadl"/>
<arg value="-s:src/docbkx/admin/identity-admin.wadl"/>
<arg value="-xsl:${project.build.directory}/generated-resources/cloud/normalizeWadl/normalizeWadl.xsl"/>
<arg value="-o:${project.build.directory}/generated-resources/xml/xslt/identity-admin.wadl"/>
</java>
@ -125,7 +125,7 @@
jar="${net.sourceforge.saxon:saxon:jar}"
fork="true">
<arg value="-u"/>
<arg value="-s:https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSADM-admin.wadl"/>
<arg value="-s:src/docbkx/admin/OS-KSADM-admin.wadl"/>
<arg value="-xsl:${project.build.directory}/generated-resources/cloud/normalizeWadl/normalizeWadl.xsl"/>
<arg value="-o:${project.build.directory}/generated-resources/xml/xslt/OS-KSADM-admin.wadl"/>
</java>
@ -134,7 +134,7 @@
jar="${net.sourceforge.saxon:saxon:jar}"
fork="true">
<arg value="-u"/>
<arg value="-s:https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSCATALOG-admin.wadl"/>
<arg value="-s:src/docbkx/admin/OS-KSCATALOG-admin.wadl"/>
<arg value="-xsl:${project.build.directory}/generated-resources/cloud/normalizeWadl/normalizeWadl.xsl"/>
<arg value="-o:${project.build.directory}/generated-resources/xml/xslt/OS-KSCATALOG-admin.wadl"/>
</java>
@ -143,7 +143,7 @@
jar="${net.sourceforge.saxon:saxon:jar}"
fork="true">
<arg value="-u"/>
<arg value="-s:https://raw.github.com/openstack/keystone/master/keystone/content/admin/RAX-KSKEY-admin.wadl"/>
<arg value="-s:src/docbkx/admin/RAX-KSKEY-admin.wadl"/>
<arg value="-xsl:${project.build.directory}/generated-resources/cloud/normalizeWadl/normalizeWadl.xsl"/>
<arg value="-o:${project.build.directory}/generated-resources/xml/xslt/RAX-KSKEY-admin.wadl"/>
</java>
@ -152,7 +152,7 @@
jar="${net.sourceforge.saxon:saxon:jar}"
fork="true">
<arg value="-u"/>
<arg value="-s:https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSEC2-admin.wadl"/>
<arg value="-s:src/docbkx/admin/OS-KSEC2-admin.wadl"/>
<arg value="-xsl:${project.build.directory}/generated-resources/cloud/normalizeWadl/normalizeWadl.xsl"/>
<arg value="-o:${project.build.directory}/generated-resources/xml/xslt/OS-KSEC2-admin.wadl"/>
</java>
@ -215,7 +215,7 @@
<postProcess>
<!-- Copies the figures to the correct location for webhelp -->
<copy todir="${basedir}/target/docbkx/webhelp/identity-dev-guide/figures">
<fileset dir="${basedir}/src/docbkx/img">
<fileset dir="${basedir}/src/docbkx/common/img">
<include name="**/*.svg" />
</fileset>
</copy>
@ -234,7 +234,7 @@
tofile="${basedir}/target/docbkx/webhelp/api/openstack-identity-service/2.0/identity-dev-guide-2.0.pdf"/>
<!-- Moves extension PDF and keeps name of the main dev guide -->
<copy failonerror="false"
<!--<copy failonerror="false"
file="${basedir}/target/docbkx/webhelp/api/openstack-identity-service/2.0/identity-dev-guide-2.0.pdf"
tofile="${basedir}/target/docbkx/webhelp/identity-dev-guide/identity-dev-guide.pdf"/>
<move failonerror="false"
@ -260,7 +260,7 @@
tofile="${basedir}/target/docbkx/webhelp/identitydevguide/admin/RAX-KSKEY-admin-devguide.pdf"/>
<move failonerror="false"
file="${basedir}/target/docbkx/pdf/OS-KSEC2-admin-devguide.pdf"
tofile="${basedir}/target/docbkx/webhelp/identitydevguide/admin/OS-KSEC2-admin-devguide.pdf"/>
tofile="${basedir}/target/docbkx/webhelp/identitydevguide/admin/OS-KSEC2-admin-devguide.pdf"/>-->
</postProcess>
</configuration>
</execution>
@ -270,7 +270,7 @@
<goal>generate-pdf</goal>
<goal>generate-webhelp</goal>
</goals>
<phase>generate-sources</phase>
<!-- <phase>generate-sources</phase>-->
<configuration>
<includes>HP-IDM/HP-IDM.xml</includes>
<trimWadlUriCount>1</trimWadlUriCount>
@ -295,8 +295,14 @@
<xincludeSupported>true</xincludeSupported>
<sourceDirectory>src/docbkx</sourceDirectory>
<includes>
identity-dev-guide.xml,,OS-KSADM-admin-devguide.xml,OS-KSCATALOG-admin-devguide.xml,RAX-KSKEY-service-devguide.xml,
OS-KSEC2-service-devguide.xml,RAX-KSGRP-service-devguide.xml,RAX-KSKEY-admin-devguide.xml,OS-KSEC2-admin-devguide.xml
common/identity-dev-guide.xml<!--,
OS-KS/OS-KSADM-admin-devguide.xml,
OS-KS/OS-KSCATALOG-admin-devguide.xml,
OS-KS/OS-KSEC2-admin-devguide.xml,
OS-KS/OS-KSEC2-service-devguide.xml,
RAX-KS/RAX-KSKEY-service-devguide.xml,
RAX-KS/RAX-KSGRP-service-devguide.xml,
RAX-KS/RAX-KSKEY-admin-devguide.xml-->
</includes>
<profileSecurity>reviewer</profileSecurity>
<branding>openstack</branding>

View File

@ -7,21 +7,21 @@
<!-- xmllint -noent HP-IDM-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "https://raw.github.com/openstack/keystone/master/keystone/content/common/common.ent">
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:HP-IDM="http://docs.openstack.org/identity/api/ext/HP-IDM/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0">
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:HP-IDM="http://docs.openstack.org/identity/api/ext/HP-IDM/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0">
<grammars>
<include href="https://raw.github.com/openstack/keystone/master/keystone/content/common/xsd/api.xsd"/>
<include href="https://raw.github.com/openstack/keystone/master/keystone/content/common/xsd/api-common.xsd"/>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
</grammars>
<!--*******************************************************-->
@ -35,7 +35,7 @@
<resource id="tokenById" path="{tokenId}">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
</param>
<param name="tokenId" style="template" type="xsd:string" required="true"/>
<param name="belongsTo" style="query" type="xsd:string" required="false"/>
<param name="HP-IDM-serviceId" style="query" type="xsd:string" required="false"/>
@ -50,7 +50,6 @@
<!-- All Methods -->
<!--*******************************************************-->
<!-- Token Operations -->
<method name="GET" id="validateToken">
<doc xml:lang="EN" title="Validate Token">
@ -89,15 +88,15 @@
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="../samples/validatetoken.xml"/>
</doc>
</representation>
<doc>
<xsdxt:code href="../samples/validatetoken.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../samples/validatetoken.json"/>
</doc>
</representation>
<doc>
<xsdxt:code href="../samples/validatetoken.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;

View File

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent HP-IDM-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:HP-IDM="http://docs.openstack.org/identity/api/ext/HP-IDM/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<resource id="tokens" path="tokens">
<resource id="tokenById" path="{tokenId}">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<param name="tokenId" style="template" type="xsd:string" required="true"/>
<param name="belongsTo" style="query" type="xsd:string" required="false"/>
<param name="HP-IDM-serviceId" style="query" type="xsd:string" required="false"/>
<method href="#validateToken"/>
<method href="#checkToken"/>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Token Operations -->
<method name="GET" id="validateToken">
<doc xml:lang="EN" title="Validate Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a supplied tenant
and services and return the permissions relevant to a particular client.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Valid tokens will exist in the
<code>/tokens/{tokenId}</code> path and invalid
tokens will not. In other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
If 'HP-IDM-serviceId' is provided, it must be a comma-separated string of
service IDs. If any of the service IDs is invalid or if there are no
roles associated with the service IDs, a user should expect a 401.
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope.
</p>
</doc>
</param>
<param name="HP-IDM-serviceId" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
If provided, filter the roles to be returned by the given service IDs.
</p>
</doc>
</param>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="../samples/validatetoken.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../samples/validatetoken.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="HEAD" id="checkToken">
<doc xml:lang="EN" title="Check Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a particular tenant and services
(For performance).
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Valid tokens will exist in the
<code>/tokens/{tokenId}</code> path and invalid
tokens will not. In other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
If `belongsTo` is provided, validates that a token has a specific tenant in scope.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
If 'HP-IDM-serviceId' is provided, it must be a comma-separated string of
service IDs. If any of the service ID is invalid or if there are no
roles associated with the service IDs, a user should expect a 401.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
No response body is returned for this method.
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope. (for performance).
</p>
</doc>
</param>
<param name="HP-IDM-serviceId" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Check the roles against the given service IDs.
</p>
</doc>
</param>
</request>
<response status="200 203"/>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -130,8 +130,8 @@
<term>Doc Link (PDF)</term>
<listitem>
<para>
<link xlink:href="https://github.com/openstack/keystone/raw/master/content/admin/HP-IDM-admin-devguide.pdf">
https://github.com/openstack/keystone/raw/master/content/admin/HP-IDM-admin-devguide.pdf
<link xlink:href="http://docs.openstack.org/api/openstack-identity/content/admin/HP-IDM-admin-devguide.pdf">
http://docs.openstack.org/api/openstack-identity/ext/admin/HP-IDM-admin-devguide.pdf
</link>
</para>
</listitem>
@ -140,8 +140,8 @@
<term>Doc Link (WADL)</term>
<listitem>
<para>
<link xlink:href="https://raw.github.com/openstack/keystone/master/keystone/content/admin/HP-IDM-admin.wadl">
https://raw.github.com/openstack/keystone/master/keystone/content/admin/HP-IDM-admin.wadl
<link xlink:href="../admin/HP-IDM-admin.wadl">
http://docs.openstack.org/api/openstack-identity/ext/admin/HP-IDM-admin.wadl
</link>
</para>
</listitem>
@ -186,7 +186,7 @@
<title>Extension Query Response: JSON</title>
<programlisting language="javascript"><xi:include href="samples/ext_query.json" parse="text"/></programlisting>
</example>
<section>
<section xml:id="hp-idm_doc-change-history">
<title>Document Change History</title>
<para>
The most recent changes to this document are described
@ -199,7 +199,7 @@
<?rax revhistory?>
</section>
</chapter>
<chapter>
<chapter xml:id="hp-idm_summary-of-changes">
<title>Summary of Changes</title>
<!--
Provide an overall summary of the extension. Give an
@ -216,14 +216,14 @@
</link>
for more details.
</para>
<section>
<section xml:id="hp-idm-new-headers">
<title>New Headers</title>
<!--
Describe any new headers, if any.
-->
<para>None.</para>
</section>
<section>
<section xml:id="hp-idm-new-faults">
<title>New Faults</title>
<!--
Describe any new faults, if any. Make sure you specify
@ -231,7 +231,7 @@
-->
<para>None.</para>
</section>
<section role="api-reference">
<section xml:id="hp-idm-new-resources" role="api-reference">
<title>New Resources</title>
<!--
List any new resources here. The api-reference role
@ -241,7 +241,7 @@
<para>
No new resource. HP-IDM Extension merely introduced a new optional HP-IDM-serviceId parameter for the validate token operations. The following APIs are affected.
</para>
<section>
<section xml:id="hp-idm-validate-tokens">
<title>Validate Tokens With The New Optional HP-IDM-serviceId Parameter</title>
<para>
The following are a list of operations on templates.
@ -257,14 +257,14 @@
</wadl:resources>
</section>
</section>
<section>
<section xml:id="hp-idm-new-actions">
<title>New Actions</title>
<!--
Describe any new actions if any.
-->
<para>None.</para>
</section>
<section>
<section xml:id="hp-idm-new-states">
<title>New States</title>
<!--
Describe any new states.

View File

@ -34,9 +34,9 @@ format="SVG" scale="60"/>
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0">
<!ENTITY CURRENTGUIDE "https://github.com/openstack/keystone/raw/master/keystone/content/admin/OS-KSADM-admin-devguide.pdf">
<!ENTITY CURRENTWADL "https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSADM-admin.wadl">
<!ENTITY EXTENSIONXSD "https://raw.github.com/openstack/keystone/master/keystone/content/common/xsd/OS-KSADM.xsd">
<!ENTITY CURRENTGUIDE "http://docs.openstack.org/api/openstack-identity/ext/admin/OS-KSADM-admin-devguide.pdf">
<!ENTITY CURRENTWADL "http://docs.openstack.org/api/openstack-identity/ext/admin/OS-KSADM-admin.wadl">
<!ENTITY EXTENSIONXSD "http://docs.openstack.org/api/openstack-identity/ext/admin/common/xsd/OS-KSADM.xsd">
]>
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
@ -172,6 +172,6 @@ format="SVG" scale="60"/>
</chapter>
<chapter xml:id="api_operations" role="api-reference">
<title>Extension Operations</title>
<xi:include href="identity-OS-KSADM-api.xml"/>
<xi:include href="../common/identity-OS-KSADM-api.xml"/>
</chapter>
</book>

View File

@ -0,0 +1,793 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSADM-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSADM="http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0 xsd/OS-KSADM.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/OS-KSADM.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<method href="#listUsers"/>
<method href="#addUser"/>
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<method href="#updateUser"/>
<method href="#deleteUser"/>
<resource id="userRoles" path="roles">
<resource id="user-roles-OS-KSADM" path="OS-KSADM">
<resource id="userRoleById" path="{roleId}">
<param name="roleId" style="template" type="xsd:string"/>
<method href="#addUserRole"/>
<method href="#deleteUserRole"/>
</resource>
</resource>
</resource>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="enabled" path="enabled">
<method href="#setUserEnabled"/>
</resource>
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="{credential-type}">
<param name="credentialType" style="template" type="OS-KSADM:extensibleCredentialsType" required="true"/>
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
<resource id="tenants" path="tenants">
<method href="#addTenant"/>
<resource id="tenantById" path="{tenantId}">
<param name="tenantId" style="template" type="xsd:string"/>
<method href="#updateTenant"/>
<method href="#deleteTenant"/>
<resource id="usersForTenant" path="users">
<method href="#listUsersForTenant"/>
<resource id="userForTenant" path="{userId}">
<param name="userId" style="template" type="xsd:string"/>
<resource id="userRolesForTenant" path="roles">
<resource id="tenant-user-role-OS-KSADM" path="OS-KSADM">
<resource id="userSpecificRoleForTenant" path="{roleId}">
<param name="roleId" style="template" type="xsd:string"/>
<method href="#addRolesToUserOnTenant"/>
<method href="#deleteRoleFromUserOnTenant"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
<resource id="role-service-OS-KSADM" path="OS-KSADM">
<resource id="roles" path="roles">
<method href="#getRoleByName"/>
<method href="#listRoles"/>
<method href="#addRole"/>
<resource id="roleId" path="{roleId}">
<param name="roleId" style="template" type="xsd:string"/>
<method href="#getRole"/>
<method href="#deleteRole"/>
</resource>
</resource>
<resource id="services" path="services">
<method href="#listServices"/>
<method href="#addService"/>
<method href="#getServiceByName"/>
<resource id="serviceId" path="{serviceId}">
<param name="serviceId" style="template" type="xsd:string"/>
<method href="#getService"/>
<method href="#deleteService"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Tenant Operations -->
<method name="POST" id="addTenant">
<doc xml:lang="EN" title="Add Tenant">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Creates a tenant.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">This call creates a tenant.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenantwithoutid.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenantwithoutid.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
</method>
<method name="POST" id="updateTenant">
<doc xml:lang="EN" title="Update Tenant">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Updates a tenant.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">This call updates a tenant.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenant.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="DELETE" id="deleteTenant">
<doc xml:lang="EN" title="Delete a Tenant">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Deletes a tenant.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">This call deletes a tenant.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listUsersForTenant">
<doc xml:lang="EN" title="List users for a Tenant.">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">Lists all the users for a tenant.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Lists all the users for a tenant.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:users">
<doc xml:lang="EN">
<xsdxt:code href="samples/users.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/users.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="PUT" id="addRolesToUserOnTenant">
<doc xml:lang="EN" title="Add roles to a user on a tenant.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a specific role to a user for a tenant.</p>
</doc>
<response status="201"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteRoleFromUserOnTenant">
<doc xml:lang="EN" title="Delete roles from a user on tenant.">
<p xmlns="http://www.w3.org/1999/xhtml">Deletes a specific role from a user for a tenant.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<!--User Operations-->
<method name="GET" id="listUsers">
<doc xml:lang="EN" title="List users">
<p xmlns="http://www.w3.org/1999/xhtml">List users.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:userss">
<doc xml:lang="EN">
<xsdxt:code href="samples/users.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/users.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addUser">
<doc xml:lang="EN" title="Add user">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="samples/userwithoutid.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/userwithoutid.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="POST" id="updateUser">
<doc xml:lang="EN" title="Update user">
<p xmlns="http://www.w3.org/1999/xhtml">Update a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUser">
<doc xml:lang="EN" title="Delete user">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a user.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<method name="PUT" id="setUserEnabled">
<doc xml:lang="EN" title="Set user enabled.">
<p xmlns="http://www.w3.org/1999/xhtml">Enable user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="samples/userwithenabledonly.xml"/>
</doc>
<param name="user" style="plain" path="/" type="OS-KSADM:UserWithOnlyEnabled"/></representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/userwithenabledonly.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<!--User Roles-->
<method name="PUT" id="addUserRole">
<doc xml:lang="EN" title="Add Global roles to a user.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a specific global role to a user.</p>
</doc>
<response status="201"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserRole">
<doc xml:lang="EN" title="Delete Global Roles on User.">
<p xmlns="http://www.w3.org/1999/xhtml">Deletes a specific global role from a user.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/passwordcredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<!--Roles-->
<method name="GET" id="listRoles">
<doc xml:lang="EN" title="List Roles">
<p xmlns="http://www.w3.org/1999/xhtml">List roles.</p>
</doc>
<request>
<param name="serviceId" style="query" required="false" type="xsd:string"/>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:roles">
<doc xml:lang="EN">
<xsdxt:code href="samples/roles.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/roles.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addRole">
<doc xml:lang="EN" title="Add Role">
<p xmlns="http://www.w3.org/1999/xhtml">Add a Role.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getRoleByName">
<doc xml:lang="EN" title="Get Role By Name">
<p xmlns="http://www.w3.org/1999/xhtml">Get a role by Name.</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getRole">
<doc xml:lang="EN" title="Get Role">
<p xmlns="http://www.w3.org/1999/xhtml">Get a role.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/role.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteRole">
<doc xml:lang="EN" title="Delete Role">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a role.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<!-- Service Operations -->
<method name="GET" id="listServices">
<doc xml:lang="EN" title="List Services">
<p xmlns="http://www.w3.org/1999/xhtml">List services.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSADM:services">
<doc xml:lang="EN">
<xsdxt:code href="samples/services.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/services.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getServiceByName">
<doc xml:lang="EN" title="Get Service">
<p xmlns="http://www.w3.org/1999/xhtml">Get a service by name.</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getService">
<doc xml:lang="EN" title="Get Service">
<p xmlns="http://www.w3.org/1999/xhtml">Get a service.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addService">
<doc xml:lang="EN" title="Add Service">
<p xmlns="http://www.w3.org/1999/xhtml">Add a service.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/service.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteService">
<doc xml:lang="EN" title="Delete Service">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a service.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -34,9 +34,9 @@ format="SVG" scale="60"/>
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0">
<!ENTITY CURRENTGUIDE "https://github.com/openstack/keystone/raw/master/keystone/content/admin/OS-KSCATALOG-admin-devguide.pdf">
<!ENTITY CURRENTWADL "https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSCATALOG-admin.wadl">
<!ENTITY EXTENSIONXSD "https://raw.github.com/openstack/keystone/master/keystone/content/common/xsd/OS-KSCATALOG.xsd">
<!ENTITY CURRENTGUIDE "http://docs.openstack.org/api/openstack-identity-service/2.0/identity-dev-guide-2.0.pdf">
<!ENTITY CURRENTWADL "http://docs.openstack.org/api/openstack-identity/ext/admin/OS-KSCATALOG-admin.wadl">
<!ENTITY EXTENSIONXSD "http://docs.openstack.org/api/openstack-identity/ext/admin/common/xsd/OS-KSCATALOG.xsd">
]>
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
@ -173,6 +173,6 @@ format="SVG" scale="60"/>
<chapter xml:id="api_operations" role="api-reference">
<title>Extension Operations</title>
<xi:include href="identity-OS-KSCATALOG-api.xml"/>
<xi:include href="../common/identity-OS-KSCATALOG-api.xml"/>
</chapter>
</book>

View File

@ -0,0 +1,295 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSCATALOG-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSCATALOG="http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0 xsd/OS-KSCATALOG.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/OS-KSCATALOG.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<resource id="tenants" path="tenants">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true"/>
<resource id="tenantId" path="{tenantId}">
<param name="tenantId" style="template" type="xsd:string"/>
<resource id="endpoints-OS-KSCATALOG" path="OS-KSCATALOG">
<resource id="endpoints" path="endpoints">
<method href="#listEndpoints"/>
<method href="#addEndpoint"/>
<resource id="endpoint" path="{endpointId}">
<param name="endpointId" style="template" type="xsd:string"/>
<method href="#getEndpoint"/>
<method href="#deleteEndpoint"/>
</resource>
</resource>
</resource>
</resource>
</resource>
<resource id="role-service-OS-KSCATALOG" path="OS-KSCATALOG">
<resource id="endpointTemplates" path="endpointTemplates">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true"/>
<method href="#listEndpointTemplates"/>
<method href="#addEndpointTemplate"/>
<resource id="endpointTemplateId" path="{endpointTemplateId}">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true"/>
<param name="endpointTemplateId" style="template" type="xsd:string"/>
<method href="#getEndpointTemplate"/>
<method href="#updateEndpointTemplate"/>
<method href="#deleteEndpointTemplate"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- EndPoint Templates -->
<method name="GET" id="listEndpointTemplates">
<doc xml:lang="EN" title="List Endpoint Templates">
<p xmlns="http://www.w3.org/1999/xhtml">List Endpoint Templates.</p>
</doc>
<request>
<param name="serviceId" style="query" required="false" type="xsd:string"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplates">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplates.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplates.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getEndpointTemplate">
<doc xml:lang="EN" title="Get Endpoint Template">
<p xmlns="http://www.w3.org/1999/xhtml">Get Endpoint Template.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addEndpointTemplate">
<doc xml:lang="EN" title="Add Endpoint Template">
<p xmlns="http://www.w3.org/1999/xhtml">Add Endpoint Template.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="PUT" id="updateEndpointTemplate">
<doc xml:lang="EN" title="Update Endpoint Template">
<p xmlns="http://www.w3.org/1999/xhtml">Update Endpoint Template.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplate.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="DELETE" id="deleteEndpointTemplate">
<doc xml:lang="EN" title="Delete Endpoint Template.">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a Endpoint Template.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addEndpoint">
<doc xml:lang="EN" title="Add Endpoint">
<p xmlns="http://www.w3.org/1999/xhtml">Add Endpoint to a tenant.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplateWithOnlyId.xml"/>
</doc>
<param name="endpoint" style="plain" path="/"
type="OS-KSCATALOG:EndpointTemplateWithOnlyId"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpointTemplateWithOnlyId.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:endpoint">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpoint.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpoint.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="GET" id="listEndpoints">
<doc xml:lang="EN" title="List Endpoints">
<p xmlns="http://www.w3.org/1999/xhtml">List Endpoints of a Tenant.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoints">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpoints.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpoints.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getEndpoint">
<doc xml:lang="EN" title="Get Endpoint">
<p xmlns="http://www.w3.org/1999/xhtml">Get Endpoint of a Tenant.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoint">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpoint.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/endpoint.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteEndpoint">
<doc xml:lang="EN" title="Delete Endpoint.">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a Endpoint from a Tenant.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -34,13 +34,13 @@ format="SVG" scale="60"/>
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0">
<!ENTITY CURRENTGUIDE "https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSEC2-admin-devguide.pdf">
<!ENTITY CURRENTWADL "https://raw.github.com/openstack/keystone/master/keystone/content/admin/OS-KSEC2-admin.wadl">
<!ENTITY EXTENSIONXSD "https://raw.github.com/openstack/keystone/master/keystone/content/common/xsd/OS-KSEC2-credentials.xsd">
<!ENTITY EC2CREDENTIALSEXAMPLEXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/ec2Credentials.xml">
<!ENTITY EC2CREDENTIALSEXAMPLEJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/ec2Credentials.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/admin/osec2/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/admin/osec2/extension.json">
<!ENTITY CURRENTGUIDE "http://docs.openstack.org/api/openstack-identity-service/2.0/identity-dev-guide-2.0.pdf">
<!ENTITY CURRENTWADL "../admin/OS-KSEC2-admin.wadl">
<!ENTITY EXTENSIONXSD "../common/xsd/OS-KSEC2-credentials.xsd">
<!ENTITY EC2CREDENTIALSEXAMPLEXML "../common/samples/ec2Credentials.xml">
<!ENTITY EC2CREDENTIALSEXAMPLEJSON "../common/samples/ec2Credentials.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "../common/samples/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "../common/samples/extension.json">
]>
<book xmlns="http://docbook.org/ns/docbook"

View File

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSEC2-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSEC2="http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0 xsd/OS-KSEC2-credentials.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/OS-KSEC2-credentials.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="OS-KSEC2:ec2Credentials">
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentialswithec2.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentialswithec2.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/ec2Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -34,14 +34,14 @@
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0">
<!ENTITY CURRENTGUIDE "https://github.com/openstack/keystone/raw/master/keystone/content/service/OS-KSEC2-service-devguide.pdf">
<!ENTITY EXTENSIONXSD "https://raw.github.com/openstack/keystone/master/keystone/content/common/xsd/OS-KSEC2-credentials.xsd">
<!ENTITY EC2CREDENTIALSREQUESTXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth_credentials-OS-KSEC2.xml">
<!ENTITY EC2CREDENTIALSREQUESTJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth_credentials-OS-KSEC2.json">
<!ENTITY EC2CREDENTIALSRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth.xml">
<!ENTITY EC2CREDENTIALSRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/service/osec2/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/service/osec2/extension.json">
<!ENTITY CURRENTGUIDE "http://docs.openstack.org/api/openstack-identity-service/2.0/identity-dev-guide-2.0.pdf">
<!ENTITY EXTENSIONXSD "http://docs.openstack.org/api/openstack-identity/ext/os/common/xsd/OS-KSEC2-credentials.xsd">
<!ENTITY EC2CREDENTIALSREQUESTXML "http://docs.openstack.org/api/openstack-identity/ext/os/common/samples/auth_credentials-OS-KSEC2.xml">
<!ENTITY EC2CREDENTIALSREQUESTJSON "http://docs.openstack.org/api/openstack-identity/ext/os/common/samples/auth_credentials-OS-KSEC2.json">
<!ENTITY EC2CREDENTIALSRESPONSEXML "http://docs.openstack.org/api/openstack-identity/ext/os/common/samples/auth.xml">
<!ENTITY EC2CREDENTIALSRESPONSEJSON "http://docs.openstack.org/api/openstack-identity/ext/os/common/samples/auth.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "http://docs.openstack.org/api/openstack-identity/ext/os/contrib/extensions/service/osec2/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "http://docs.openstack.org/api/openstack-identity/ext/os/contrib/extensions/service/osec2/extension.json">
]>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSEC2-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSEC2="http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0 xsd/OS-KSEC2-credentials.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/OS-KSEC2-credentials.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resoruces -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="OS-KSEC2:s3Credentials">
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSS3:s3credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSS3:s3credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentialswiths3.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentialswiths3.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSS3:s3credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="OS-KSS3:s3credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSS3:s3credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/s3Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSVALIDATE-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSVALIDATE="http://docs.openstack.org/identity/api/ext/OS-KSVALIDATE/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
">
<grammars>
<include href="../common/api.xsd"/>
<include href="../common/api-common.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<resource id="extension" path="OS-KSVALIDATE">
<resource id="token" path="token">
<resource id="validate" path="validate">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<param name="X-Subject-Token" style="header" type="xsd:string" required="true">
<doc>You need to supply a token to validate.</doc>
</param>
<param name="belongsTo" style="query" type="xsd:string" required="false"/>
<param name="HP-IDM-serviceId" style="query" type="xsd:string" required="false"/>
<method href="#validateToken"/>
<method href="#checkToken"/>
</resource>
<resource id="endpointsForToken" path="endpoints">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<param name="X-Subject-Token" style="header" type="xsd:string" required="true">
<doc>You need to supply a token to validate.</doc>
</param>
<param name="HP-IDM-serviceId" style="query" type="xsd:string" required="false"/>
<method href="#listEndpointsForToken"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Token Operations -->
<method name="GET" id="validateToken">
<doc xml:lang="EN" title="Validate Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a supplied tenant
and services and return the permissions relevant to a particular client.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Behaviour is similar to <code>/tokens/{tokenId}</code>. In
other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
'X-Subject-Token' is encrypted, but can still be used for
caching. This extension will basically decrypt this header and
internally call Keystone's normal validation, passing along all
headers and query parameters. It should therefore support
all exsting calls on <code>/tokens/{tokenId}</code>, including
extensions such as HP-IDM.
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope.
</p>
</doc>
</param>
<param name="OS-KSVALIDATE-serviceId" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
If provided, filter the roles to be returned by the given service IDs.
</p>
</doc>
</param>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="../samples/validatetoken.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../samples/validatetoken.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="HEAD" id="checkToken">
<doc xml:lang="EN" title="Check Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a particular
tenant and services (For performance).
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Behaviour is similar to <code>/tokens/{tokenId}</code>. In
other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
'X-Subject-Token' is encrypted, but can still be used for
caching. This extension will basically decrypt this header and
internally call Keystone's normal validation, passing along all
headers and query parameters. It should therefore support
all exsting calls on <code>/tokens/{tokenId}</code>, including
extensions such as HP-IDM.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
No response body is returned for this method.
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope. (for performance).
</p>
</doc>
</param>
<param name="OS-KSVALIDATE-serviceId" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Check the roles against the given service IDs.
</p>
</doc>
</param>
</request>
<response status="200 203"/>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listEndpointsForToken">
<doc xml:lang="EN" title="List Endoints for a Token">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns a list of endpoints associated with a specific token.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoints">
<doc>
<xsdxt:code href="samples/endpoints.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/endpoints.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent RAX-KSGRP-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:RAX-KSGRP="http://docs.openstack.org/identity/api/ext/RAX-KSGRP/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/RAX-KSGRP/v1.0 xsd/RAX-KSGRP-groups.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/RAX-KSGRP-groups.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" type="xsd:string"/>
<resource id="user-groups-RAX-KSGRP" path="RAX-KSGRP">
<method href="#listUserGroups"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<method name="GET" id="listUserGroups">
<doc xml:lang="EN" title="List Groups for a User">
<p xmlns="http://www.w3.org/1999/xhtml">List all the groups for a user.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="RAX-KSGRP:groups">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSGRP-groups.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSGRP-groups.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -34,20 +34,20 @@
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.rackspace.com/identity/api/ext/RAX-KSGROUP/v1.0">
<!ENTITY CURRENTGUIDE "https://github.com/openstack/keystone/raw/master/keystone/content/service/RAX-KSGRP-service-devguide.pdf">
<!ENTITY EXTENSIONXSD "https://raw.github.com/openstack/keystone/master/keystone/content/service/xsd/RAX-KSGRP-groups.xsd">
<!ENTITY CURRENTGUIDE "http://docs.rackspace.com/api">
<!ENTITY EXTENSIONXSD "../common/xsd/RAX-KSGRP-groups.xsd">
<!ENTITY GROUPSXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/RAX-KSGRP-groups.xml">
<!ENTITY GROUPSJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/RAX-KSGRP-groups.json">
<!ENTITY GROUPXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/RAX-KSGRP-group.xml">
<!ENTITY GROUPJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/RAX-KSGRP-group.json">
<!ENTITY GROUPSXML "../common/samples/RAX-KSGRP-groups.xml">
<!ENTITY GROUPSJSON "../common/samples/RAX-KSGRP-groups.json">
<!ENTITY GROUPXML "../common/samples/RAX-KSGRP-group.xml">
<!ENTITY GROUPJSON "../common/samples/RAX-KSGRP-group.json">
<!ENTITY GROUPREQUESTXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth_credentials.xml">
<!ENTITY GROUPREQUESTJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth_credentials.json">
<!ENTITY GROUPRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/authwithgroups.xml">
<!ENTITY GROUPRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/authwithgroups.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/service/raxgrp/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/service/raxgrp/extension.json">
<!ENTITY GROUPREQUESTXML "../common/samples/auth_credentials.xml">
<!ENTITY GROUPREQUESTJSON "../common/samples/auth_credentials.json">
<!ENTITY GROUPRESPONSEXML "../common/samples/authwithgroups.xml">
<!ENTITY GROUPRESPONSEJSON "../common/samples/authwithgroups.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "../contrib/extensions/service/raxgrp/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "../contrib/extensions/service/raxgrp/extension.json">
]>
@ -279,11 +279,11 @@
</example>
<example>
<title>XML Auth Response that contains Groups</title>
<programlisting language="xml"><xi:include href="&GROUPRESPONSEXML;" parse="text"><xi:fallback>Yet To Be added</xi:fallback></xi:include></programlisting>
<programlisting language="xml"><xi:include href="&GROUPRESPONSEXML;" parse="text"><!--<xi:fallback>Yet To Be added</xi:fallback>--></xi:include></programlisting>
</example>
<example>
<title>JSON Auth Response that contains Groups</title>
<programlisting language="javascript"><xi:include href="&GROUPRESPONSEJSON;" parse="text"><xi:fallback>Yet To Be added</xi:fallback></xi:include></programlisting>
<programlisting language="javascript"><xi:include href="&GROUPRESPONSEJSON;" parse="text"><!--<xi:fallback>Yet To Be added</xi:fallback>--></xi:include></programlisting>
</example>
</section>
</section>

View File

@ -34,16 +34,15 @@
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0">
<!ENTITY CURRENTGUIDE "/home/yogi/keystone/content/admin/RAX-KSKEY-admin-devguide.pdf">
<!ENTITY EXTENSIONXSD "/home/yogi/keystone/content/service/xsd/RAX-KSKEY-credentials.xsd">
<!ENTITY CURRENTWADL "https://raw.github.com/openstack/keystone/master/keystone/content/admin/RAX-KSKEY-admin.wadl">
<!ENTITY APIKEYCREDENTIALSREQUESTXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/apiKeyCredentials.xml">
<!ENTITY APIKEYCREDENTIALSREQUESTJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/apiKeyCredentials.json">
<!ENTITY APIKEYCREDENTIALSRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth.xml">
<!ENTITY APIKEYCREDENTIALSRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/admin/raxkey/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/admin/raxkey/extension.json">
<!ENTITY CURRENTGUIDE "http://docs.rackspace.com/api">
<!ENTITY EXTENSIONXSD "../service/xsd/RAX-KSKEY-credentials.xsd">
<!ENTITY CURRENTWADL "../admin/RAX-KSKEY-admin.wadl">
<!ENTITY APIKEYCREDENTIALSREQUESTXML "../common/samples/apiKeyCredentials.xml">
<!ENTITY APIKEYCREDENTIALSREQUESTJSON "../common/samples/apiKeyCredentials.json">
<!ENTITY APIKEYCREDENTIALSRESPONSEXML "../common/samples/auth.xml">
<!ENTITY APIKEYCREDENTIALSRESPONSEJSON "../common/samples/auth.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "../contrib/extensions/service/raxgrp/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "../contrib/extensions/service/raxgrp/extension.json">
]>
<book xmlns="http://docbook.org/ns/docbook"
@ -79,7 +78,7 @@
<abstract>
<para>
This document is intended for service developers interested
in using the Rackspace API Key Authentication Admin Extension along with the
in using the Rackspace API Key Authentication Admin Extension along with the
Keystone - OpenStack Identity
(<abbrev>API</abbrev>).
</para>
@ -193,7 +192,7 @@
<chapter xml:id="chapter-0001">
<title>Summary of Changes</title>
<para>
The Rackspace API Key Authentication Admin Extension allows crud/listing operations on <parameter>apikeyCredentials</parameter>.
The Rackspace API Key Authentication Admin Extension allows crud/listing operations on <parameter>apikeyCredentials</parameter>.
</para>
<section xml:id="NewHeaders-0001">
<title>New Headers</title>
@ -217,7 +216,7 @@
<title>apikeyCredentials</title>
<para>This extension allows authentication calls to accept new type of credentials <parameter>apikeyCredentials</parameter>.
These are additional type of credentials defined to support rackspace style authentication.
Examples of <parameter>apikeyCredentials</parameter> are illustrated below
Examples of <parameter>apikeyCredentials</parameter> are illustrated below
</para>
<example>
<title>apikeyCredentials XML</title>
@ -228,7 +227,7 @@
<programlisting language="javascript"><xi:include href="&APIKEYCREDENTIALSREQUESTJSON;" parse="text"/></programlisting>
</example>
</section>
</section>
</section>
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="Admin_API_Service_Developer_Operations-d1e1357" version="5.0" role="api-reference">
@ -265,7 +264,7 @@
<wadl:method href="getUserCredential"/>
</wadl:resource>
</wadl:resources>
</section>
</section>
</section>
</chapter>
</book>

View File

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent RAX-KSKEY-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:RAX-KSKEY="http://docs.openstack.org/identity/api/ext/RAX-KSKEY/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0 xsd/RAX-KSKEY-credentials.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/RAX-KSKEY-credentials.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="RAX-KSKEY:apiKeyCredentials">
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentialswithapikey.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentialswithapikey.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/apiKeyCredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -34,14 +34,14 @@
</tr>
</thead>'>
<!ENTITY NAMESPACE "http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0">
<!ENTITY CURRENTGUIDE "https://github.com/openstack/keystone/raw/master/keystone/content/service/RAX-KSKEY-service-devguide.pdf">
<!ENTITY EXTENSIONXSD "https://raw.github.com/openstack/keystone/master/keystone/content/service/xsd/RAX-KSKEY-credentials.xsd">
<!ENTITY APIKEYCREDENTIALSREQUESTXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth_credentials-RAX-KSKEY.xml">
<!ENTITY APIKEYCREDENTIALSREQUESTJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth_credentials-RAX-KSKEY.json">
<!ENTITY APIKEYCREDENTIALSRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth.xml">
<!ENTITY APIKEYCREDENTIALSRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/content/common/samples/auth.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/service/raxkey/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "https://raw.github.com/openstack/keystone/master/keystone/contrib/extensions/service/raxkey/extension.json">
<!ENTITY CURRENTGUIDE "http://docs.rackspace.com/api">
<!ENTITY EXTENSIONXSD "../service/xsd/RAX-KSKEY-credentials.xsd">
<!ENTITY APIKEYCREDENTIALSREQUESTXML "../common/samples/apiKeyCredentials.xml">
<!ENTITY APIKEYCREDENTIALSREQUESTJSON "../common/samples/apiKeyCredentials.json">
<!ENTITY APIKEYCREDENTIALSRESPONSEXML "../common/samples/auth.xml">
<!ENTITY APIKEYCREDENTIALSRESPONSEJSON "../common/samples/auth.json">
<!ENTITY EXTENSIONQUERYRESPONSEXML "../contrib/extensions/service/raxgrp/extension.xml">
<!ENTITY EXTENSIONQUERYRESPONSEJSON "../contrib/extensions/service/raxgrp/extension.json">
]>

View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent RAX-KSQA-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:RAX-KSQA="http://docs.openstack.org/identity/api/ext/RAX-KSQA/v1.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/RAX-KSQA/v1.0 xsd/RAX-KSQA-secretQA.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
<include href="xsd/RAX-KSQA-secretQA.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" type="xsd:string"/>
<resource id="user-RAX-KSQA" path="RAX-KSQA">
<resource id="secretqa" path="secretqa">
<method href="#getUserSecretQA"/>
<method href="#updateUserSecretQA"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<method name="GET" id="getUserSecretQA">
<doc xml:lang="EN" title="Get User SecretQA">
<p xmlns="http://www.w3.org/1999/xhtml">Gets a User secret Question and Answer.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="RAX-KSQA:secretQA">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSQA-secretQA.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSQA-secretQA.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="PUT" id="updateUserSecretQA">
<doc xml:lang="EN" title="Update User SecretQA">
<p xmlns="http://www.w3.org/1999/xhtml">Updates a User secret Question and Answer.</p>
</doc>
<request>
<representation mediaType="application/xml" element="RAX-KSQA:secretQA">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSQA-secretQA.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSQA-secretQA.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="RAX-KSQA:secretQA">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSQA-secretQA.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="samples/RAX-KSQA-secretQA.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
</method>
</application>

View File

@ -0,0 +1,793 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSADM-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSADM="http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0 ../common/xsd/OS-KSADM.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
<include href="../common/xsd/OS-KSADM.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<method href="#listUsers"/>
<method href="#addUser"/>
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<method href="#updateUser"/>
<method href="#deleteUser"/>
<resource id="userRoles" path="roles">
<resource id="user-roles-OS-KSADM" path="OS-KSADM">
<resource id="userRoleById" path="{roleId}">
<param name="roleId" style="template" type="xsd:string"/>
<method href="#addUserRole"/>
<method href="#deleteUserRole"/>
</resource>
</resource>
</resource>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="enabled" path="enabled">
<method href="#setUserEnabled"/>
</resource>
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="{credential-type}">
<param name="credentialType" style="template" type="OS-KSADM:extensibleCredentialsType" required="true"/>
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
<resource id="tenants" path="tenants">
<method href="#addTenant"/>
<resource id="tenantById" path="{tenantId}">
<param name="tenantId" style="template" type="xsd:string"/>
<method href="#updateTenant"/>
<method href="#deleteTenant"/>
<resource id="usersForTenant" path="users">
<method href="#listUsersForTenant"/>
<resource id="userForTenant" path="{userId}">
<param name="userId" style="template" type="xsd:string"/>
<resource id="userRolesForTenant" path="roles">
<resource id="tenant-user-role-OS-KSADM" path="OS-KSADM">
<resource id="userSpecificRoleForTenant" path="{roleId}">
<param name="roleId" style="template" type="xsd:string"/>
<method href="#addRolesToUserOnTenant"/>
<method href="#deleteRoleFromUserOnTenant"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
<resource id="role-service-OS-KSADM" path="OS-KSADM">
<resource id="roles" path="roles">
<method href="#getRoleByName"/>
<method href="#listRoles"/>
<method href="#addRole"/>
<resource id="roleId" path="{roleId}">
<param name="roleId" style="template" type="xsd:string"/>
<method href="#getRole"/>
<method href="#deleteRole"/>
</resource>
</resource>
<resource id="services" path="services">
<method href="#listServices"/>
<method href="#addService"/>
<method href="#getServiceByName"/>
<resource id="serviceId" path="{serviceId}">
<param name="serviceId" style="template" type="xsd:int"/>
<method href="#getService"/>
<method href="#deleteService"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Tenant Operations -->
<method name="POST" id="addTenant">
<doc xml:lang="EN" title="Add Tenant">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Creates a tenant.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">This call creates a tenant.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenantwithoutid.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenantwithoutid.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
</method>
<method name="POST" id="updateTenant">
<doc xml:lang="EN" title="Update Tenant">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Updates a tenant.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">This call updates a tenant.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenant.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:tenant">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="DELETE" id="deleteTenant">
<doc xml:lang="EN" title="Delete a Tenant">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Deletes a tenant.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">This call deletes a tenant.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listUsersForTenant">
<doc xml:lang="EN" title="List users for a Tenant.">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">Lists all the users for a tenant.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Lists all the users for a tenant.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:users">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/users.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/users.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="PUT" id="addRolesToUserOnTenant">
<doc xml:lang="EN" title="Add roles to a user on a tenant.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a specific role to a user for a tenant.</p>
</doc>
<response status="201"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteRoleFromUserOnTenant">
<doc xml:lang="EN" title="Delete roles from a user on tenant.">
<p xmlns="http://www.w3.org/1999/xhtml">Deletes a specific role from a user for a tenant.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<!--User Operations-->
<method name="GET" id="listUsers">
<doc xml:lang="EN" title="List users">
<p xmlns="http://www.w3.org/1999/xhtml">List users.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:userss">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/users.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/users.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addUser">
<doc xml:lang="EN" title="Add user">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/userwithoutid.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/userwithoutid.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="POST" id="updateUser">
<doc xml:lang="EN" title="Update user">
<p xmlns="http://www.w3.org/1999/xhtml">Update a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUser">
<doc xml:lang="EN" title="Delete user">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a user.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<method name="PUT" id="setUserEnabled">
<doc xml:lang="EN" title="Set user enabled.">
<p xmlns="http://www.w3.org/1999/xhtml">Enable user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/userwithenabledonly.xml"/>
</doc>
<param name="user" style="plain" path="/" type="OS-KSADM:UserWithOnlyEnabled"/></representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/userwithenabledonly.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:user">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<!--User Roles-->
<method name="PUT" id="addUserRole">
<doc xml:lang="EN" title="Add Global roles to a user.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a specific global role to a user.</p>
</doc>
<response status="201"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserRole">
<doc xml:lang="EN" title="Delete Global Roles on User.">
<p xmlns="http://www.w3.org/1999/xhtml">Deletes a specific global role from a user.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credential">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/passwordcredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<!--Roles-->
<method name="GET" id="listRoles">
<doc xml:lang="EN" title="List Roles">
<p xmlns="http://www.w3.org/1999/xhtml">List roles.</p>
</doc>
<request>
<param name="serviceId" style="query" required="false" type="xsd:string"/>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:roles">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/roles.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/roles.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addRole">
<doc xml:lang="EN" title="Add Role">
<p xmlns="http://www.w3.org/1999/xhtml">Add a Role.</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getRoleByName">
<doc xml:lang="EN" title="Get Role By Name">
<p xmlns="http://www.w3.org/1999/xhtml">Get a role by Name.</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getRole">
<doc xml:lang="EN" title="Get Role">
<p xmlns="http://www.w3.org/1999/xhtml">Get a role.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:role">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/role.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteRole">
<doc xml:lang="EN" title="Delete Role">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a role.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<!-- Service Operations -->
<method name="GET" id="listServices">
<doc xml:lang="EN" title="List Services">
<p xmlns="http://www.w3.org/1999/xhtml">List services.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSADM:services">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/services.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/services.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getServiceByName">
<doc xml:lang="EN" title="Get Service">
<p xmlns="http://www.w3.org/1999/xhtml">Get a service by name.</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getService">
<doc xml:lang="EN" title="Get Service">
<p xmlns="http://www.w3.org/1999/xhtml">Get a service.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addService">
<doc xml:lang="EN" title="Add Service">
<p xmlns="http://www.w3.org/1999/xhtml">Add a service.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSADM:service">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/service.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteService">
<doc xml:lang="EN" title="Delete Service">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a service.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSCATALOG-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSCATALOG="http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0 ../common/xsd/OS-KSCATALOG.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
<include href="../common/xsd/OS-KSCATALOG.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<resource id="tenants" path="tenants">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true"/>
<resource id="tenantId" path="{tenantId}">
<param name="tenantId" style="template" type="xsd:string"/>
<resource id="endpoints-OS-KSCATALOG" path="OS-KSCATALOG">
<resource id="endpoints" path="endpoints">
<method href="#listEndpoints"/>
<method href="#addEndpoint"/>
<resource id="endpoint" path="{endpointId}">
<param name="endpointId" style="template" type="xsd:string"/>
<method href="#getEndpoint"/>
<method href="#deleteEndpoint"/>
</resource>
</resource>
</resource>
</resource>
</resource>
<resource id="role-service-OS-KSCATALOG" path="OS-KSCATALOG">
<resource id="endpointTemplates" path="endpointTemplates">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true"/>
<method href="#listEndpointTemplates"/>
<method href="#addEndpointTemplate"/>
<resource id="endpointTemplateId" path="{endpointTemplateId}">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true"/>
<param name="endpointTemplateId" style="template" type="xsd:int"/>
<method href="#getEndpointTemplate"/>
<method href="#deleteEndpointTemplate"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- EndPoint Templates -->
<method name="GET" id="listEndpointTemplates">
<doc xml:lang="EN" title="List Endpoint Templates">
<p xmlns="http://www.w3.org/1999/xhtml">List Endpoint Templates.</p>
</doc>
<request>
<param name="serviceId" style="query" required="false" type="xsd:string"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplates">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplates.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplates.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getEndpointTemplate">
<doc xml:lang="EN" title="Get Endpoint Template">
<p xmlns="http://www.w3.org/1999/xhtml">Get Endpoint Template.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplate.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplate.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addEndpointTemplate">
<doc xml:lang="EN" title="Add Endpoint Template">
<p xmlns="http://www.w3.org/1999/xhtml">Add Endpoint Template.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplate.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplate.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplate.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplate.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="DELETE" id="deleteEndpointTemplate">
<doc xml:lang="EN" title="Delete Endpoint Template.">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a Endpoint Template.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="addEndpoint">
<doc xml:lang="EN" title="Add Endpoint">
<p xmlns="http://www.w3.org/1999/xhtml">Add Endpoint to a tenant.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSCATALOG:endpointTemplate">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplateWithOnlyId.xml"/>
</doc>
<param name="endpoint" style="plain" path="/"
type="OS-KSCATALOG:EndpointTemplateWithOnlyId"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpointTemplateWithOnlyId.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="identity:endpoint">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpoint.xml"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpoint.json"/>
</doc>
<param name="Location" type="xsd:anyURI" style="header"/>
</representation>
</response>
&commonFaults;
&getFaults;
&postPutFaults;
</method>
<method name="GET" id="listEndpoints">
<doc xml:lang="EN" title="List Endpoints">
<p xmlns="http://www.w3.org/1999/xhtml">List Endpoints of a Tenant.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoints">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpoints.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpoints.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getEndpoint">
<doc xml:lang="EN" title="Get Endpoint">
<p xmlns="http://www.w3.org/1999/xhtml">Get Endpoint of a Tenant.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoint">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpoint.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/endpoint.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteEndpoint">
<doc xml:lang="EN" title="Delete Endpoint.">
<p xmlns="http://www.w3.org/1999/xhtml">Delete a Endpoint from a Tenant.</p>
</doc>
<response status="204"/>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent OS-KSEC2-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:OS-KSEC2="http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0 ../common/xsd/OS-KSEC2-credentials.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
<include href="../common/xsd/OS-KSEC2-credentials.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="OS-KSEC2:ec2Credentials">
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentialswithec2.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentialswithec2.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="OS-KSEC2:ec2Credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/ec2Credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent RAX-KSGRP-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:RAX-KSGRP="http://docs.openstack.org/identity/api/ext/RAX-KSGRP/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/RAX-KSGRP/v1.0 ../common/xsd/RAX-KSGRP-groups.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
<include href="../common/xsd/RAX-KSGRP-groups.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" type="xsd:string"/>
<resource id="user-groups-RAX-KSGRP" path="RAX-KSGRP">
<method href="#listUserGroups"/>
</resource>
</resource>
</resource>
</resource>
</resources>
<method name="GET" id="listUserGroups">
<doc xml:lang="EN" title="List Groups for a User">
<p xmlns="http://www.w3.org/1999/xhtml">List all the groups for a user.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="RAX-KSGRP:groups">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSGRP-groups.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSGRP-groups.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent RAX-KSKEY-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:RAX-KSKEY="http://docs.openstack.org/identity/api/ext/RAX-KSKEY/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0 ../common/xsd/RAX-KSKEY-credentials.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
<include href="../common/xsd/RAX-KSKEY-credentials.xsd" />
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" required="true" type="xsd:string"/>
<resource id="user-OS-KSADM" path="OS-KSADM">
<resource id="userCredentials" path="credentials">
<method href="#addUserCredential"/>
<method href="#listCredentials"/>
<resource id="userCredentialsByType" path="RAX-KSKEY:apiKeyCredentials">
<method href="#updateUserCredential"/>
<method href="#deleteUserCredential"/>
<method href="#getUserCredential"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- User Credentials-->
<method name="POST" id="addUserCredential">
<doc xml:lang="EN" title="Add user Credential.">
<p xmlns="http://www.w3.org/1999/xhtml">Adds a credential to a user.</p>
</doc>
<request>
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.json"/>
</doc>
</representation>
</request>
<response status="201">
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="listCredentials">
<doc xml:lang="EN" title="List Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentialswithapikey.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentialswithapikey.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listCredentialsByType">
<doc xml:lang="EN" title="List Credentials by type">
<p xmlns="http://www.w3.org/1999/xhtml">List credentials by type.</p>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:credentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/credentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="POST" id="updateUserCredential">
<doc xml:lang="EN" title="Update user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Update credentials.</p>
</doc>
<request>
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="DELETE" id="deleteUserCredential">
<doc xml:lang="EN" title="Delete user credential">
<p xmlns="http://www.w3.org/1999/xhtml">Delete User credentials.</p>
</doc>
<response status="204"/>
&commonFaults;
&postPutFaults;
&getFaults;
</method>
<method name="GET" id="getUserCredential">
<doc xml:lang="EN" title="Get user Credentials">
<p xmlns="http://www.w3.org/1999/xhtml">Get user credentials.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="RAX-KSKEY:apiKeyCredentials">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/apiKeyCredentials.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent RAX-KSQA-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:RAX-KSQA="http://docs.openstack.org/identity/api/ext/RAX-KSQA/v1.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
http://docs.openstack.org/identity/api/ext/RAX-KSQA/v1.0 ../common/xsd/RAX-KSQA-secretQA.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
<include href="../common/xsd/RAX-KSQA-secretQA.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<resource id="users" path="users">
<resource id="userById" path="{userId}">
<param name="userId" style="template" type="xsd:string"/>
<resource id="user-RAX-KSQA" path="RAX-KSQA">
<resource id="secretqa" path="secretqa">
<method href="#getUserSecretQA"/>
<method href="#updateUserSecretQA"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<method name="GET" id="getUserSecretQA">
<doc xml:lang="EN" title="Get User SecretQA">
<p xmlns="http://www.w3.org/1999/xhtml">Gets a User secret Question and Answer.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="RAX-KSQA:secretQA">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSQA-secretQA.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSQA-secretQA.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="PUT" id="updateUserSecretQA">
<doc xml:lang="EN" title="Update User SecretQA">
<p xmlns="http://www.w3.org/1999/xhtml">Updates a User secret Question and Answer.</p>
</doc>
<request>
<representation mediaType="application/xml" element="RAX-KSQA:secretQA">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSQA-secretQA.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSQA-secretQA.json"/>
</doc>
</representation>
</request>
<response status="200">
<representation mediaType="application/xml" element="RAX-KSQA:secretQA">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSQA-secretQA.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc xml:lang="EN">
<xsdxt:code href="../common/samples/RAX-KSQA-secretQA.json"/>
</doc>
</representation>
</response>
&commonFaults;
&postPutFaults;
</method>
</application>

View File

@ -0,0 +1 @@
{ "extensions" : { "values" : []}}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<extensions xmlns="http://docs.openstack.org/common/api/v1.0"
xmlns:atom="http://www.w3.org/2005/Atom">
</extensions>

View File

@ -0,0 +1,508 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent identity-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "../common/common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<method href="#getVersionInfo"/>
<resource id="extensions" path="extensions">
<method href="#listExtensions"/>
<resource id="extension" path="{alias}">
<param name="alias" style="template" type="xsd:string"/>
<method href="#getExtension"/>
</resource>
</resource>
<resource id="tokens" path="tokens">
<method href="#authenticate"/>
<resource id="tokenById" path="{tokenId}">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<param name="tokenId" style="template" type="xsd:string" required="true"/>
<param name="belongsTo" style="query" type="xsd:string" required="false"/>
<method href="#validateToken"/>
<method href="#checkToken"/>
<resource id="endpointsForToken" path="endpoints">
<method href="#listEndpointsForToken"/>
</resource>
</resource>
</resource>
<resource id="users" path="users">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<method href="#getUserByName"/>
<resource id="userid" path="{user_id}">
<param name="user_id" style="template" type="xsd:string" required="true"/>
<method href="#getUserById"/>
<resource id="userRoles" path="roles">
<method href="#listUserGlobalRoles"/>
</resource>
</resource>
</resource>
<resource id="tenants" path="tenants">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">
You need a valid admin token for access.
</p>
</doc>
</param>
<method href="#listTenants"/>
<method href="#getTenantByName"/>
<resource id="tenantById" path="{tenantId}">
<param name="tenantId" style="template" type="xsd:string" required="true"/>
<method href="#getTenantById"/>
<resource id="usersForTenant" path="users">
<resource id="getTenantUser" path="{user_id}">
<param name="user_id" style="template" type="xsd:string" required="true"/>
<resource id="userRolesForTenant" path="roles">
<method href="#listRolesForUserOnTenant"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- Resource Types -->
<!--*******************************************************-->
<resource_type id="VersionDetails">
<method href="#getVersionInfo"/>
</resource_type>
<resource_type id="ExtensionList">
<doc xml:lang="EN" title="Extension List">
<p xmlns="http://www.w3.org/1999/xhtml">
A list of supported extensions.
</p>
</doc>
<method href="#listExtensions"/>
</resource_type>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Version -->
<method name="GET" id="getVersionInfo">
<doc xml:lang="EN" title="Version Details">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about this specific version of the API.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:version">
<param name="location" style="plain" type="xsd:anyURI" required="true" path="/capi:version/atom:link[@rel='self']/@href">
<link resource_type="#VersionDetails" rel="self"/>
</param>
</representation>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Extensions -->
<method name="GET" id="listExtensions">
<doc xml:lang="EN" title="List Extensions">
<p xmlns="http://www.w3.org/1999/xhtml">
Lists supported extensions.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:extensions">
<param name="next" style="plain" type="xsd:anyURI" path="/capi:extensions/atom:link[@rel='next']/@href">
<link resource_type="#ExtensionList" rel="next"/>
</param>
<param name="previous" style="plain" type="xsd:anyURI" path="/capi:extensions/atom:link[@rel='previous']/@href">
<link resource_type="#ExtensionList" rel="previous"/>
</param>
</representation>
<representation mediaType="application/json"/>
</response>
&commonFaults;
</method>
<method name="GET" id="getExtension">
<doc xml:lang="EN" title="Get Extension Details">
<p xmlns="http://www.w3.org/1999/xhtml">
Gets details about a specific extension.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:extension"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Token Operations -->
<method name="POST" id="authenticate">
<doc xml:lang="EN" title="Authenticate for Service API">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Authenticate to generate a token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
This call will return a token if successful. Each ReST request against other services (or other
calls on Keystone such as the GET /tenants call)
requires the inclusion of a specific authorization token HTTP x-header, defined as X-Auth-Token.
Clients obtain
this token, along with the URL to other service APIs, by first authenticating against the
Keystone Service and supplying valid credentials.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Client authentication is provided via a ReST interface using the POST method,
with v2.0/tokens supplied as the path. A payload of credentials must be included
in the body.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
The Keystone Service is a ReSTful web service. It is the entry point to all service APIs.
To access the Keystone Service, you must know URL of the Keystone service.
</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:auth">
<doc>
<xsdxt:code href="../common/samples/auth_credentials.xml"/>
<xsdxt:code href="../common/samples/auth_with_token.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/auth_credentials.json"/>
<xsdxt:code href="../common/samples/auth_with_token.json"/>
</doc>
</representation>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="../common/samples/auth.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/auth.json"/>
</doc>
</representation>
</response>
<response status="403">
<representation mediaType="application/xml" element="identity:userDisabled"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="validateToken">
<doc xml:lang="EN" title="Validate Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a supplied tenant
and return the permissions relevant to a particular client.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Valid tokens will exist in the
<code>/tokens/{tokenId}</code> path and invalid
tokens will not. In other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope.
</p>
</doc>
</param>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="../common/samples/validatetoken.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/validatetoken.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="HEAD" id="checkToken">
<doc xml:lang="EN" title="Check Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a particular tenant
(For performance).
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope. (for performance).
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Valid tokens will exist in the
<code>/tokens/{tokenId}</code> path and invalid
tokens will not. In other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
If `belongsTo` is provided, validates that a token has a specific tenant in scope.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
No response body is returned for this method.
</p>
</doc>
</param>
</request>
<response status="200 203"/>
&commonFaults;
&getFaults;
</method>
<!--User Operations-->
<method name="GET" id="getUserByName">
<doc xml:lang="EN" title="Get a User by Name">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about a specific user, by user name.
</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:user">
<doc>
<xsdxt:code href="../common/samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getUserById">
<doc xml:lang="EN" title="Get a User by ID">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about a specific user, by user id.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:user">
<doc>
<xsdxt:code href="../common/samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listUserGlobalRoles">
<doc xml:lang="EN" title="List User Global Roles">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Returns global roles for a specific user (excludes tenant roles).
</p>
<p xmlns="http://www.w3.org/1999/xhtml">Returns a list of global roles associated with a specific
user (excludes tenant roles).</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:roles">
<doc>
<xsdxt:code href="../common/samples/roles.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/roles.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Tenant Operations -->
<method name="GET" id="listTenants">
<doc xml:lang="EN" title="Get Tenants">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Get a list of tenants.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
The operation returns a list of tenants which the supplied token provides
access to. This call must be authenticated, so a valid token must
be passed in as a header.
</p>
<xsdxt:samples>
<xsdxt:sample xmlns="http://docs.rackspace.com/api" title="Tenants Request with Auth Token">
<xsdxt:code href="../common/samples/tenants-request.txt" language="text"/>
</xsdxt:sample>
</xsdxt:samples>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenants">
<doc>
<xsdxt:code href="../common/samples/tenants.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/tenants.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getTenantByName">
<doc xml:lang="EN" title="Get tenants by name">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Returns detailed information about a tenant, by name.
</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenant">
<doc>
<xsdxt:code href="../common/samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getTenantById">
<doc xml:lang="EN" title="Get Tenants by ID">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Returns detailed information about a tenant, by id.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenant">
<doc>
<xsdxt:code href="../common/samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listEndpointsForToken">
<doc xml:lang="EN" title="List Endoints for a Token">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns a list of endpoints associated with a specific token.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoints">
<doc>
<xsdxt:code href="../common/samples/endpoints.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/endpoints.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listRolesForUserOnTenant">
<doc xml:lang="EN" title="List Roles for User on Tenant">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns roles for a specific user on a specific tenant (excludes global roles).
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:roles">
<doc>
<xsdxt:code href="../common/samples/roles.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="../common/samples/roles.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -0,0 +1,38 @@
{
"version" : {
"id" : "v{{API_VERSION}}",
"status" : "{{API_VERSION_STATUS}}",
"updated" : "{{API_VERSION_DATE}}",
"links": [
{
"rel" : "self",
"href" : "http://{{HOST}}:{{PORT}}/v{{API_VERSION}}/"
},
{
"rel" : "describedby",
"type" : "text/html",
"href" : "http://docs.openstack.org/api/openstack-identity-service/{{API_VERSION}}/content/"
},
{
"rel" : "describedby",
"type" : "application/pdf",
"href" : "http://docs.openstack.org/api/openstack-identity-service/{{API_VERSION}}/identity-dev-guide-{{API_VERSION}}.pdf"
},
{
"rel" : "describedby",
"type" : "application/vnd.sun.wadl+xml",
"href" : "http://{{HOST}}:{{PORT}}/v2.0/identity-admin.wadl"
}
],
"media-types": [
{
"base" : "application/xml",
"type" : "application/vnd.openstack.identity-v{{API_VERSION}}+xml"
},
{
"base" : "application/json",
"type" : "application/vnd.openstack.identity-v{{API_VERSION}}+json"
}
]
}
}

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<version xmlns="http://docs.openstack.org/common/api/v2.0"
xmlns:atom="http://www.w3.org/2005/Atom"
id="v{{API_VERSION}}" status="{{API_VERSION_STATUS}}" updated="{{API_VERSION_DATE}}">
<media-types>
<media-type base="application/xml"
type="application/vnd.openstack.identity-v{{API_VERSION}}+xml"/>
<media-type base="application/json"
type="application/vnd.openstack.identity-v{{API_VERSION}}+json"/>
</media-types>
<atom:link rel="self"
href="http://{{HOST}}:{{PORT}}/v{{API_VERSION}}/"/>
<atom:link rel="describedby"
type="text/html"
href="http://docs.openstack.org/api/openstack-identity-service/{{API_VERSION}}/content/" />
<atom:link rel="describedby"
type="application/pdf"
href="http://docs.openstack.org/api/openstack-identity-service/{{API_VERSION}}/identity-dev-guide-{{API_VERSION}}.pdf" />
<atom:link rel="describedby"
type="application/vnd.sun.wadl+xml"
href="http://{{HOST}}:{{PORT}}/v2.0/identity-admin.wadl" />
</version>

View File

@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<section
xmlns="http://docbook.org/ns/docbook"
xml:id="Service_API_Client_Operations"
version="5.0">
<title>Service API (Client Operations)</title>
<para>The operations described in this chapter allow clients tokens
authenticate and get access tokens and service endpoints. The following
calls are core Keystone Service APIs in version 2.0:</para>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="../admin/identity-admin.wadl#tokens" >
<wadl:method href="authenticate"/>
</wadl:resource>
<wadl:resource href="../admin/identity-admin.wadl#tenants" >
<wadl:method href="listTenants"/>
</wadl:resource>
</wadl:resources>
</section>

View File

@ -0,0 +1,56 @@
<!--
A collection of common faults, these are pretty much expected
in every request.
-->
<!ENTITY commonFaults
'
<response xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:identityFault"/>
<representation mediaType="application/json"/>
</response>
<response status="400" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:badRequest"/>
<representation mediaType="application/json"/>
</response>
<response status="401" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:unauthorized"/>
<representation mediaType="application/json"/>
</response>
<response status="403" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:forbidden"/>
<representation mediaType="application/json"/>
</response>
<response status="405" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:badMethod"/>
<representation mediaType="application/json"/>
</response>
<response status="413" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:overLimit"/>
<representation mediaType="application/json"/>
</response>
<response status="503" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:serviceUnavailable"/>
<representation mediaType="application/json"/>
</response>
'>
<!--
Faults on GET
-->
<!ENTITY getFaults
'
<response status="404" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:itemNotFound"/>
<representation mediaType="application/json"/>
</response>
'>
<!--
Faults on POST/PUT
-->
<!ENTITY postPutFaults
'
<response status="415" xmlns="http://wadl.dev.java.net/2009/02">
<representation mediaType="application/xml" element="identity:badMediaType"/>
<representation mediaType="application/json"/>
</response>
'>

View File

@ -26,30 +26,30 @@
<section xml:id="User_Operations_OS-KSADM">
<title>User Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="OS-KSADM-admin.wadl#users">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#users">
<wadl:method href="listUsers"/>
<wadl:method href="addUser"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#userById">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userById">
<wadl:method href="updateUser"/>
<wadl:method href="deleteUser"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#user-OS-KSADM">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#user-OS-KSADM">
<wadl:method href="setUserEnabled"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#userRoles">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userRoles">
<wadl:method href="listUserRoles"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#userRoleById">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userRoleById">
<wadl:method href="addUserRole"/>
<wadl:method href="getUserRole"/>
<wadl:method href="deleteUserRole"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#userCredentials">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userCredentials">
<wadl:method href="addUserCredential"/>
<wadl:method href="listCredentials"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#userCredentialsByType">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userCredentialsByType">
<wadl:method href="listCredentialsByType"/>
<wadl:method href="updateUserCredential"/>
<wadl:method href="deleteUserCredential"/>
@ -61,21 +61,21 @@
<section xml:id="Tenant_Operations_OS-KSADM">
<title>Tenant Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="OS-KSADM-admin.wadl#tenants">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#tenants">
<wadl:method href="addTenant"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#tenantById">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#tenantById">
<wadl:method href="updateTenant"/>
<wadl:method href="deleteTenant"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#usersForTenant">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#usersForTenant">
<wadl:method href="listUsersForTenant"/>
<wadl:method href="listUsersWithRoleForTenant"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#rolesForTenant">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#rolesForTenant">
<wadl:method href="listRolesForTenant"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#userSpecificRoleForTenant">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userSpecificRoleForTenant">
<wadl:method href="addRolesToUserOnTenant"/>
<wadl:method href="deleteRoleFromUserOnTenant"/>
</wadl:resource>
@ -85,11 +85,11 @@
<section xml:id="Role_Operations_OS-KSADM">
<title>Role Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="OS-KSADM-admin.wadl#roles">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#roles">
<wadl:method href="listRoles"/>
<wadl:method href="addRole"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#roleId">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#roleId">
<wadl:method href="getRole"/>
<wadl:method href="deleteRole"/>
</wadl:resource>
@ -99,11 +99,11 @@
<section xml:id="Service_Operations_OS-KSADM">
<title>Service Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="OS-KSADM-admin.wadl#services">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#services">
<wadl:method href="listServices"/>
<wadl:method href="addService"/>
</wadl:resource>
<wadl:resource href="OS-KSADM-admin.wadl#serviceId">
<wadl:resource href="../admin/OS-KSADM-admin.wadl#serviceId">
<wadl:method href="getService"/>
<wadl:method href="deleteService"/>
</wadl:resource>

View File

@ -26,11 +26,11 @@
<section xml:id="Endpoint_Template_Operations_OS-KSCATALOG">
<title>Endpoint Template Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="OS-KSCATALOG-admin.wadl#endpointTemplates">
<wadl:resource href="../admin/OS-KSCATALOG-admin.wadl#endpointTemplates">
<wadl:method href="listEndpointTemplates"/>
<wadl:method href="addEndpointTemplate"/>
</wadl:resource>
<wadl:resource href="OS-KSCATALOG-admin.wadl#endpointTemplateId">
<wadl:resource href="../admin/OS-KSCATALOG-admin.wadl#endpointTemplateId">
<wadl:method href="getEndpointTemplate"/>
<wadl:method href="deleteEndpointTemplate"/>
</wadl:resource>
@ -41,11 +41,11 @@
<section xml:id="Tenant_Operations_OS-KSCATALOG">
<title>Endpoint Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="OS-KSCATALOG-admin.wadl#endpoints">
<wadl:resource href="../admin/OS-KSCATALOG-admin.wadl#endpoints">
<wadl:method href="listEndpoints"/>
<wadl:method href="addEndpoint"/>
</wadl:resource>
<wadl:resource href="OS-KSCATALOG-admin.wadl#endpoint">
<wadl:resource href="../admin/OS-KSCATALOG-admin.wadl#endpoint">
<wadl:method href="getEndpoint"/>
<wadl:method href="deleteEndpoint"/>
</wadl:resource>

View File

@ -0,0 +1,508 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent identity-admin.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:capi="http://docs.openstack.oapi/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
http://docs.openstack.oapi/v1.0 xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
">
<grammars>
<include href="xsd/api.xsd"/>
<include href="xsd/api-common.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:35357">
<resource id="version" path="v2.0">
<method href="#getVersionInfo"/>
<resource id="extensions" path="extensions">
<method href="#listExtensions"/>
<resource id="extension" path="{alias}">
<param name="alias" style="template" type="xsd:string"/>
<method href="#getExtension"/>
</resource>
</resource>
<resource id="tokens" path="tokens">
<method href="#authenticate"/>
<resource id="tokenById" path="{tokenId}">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<param name="tokenId" style="template" type="xsd:string" required="true"/>
<param name="belongsTo" style="query" type="xsd:string" required="false"/>
<method href="#validateToken"/>
<method href="#checkToken"/>
<resource id="endpointsForToken" path="endpoints">
<method href="#listEndpointsForToken"/>
</resource>
</resource>
</resource>
<resource id="users" path="users">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>You need a valid admin token for access.</doc>
</param>
<method href="#getUserByName"/>
<resource id="userid" path="{user_id}">
<param name="user_id" style="template" type="xsd:string" required="true"/>
<method href="#getUserById"/>
<resource id="userRoles" path="roles">
<method href="#listUserGlobalRoles"/>
</resource>
</resource>
</resource>
<resource id="tenants" path="tenants">
<param name="X-Auth-Token" style="header" type="xsd:string" required="true">
<doc>
<p xmlns="http://www.w3.org/1999/xhtml">
You need a valid admin token for access.
</p>
</doc>
</param>
<method href="#listTenants"/>
<method href="#getTenantByName"/>
<resource id="tenantById" path="{tenantId}">
<param name="tenantId" style="template" type="xsd:string" required="true"/>
<method href="#getTenantById"/>
<resource id="usersForTenant" path="users">
<resource id="getTenantUser" path="{user_id}">
<param name="user_id" style="template" type="xsd:string" required="true"/>
<resource id="userRolesForTenant" path="roles">
<method href="#listRolesForUserOnTenant"/>
</resource>
</resource>
</resource>
</resource>
</resource>
</resource>
</resources>
<!--*******************************************************-->
<!-- Resource Types -->
<!--*******************************************************-->
<resource_type id="VersionDetails">
<method href="#getVersionInfo"/>
</resource_type>
<resource_type id="ExtensionList">
<doc xml:lang="EN" title="Extension List">
<p xmlns="http://www.w3.org/1999/xhtml">
A list of supported extensions.
</p>
</doc>
<method href="#listExtensions"/>
</resource_type>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Version -->
<method name="GET" id="getVersionInfo">
<doc xml:lang="EN" title="Version Details">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about this specific version of the API.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:version">
<param name="location" style="plain" type="xsd:anyURI" required="true" path="/capi:version/atom:link[@rel='self']/@href">
<link resource_type="#VersionDetails" rel="self"/>
</param>
</representation>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Extensions -->
<method name="GET" id="listExtensions">
<doc xml:lang="EN" title="List Extensions">
<p xmlns="http://www.w3.org/1999/xhtml">
Lists supported extensions.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:extensions">
<param name="next" style="plain" type="xsd:anyURI" path="/capi:extensions/atom:link[@rel='next']/@href">
<link resource_type="#ExtensionList" rel="next"/>
</param>
<param name="previous" style="plain" type="xsd:anyURI" path="/capi:extensions/atom:link[@rel='previous']/@href">
<link resource_type="#ExtensionList" rel="previous"/>
</param>
</representation>
<representation mediaType="application/json"/>
</response>
&commonFaults;
</method>
<method name="GET" id="getExtension">
<doc xml:lang="EN" title="Get Extension Details">
<p xmlns="http://www.w3.org/1999/xhtml">
Gets details about a specific extension.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:extension"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Token Operations -->
<method name="POST" id="authenticate">
<doc xml:lang="EN" title="Authenticate for Service API">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Authenticate to generate a token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
This call will return a token if successful. Each ReST request against other services (or other
calls on Keystone such as the GET /tenants call)
requires the inclusion of a specific authorization token HTTP x-header, defined as X-Auth-Token.
Clients obtain
this token, along with the URL to other service APIs, by first authenticating against the
Keystone Service and supplying valid credentials.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Client authentication is provided via a ReST interface using the POST method,
with v2.0/tokens supplied as the path. A payload of credentials must be included
in the body.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
The Keystone Service is a ReSTful web service. It is the entry point to all service APIs.
To access the Keystone Service, you must know URL of the Keystone service.
</p>
</doc>
<request>
<representation mediaType="application/xml" element="identity:auth">
<doc>
<xsdxt:code href="samples/auth_credentials.xml"/>
<xsdxt:code href="samples/auth_with_token.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/auth_credentials.json"/>
<xsdxt:code href="samples/auth_with_token.json"/>
</doc>
</representation>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="samples/auth.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/auth.json"/>
</doc>
</representation>
</response>
<response status="403">
<representation mediaType="application/xml" element="identity:userDisabled"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="validateToken">
<doc xml:lang="EN" title="Validate Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a supplied tenant
and return the permissions relevant to a particular client.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Valid tokens will exist in the
<code>/tokens/{tokenId}</code> path and invalid
tokens will not. In other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope.
</p>
</doc>
</param>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access">
<doc>
<xsdxt:code href="samples/validatetoken.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/validatetoken.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="HEAD" id="checkToken">
<doc xml:lang="EN" title="Check Token">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Check that a token is valid and that it belongs to a particular tenant
(For performance).
</p>
</doc>
<request>
<param name="belongsTo" style="query" required="false" type="xsd:string">
<doc xml:lang="EN">
<p xmlns="http://www.w3.org/1999/xhtml">
Validates a token has the supplied tenant in scope. (for performance).
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
Valid tokens will exist in the
<code>/tokens/{tokenId}</code> path and invalid
tokens will not. In other words, a user should expect an
itemNotFound (<code>404</code>) fault for an
invalid token.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
If `belongsTo` is provided, validates that a token has a specific tenant in scope.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
No response body is returned for this method.
</p>
</doc>
</param>
</request>
<response status="200 203"/>
&commonFaults;
&getFaults;
</method>
<!--User Operations-->
<method name="GET" id="getUserByName">
<doc xml:lang="EN" title="Get a User by Name">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about a specific user, by user name.
</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:user">
<doc>
<xsdxt:code href="samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getUserById">
<doc xml:lang="EN" title="Get a User by ID">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about a specific user, by user id.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:user">
<doc>
<xsdxt:code href="samples/user.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/user.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listUserGlobalRoles">
<doc xml:lang="EN" title="List User Global Roles">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Returns global roles for a specific user (excludes tenant roles).
</p>
<p xmlns="http://www.w3.org/1999/xhtml">Returns a list of global roles associated with a specific
user (excludes tenant roles).</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:roles">
<doc>
<xsdxt:code href="samples/roles.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/roles.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Tenant Operations -->
<method name="GET" id="listTenants">
<doc xml:lang="EN" title="Get Tenants">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Get a list of tenants.
</p>
<p xmlns="http://www.w3.org/1999/xhtml">
The operation returns a list of tenants which the supplied token provides
access to. This call must be authenticated, so a valid token must
be passed in as a header.
</p>
<xsdxt:samples>
<xsdxt:sample xmlns="http://docs.rackspace.com/api" title="Tenants Request with Auth Token">
<xsdxt:code href="samples/tenants-request.txt" language="text"/>
</xsdxt:sample>
</xsdxt:samples>
</doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenants">
<doc>
<xsdxt:code href="samples/tenants.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/tenants.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getTenantByName">
<doc xml:lang="EN" title="Get tenants by name">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Returns detailed information about a tenant, by name.
</p>
</doc>
<request>
<param name="name" style="query" type="xsd:string" required="true"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenant">
<doc>
<xsdxt:code href="samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getTenantById">
<doc xml:lang="EN" title="Get Tenants by ID">
<p xmlns="http://www.w3.org/1999/xhtml" class="shortdesc">
Returns detailed information about a tenant, by id.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenant">
<doc>
<xsdxt:code href="samples/tenant.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/tenant.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listEndpointsForToken">
<doc xml:lang="EN" title="List Endoints for a Token">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns a list of endpoints associated with a specific token.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:endpoints">
<doc>
<xsdxt:code href="samples/endpoints.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/endpoints.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="listRolesForUserOnTenant">
<doc xml:lang="EN" title="List Roles for User on Tenant">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns roles for a specific user on a specific tenant (excludes global roles).
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="identity:roles">
<doc>
<xsdxt:code href="samples/roles.xml"/>
</doc>
</representation>
<representation mediaType="application/json">
<doc>
<xsdxt:code href="samples/roles.json"/>
</doc>
</representation>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

@ -40,7 +40,6 @@
<xi:include href="identity-general-api-info.xml"/>
<chapter xml:id="api_operations" role="api-reference">
<title>API Operations</title>
<xi:include href="identity-client-api.xml"/>
<xi:include href="identity-service-api.xml"/>
</chapter>
</book>

View File

@ -31,47 +31,47 @@
</tbody>
</table>
<para>The following calls are core for the Keystone Admin 2.0 APIs:</para>
<section xml:id="Token_Operations">
<!-- <section xml:id="Token_Operations">
<title>Token Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="identity-admin.wadl#tokens">
<wadl:method href="authenticate"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#tokens">
<!-\- <wadl:method href="authenticate"/>-\->
</wadl:resource>
<wadl:resource href="identity-admin.wadl#tokenById">
<wadl:method href="validateToken"/>
<wadl:method href="checkToken"/>
</wadl:resource>
<wadl:resource href="identity-admin.wadl#endpointsForToken">
<wadl:method href="listEndpointsForToken"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#tokenById">
<!-\- <wadl:method href="validateToken"/>
<wadl:method href="checkToken"/>-\->
</wadl:resource>
<!-\- <wadl:resource href="../admin/OS-KSADM-admin.wadl#endpointsForToken">-\->
<!-\- <wadl:method href="listEndpointsForToken"/>-\->
<!-\- </wadl:resource>-\->
</wadl:resources>
</section>
</section>-->
<section xml:id="User_Operations">
<title>User Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="identity-admin.wadl#users">
<wadl:method href="getUserByName"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#users">
<!-- <wadl:method href="getUserByName"/>-->
</wadl:resource>
<wadl:resource href="identity-admin.wadl#userid">
<wadl:method href="getUserById"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userid">
<!-- <wadl:method href="getUserById"/>-->
</wadl:resource>
<wadl:resource href="identity-admin.wadl#userRoles">
<wadl:method href="listUserGlobalRoles"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userRoles">
<!-- <wadl:method href="listUserGlobalRoles"/>-->
</wadl:resource>
</wadl:resources>
</section>
<section xml:id="Tenant_Operations">
<title>Tenant Operations</title>
<wadl:resources xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:resource href="identity-admin.wadl#tenants">
<wadl:method href="listTenants"/>
<wadl:method href="getTenantByName"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#tenants">
<!-- <wadl:method href="listTenants"/>
<wadl:method href="getTenantByName"/>-->
</wadl:resource>
<wadl:resource href="identity-admin.wadl#tenantById">
<wadl:method href="getTenantById"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#tenantById">
<!-- <wadl:method href="getTenantById"/>-->
</wadl:resource>
<wadl:resource href="identity-admin.wadl#userRolesForTenant">
<wadl:method href="listRolesForUserOnTenant"/>
<wadl:resource href="../admin/OS-KSADM-admin.wadl#userRolesForTenant">
<!-- <wadl:method href="listRolesForUserOnTenant"/>-->
</wadl:resource>
</wadl:resources>
</section>

View File

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (C) 2011 OpenStack LLC., All Rights Reserved -->
<!--*******************************************************-->
<!-- Import Common XML Entities -->
<!-- -->
<!-- You can resolve the entites with xmllint -->
<!-- -->
<!-- xmllint -noent identity.wadl -->
<!--*******************************************************-->
<!DOCTYPE application [
<!ENTITY % common SYSTEM "common.ent">
%common;
]>
<application xmlns="http://wadl.dev.java.net/2009/02"
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
xmlns:capi="http://docs.openstack.org/common/api/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wadl="http://wadl.dev.java.net/2009/02"
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 ../common/xsd/api.xsd
http://docs.openstack.org/common/api/v1.0 ../common/xsd/api-common.xsd
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
">
<grammars>
<include href="../common/xsd/api.xsd"/>
<include href="../common/xsd/api-common.xsd"/>
</grammars>
<!--*******************************************************-->
<!-- All Resources -->
<!--*******************************************************-->
<!-- We should use SSL in production -->
<resources base="http://localhost:5000">
<resource id="version" type="#VersionDetails" path="v2.0/">
<resource id="extensions" type="#ExtensionList" path="extensions">
<resource id="extension" path="{alias}">
<param name="alias" style="template" type="xsd:string"/>
<method href="#getExtension"/>
</resource>
</resource>
<resource id="tokens" path="tokens">
<method href="#authenticate"/>
</resource>
<resource id="tenants" path="tenants">
<method href="#listTenants"/>
</resource>
</resource>
</resources>
<!--***************************************************-->
<!-- Resource Types -->
<!--*******************************************************-->
<resource_type id="VersionDetails">
<method href="#getVersionInfo"/>
</resource_type>
<resource_type id="ExtensionList">
<doc xml:lang="EN" title="Extension List">
<p xmlns="http://www.w3.org/1999/xhtml">
A list of supported extensions.
</p>
</doc>
<method href="#listExtensions"/>
</resource_type>
<!--*******************************************************-->
<!-- All Methods -->
<!--*******************************************************-->
<!-- Version -->
<method name="GET" id="getVersionInfo">
<doc xml:lang="EN" title="Version Details">
<p xmlns="http://www.w3.org/1999/xhtml">
Returns detailed information about this specific version of the API.
</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:version">
<param name="location" style="plain" type="xsd:anyURI" required="true" path="/capi:version/atom:link[@rel='self']/@href">
<link resource_type="#VersionDetails" rel="self"/>
</param>
</representation>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Extensions -->
<method name="GET" id="listExtensions">
<doc xml:lang="EN" title="List Extensions">
<p xmlns="http://www.w3.org/1999/xhtml">List all available extensions.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:extensions">
<param name="next" style="plain" type="xsd:anyURI" path="/capi:extensions/atom:link[@rel='next']/@href">
<link resource_type="#ExtensionList" rel="next"/>
</param>
<param name="previous" style="plain" type="xsd:anyURI" path="/capi:extensions/atom:link[@rel='previous']/@href">
<link resource_type="#ExtensionList" rel="previous"/>
</param>
</representation>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<method name="GET" id="getExtension">
<doc xml:lang="EN" title="Get Server Details">
<p xmlns="http://www.w3.org/1999/xhtml">Get details about a specific extension.</p>
</doc>
<response status="200 203">
<representation mediaType="application/xml" element="capi:extension"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Token Operations -->
<method name="POST" id="authenticate">
<wadl:doc xml:lang="EN" title="Authenticate"
xmlns="http://www.w3.org/1999/xhtml">
<p>
Client authentication is provided via a ReST interface using the POST method,
with v2.0/tokens supplied as the path. A payload of credentials must be included
in the body. See <a href="xsd/credentials.xsd">supported credentials</a>
</p>
<p>
Each ReST request against the Keystone system requires the inclusion of a
specific authorization token HTTP x-header, defined as X-Auth-Token. Clients obtain
this token, along with the URL to other service APIs, by first authenticating against the
Keystone Service and supplying valid credentials.
</p>
<p>
The Keystone Service is a ReSTful web service. It is the entry point to all service APIs.
To access the Keystone Service, you must know URL of the Keystone service.
</p>
</wadl:doc>
<request>
<representation mediaType="application/xml" element="identity:auth"/>
<representation mediaType="application/json"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:access"/>
<representation mediaType="application/json"/>
</response>
<response status="403">
<representation mediaType="application/xml" element="identity:userDisabled"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
<!-- Tenant Operations -->
<method name="GET" id="listTenants">
<wadl:doc title="List Tenants" xml:lang="EN"
xmlns="http://www.w3.org/1999/xhtml">
<p>
Returns a list of tenants.
</p>
</wadl:doc>
<request>
<param name="marker" style="query" required="false" type="xsd:string"/>
<param name="limit" style="query" required="false" type="xsd:int"/>
</request>
<response status="200 203">
<representation mediaType="application/xml" element="identity:tenants"/>
<representation mediaType="application/json"/>
</response>
&commonFaults;
&getFaults;
</method>
</application>

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,337 @@
if (! this.sh_languages) {
this.sh_languages = {};
}
sh_languages['java'] = [
[
[
/\b(?:import|package)\b/g,
'sh_preproc',
-1
],
[
/\/\/\//g,
'sh_comment',
1
],
[
/\/\//g,
'sh_comment',
7
],
[
/\/\*\*/g,
'sh_comment',
8
],
[
/\/\*/g,
'sh_comment',
9
],
[
/\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
'sh_number',
-1
],
[
/"/g,
'sh_string',
10
],
[
/'/g,
'sh_string',
11
],
[
/(\b(?:class|interface))([ \t]+)([$A-Za-z0-9_]+)/g,
['sh_keyword', 'sh_normal', 'sh_classname'],
-1
],
[
/\b(?:abstract|assert|break|case|catch|class|const|continue|default|do|else|extends|false|final|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|static|strictfp|super|switch|synchronized|throw|throws|true|this|transient|try|volatile|while)\b/g,
'sh_keyword',
-1
],
[
/\b(?:int|byte|boolean|char|long|float|double|short|void)\b/g,
'sh_type',
-1
],
[
/~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,
'sh_symbol',
-1
],
[
/\{|\}/g,
'sh_cbracket',
-1
],
[
/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g,
'sh_function',
-1
],
[
/([A-Za-z](?:[^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]|[_])*)((?:<.*>)?)(\s+(?=[*&]*[A-Za-z][^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]*\s*[`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\[\]]+))/g,
['sh_usertype', 'sh_usertype', 'sh_normal'],
-1
]
],
[
[
/$/g,
null,
-2
],
[
/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
'sh_url',
-1
],
[
/<\?xml/g,
'sh_preproc',
2,
1
],
[
/<!DOCTYPE/g,
'sh_preproc',
4,
1
],
[
/<!--/g,
'sh_comment',
5
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
'sh_keyword',
6,
1
],
[
/&(?:[A-Za-z0-9]+);/g,
'sh_preproc',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
'sh_keyword',
6,
1
],
[
/@[A-Za-z]+/g,
'sh_type',
-1
],
[
/(?:TODO|FIXME|BUG)(?:[:]?)/g,
'sh_todo',
-1
]
],
[
[
/\?>/g,
'sh_preproc',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
3
]
],
[
[
/\\(?:\\|")/g,
null,
-1
],
[
/"/g,
'sh_string',
-2
]
],
[
[
/>/g,
'sh_preproc',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
3
]
],
[
[
/-->/g,
'sh_comment',
-2
],
[
/<!--/g,
'sh_comment',
5
]
],
[
[
/(?:\/)?>/g,
'sh_keyword',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
3
]
],
[
[
/$/g,
null,
-2
]
],
[
[
/\*\//g,
'sh_comment',
-2
],
[
/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
'sh_url',
-1
],
[
/<\?xml/g,
'sh_preproc',
2,
1
],
[
/<!DOCTYPE/g,
'sh_preproc',
4,
1
],
[
/<!--/g,
'sh_comment',
5
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
'sh_keyword',
6,
1
],
[
/&(?:[A-Za-z0-9]+);/g,
'sh_preproc',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
'sh_keyword',
6,
1
],
[
/@[A-Za-z]+/g,
'sh_type',
-1
],
[
/(?:TODO|FIXME|BUG)(?:[:]?)/g,
'sh_todo',
-1
]
],
[
[
/\*\//g,
'sh_comment',
-2
],
[
/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
'sh_url',
-1
],
[
/(?:TODO|FIXME|BUG)(?:[:]?)/g,
'sh_todo',
-1
]
],
[
[
/"/g,
'sh_string',
-2
],
[
/\\./g,
'sh_specialchar',
-1
]
],
[
[
/'/g,
'sh_string',
-2
],
[
/\\./g,
'sh_specialchar',
-1
]
]
];

View File

@ -0,0 +1,347 @@
if (! this.sh_languages) {
this.sh_languages = {};
}
sh_languages['javascript'] = [
[
[
/\/\/\//g,
'sh_comment',
1
],
[
/\/\//g,
'sh_comment',
7
],
[
/\/\*\*/g,
'sh_comment',
8
],
[
/\/\*/g,
'sh_comment',
9
],
[
/\b(?:abstract|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|final|finally|for|function|goto|if|implements|in|instanceof|interface|native|new|null|private|protected|prototype|public|return|static|super|switch|synchronized|throw|throws|this|transient|true|try|typeof|var|volatile|while|with)\b/g,
'sh_keyword',
-1
],
[
/(\+\+|--|\)|\])(\s*)(\/=?(?![*\/]))/g,
['sh_symbol', 'sh_normal', 'sh_symbol'],
-1
],
[
/(0x[A-Fa-f0-9]+|(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?)(\s*)(\/(?![*\/]))/g,
['sh_number', 'sh_normal', 'sh_symbol'],
-1
],
[
/([A-Za-z$_][A-Za-z0-9$_]*\s*)(\/=?(?![*\/]))/g,
['sh_normal', 'sh_symbol'],
-1
],
[
/\/(?:\\.|[^*\\\/])(?:\\.|[^\\\/])*\/[gim]*/g,
'sh_regexp',
-1
],
[
/\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
'sh_number',
-1
],
[
/"/g,
'sh_string',
10
],
[
/'/g,
'sh_string',
11
],
[
/~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,
'sh_symbol',
-1
],
[
/\{|\}/g,
'sh_cbracket',
-1
],
[
/\b(?:Math|Infinity|NaN|undefined|arguments)\b/g,
'sh_predef_var',
-1
],
[
/\b(?:Array|Boolean|Date|Error|EvalError|Function|Number|Object|RangeError|ReferenceError|RegExp|String|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt)\b/g,
'sh_predef_func',
-1
],
[
/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g,
'sh_function',
-1
]
],
[
[
/$/g,
null,
-2
],
[
/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
'sh_url',
-1
],
[
/<\?xml/g,
'sh_preproc',
2,
1
],
[
/<!DOCTYPE/g,
'sh_preproc',
4,
1
],
[
/<!--/g,
'sh_comment',
5
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
'sh_keyword',
6,
1
],
[
/&(?:[A-Za-z0-9]+);/g,
'sh_preproc',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
'sh_keyword',
6,
1
],
[
/@[A-Za-z]+/g,
'sh_type',
-1
],
[
/(?:TODO|FIXME|BUG)(?:[:]?)/g,
'sh_todo',
-1
]
],
[
[
/\?>/g,
'sh_preproc',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
3
]
],
[
[
/\\(?:\\|")/g,
null,
-1
],
[
/"/g,
'sh_string',
-2
]
],
[
[
/>/g,
'sh_preproc',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
3
]
],
[
[
/-->/g,
'sh_comment',
-2
],
[
/<!--/g,
'sh_comment',
5
]
],
[
[
/(?:\/)?>/g,
'sh_keyword',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
3
]
],
[
[
/$/g,
null,
-2
]
],
[
[
/\*\//g,
'sh_comment',
-2
],
[
/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
'sh_url',
-1
],
[
/<\?xml/g,
'sh_preproc',
2,
1
],
[
/<!DOCTYPE/g,
'sh_preproc',
4,
1
],
[
/<!--/g,
'sh_comment',
5
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
'sh_keyword',
6,
1
],
[
/&(?:[A-Za-z0-9]+);/g,
'sh_preproc',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
'sh_keyword',
6,
1
],
[
/@[A-Za-z]+/g,
'sh_type',
-1
],
[
/(?:TODO|FIXME|BUG)(?:[:]?)/g,
'sh_todo',
-1
]
],
[
[
/\*\//g,
'sh_comment',
-2
],
[
/(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
'sh_url',
-1
],
[
/(?:TODO|FIXME|BUG)(?:[:]?)/g,
'sh_todo',
-1
]
],
[
[
/"/g,
'sh_string',
-2
],
[
/\\./g,
'sh_specialchar',
-1
]
],
[
[
/'/g,
'sh_string',
-2
],
[
/\\./g,
'sh_specialchar',
-1
]
]
];

View File

@ -0,0 +1,538 @@
/*
SHJS - Syntax Highlighting in JavaScript
Copyright (C) 2007, 2008 gnombat@users.sourceforge.net
License: http://shjs.sourceforge.net/doc/gplv3.html
*/
if (! this.sh_languages) {
this.sh_languages = {};
}
var sh_requests = {};
function sh_isEmailAddress(url) {
if (/^mailto:/.test(url)) {
return false;
}
return url.indexOf('@') !== -1;
}
function sh_setHref(tags, numTags, inputString) {
var url = inputString.substring(tags[numTags - 2].pos, tags[numTags - 1].pos);
if (url.length >= 2 && url.charAt(0) === '<' && url.charAt(url.length - 1) === '>') {
url = url.substr(1, url.length - 2);
}
if (sh_isEmailAddress(url)) {
url = 'mailto:' + url;
}
tags[numTags - 2].node.href = url;
}
/*
Konqueror has a bug where the regular expression /$/g will not match at the end
of a line more than once:
var regex = /$/g;
var match;
var line = '1234567890';
regex.lastIndex = 10;
match = regex.exec(line);
var line2 = 'abcde';
regex.lastIndex = 5;
match = regex.exec(line2); // fails
*/
function sh_konquerorExec(s) {
var result = [''];
result.index = s.length;
result.input = s;
return result;
}
/**
Highlights all elements containing source code in a text string. The return
value is an array of objects, each representing an HTML start or end tag. Each
object has a property named pos, which is an integer representing the text
offset of the tag. Every start tag also has a property named node, which is the
DOM element started by the tag. End tags do not have this property.
@param inputString a text string
@param language a language definition object
@return an array of tag objects
*/
function sh_highlightString(inputString, language) {
if (/Konqueror/.test(navigator.userAgent)) {
if (! language.konquered) {
for (var s = 0; s < language.length; s++) {
for (var p = 0; p < language[s].length; p++) {
var r = language[s][p][0];
if (r.source === '$') {
r.exec = sh_konquerorExec;
}
}
}
language.konquered = true;
}
}
var a = document.createElement('a');
var span = document.createElement('span');
// the result
var tags = [];
var numTags = 0;
// each element is a pattern object from language
var patternStack = [];
// the current position within inputString
var pos = 0;
// the name of the current style, or null if there is no current style
var currentStyle = null;
var output = function(s, style) {
var length = s.length;
// this is more than just an optimization - we don't want to output empty <span></span> elements
if (length === 0) {
return;
}
if (! style) {
var stackLength = patternStack.length;
if (stackLength !== 0) {
var pattern = patternStack[stackLength - 1];
// check whether this is a state or an environment
if (! pattern[3]) {
// it's not a state - it's an environment; use the style for this environment
style = pattern[1];
}
}
}
if (currentStyle !== style) {
if (currentStyle) {
tags[numTags++] = {pos: pos};
if (currentStyle === 'sh_url') {
sh_setHref(tags, numTags, inputString);
}
}
if (style) {
var clone;
if (style === 'sh_url') {
clone = a.cloneNode(false);
}
else {
clone = span.cloneNode(false);
}
clone.className = style;
tags[numTags++] = {node: clone, pos: pos};
}
}
pos += length;
currentStyle = style;
};
var endOfLinePattern = /\r\n|\r|\n/g;
endOfLinePattern.lastIndex = 0;
var inputStringLength = inputString.length;
while (pos < inputStringLength) {
var start = pos;
var end;
var startOfNextLine;
var endOfLineMatch = endOfLinePattern.exec(inputString);
if (endOfLineMatch === null) {
end = inputStringLength;
startOfNextLine = inputStringLength;
}
else {
end = endOfLineMatch.index;
startOfNextLine = endOfLinePattern.lastIndex;
}
var line = inputString.substring(start, end);
var matchCache = [];
for (;;) {
var posWithinLine = pos - start;
var stateIndex;
var stackLength = patternStack.length;
if (stackLength === 0) {
stateIndex = 0;
}
else {
// get the next state
stateIndex = patternStack[stackLength - 1][2];
}
var state = language[stateIndex];
var numPatterns = state.length;
var mc = matchCache[stateIndex];
if (! mc) {
mc = matchCache[stateIndex] = [];
}
var bestMatch = null;
var bestPatternIndex = -1;
for (var i = 0; i < numPatterns; i++) {
var match;
if (i < mc.length && (mc[i] === null || posWithinLine <= mc[i].index)) {
match = mc[i];
}
else {
var regex = state[i][0];
regex.lastIndex = posWithinLine;
match = regex.exec(line);
mc[i] = match;
}
if (match !== null && (bestMatch === null || match.index < bestMatch.index)) {
bestMatch = match;
bestPatternIndex = i;
if (match.index === posWithinLine) {
break;
}
}
}
if (bestMatch === null) {
output(line.substring(posWithinLine), null);
break;
}
else {
// got a match
if (bestMatch.index > posWithinLine) {
output(line.substring(posWithinLine, bestMatch.index), null);
}
var pattern = state[bestPatternIndex];
var newStyle = pattern[1];
var matchedString;
if (newStyle instanceof Array) {
for (var subexpression = 0; subexpression < newStyle.length; subexpression++) {
matchedString = bestMatch[subexpression + 1];
output(matchedString, newStyle[subexpression]);
}
}
else {
matchedString = bestMatch[0];
output(matchedString, newStyle);
}
switch (pattern[2]) {
case -1:
// do nothing
break;
case -2:
// exit
patternStack.pop();
break;
case -3:
// exitall
patternStack.length = 0;
break;
default:
// this was the start of a delimited pattern or a state/environment
patternStack.push(pattern);
break;
}
}
}
// end of the line
if (currentStyle) {
tags[numTags++] = {pos: pos};
if (currentStyle === 'sh_url') {
sh_setHref(tags, numTags, inputString);
}
currentStyle = null;
}
pos = startOfNextLine;
}
return tags;
}
////////////////////////////////////////////////////////////////////////////////
// DOM-dependent functions
function sh_getClasses(element) {
var result = [];
var htmlClass = element.className;
if (htmlClass && htmlClass.length > 0) {
var htmlClasses = htmlClass.split(' ');
for (var i = 0; i < htmlClasses.length; i++) {
if (htmlClasses[i].length > 0) {
result.push(htmlClasses[i]);
}
}
}
return result;
}
function sh_addClass(element, name) {
var htmlClasses = sh_getClasses(element);
for (var i = 0; i < htmlClasses.length; i++) {
if (name.toLowerCase() === htmlClasses[i].toLowerCase()) {
return;
}
}
htmlClasses.push(name);
element.className = htmlClasses.join(' ');
}
/**
Extracts the tags from an HTML DOM NodeList.
@param nodeList a DOM NodeList
@param result an object with text, tags and pos properties
*/
function sh_extractTagsFromNodeList(nodeList, result) {
var length = nodeList.length;
for (var i = 0; i < length; i++) {
var node = nodeList.item(i);
switch (node.nodeType) {
case 1:
if (node.nodeName.toLowerCase() === 'br') {
var terminator;
if (/MSIE/.test(navigator.userAgent)) {
terminator = '\r';
}
else {
terminator = '\n';
}
result.text.push(terminator);
result.pos++;
}
else {
result.tags.push({node: node.cloneNode(false), pos: result.pos});
sh_extractTagsFromNodeList(node.childNodes, result);
result.tags.push({pos: result.pos});
}
break;
case 3:
case 4:
result.text.push(node.data);
result.pos += node.length;
break;
}
}
}
/**
Extracts the tags from the text of an HTML element. The extracted tags will be
returned as an array of tag objects. See sh_highlightString for the format of
the tag objects.
@param element a DOM element
@param tags an empty array; the extracted tag objects will be returned in it
@return the text of the element
@see sh_highlightString
*/
function sh_extractTags(element, tags) {
var result = {};
result.text = [];
result.tags = tags;
result.pos = 0;
sh_extractTagsFromNodeList(element.childNodes, result);
return result.text.join('');
}
/**
Merges the original tags from an element with the tags produced by highlighting.
@param originalTags an array containing the original tags
@param highlightTags an array containing the highlighting tags - these must not overlap
@result an array containing the merged tags
*/
function sh_mergeTags(originalTags, highlightTags) {
var numOriginalTags = originalTags.length;
if (numOriginalTags === 0) {
return highlightTags;
}
var numHighlightTags = highlightTags.length;
if (numHighlightTags === 0) {
return originalTags;
}
var result = [];
var originalIndex = 0;
var highlightIndex = 0;
while (originalIndex < numOriginalTags && highlightIndex < numHighlightTags) {
var originalTag = originalTags[originalIndex];
var highlightTag = highlightTags[highlightIndex];
if (originalTag.pos <= highlightTag.pos) {
result.push(originalTag);
originalIndex++;
}
else {
result.push(highlightTag);
if (highlightTags[highlightIndex + 1].pos <= originalTag.pos) {
highlightIndex++;
result.push(highlightTags[highlightIndex]);
highlightIndex++;
}
else {
// new end tag
result.push({pos: originalTag.pos});
// new start tag
highlightTags[highlightIndex] = {node: highlightTag.node.cloneNode(false), pos: originalTag.pos};
}
}
}
while (originalIndex < numOriginalTags) {
result.push(originalTags[originalIndex]);
originalIndex++;
}
while (highlightIndex < numHighlightTags) {
result.push(highlightTags[highlightIndex]);
highlightIndex++;
}
return result;
}
/**
Inserts tags into text.
@param tags an array of tag objects
@param text a string representing the text
@return a DOM DocumentFragment representing the resulting HTML
*/
function sh_insertTags(tags, text) {
var doc = document;
var result = document.createDocumentFragment();
var tagIndex = 0;
var numTags = tags.length;
var textPos = 0;
var textLength = text.length;
var currentNode = result;
// output one tag or text node every iteration
while (textPos < textLength || tagIndex < numTags) {
var tag;
var tagPos;
if (tagIndex < numTags) {
tag = tags[tagIndex];
tagPos = tag.pos;
}
else {
tagPos = textLength;
}
if (tagPos <= textPos) {
// output the tag
if (tag.node) {
// start tag
var newNode = tag.node;
currentNode.appendChild(newNode);
currentNode = newNode;
}
else {
// end tag
currentNode = currentNode.parentNode;
}
tagIndex++;
}
else {
// output text
currentNode.appendChild(doc.createTextNode(text.substring(textPos, tagPos)));
textPos = tagPos;
}
}
return result;
}
/**
Highlights an element containing source code. Upon completion of this function,
the element will have been placed in the "sh_sourceCode" class.
@param element a DOM <pre> element containing the source code to be highlighted
@param language a language definition object
*/
function sh_highlightElement(element, language) {
sh_addClass(element, 'sh_sourceCode');
var originalTags = [];
var inputString = sh_extractTags(element, originalTags);
var highlightTags = sh_highlightString(inputString, language);
var tags = sh_mergeTags(originalTags, highlightTags);
var documentFragment = sh_insertTags(tags, inputString);
while (element.hasChildNodes()) {
element.removeChild(element.firstChild);
}
element.appendChild(documentFragment);
}
function sh_getXMLHttpRequest() {
if (window.ActiveXObject) {
return new ActiveXObject('Msxml2.XMLHTTP');
}
else if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
throw 'No XMLHttpRequest implementation available';
}
function sh_load(language, element, prefix, suffix) {
if (language in sh_requests) {
sh_requests[language].push(element);
return;
}
sh_requests[language] = [element];
var request = sh_getXMLHttpRequest();
var url = prefix + 'sh_' + language + suffix;
request.open('GET', url, true);
request.onreadystatechange = function () {
if (request.readyState === 4) {
try {
if (! request.status || request.status === 200) {
eval(request.responseText);
var elements = sh_requests[language];
for (var i = 0; i < elements.length; i++) {
sh_highlightElement(elements[i], sh_languages[language]);
}
}
else {
throw 'HTTP error: status ' + request.status;
}
}
finally {
request = null;
}
}
};
request.send(null);
}
/**
Highlights all elements containing source code on the current page. Elements
containing source code must be "pre" elements with a "class" attribute of
"sh_LANGUAGE", where LANGUAGE is a valid language identifier; e.g., "sh_java"
identifies the element as containing "java" language source code.
*/
function sh_highlightDocument(prefix, suffix) {
var nodeList = document.getElementsByTagName('pre');
for (var i = 0; i < nodeList.length; i++) {
var element = nodeList.item(i);
var htmlClasses = sh_getClasses(element);
for (var j = 0; j < htmlClasses.length; j++) {
var htmlClass = htmlClasses[j].toLowerCase();
if (htmlClass === 'sh_sourcecode') {
continue;
}
if (htmlClass.substr(0, 3) === 'sh_') {
var language = htmlClass.substring(3);
if (language in sh_languages) {
sh_highlightElement(element, sh_languages[language]);
}
else if (typeof(prefix) === 'string' && typeof(suffix) === 'string') {
sh_load(language, element, prefix, suffix);
}
else {
throw 'Found <pre> element with class="' + htmlClass + '", but no such language exists';
}
break;
}
}
}
}

View File

@ -0,0 +1,115 @@
if (! this.sh_languages) {
this.sh_languages = {};
}
sh_languages['xml'] = [
[
[
/<\?xml/g,
'sh_preproc',
1,
1
],
[
/<!DOCTYPE/g,
'sh_preproc',
3,
1
],
[
/<!--/g,
'sh_comment',
4
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
'sh_keyword',
-1
],
[
/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
'sh_keyword',
5,
1
],
[
/&(?:[A-Za-z0-9]+);/g,
'sh_preproc',
-1
]
],
[
[
/\?>/g,
'sh_preproc',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
2
]
],
[
[
/\\(?:\\|")/g,
null,
-1
],
[
/"/g,
'sh_string',
-2
]
],
[
[
/>/g,
'sh_preproc',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
2
]
],
[
[
/-->/g,
'sh_comment',
-2
],
[
/<!--/g,
'sh_comment',
4
]
],
[
[
/(?:\/)?>/g,
'sh_keyword',
-2
],
[
/([^=" \t>]+)([ \t]*)(=?)/g,
['sh_type', 'sh_normal', 'sh_symbol'],
-1
],
[
/"/g,
'sh_string',
2
]
]
];

View File

@ -0,0 +1,184 @@
/**
controller.js
(C) 2009 Rackspace Hosting, All Rights Reserved
This file definas a single object in global scope:
trc.schema.controller
The controller object is responsible for displaying a menu that
allows users to view schema source and jump to various definitions
in the schema.
**/
//
// Initialization code...
//
(function()
{
//
// Make sure dependecies are defined in the global scope, throw
// an error if they are not.
//
if ((!window.trc) ||
(!trc.util))
{
throw new Error("Require trc/util.js to be loaded.");
}
//
// We use YUI to build our controller menu make sure we have the
// proper dependecies loaded, call init when we do...
//
function InitController()
{
trc.schema.controller._init();
}
trc.util.yui.loadYUIDeps (["menu"], InitController);
})();
if (!trc.schema)
{
trc.schema = new Object();
}
trc.schema.controller = {
//
// Internal and external links by type:
//
// type --> array of links
//
// possible types include: import, include, element,
// attribute, complextype, simpleType
//
// each link contains the following properties:
// name : the name of the link
// href : the link itself
// title : a description of the link
links : new Object(),
//
// A single link that points to the schema index document.
//
index : null,
//
// Our initialization function
//
_init : function() {
//
// Load the menu...
//
var controllerDiv = document.getElementById("Controller");
var mainMenu = this._menuMarkup("mainmenu");
for (var linkType in this.links)
{
var subItem = this._menuItemMarkup(mainMenu, linkType, "#", null);
var subMenu = this._menuMarkup (linkType+"_subMenu");
var items = this.links[linkType];
for (var i=0;i<items.length;i++)
{
this._menuItemMarkup (subMenu,
items[i].name,
items[i].href,
items[i].title);
}
subItem.item.appendChild (subMenu.main);
}
//
// Toggle view source menu
//
this._menuItemMarkup (mainMenu, "toggle src view",
"javascript:trc.schema.sampleManager.toggleSrcView()", null);
//
// Index schema document
//
if (this.index != null)
{
this._menuItemMarkup (mainMenu, this.index.name,
this.index.href, this.index.title);
}
controllerDiv.appendChild (mainMenu.main);
var oMenu = new YAHOO.widget.Menu("mainmenu", {position: "static"});
oMenu.render();
oMenu.show();
},
//
// Builds menu markup returns the associated divs in the
// properties main, body, header, footer, and list
//
_menuMarkup : function(id /*Id for main part*/)
{
//
// Build our menu div...
//
var mainDiv = document.createElement("div");
var headerDiv = document.createElement("div");
var bodyDiv = document.createElement("div");
var footerDiv = document.createElement("div");
var listDiv = document.createElement("ul");
mainDiv.setAttribute ("id", id);
trc.util.dom.setClassName (mainDiv, "yuimenu");
trc.util.dom.setClassName (headerDiv, "hd");
trc.util.dom.setClassName (bodyDiv, "bd");
trc.util.dom.setClassName (footerDiv, "ft");
mainDiv.appendChild (headerDiv);
mainDiv.appendChild (bodyDiv);
mainDiv.appendChild (footerDiv);
bodyDiv.appendChild (listDiv);
return {
main : mainDiv,
body : bodyDiv,
header : headerDiv,
footer : footerDiv,
list : listDiv
};
},
//
// Adds a menu item to existing markup.
//
_menuItemMarkup : function (menu, /*Markup returned from _menuMarkup*/
name, /* String, menu item name */
href, /* String, menu item href */
title /* String, title (tool tip)*/
)
{
var listItem = document.createElement ("li");
var link = document.createElement ("a");
trc.util.dom.setClassName (listItem, "yuimenuitem");
trc.util.dom.setClassName (link, "yuimenuitemlabel");
link.setAttribute ("href", href);
if (title != null)
{
link.setAttribute ("title", title);
}
link.appendChild (document.createTextNode(name));
listItem.appendChild (link);
menu.list.appendChild(listItem);
return {
item : listItem,
anchor : link
};
}
};

View File

@ -0,0 +1,137 @@
/**
layoutManager.js
(C) 2009 Rackspace Hosting, All Rights Reserved
This file contains code that adjusts the layout of a schema
document after a dom has been loaded. It does not modify the
global scope.
**/
(function()
{
//
// Make sure dependecies are defined in the global scope, throw
// an error if they are not.
//
if ((!window.trc) ||
(!trc.util))
{
throw new Error("Require trc/util.js to be loaded.");
}
//
// This function should be called when the DOM is loaded so we
// can get to work adjusting things.
//
function InitLayoutManager()
{
layoutManager._init();
}
trc.util.browser.addInitFunction (InitLayoutManager);
var layoutManager={
//
// Initialization function...
//
_init : function()
{
this._adjustMain();
this._adjustSubElements();
},
//
// Applies appropriate styles to body and other main content
// tags.
//
_adjustMain : function()
{
//
// Change the class name for the correct YUI skin name.
//
var bodyTags = document.getElementsByTagName("body");
if (bodyTags.length == 0)
{
throw new Error ("Couldn't find body element, bad DOM?");
}
else
{
trc.util.dom.setClassName(bodyTags[0], "yui-skin-sam");
}
//
// Setout the layout...
//
var docDiv = document.getElementById("doc");
var mainDiv = document.getElementById("Main");
trc.util.dom.setClassName (docDiv, "yui-t1");
docDiv.setAttribute ("id", "doc3");
mainDiv.setAttribute ("id", "yui-main");
//
// Old IE browser hacks...
//
switch (trc.util.browser.detectIEVersion())
{
//
// IE 6 does not support fixed positioning. The
// following is a little hack to get it to work.
//
//
case 6:
var controllerDiv = document.getElementById("Controller");
controllerDiv.style.position="absolute";
window.setInterval((function(){
/* avoid leak by constantly querying for the
* controller. */
var ctrlDiv = document.getElementById("Controller");
ctrlDiv.style.top = document.documentElement.scrollTop+10;
}), 1000);
break;
//
// The controler doesn't work **at all** in IE 7
// don't even show it.
//
case 7:
var controllerDiv = document.getElementById("Controller");
controllerDiv.style.display = "none";
break;
}
},
//
// Adds appropriate classes for subElements...
//
_adjustSubElements : function()
{
var divs = document.getElementsByTagName("div");
for (var i=0;i<divs.length;i++)
{
var currentClass = divs[i].getAttribute ("class");
var newClassName = currentClass;
switch (currentClass)
{
case "SubItem" :
newClassName += " yui-gd";
break;
case "SubItemProps" :
newClassName += " yui-gd first";
break;
case "SubName" :
newClassName += " yui-u first";
break;
case "SubAttributes" :
case "SubDocumentation" :
newClassName += " yui-u";
break;
}
if (currentClass != newClassName)
{
trc.util.dom.setClassName (divs[i], newClassName);
}
}
}
};
})();

View File

@ -0,0 +1,342 @@
/**
schemaManager.js:
(C) 2009 Rackspace Hosting, All Rights Reserved
This file defines a single object in global scope:
trc.schema.sampleManager
The object is responsible for loading, formatting, and displaying
samples in schema files. It expects trc.util to be defined which is
provided in trc/util.js.
Code highlighting is provided by SHJS
(http://shjs.sourceforge.net/). It should also be loaded before
this code is initialized.
All methods/properties prepended with an underscore (_) are meant
for internal use.
**/
//
// Initialization code...
//
(function()
{
//
// Make sure dependecies are defined in the global scope, throw
// an error if they are not.
//
if ((!window.trc) ||
(!trc.util))
{
throw new Error("Require trc/util.js to be loaded.");
}
//
// Make sure syntax highlighter scripts are loaded, if not then
// load them.
//
if (!window.sh_highlightDocument)
{
trc.util.dom.addStyle ("../style/shjs/sh_darkblue.css");
trc.util.dom.addScript ("../js/shjs/sh_main.js");
trc.util.dom.addScript ("../js/shjs/sh_xml.js");
trc.util.dom.addScript ("../js/shjs/sh_javascript.js");
trc.util.dom.addScript ("../js/shjs/sh_java.js");
}
function InitSchemaSampleManager()
{
trc.schema.sampleManager._init();
}
trc.util.browser.addInitFunction(InitSchemaSampleManager);
})();
//
// Define trc.schema.sampleManager...
//
if (!trc.schema)
{
trc.schema = new Object();
}
trc.schema.sampleManager = {
//
// All sample data in an associative array:
//
// Select Element ID -> Array of sample ids.
//
samples : new Object(),
//
// An array of code data..
//
// Code data is defined as an object with the following
// properties:
//
// type: The mimetype of the code...href: The location of the code
// or null if it's inline
//
// id: The id of the pre that contains the code.
//
// The initial object is the source code for the current document.
//
codes : new Array({
id : "SrcContentCode",
type : "application/xml",
href : (function() {
var ret = location.href;
if (location.hash && (location.hash.length != 0))
{
ret = ret.replace (location.hash, "");
}
return ret;
})()
}),
//
// Sets up the manager, begins the loading process...
//
_init : function() {
//
// Setup an array to hold data items to load, this is used by
// the loadSample method.
//
this._toLoad = new Array();
for (var i=0;i<this.codes.length;i++)
{
if ((this.codes[i] != null) &&
(this.codes[i].href != null))
{
this._toLoad.push (this.codes[i]);
}
}
//
// Loads the code text
//
this._loadCode();
},
//
// Loads the next sample in the toLoad array.
//
_loadCode : function() {
if (this._toLoad.length == 0)
{
//
// All samples have been loaded, fire the loadComplete
// method.
//
this._loadComplete();
return;
}
var codeData = this._toLoad.pop();
var request = trc.util.net.getHTTPRequest();
var manager = this;
request.onreadystatechange = function() {
if (request.readyState == 4 /* Ready */) {
if (request.status == 200 /* OKAY */) {
manager._setCodeText (codeData, request.responseText);
}
else
{
manager._setCodeText (codeData, "Could not load sample ("+request.status+") "+request.responseText);
}
manager._loadCode();
}
};
request.open ("GET", codeData.href);
request.send(null);
},
//
// Called after all samples are loaded into the DOM.
//
_loadComplete : function()
{
//
// Normalize all code samples..
//
this._normalizeCodeText(1, 1, 5);
//
// Perform syntax highlighting...
//
sh_highlightDocument();
//
// All samples are initially hidden, show the selected
// samples...
//
for (var optionID in this.samples)
{
this.showSample(optionID);
}
//
// We've adjusted the document, we need to setup the view so
// that we're still pointing to the hash target.
//
if (window.location.hash &&
(window.location.hash.length != 0))
{
window.location.href = window.location.hash;
}
},
//
// Sets code text replacing any text already existing there.
//
_setCodeText : function ( codeData /* Info of the code to set (code object) */,
code /* Code text to set (string) */)
{
//
// Preprocess the txt if nessesary...
//
var ieVersion = trc.util.browser.detectIEVersion();
if ((ieVersion > -1) &&
(ieVersion < 8))
{
code = trc.util.text.unix2dos (code);
}
var pre = document.getElementById(codeData.id);
var preNodes = pre.childNodes;
//
// Remove placeholder data...
//
while (preNodes.length != 0)
{
pre.removeChild (preNodes[0]);
}
//
// Set the correct class type...
//
switch (codeData.type)
{
/*
Javascript mimetypes
*/
case 'application/json':
case 'application/javascript':
case 'application/x-javascript':
case 'application/ecmascript':
case 'text/ecmascript':
case 'text/javascript':
trc.util.dom.setClassName (pre, "sh_javascript");
break;
/*
Not real mimetypes but this is what we'll use for Java.
*/
case 'application/java':
case 'text/java':
trc.util.dom.setClassName (pre, "sh_java");
break;
default:
trc.util.dom.setClassName (pre, "sh_xml");
break;
}
//
// Add new code...
//
pre.appendChild (document.createTextNode (code));
},
//
// Retrives source code text
//
_getCodeText : function (codeData /* Info for the code to get*/)
{
var pre = document.getElementById(codeData.id);
pre.normalize();
//
// Should be a single text node after pre...
//
return pre.firstChild.nodeValue;
},
//
// Normalizes text by ensuring that top, bottom, right indent
// levels are equal for all samples.
//
_normalizeCodeText : function (top, /* integer, top indent in lines */
bottom, /* integer, bottom indent in lines */
right /* integer, right indent in spaces */
)
{
for (var i=0;i<this.codes.length;i++)
{
if (this.codes[i] != null)
{
var code = this._getCodeText (this.codes[i]);
code = trc.util.text.setIndent (code, top, bottom, right);
this._setCodeText (this.codes[i], code);
}
}
},
//
// This event handler shows the appropriate sample given an ID
// to the select element.
//
showSample : function (selectID) /* ID of the Select element */
{
//
// Get the selected value
//
var selected = document.getElementById(selectID);
var selectedValue = selected.options[selected.selectedIndex].value;
var samples = this.samples[selectID];
//
// Undisplay old samples, display selected ones.
//
for (var i=0;i<samples.length;i++)
{
if (samples[i] != null)
{
var sample = document.getElementById (samples[i]);
if (samples[i] == selectedValue)
{
sample.style.display = "block";
}
else
{
sample.style.display = "none";
}
}
}
},
//
// Toggles the current source view. If the source is displayed it
// undisplays it and vice versa.
//
toggleSrcView : function()
{
var content = document.getElementById ("Content");
var src = document.getElementById ("SrcContent");
if (content.style.display != "none")
{
content.style.display = "none";
src.style.display = "block";
}
else
{
content.style.display = "block";
src.style.display = "none";
}
}
};

View File

@ -0,0 +1,564 @@
/**
util.js:
(C) 2009 Rackspace Hosting, All Rights Reserved
This file defines a single object in global scope:
trc.util
The util object contains internal objects which contain useful
utility properties and methods.
trc.util.browser: contains methods for browser detection.
trc.util.dom: contains methods for manipulating the DOM.
trc.util.text: contains methods and properties useful when working
with plain text.
trc.util.net: contains methods for creating HTTP requests.
trc.util.yui : contains methods for working with the YUI toolkit.
All methods/properties prepended with an underscore (_) are meant
for internal use.
**/
//
// Define TRC
//
if (!window.trc)
{
trc= new Object();
}
trc.util = new Object();
trc.util.browser = {
//
// Returns the current version of IE, or -1 if it's not an IE
// browser. This is one of the recomended ways of detecting IE
// see:
//
// http://msdn.microsoft.com/en-us/library/ms537509%28VS.85%29.aspx
//
detectIEVersion : function() {
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
},
//
// A list of functions to execute on init.
//
_initFuns : new Array(),
//
// Has the init function event been set?
//
_initFunSet: false,
//
// Function called when the DOM has loaded. It launches all init
// functions.
//
_onInit : function()
{
//
// Sort by order...
//
this._initFuns.sort(function(a, b){ return a.order - b.order; });
for (var i=0;i<this._initFuns.length;i++)
{
this._initFuns[i]();
}
},
//
// Adds a function that should be executed when the dom is
// loaded.
//
addInitFunction : function(init, /*Function to call after dom
* is loaded*/
order /* An optional it specifing
* order. The bigger the int the
* later it will run. Default is
* 1.*/
) {
if (arguments.length < 2)
{
init.order = 1;
}
else
{
init.order = order;
}
this._initFuns.push (init);
if (!this._initFunSet)
{
var butil = this;
function initFun()
{
return (function(){ butil._onInit(); });
}
//
// Try event listeners, attachEvent and if that fails use
// window.onload...
//
if (window.addEventListener)
{
window.addEventListener("load", initFun(), false);
} else if (window.attachEvent)
{
window.attachEvent ("onload", initFun());
} else
{
window.onload = initFun();
}
this._initFunSet = true;
}
}
};
trc.util.dom = {
//
// Adds a new script tag to the current DOM.
//
addScript : function (src /* Script href */)
{
var scriptElement = document.createElement ("script");
scriptElement.setAttribute ("type", "text/javascript");
scriptElement.setAttribute ("src", src);
this.addToHead (scriptElement);
},
//
// Adds a new stylesheet to the current DOM.
//
addStyle : function (src /* Stylesheet href */)
{
var linkElement = document.createElement ("link");
linkElement.setAttribute ("rel", "stylesheet");
linkElement.setAttribute ("type", "text/css");
linkElement.setAttribute ("href", src);
this.addToHead (linkElement);
},
//
// Adds a DOM node to the HTTP head element. The element is
// always added as the last child an error is thrown if the
// head element can't be found.
//
addToHead : function (node /* A DOM node */)
{
var headArray = document.getElementsByTagName("head");
if (headArray.length == 0)
{
throw new Error("Couldn't find head element, bad DOM?");
}
else
{
headArray[0].appendChild (node);
}
},
//
// Dum utility function for setting the class name of an
// element. Eventually we'll move completely to XHTML, but
// this will never work in IE 6, so for now we need this
// method for setting the class name.
//
setClassName : function (element, /* DOM Element*/
name /* Class name to use */
)
{
var ieVersion = trc.util.browser.detectIEVersion();
if ((ieVersion > -1) &&
(ieVersion < 7))
{
element.className = name;
}
else
{
element.setAttribute ("class",name);
}
}
};
trc.util.text = {
//
// Useful RegExps
//
blank : new RegExp ("^\\s*$"), /* A blank string */
indent : new RegExp ("^\\s+"), /* Line indent */
lines : new RegExp ("$","m"), /* All lines */
linechars : new RegExp ("(\n|\r)"), /* EOL line characters */
tabs : new RegExp ("\t","g"), /* All tabs */
//
// We need this because microsoft browsers before IE 7, connot
// display pre-formatted text correctly win unix style line
// endings.
//
unix2dos : function(txt /* String */) {
//if already DOS...
if (txt.search(/\r\n/) != -1)
{
return txt;
}
return txt.replace (/\n/g, "\r\n");
},
//
// Useful to normalize text.
//
dos2unix : function(txt /* String */) {
//if already unix...
if (txt.search(/\r\n/) == -1)
{
return txt;
}
return txt.replace(/\r/g, "");
},
//
// Create a string with a character repeated x times.
//
repString : function (length, /* integer, size of the string to create */
ch /* string, The character to set the string to */
)
{
var ret = new String();
for (var i=0;i<length;i++) {ret=ret.concat(ch);}
return ret;
},
//
// Replace tabs in a text with strings.
//
replaceTabs : function (txt, /* String to modify */
length /* integer, tab length in spaces */
)
{
var tabs = this.repString(length, " ");
return txt.replace (this.tabs, tabs);
},
//
// Given multi-line text returns Adjust top and bottom indent
// (in lines) and right indent (in spaces)
//
setIndent : function (txt, /* String */
top, /* integer, top indent in lines */
bottom, /* integer, bottom indent in lines */
right /* integer, right indent in spaces */
)
{
//
// Can't indent an empty string..
//
if (txt.length == 0)
{
return txt;
}
//
// If not 0, bottom will be off by one...
//
if (bottom != 0)
{
bottom++;
}
var head=this.repString (top, "\n");
var tail=this.repString (bottom, "\n");
var marg=this.repString (right, " ");
var ntxt = this.dos2unix(txt);
var ntxt = this.replaceTabs (ntxt, 8);
var lines = ntxt.split (this.lines);
var origIndent=Number.MAX_VALUE;
var origIndentStr;
//
// Look up indent.
//
for (var i=0;i<lines.length;i++)
{
//
// Remove EOL characters...
//
lines[i] = lines[i].replace (this.linechars, "");
//
// Ignore blank lines
//
if (lines[i].match(this.blank) != null)
{
continue;
}
//
// Detect the indent if any...
//
var result = lines[i].match(this.indent);
if (result == null)
{
origIndent = 0;
origIndentStr = "";
}
else if (result[0].length < origIndent)
{
origIndent = result[0].length;
origIndentStr = result[0];
}
}
//
// This implys all line are blank...can't indent.
//
if (origIndent == Number.MAX_VALUE)
{
return txt;
}
if (origIndent != 0)
{
var regExStr = "^";
for (var i=0;i<origIndent;i++)
{
regExStr=regExStr.concat("\\s");
}
var indent = new RegExp(regExStr);
for (var i=0;i<lines.length;i++)
{
lines[i] = lines[i].replace(indent,marg);
}
}
else
{
for (var i=0;i<lines.length;i++)
{
lines[i] = marg.concat (lines[i]);
}
}
//
// Remove top...
//
while (lines.length != 0)
{
if (lines[0].match(this.blank))
{
lines.shift();
}
else
{
break;
}
}
//
// Remove bottom...
//
while (lines.length != 0)
{
if (lines[lines.length-1].match(this.blank))
{
lines.pop();
}
else
{
break;
}
}
var indented = lines.join("\n");
indented=head.concat(indented, tail);
return indented;
}
};
trc.util.net = {
//
// A list of possible factories for creating an XMLHTTPRequest
//
_HTTPReqFactories :
[
function() { return new XMLHttpRequest(); },
function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
],
//
// A cached XMLHTTPRequest factory that we know works in this
// browser
//
_HTTPReqFactory : null,
//
// Provides a way of getting an HTTPRequest object in a
// platform independent manner
//
getHTTPRequest : function()
{
//
// Use cache if available..
//
if (this._HTTPReqFactory != null) return this._HTTPReqFactory();
//
// Search for a factory..
//
for (var i=0; i< this._HTTPReqFactories.length; i++)
{
try {
var factory = this._HTTPReqFactories[i];
var request = factory();
if (request != null)
{
this._HTTPReqFactory = factory;
return request;
}
} catch (e) {
continue;
}
}
//
// Looks like we don't have support for XMLHttpRequest...
//
this._HTTPReqFactory = function() {throw new Error("XMLHttpRequest not supported");}
this._HTTPReqFactory();
return;
}
};
//
// Init code for trc.util.yui...
//
(function()
{
//
// Menu make sure we have the YUI loader as it's used by our
// init function to load YUI components.
//
if (!window.YAHOO)
{
//
// We are currently using YUI on YAHOO!'s servers we may
// want to change this.
//
var YUI_BASE="http://yui.yahooapis.com/2.7.0/";
trc.util.dom.addScript (YUI_BASE+"build/yuiloader/yuiloader-min.js");
}
function InitYUIUtil()
{
trc.util.yui._init();
}
trc.util.browser.addInitFunction (InitYUIUtil);
})();
trc.util.yui = {
//
// A list of dependecies to be passed to the YUI loader. This is
// essentially a hash set: dep->dep.
//
_deps : new Object(),
//
// An array of callback functions, these should be called when all
// dependecies are loaded.
//
_callbacks : new Array(),
//
// The init function simply calls the YUI loader...
//
_init : function() {
var yuiUtil = this;
//
// It takes safari a while to load the YUI Loader if it hasn't
// loaded yet keep trying at 1/4 second intervals
//
if (!window.YAHOO)
{
window.setTimeout (function() {
yuiUtil._init();
}, 250);
return;
}
//
// Collect requirements...
//
var required = new Array();
for (var req in this._deps)
{
required.push (req);
}
//
// Load YUI dependecies...
//
var loader = new YAHOO.util.YUILoader({
require: required,
loadOptional: true,
filter: "RAW",
onSuccess: function() {
yuiUtil._depsLoaded();
},
timeout: 10000,
combine: true
});
loader.insert();
},
//
// Called after all dependecies have been loaded
//
_depsLoaded : function() {
//
// Dependecies are loaded let everyone know.
//
for (var i=0;i<this._callbacks.length;i++)
{
this._callbacks[i]();
}
},
//
// Request that one or more YUI dependecies are loaded.
//
loadYUIDeps : function (deps, /*An array of dep strings */
callback /*A function to call when deps are loaded*/
)
{
for (var i=0;i<deps.length;i++)
{
this._deps[deps[i]] = deps[i];
}
if (callback != null)
{
this._callbacks.push (callback);
}
}
};

View File

@ -0,0 +1,8 @@
{
"RAX-KSGRP:groups":[{
"id":"test_global_group_add",
"description":"A description ..."
}
],
"RAX-KSGRP:groups_links":[]
}

View File

@ -0,0 +1,5 @@
<groups xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSGRP/v1.0">
<group xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSGRP/v1.0" id="test_global_group_add">
<description>A Description of the group</description>
</group>
</groups>

View File

@ -0,0 +1,6 @@
{
"RAX-KSQA:secretQA":{
"question":"What is the color of my eyes?",
"answer":"Leonardo Da Vinci"
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<secretQA xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSQA/v1.0"
question="What is the color of my eyes?"
answer="Leonardo Da Vinci" />

View File

@ -0,0 +1,6 @@
{
"RAX-KSKEY:apiKeyCredentials":{
"username":"test_user",
"apiKey":"aaaaa-bbbbb-ccccc-12345678"
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<apiKeyCredentials
xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0"
username="testuser"
apiKey="aaaaa-bbbbb-ccccc-12345678"/>

View File

@ -0,0 +1,87 @@
{
"access":{
"token":{
"id":"ab48a9efdfedb23ty3494",
"expires":"2010-11-01T03:32:15-05:00",
"tenant":{
"id": "t1000",
"name": "My Project"
}
},
"user":{
"id":"u123",
"name":"jqsmith",
"roles":[{
"id":"100",
"name":"compute:admin"
},
{
"id":"101",
"name":"object-store:admin",
"tenantId":"t1000"
}
],
"roles_links":[]
},
"serviceCatalog":[{
"name":"Cloud Servers",
"type":"compute",
"endpoints":[{
"tenantId":"t1000",
"publicURL":"https://compute.north.host.com/v1/t1000",
"internalURL":"https://compute.north.internal/v1/t1000",
"region":"North",
"versionId":"1",
"versionInfo":"https://compute.north.host.com/v1/",
"versionList":"https://compute.north.host.com/"
},
{
"tenantId":"t1000",
"publicURL":"https://compute.north.host.com/v1.1/t1000",
"internalURL":"https://compute.north.internal/v1.1/t1000",
"region":"North",
"versionId":"1.1",
"versionInfo":"https://compute.north.host.com/v1.1/",
"versionList":"https://compute.north.host.com/"
}
],
"endpoints_links":[]
},
{
"name":"Cloud Files",
"type":"object-store",
"endpoints":[{
"tenantId":"t1000",
"publicURL":"https://storage.north.host.com/v1/t1000",
"internalURL":"https://storage.north.internal/v1/t1000",
"region":"North",
"versionId":"1",
"versionInfo":"https://storage.north.host.com/v1/",
"versionList":"https://storage.north.host.com/"
},
{
"tenantId":"t1000",
"publicURL":"https://storage.south.host.com/v1/t1000",
"internalURL":"https://storage.south.internal/v1/t1000",
"region":"South",
"versionId":"1",
"versionInfo":"https://storage.south.host.com/v1/",
"versionList":"https://storage.south.host.com/"
}
]
},
{
"name":"DNS-as-a-Service",
"type":"dnsextension:dns",
"endpoints":[{
"tenantId":"t1000",
"publicURL":"https://dns.host.com/v2.0/t1000",
"versionId":"2.0",
"versionInfo":"https://dns.host.com/v2.0/",
"versionList":"https://dns.host.com/"
}
]
}
]
}
}

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<access xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.openstack.org/identity/api/v2.0">
<token id="ab48a9efdfedb23ty3494" expires="2010-11-01T03:32:15-05:00">
<tenant id="t1000" name="My Project" />
</token>
<user id="u123" name="jqsmith">
<roles>
<role id="100" name="compute:admin"/>
<role id="101" name="object-store:admin" tenantId="t1000"/>
</roles>
</user>
<serviceCatalog>
<service type="compute" name="Cloud Servers">
<endpoint
tenantId="t1000"
region="North"
publicURL="https://compute.north.host.com/v1/t1000"
internalURL="https://compute.north.host.internal/v1/t1000">
<version
id="1"
info="https://compute.north.host.com/v1/"
list="https://compute.north.host.com/"
/>
</endpoint>
<endpoint
tenantId="t1000"
region="North"
publicURL="https://compute.north.host.com/v1.1/t1000"
internalURL="https://compute.north.host.internal/v1.1/t1000">
<version
id="1.1"
info="https://compute.north.host.com/v1.1/"
list="https://compute.north.host.com/" />
</endpoint>
</service>
<service type="object-store" name="Cloud Files">
<endpoint
tenantId="t1000"
region="North"
publicURL="https://storage.north.host.com/v1/t1000"
internalURL="https://storage.north.host.internal/v1/t1000">
<version
id="1"
info="https://storage.north.host.com/v1/"
list="https://storage.north.host.com/" />
</endpoint>
<endpoint
tenantId="t1000"
region="South"
publicURL="https://storage.south.host.com/v1/t1000"
internalURL="https://storage.south.host.internal/v1/t1000">
<version
id="1"
info="https://storage.south.host.com/v1/"
list="https://storage.south.host.com/" />
</endpoint>
</service>
<service type="dnsextension:dns" name="DNS-as-a-Service">
<endpoint
tenantId="t1000"
publicURL="https://dns.host.com/v2.0/t1000">
<version
id="2.0"
info="https://dns.host.com/v2.0/"
list="https://dns.host.com/" />
</endpoint>
</service>
</serviceCatalog>
</access>

View File

@ -0,0 +1,10 @@
{
"auth":{
"OS-KSEC2-ec2Credentials":{
"username":"test_user",
"secret":"aaaaa",
"signature":"bbb"
},
"tenantId":"77654"
}
}

View File

@ -3,9 +3,8 @@
xmlns="http://docs.openstack.org/identity/api/v2.0"
tenantId="1234">
<ec2Credentials
xmlns="http://docs.openstack.org/identity/api/ext/OS-EC2/v1.0"
xmlns="http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0"
username="testuser"
key="aaaaa"
signature="bbbbb"
tenantId="77654"/>
</auth>
signature="bbbbb"/>
</auth>

View File

@ -0,0 +1,9 @@
{
"auth":{
"RAX-KSKEY:apiKeyCredentials":{
"username":"test_user",
"apiKey":"aaaaa-bbbbb-ccccc-12345678"
},
"tenantId":"1234"
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<auth xmlns="http://docs.openstack.org/identity/api/v2.0">
<apiKeyCredentials
xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0"
username="testuser"
apiKey="aaaaa-bbbbb-ccccc-12345678"/>
</auth>

View File

@ -0,0 +1,9 @@
{
"auth":{
"passwordCredentials":{
"username":"test_user",
"password":"mypass"
},
"tenantName":"customer-x"
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<auth xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.openstack.org/identity/api/v2.0"
tenantName="customer-x">
<passwordCredentials username="test_user" password="test"/>
</auth>

View File

@ -0,0 +1,8 @@
{
"auth": {
"tenantName": "customer-x",
"token": {
"id": "abcdefghijk"
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<auth xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.openstack.org/identity/api/v2.0"
tenantName="customer-x">
<token id="abcdefghijk" />
</auth>

View File

@ -0,0 +1,87 @@
{
"access":{
"token":{
"id":"asdasdasd-adsasdads-asdasdasd-adsadsasd",
"expires":"2010-11-01T03:32:15-05:00"
},
"user":{
"id":"123",
"name":"testName",
"roles":[{
"id":"234",
"name":"compute:admin"
},
{
"id":"235",
"name":"object-store:admin",
"tenantId":"1"
}
],
"roles_links":[],
"RAX-KSGRP:groups":[{
"id":"test_global_group_add",
"description":"A description ..."
}
],
"RAX-KSGRP:groups_links":[]
},
"serviceCatalog":[{
"name":"Cloud Servers",
"type":"compute",
"endpoints":[{
"publicURL":"https://compute.north.host/v1/1234",
"internalURL":"https://compute.north.host/v1/1234",
"region":"North",
"tenantId":"1234",
"versionId":"1.0",
"versionInfo":"https://compute.north.host/v1.0/",
"versionList":"https://compute.north.host/"
},
{
"publicURL":"https://compute.north.host/v1.1/3456",
"internalURL":"https://compute.north.host/v1.1/3456",
"region":"North",
"tenantId":"3456",
"versionId":"1.1",
"versionInfo":"https://compute.north.host/v1.1/",
"versionList":"https://compute.north.host/"
}
],
"endpoints_links":[]
},
{
"name":"Cloud Files",
"type":"object-store",
"endpoints":[{
"publicURL":"https://compute.north.host/v1/blah-blah",
"internalURL":"https://compute.north.host/v1/blah-blah",
"region":"South",
"tenantId":"1234",
"versionId":"1.0",
"versionInfo":"uri",
"versionList":"uri"
},
{
"publicURL":"https://compute.north.host/v1.1/blah-blah",
"internalURL":"https://compute.north.host/v1.1/blah-blah",
"region":"South",
"tenantId":"1234",
"versionId":"1.1",
"versionInfo":"https://compute.north.host/v1.1/",
"versionList":"https://compute.north.host/"
}
],
"endpoints_links":[{
"rel":"next",
"href":"https://identity.north.host/v2.0/endpoints?marker=2"
}
]
}
],
"serviceCatalog_links":[{
"rel":"next",
"href":"https://identity.host/v2.0/endpoints?session=2hfh8Ar&marker=2"
}
]
}
}

View File

@ -1,19 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<auth xmlns="http://docs.openstack.org/identity/api/v2.0">
<access xmlns="http://docs.openstack.org/identity/api/v2.0">
<token expires="2010-11-01T03:32:15-05:00"
id="ab48a9efdfedb23ty3494"/>
<serviceCatalog>
<service type="compute" name="Computers in the Cloud">
<endpoint
region="North"
tenantId="1234"
publicURL="https://north.compute.public.com/v2.0/1234"
internalURL="https://north.compute.internal.com/v2.0/1234">
<version
id="2.0"
info="https://north.compute.public.com/v2.0/"
list="https://north.compute.public.com/" />
</endpoint>
<endpoint region="North" tenantId="1"
publicURL="https://north.compute.public.com/v2.0/1234"
internalURL="https://north.compute.internal.com/v2.0/1234">
<version id="2.0"
info="https://north.compute.public.com/v2.0/"
list="https://north.compute.public.com/"/>
</endpoint>
<endpoint
region="South"
tenantId="3456"
@ -57,4 +54,17 @@
</endpoint>
</service>
</serviceCatalog>
<user xmlns="http://docs.openstack.org/identity/api/v2.0"
id="123" username="jqsmith">
<roles xmlns="http://docs.openstack.org/identity/api/v2.0">
<role id="123" name="Admin" tenantId="1234" description="All Access" />
<role id="234" name="object-store:admin" tenantId="1"/>
</roles>
<groups xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSGRP/v1.0">
<group id="test_global_group_add">
<description>A Description of the group</description>
</group>
</groups>
</user>
</auth>

View File

@ -0,0 +1,64 @@
{
"choices":[{
"id":"v1.0",
"status":"DEPRECATED",
"links":[{
"rel":"self",
"href":"http://identity.api.openstack.org/v1.0"
}
],
"media-types":{
"values":[{
"base":"application/xml",
"type":"application/vnd.openstack.identity+xml;version=1.0"
},
{
"base":"application/json",
"type":"application/vnd.openstack.identity+json;version=1.0"
}
]
}
},
{
"id":"v1.1",
"status":"CURRENT",
"links":[{
"rel":"self",
"href":"http://identity.api.openstack.org/v1.1"
}
],
"media-types":{
"values":[{
"base":"application/xml",
"type":"application/vnd.openstack.identity+xml;version=1.1"
},
{
"base":"application/json",
"type":"application/vnd.openstack.identity+json;version=1.1"
}
]
}
},
{
"id":"v2.0",
"status":"BETA",
"links":[{
"rel":"self",
"href":"http://identity.api.openstack.org/v2.0"
}
],
"media-types":{
"values":[{
"base":"application/xml",
"type":"application/vnd.openstack.identity+xml;version=2.0"
},
{
"base":"application/json",
"type":"application/vnd.openstack.identity+json;version=2.0"
}
]
}
}
],
"choices_links":""
}

View File

@ -0,0 +1,10 @@
{
"credentials":[{
"passwordCredentials":{
"username":"test_user",
"password":"mypass"
}
}
],
"credentials_links":[]
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<credentials xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.openstack.org/identity/api/v2.0">
<passwordCredentials username="test_user" password="test"/>
</credentials>

View File

@ -0,0 +1,16 @@
{
"credentials":[{
"passwordCredentials":{
"username":"test_user",
"password":"mypass"
}
},
{
"RAX-KSKEY:apiKeyCredentials":{
"username":"test_user",
"apiKey":"aaaaa-bbbbb-ccccc-12345678"
}
}
],
"credentials_links":[]
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<credentials xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.openstack.org/identity/api/v2.0">
<passwordCredentials username="test_user" password="test"/>
<apiKeyCredentials
xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KSKEY/v1.0"
username="testuser"
apiKey="aaaaa-bbbbb-ccccc-12345678"/>
</credentials>

View File

@ -0,0 +1,17 @@
{
"credentials":[{
"passwordCredentials":{
"username":"test_user",
"password":"mypass"
}
},
{
"OS-KSEC2-ec2Credentials":{
"username":"test_user",
"secret":"aaaaa",
"signature":"bbb"
}
}
],
"credentials_links":[]
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<credentials xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.openstack.org/identity/api/v2.0">
<passwordCredentials username="test_user" password="test"/>
<ec2Credentials xmlns="http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0"
username="testuser" key="aaaaa" signature="bbbbb"/>
</credentials>

View File

@ -0,0 +1,7 @@
{
"OS-KSEC2-ec2Credentials":{
"username":"test_user",
"secret":"aaaaa",
"signature":"bbb"
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ec2Credentials
xmlns="http://docs.openstack.org/identity/api/ext/OS-KSEC2/v1.0"
username="testuser"
key="aaaaa"
signature="bbbbb"/>

View File

@ -0,0 +1,14 @@
{
"endpoint": {
"id": 1,
"tenantId":1,
"region": "North",
"type": "compute",
"publicURL": "https://compute.north.public.com/v1",
"internalURL": "https://compute.north.internal.com/v1",
"adminURL" : "https://compute.north.internal.com/v1",
"versionId": "1",
"versionInfo": "https://compute.north.public.com/v1/",
"versionList": "https://compute.north.public.com/"
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpoint
id="1"
tenantId="1"
type="compute"
name="Compute"
region="North"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
adminURL="https://compute.north.internal.com/v1"
xmlns="http://docs.openstack.org/identity/api/v2.0">
<version
id="1"
info="https://compute.north.public.com/v1/"
list="https://compute.north.public.com/"
/>
</endpoint>

View File

@ -0,0 +1,14 @@
{
"OS-KSCATALOG:endpointTemplate":{
"id":1,
"region":"North",
"global":true,
"type":"compute",
"publicURL":"https://compute.north.public.com/v1",
"internalURL":"https://compute.north.internal.com/v1",
"versionId":"1",
"versionInfo":"https://compute.north.public.com/v1/",
"versionList":"https://compute.north.public.com/",
"enabled":true
}
}

View File

@ -1,17 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpointTemplate
xmlns="http://docs.openstack.org/identity/api/v2.0"
xmlns="http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0"
id="1"
region="North"
global="true"
type="compute"
name="Compute"
publicURL="https://service-public.com/v1"
internalURL="https://service-internal.com/v1"
enabled="true">
<version
ID="1"
Info="https://compute.north.public.com/v1/"
List="https://compute.north.public.com/"
id="1"
info="https://compute.north.public.com/v1/"
list="https://compute.north.public.com/"
/>
</endpointTemplate>

View File

@ -0,0 +1,5 @@
{
"OS-KSCATALOG:endpointTemplate":{
"id":1,
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpointTemplate
xmlns="http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="EndpointTemplateWithOnlyId"
id="1"/>

View File

@ -0,0 +1,59 @@
{
"OS-KSCATALOG:endpointsTemplates": [
{
"id": 1,
"region": "North",
"global": true,
"type": "compute",
"publicURL": "https://compute.north.public.com/v1",
"internalURL": "https://compute.north.internal.com/v1",
"versionId": "1",
"versionInfo": "https://compute.north.public.com/v1/",
"versionList": "https://compute.north.public.com/",
"enabled": true
},
{
"id": 2,
"region": "South",
"type": "compute",
"publicURL": "https://compute.south.public.com/v1",
"internalURL": "https://compute.south.internal.com/v1",
"versionId": "1",
"versionInfo": "https://compute.south.public.com/v1/",
"versionList": "https://compute.south.public.com/",
"enabled": false
},
{
"id": 3,
"region": "North",
"global": true,
"type": "object-store",
"publicURL": "https://object-store.north.public.com/v1.0",
"versionId": "1.0",
"versionInfo": "https://object-store.north.public.com/v1.0/",
"versionList": "https://object-store.north.public.com/",
"enabled": true
},
{
"id": 4,
"region": "South",
"type": "object-store",
"publicURL": "https://object-store.south.public.com/v2",
"versionId": "2",
"versionInfo": "https://object-store.south.public.com/v2/",
"versionList": "https://object-store.south.public.com/",
"enabled": true
},
{
"id": 5,
"global": true,
"type": "OS-DNS:DNS",
"publicURL": "https://dns.public.com/v3.2",
"versionId": "1.0",
"versionInfo": "https://dns.public.com/v1.0/",
"versionList": "https://dns.public.com/",
"enabled": true
}
],
"OS-KSCATALOG:endpointsTemplates_links": []
}

View File

@ -1,62 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpointTemplates xmlns="http://docs.openstack.org/identity/api/v2.0">
<endpointTemplates xmlns="http://docs.openstack.org/identity/api/ext/OS-KSCATALOG/v1.0">
<endpointTemplate
id="1"
region="North"
global="true"
serviceType="compute"
type="compute"
name="Compute"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
enabled="true">
<version
ID="1"
List="https://compute.north.public.com/"
Info="https://compute.north.public.com/v1"/>
id="1"
list="https://compute.north.public.com/"
info="https://compute.north.public.com/v1"/>
</endpointTemplate>
<endpointTemplate
id="2"
region="south"
serviceType="service2"
type="compute"
name="Compute"
publicURL="https://service2.public.com/v1"
internalURL="https://service2.internal.public.com/v1"
enabled="false">
<version
ID="1"
List="https://service1.public.com/"
Info="https://service1.public.com/v1"/>
id="1"
list="https://service1.public.com/"
info="https://service1.public.com/v1"/>
</endpointTemplate>
<endpointTemplate
id="3"
region="DFW"
global="true"
serviceType="service1"
type="ext1:service1"
name="Compute"
publicURL="https://service1.public.com/v1"
enabled="true">
<version
ID="1"
List="https://service1.public.com/"
Info="https://service1.public.com/v1"/>
id="1"
list="https://service1.public.com/"
info="https://service1.public.com/v1"/>
</endpointTemplate>
<endpointTemplate
id="4"
region="ORD"
serviceType="service2"
type="compute"
name="Compute"
publicURL="https://service2.public.com/v1"
enabled="true">
<version
ID="1"
List="https://service1.public.com/"
Info="https://service1.public.com/v1"/>
id="1"
list="https://service1.public.com/"
info="https://service1.public.com/v1"/>
</endpointTemplate>
<endpointTemplate
id="5"
global="true"
serviceType="service3"
type="compute"
name="Compute"
publicURL="https://service3.public.com/v1">
<version
ID="1"
List="https://service1.public.com/"
Info="https://service1.public.com/v1"/>
id="1"
list="https://service1.public.com/"
info="https://service1.public.com/v1"/>
</endpointTemplate>
</endpointTemplates>

View File

@ -0,0 +1,64 @@
{
"endpoints":[{
"id":1,
"tenantId":"1",
"region":"North",
"type":"compute",
"publicURL":"https://compute.north.public.com/v1",
"internalURL":"https://compute.north.internal.com/v1",
"adminURL" : "https://compute.north.internal.com/v1",
"versionId":"1",
"versionInfo":"https://compute.north.public.com/v1/",
"versionList":"https://compute.north.public.com/"
},
{
"id":2,
"tenantId":"1",
"region":"South",
"type":"compute",
"publicURL":"https://compute.north.public.com/v1",
"internalURL":"https://compute.north.internal.com/v1",
"adminURL" : "https://compute.north.internal.com/v1",
"versionId":"1",
"versionInfo":"https://compute.north.public.com/v1/",
"versionList":"https://compute.north.public.com/"
},
{
"id":3,
"tenantId":"1",
"region":"East",
"type":"compute",
"publicURL":"https://compute.north.public.com/v1",
"internalURL":"https://compute.north.internal.com/v1",
"adminURL" : "https://compute.north.internal.com/v1",
"versionId":"1",
"versionInfo":"https://compute.north.public.com/v1/",
"versionList":"https://compute.north.public.com/"
},
{
"id":4,
"tenantId":"1",
"region":"West",
"type":"compute",
"publicURL":"https://compute.north.public.com/v1",
"internalURL":"https://compute.north.internal.com/v1",
"adminURL" : "https://compute.north.internal.com/v1",
"versionId":"1",
"versionInfo":"https://compute.north.public.com/v1/",
"versionList":"https://compute.north.public.com/"
},
{
"id":5,
"tenantId":"1",
"region":"Global",
"type":"compute",
"publicURL":"https://compute.north.public.com/v1",
"internalURL":"https://compute.north.internal.com/v1",
"adminURL" : "https://compute.north.internal.com/v1",
"versionId":"1",
"versionInfo":"https://compute.north.public.com/v1/",
"versionList":"https://compute.north.public.com/"
}
],
"endpoints_links":[]
}

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://docs.openstack.org/identity/api/v2.0">
<endpoint
id="1"
tenantId="1"
type="compute"
name="Compute"
region="North"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
adminURL="https://compute.north.internal.com/v1">
<version
id="1"
info="https://compute.north.public.com/v1/"
list="https://compute.north.public.com/"
/>
</endpoint>
<endpoint
id="2"
tenantId="2"
type="compute"
name="Compute"
region="South"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
adminURL="https://compute.north.internal.com/v1">
<version
id="1"
info="https://compute.north.public.com/v1/"
list="https://compute.north.public.com/"
/>
</endpoint>
<endpoint
id="3"
tenantId="1"
type="compute"
name="Compute"
region="East"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
adminURL="https://compute.north.internal.com/v1"
tenantId="1"
/>
<endpoint
id="4"
tenantId="1"
type="compute"
name="Compute"
region="West"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
adminURL="https://compute.north.internal.com/v1">
<version
id="1"
info="https://compute.north.public.com/v1/"
list="https://compute.north.public.com/"
/>
</endpoint>
<endpoint
id="5"
tenantId="1"
type="compute"
name="Compute"
region="Global"
publicURL="https://compute.north.public.com/v1"
internalURL="https://compute.north.internal.com/v1"
adminURL="https://compute.north.internal.com/v1">
<version
id="1"
info="https://compute.north.public.com/v1/"
list="https://compute.north.public.com/"
/>
</endpoint>
</endpoints>

View File

@ -1,14 +1,13 @@
{
"user": {
"roles": {
"values": [
"roles": [
{
"tenantId": "1234",
"id": "Admin"
}
]
},
"id": "u1000",
],
"roles_links": [],
"id": "1000",
"username": "jqsmith",
"email": "john.smith@example.org",
"enabled": true,

View File

@ -0,0 +1,40 @@
{
"extensions":[{
"name":"Reset Password Extension",
"namespace":"http://docs.rackspacecloud.com/identity/api/ext/rpe/v2.0",
"alias":"RS-RPE",
"updated":"2011-01-22T13:25:27-06:00",
"description":"Adds the capability to reset a user's password. The user is emailed when the password has been reset.",
"links":[{
"rel":"describedby",
"type":"application/pdf",
"href":"http://docs.rackspacecloud.com/identity/api/ext/identity-rpe-20111111.pdf"
},
{
"rel":"describedby",
"type":"application/vnd.sun.wadl+xml",
"href":"http://docs.rackspacecloud.com/identity/api/ext/identity-rpe.wadl"
}
]
},
{
"name":"User Metadata Extension",
"namespace":"http://docs.rackspacecloud.com/identity/api/ext/meta/v2.0",
"alias":"RS-META",
"updated":"2011-01-12T11:22:33-06:00",
"description":"Allows associating arbritrary metadata with a user.",
"links":[{
"rel":"describedby",
"type":"application/pdf",
"href":"http://docs.rackspacecloud.com/identity/api/ext/identity-meta-20111201.pdf"
},
{
"rel":"describedby",
"type":"application/vnd.sun.wadl+xml",
"href":"http://docs.rackspacecloud.com/identity/api/ext/identity-meta.wadl"
}
]
}
],
"extensions_links":[]
}

View File

@ -0,0 +1,22 @@
{
"user":{
"roles":[{
"tenantId":"1234",
"id":"Admin"
},
{
"tenantId":"1234",
"id":"DBUser"
}
],
"roles_links":[{
"rel":"next",
"href":"http://identity.api.openstack.org/v2.0/tenants/1234/users/u1000/roles?marker=Super"
}
],
"id":"u1000",
"username":"jqsmith",
"email":"john.smith@example.org",
"enabled":true
}
}

View File

@ -0,0 +1 @@
This operation does not require a request body.

Some files were not shown because too many files have changed in this diff Show More