netconn-api/v2.0/xsd/limits.xsd
Diane Fleming cf63982eaf Update to point to wadls in the api-site repo to correct neutron:type error
Closes-Bug: #1157159

Change-Id: I59e5026878fdacfc41d7938c0f5736dc3d7a1dad
author: diane fleming
2013-12-20 12:37:08 -06:00

303 lines
12 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../xslt/schema.xsl"?>
<!-- (C) 2011-2013 OpenStack Foundation, All Rights Reserved -->
<xs:schema elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="http://docs.openstack.org/common/api/v1.0"
xmlns:limits="http://docs.openstack.org/common/api/v1.0"
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appinfo xml:lang="EN" xmlns="http://www.w3.org/1999/xhtml">
<xsdxt:title>Limits</xsdxt:title>
<xsdxt:link rel="index" href="api-common.xsd"/>
</xs:appinfo>
<xs:documentation xml:lang="EN"
xmlns="http://www.w3.org/1999/xhtml">
<p>This schema file defines types related to preconfigured
limits. Limits are used to manage the capacity of the
API and to prevent abuse. The API defines two kinds of
limits <a href="#type_RateLimit"
title="See definition of a RateLimit">rate
limits</a> and <a href="#type_AbsoluteLimit"
title="See
definition of an
AbsoluteLimit"
>absolute limits</a>. Rate limits are thresholds
that are reset after a certain amount of time passes.
Absolute limits are fixed.</p>
</xs:documentation>
</xs:annotation>
<!-- Live limit definitions -->
<xs:element name="limits" type="limits:Limits">
<xs:annotation>
<xs:documentation xml:lang="EN"
xmlns="http://www.w3.org/1999/xhtml">
<p>The limits element contains information on both
rate and absolute limits.</p>
</xs:documentation>
<xs:appinfo>
<xsdxt:samples>
<xsdxt:sample>
<xsdxt:code type="application/xml"
href="../samples/limits.xml"/>
</xsdxt:sample>
<xsdxt:sample>
<xsdxt:code type="application/json"
href="../samples/limits.json"/>
</xsdxt:sample>
</xsdxt:samples>
</xs:appinfo>
</xs:annotation>
</xs:element>
<!-- Enumeration and SimpleType definitions -->
<xs:simpleType name="HttpMethod">
<xs:annotation>
<xs:documentation>
<html:p>The HttpMethod simple type defines a string
enumeration of HTTP method verbs as outlined in <a
href="http://www.ietf.org/rfc/rfc2616.txt"
>RFC2616</a> section 9.</html:p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="GET"/>
<xs:enumeration value="DELETE"/>
<xs:enumeration value="POST"/>
<xs:enumeration value="PUT"/>
<xs:enumeration value="HEAD"/>
<xs:enumeration value="OPTIONS"/>
<xs:enumeration value="CONNECT"/>
<xs:enumeration value="TRACE"/>
<xs:enumeration value="ALL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TimeUnit">
<xs:annotation>
<xs:documentation>
<html:p>The TimeUnit simple type defines a string
enumeration of coarse time units that are be used
to define the duration of time that a limited
request will be unavailable for.</html:p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="SECOND"/>
<xs:enumeration value="MINUTE"/>
<xs:enumeration value="HOUR"/>
<xs:enumeration value="DAY"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Limits">
<xs:annotation>
<xs:documentation>
<html:p>A Limits type defines a collection of limits
</html:p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="rates" type="limits:RateLimitList"
minOccurs="0" maxOccurs="1"/>
<xs:element name="absolute"
type="limits:AbsoluteLimitList" minOccurs="0"
maxOccurs="1"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="AbsoluteLimitList">
<xs:annotation>
<xs:documentation>
<html:p>An AbsoluteLimitList type defines a list of
absolute limits</html:p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="limit" type="limits:AbsoluteLimit"
minOccurs="1" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="RateLimitList">
<xs:annotation>
<xs:documentation>
<html:p>A RateLimitList type defines a list of
resource scoped limit collections.</html:p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="rate" type="limits:ResourceRateLimits"
minOccurs="1" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="ResourceRateLimits">
<xs:annotation>
<xs:documentation>
<html:p>A ResourceLimitCollection type represents a
collection of limits that are scoped to a single
resource variant.</html:p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="limit" type="limits:RateLimit"
minOccurs="1" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="uri" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
<html:p>The URI of a limit collection is a human
readable string version of the regular
expression matcher that is used to define the
limit collection resource scope.</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="regex" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
<html:p>A collection of limits are scoped to a
resource by a regular expression.</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="AbsoluteLimit">
<xs:annotation>
<xs:documentation>
<html:p>Absolute limits are predefined fixed limits.
We define each of these limits as a key/value
pair. Please consult the API Specification for a
list of absolute limits used by the system.
</html:p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
<html:p>The name (or key) of the absolute limit.
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:int" use="required">
<xs:annotation>
<xs:documentation>
<html:p>A value specifying the absolute limit. The
name of the absolute limit determines the unit
type. For example, the key maxIPGroups implies
that the value is in terms of
IPGroups.</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="RateLimit">
<xs:annotation>
<xs:documentation>
<html:p>A Rate Limit type defines the maximum number
of requests that can be performed, the time
interval that each limited request will be
unavailable for, and, for convenience, the
remaining number of requests remaining. This is
done for every HttpMethod that is rate limited.
</html:p>
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="verb" type="limits:HttpMethod"
use="required">
<xs:annotation>
<xs:documentation>
<html:p>The verb of a Limit represents the
HttpMethod that the Limit is scoped to.
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="value" type="xs:int" use="required">
<xs:annotation>
<xs:documentation>
<html:p>The value of a Limit represents maximum
Number of requests that the rate limit will
allow.</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="remaining" type="xs:int" use="required">
<xs:annotation>
<xs:documentation>
<html:p>The remaining number of requests that a
user can make against the limited resource
before being denied access.</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="unit" type="limits:TimeUnit"
use="required">
<xs:annotation>
<xs:documentation>
<html:p>The unit of a Limit defines the duration
of a limited request's unavailability.
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="next-available" type="xs:dateTime"
use="required">
<xs:annotation>
<xs:documentation>
<html:p>The next-available attribute of a limit
tells the user when a limited request
becomes available for consumption.</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:schema>