8a7f051108
fixes bug 1154702 Change-Id: I78b1d2c9975a1a4f32b0785cce45f1e471783d8c
356 lines
15 KiB
XML
356 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<?xml-stylesheet type="text/xsl" href="../xslt/schema.xsl"?>
|
|
|
|
<!-- (C) 2011 OpenStack Foundation., All Rights Reserved -->
|
|
|
|
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
|
|
targetNamespace="http://docs.openstack.org/common/api/v1.0"
|
|
xmlns:vers="http://docs.openstack.org/common/api/v1.0"
|
|
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
|
|
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
|
xmlns:html="http://www.w3.org/1999/xhtml"
|
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
|
|
<xs:annotation>
|
|
<xs:appinfo
|
|
xml:lang="EN"
|
|
xmlns="http://www.w3.org/1999/xhtml">
|
|
<xsdxt:title>Version Types</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 all types related to versioning.
|
|
</p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
|
|
<!-- Import ATOM specific schema definitions -->
|
|
<xs:import namespace="http://www.w3.org/2005/Atom" schemaLocation="atom/atom.xsd" />
|
|
|
|
<!-- Multiple choices -->
|
|
<xs:element name="choices" type="vers:VersionChoiceList">
|
|
<xs:annotation>
|
|
<xs:documentation
|
|
xml:lang="EN"
|
|
xmlns="http://www.w3.org/1999/xhtml">
|
|
<p>
|
|
This element is returned when the version of the
|
|
resource cannot be determined. The element
|
|
provides a list of choices for the resource.
|
|
</p>
|
|
</xs:documentation>
|
|
<xs:appinfo>
|
|
<xsdxt:samples>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/xml" href="../samples/choices.xml" />
|
|
</xsdxt:sample>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/json" href="../samples/choices.json" />
|
|
</xsdxt:sample>
|
|
</xsdxt:samples>
|
|
</xs:appinfo>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<!-- Versioning -->
|
|
<xs:element name="versions" type="vers:VersionChoiceList">
|
|
<xs:annotation>
|
|
<xs:documentation
|
|
xml:lang="EN"
|
|
xmlns="http://www.w3.org/1999/xhtml">
|
|
<p>
|
|
Provides a list of supported versions.
|
|
</p>
|
|
</xs:documentation>
|
|
<xs:appinfo>
|
|
<xsdxt:samples>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/xml" href="../samples/versions.xml" />
|
|
</xsdxt:sample>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/json" href="../samples/versions.json" />
|
|
</xsdxt:sample>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/atom+xml" href="../samples/versions-atom.xml" />
|
|
</xsdxt:sample>
|
|
</xsdxt:samples>
|
|
</xs:appinfo>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
<xs:element name="version" type="vers:VersionChoice" vc:minVersion="1.0" vc:maxVersion="1.1">
|
|
<xs:annotation>
|
|
<xs:documentation
|
|
xml:lang="EN"
|
|
xmlns="http://www.w3.org/1999/xhtml">
|
|
<p>
|
|
This element provides detailed meta information
|
|
regarding the status of the current API version.
|
|
This is the XSD 1.0 compatible element definition.
|
|
</p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="version" type="vers:VersionChoiceRoot" vc:minVersion="1.1">
|
|
<xs:annotation>
|
|
<xs:documentation
|
|
xml:lang="EN"
|
|
xmlns="http://www.w3.org/1999/xhtml">
|
|
<p>
|
|
This element provides detailed meta information
|
|
regarding the status of the current API
|
|
version. The description should include a pointer
|
|
to both a human readable and a machine processable
|
|
description of the API service.
|
|
</p>
|
|
</xs:documentation>
|
|
<xs:appinfo>
|
|
<xsdxt:samples>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/xml" href="../samples/version.xml" />
|
|
</xsdxt:sample>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/json" href="../samples/version.json" />
|
|
</xsdxt:sample>
|
|
<xsdxt:sample>
|
|
<xsdxt:code type="application/atom+xml" href="../samples/version-atom.xml" />
|
|
</xsdxt:sample>
|
|
</xsdxt:samples>
|
|
</xs:appinfo>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<!-- Types -->
|
|
<xs:simpleType name="VersionStatus">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
The VersionStatus type describes a service's operational status.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="ALPHA">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
This is a new service the API. Thi API
|
|
contract may be set, but the implementaiton
|
|
may not be 100% complient with it. Developers
|
|
are encouraged to begin testing aganst an
|
|
ALPHA version to provide feedback.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:enumeration>
|
|
<xs:enumeration value="BETA">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A status of BETA indicates that this
|
|
version is a candidate for the next major
|
|
release and may feature functionality not
|
|
available in the current
|
|
version. Developers are encouraged to test
|
|
and begin the migration processes to a
|
|
BETA version. Note that a BETA version is
|
|
undergoing testing, it has not been
|
|
officially released, and my not be stable.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:enumeration>
|
|
<xs:enumeration value="CURRENT">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
The API version is stable and has been
|
|
tested. Developers are encouraged to
|
|
develop against this API version. The
|
|
current released version of the API will
|
|
always be marked as CURRENT.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:enumeration>
|
|
<xs:enumeration value="DEPRECATED">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A status of DEPRECATED indicates that a
|
|
newer version of the API is
|
|
available. Application developers are
|
|
discouraged from using this version and
|
|
should instead develop against the latest
|
|
current version of the API.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:enumeration>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:complexType name="VersionChoiceList">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A version choice list outlines a collection of
|
|
resources at various versions.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:sequence>
|
|
<xs:element name="version" type="vers:VersionChoice" minOccurs="1" maxOccurs="unbounded" />
|
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
|
<xs:assert vc:minVersion="1.1" test="every $v in vers:version satisfies $v/atom:link[@rel='self']">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
In version lists, every single version must
|
|
contain at least one self link.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:assert>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="VersionChoiceRoot" vc:minVersion="1.1">
|
|
<xs:complexContent>
|
|
<xs:extension base="vers:VersionChoice">
|
|
<xs:assert test="atom:link[@rel='describedby']">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
When used as a root element, a version choice
|
|
must contain at least one describedby link.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:assert>
|
|
</xs:extension>
|
|
</xs:complexContent>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="VersionChoice">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A version choice contains relevant information
|
|
about an available service that a user can then
|
|
use to target a specific version of the service.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
|
|
<xs:sequence>
|
|
<xs:element name="media-types" type="vers:MediaTypeList" minOccurs="0" maxOccurs="1" />
|
|
<xs:element vc:minVersion="1.1" ref="atom:link" minOccurs="0" maxOccurs="unbounded" />
|
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
|
|
<xs:attribute name="id" type="xs:string" use="required">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
The ID of a version choice represents the service version's unique
|
|
identifier. This ID is guaranteed to be unique only among the
|
|
service version choices outlined in the VersionChoiceList.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:attribute>
|
|
|
|
<xs:attribute name="status" type="vers:VersionStatus" use="required">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A version choice's status describes the current operational state of
|
|
the given service version. The operational status is captured in a
|
|
simple type enumeration called VersionStatus.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:attribute>
|
|
|
|
<xs:attribute name="updated" type="xs:dateTime" use="optional">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A version choice's updated attribute describes
|
|
the time when the version was updated. The
|
|
time should be updated anytime
|
|
<html:strong>anything</html:strong> in the
|
|
version has changed: documentation,
|
|
extensions, bug fixes.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:attribute>
|
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="MediaTypeList">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A MediaTypeList outlines a collection of valid media types for a given
|
|
service version.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
|
|
<xs:sequence>
|
|
<xs:element name="media-type" type="vers:MediaType" 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="MediaType">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
A MediaType describes what content types the service version understands.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:sequence>
|
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
<xs:attribute name="base" type="xs:string" use="optional" default="">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
The base of a given media type describes the
|
|
simple MIME type that then a more complicated
|
|
media type can be derived from. These types
|
|
are basic and provide no namespace or version
|
|
specific data are are only provided as a
|
|
convenience.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:attribute>
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required">
|
|
<xs:annotation>
|
|
<xs:documentation>
|
|
<html:p>
|
|
The type attribute of a MediaType describes
|
|
the MIME specific identifier of the media type
|
|
in question.
|
|
</html:p>
|
|
</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:attribute>
|
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
|
</xs:complexType>
|
|
</xs:schema>
|