Metadata Definitions Service API v2 (CURRENT)¶
Metadefs¶
General information¶
The Metadata Definitions Service ("metadefs", for short) provides a common API for vendors, operators, administrators, services, and users to meaningfully define available key:value pairs that can be used on different types of cloud resources (for example, images, artifacts, volumes, flavors, aggregates, and other resources).
To get you started, Glance contains a default catalog of metadefs that may be installed at your site; see the README in the code repository for details.
Once a common catalog of metadata definitions has been created, the catalog is available for querying through the API. Note that this service stores only the catalog, because metadefs are meta-metadata. Metadefs provide information about resource metadata, but do not themselves serve as actual metadata.
Actual key:value pairs are stored on the resources to which they apply using the metadata facilities provided by the appropriate API. (For example, the Images API would be used to put specific key:value pairs on a virtual machine image.)
A metadefs definition includes a property’s key, its description, its constraints, and the resource types to which it can be associated. See Metadata Definition Concepts in the Glance Developer documentation for more information.
Metadata definition schemas¶
Gets a JSON-schema document that represents a metadata definition entity.
(Since API v2.2)
Shows a JSON schema document that represents a metadata definition namespace entity.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"additionalProperties": false,
"definitions": {
"positiveInteger": {
"minimum": 0,
"type": "integer"
},
"positiveIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/positiveInteger"
},
{
"default": 0
}
]
},
"property": {
"additionalProperties": {
"properties": {
"additionalItems": {
"type": "boolean"
},
"default": {},
"description": {
"type": "string"
},
"enum": {
"type": "array"
},
"items": {
"properties": {
"enum": {
"type": "array"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
}
},
"type": "object"
},
"maxItems": {
"$ref": "#/definitions/positiveInteger"
},
"maxLength": {
"$ref": "#/definitions/positiveInteger"
},
"maximum": {
"type": "number"
},
"minItems": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minLength": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minimum": {
"type": "number"
},
"name": {
"maxLength": 255,
"type": "string"
},
"operators": {
"items": {
"type": "string"
},
"type": "array"
},
"pattern": {
"format": "regex",
"type": "string"
},
"readonly": {
"type": "boolean"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
},
"uniqueItems": {
"default": false,
"type": "boolean"
}
},
"required": [
"title",
"type"
],
"type": "object"
},
"type": "object"
},
"stringArray": {
"items": {
"type": "string"
},
"type": "array",
"uniqueItems": true
}
},
"name": "namespace",
"properties": {
"created_at": {
"description": "Date and time of namespace creation",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"description": {
"description": "Provides a user friendly description of the namespace.",
"maxLength": 500,
"type": "string"
},
"display_name": {
"description": "The user friendly name for the namespace. Used by UI if available.",
"maxLength": 80,
"type": "string"
},
"namespace": {
"description": "The unique namespace text.",
"maxLength": 80,
"type": "string"
},
"objects": {
"items": {
"properties": {
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"$ref": "#/definitions/property"
},
"required": {
"$ref": "#/definitions/stringArray"
}
},
"type": "object"
},
"type": "array"
},
"owner": {
"description": "Owner of the namespace.",
"maxLength": 255,
"type": "string"
},
"properties": {
"$ref": "#/definitions/property"
},
"protected": {
"description": "If true, namespace will not be deletable.",
"type": "boolean"
},
"resource_type_associations": {
"items": {
"properties": {
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"properties_target": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"schema": {
"readOnly": true,
"type": "string"
},
"self": {
"readOnly": true,
"type": "string"
},
"tags": {
"items": {
"properties": {
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"updated_at": {
"description": "Date and time of the last namespace modification",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"visibility": {
"description": "Scope of namespace accessibility.",
"enum": [
"public",
"private"
],
"type": "string"
}
},
"required": [
"namespace"
]
}
Shows a JSON schema document that represents a metadata definition namespaces entity.
A namespaces entity is a container for namespace entities.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"definitions": {
"positiveInteger": {
"minimum": 0,
"type": "integer"
},
"positiveIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/positiveInteger"
},
{
"default": 0
}
]
},
"property": {
"additionalProperties": {
"properties": {
"additionalItems": {
"type": "boolean"
},
"default": {},
"description": {
"type": "string"
},
"enum": {
"type": "array"
},
"items": {
"properties": {
"enum": {
"type": "array"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
}
},
"type": "object"
},
"maxItems": {
"$ref": "#/definitions/positiveInteger"
},
"maxLength": {
"$ref": "#/definitions/positiveInteger"
},
"maximum": {
"type": "number"
},
"minItems": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minLength": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minimum": {
"type": "number"
},
"name": {
"maxLength": 255,
"type": "string"
},
"operators": {
"items": {
"type": "string"
},
"type": "array"
},
"pattern": {
"format": "regex",
"type": "string"
},
"readonly": {
"type": "boolean"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
},
"uniqueItems": {
"default": false,
"type": "boolean"
}
},
"required": [
"title",
"type"
],
"type": "object"
},
"type": "object"
},
"stringArray": {
"items": {
"type": "string"
},
"type": "array",
"uniqueItems": true
}
},
"links": [
{
"href": "{first}",
"rel": "first"
},
{
"href": "{next}",
"rel": "next"
},
{
"href": "{schema}",
"rel": "describedby"
}
],
"name": "namespaces",
"properties": {
"first": {
"type": "string"
},
"namespaces": {
"items": {
"additionalProperties": false,
"name": "namespace",
"properties": {
"created_at": {
"description": "Date and time of namespace creation",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"description": {
"description": "Provides a user friendly description of the namespace.",
"maxLength": 500,
"type": "string"
},
"display_name": {
"description": "The user friendly name for the namespace. Used by UI if available.",
"maxLength": 80,
"type": "string"
},
"namespace": {
"description": "The unique namespace text.",
"maxLength": 80,
"type": "string"
},
"objects": {
"items": {
"properties": {
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"$ref": "#/definitions/property"
},
"required": {
"$ref": "#/definitions/stringArray"
}
},
"type": "object"
},
"type": "array"
},
"owner": {
"description": "Owner of the namespace.",
"maxLength": 255,
"type": "string"
},
"properties": {
"$ref": "#/definitions/property"
},
"protected": {
"description": "If true, namespace will not be deletable.",
"type": "boolean"
},
"resource_type_associations": {
"items": {
"properties": {
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"properties_target": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"schema": {
"readOnly": true,
"type": "string"
},
"self": {
"readOnly": true,
"type": "string"
},
"tags": {
"items": {
"properties": {
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"updated_at": {
"description": "Date and time of the last namespace modification",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"visibility": {
"description": "Scope of namespace accessibility.",
"enum": [
"public",
"private"
],
"type": "string"
}
},
"required": [
"namespace"
]
},
"type": "array"
},
"next": {
"type": "string"
},
"schema": {
"type": "string"
}
}
}
Shows a JSON schema document that represents a metadata definition namespace resource type association entity.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"additionalProperties": false,
"name": "resource_type_association",
"properties": {
"created_at": {
"description": "Date and time of resource type association",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"name": {
"description": "Resource type names should be aligned with Heat resource types whenever possible: http://docs.openstack.org/developer/heat/template_guide/openstack.html",
"maxLength": 80,
"type": "string"
},
"prefix": {
"description": "Specifies the prefix to use for the given resource type. Any properties in the namespace should be prefixed with this prefix when being applied to the specified resource type. Must include prefix separator (e.g. a colon :).",
"maxLength": 80,
"type": "string"
},
"properties_target": {
"description": "Some resource types allow more than one key / value pair per instance. For example, Cinder allows user and image metadata on volumes. Only the image properties metadata is evaluated by Nova (scheduling or drivers). This property allows a namespace target to remove the ambiguity.",
"maxLength": 80,
"type": "string"
},
"updated_at": {
"description": "Date and time of the last resource type association modification",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
]
}
Shows a JSON schema document that represents a metadata definition namespace resource type associations entity.
A resource type associations entity is a container for resource type association entities.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"links": [
{
"href": "{first}",
"rel": "first"
},
{
"href": "{next}",
"rel": "next"
},
{
"href": "{schema}",
"rel": "describedby"
}
],
"name": "resource_type_associations",
"properties": {
"first": {
"type": "string"
},
"next": {
"type": "string"
},
"resource_type_associations": {
"items": {
"additionalProperties": false,
"name": "resource_type_association",
"properties": {
"created_at": {
"description": "Date and time of resource type association",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"name": {
"description": "Resource type names should be aligned with Heat resource types whenever possible: http://docs.openstack.org/developer/heat/template_guide/openstack.html",
"maxLength": 80,
"type": "string"
},
"prefix": {
"description": "Specifies the prefix to use for the given resource type. Any properties in the namespace should be prefixed with this prefix when being applied to the specified resource type. Must include prefix separator (e.g. a colon :).",
"maxLength": 80,
"type": "string"
},
"properties_target": {
"description": "Some resource types allow more than one key / value pair per instance. For example, Cinder allows user and image metadata on volumes. Only the image properties metadata is evaluated by Nova (scheduling or drivers). This property allows a namespace target to remove the ambiguity.",
"maxLength": 80,
"type": "string"
},
"updated_at": {
"description": "Date and time of the last resource type association modification",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
]
},
"type": "array"
},
"schema": {
"type": "string"
}
}
}
Shows a JSON schema document that represents a metadata definition object entity.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"additionalProperties": false,
"definitions": {
"positiveInteger": {
"minimum": 0,
"type": "integer"
},
"positiveIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/positiveInteger"
},
{
"default": 0
}
]
},
"property": {
"additionalProperties": {
"properties": {
"additionalItems": {
"type": "boolean"
},
"default": {},
"description": {
"type": "string"
},
"enum": {
"type": "array"
},
"items": {
"properties": {
"enum": {
"type": "array"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
}
},
"type": "object"
},
"maxItems": {
"$ref": "#/definitions/positiveInteger"
},
"maxLength": {
"$ref": "#/definitions/positiveInteger"
},
"maximum": {
"type": "number"
},
"minItems": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minLength": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minimum": {
"type": "number"
},
"name": {
"maxLength": 255,
"type": "string"
},
"operators": {
"items": {
"type": "string"
},
"type": "array"
},
"pattern": {
"format": "regex",
"type": "string"
},
"readonly": {
"type": "boolean"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
},
"uniqueItems": {
"default": false,
"type": "boolean"
}
},
"required": [
"title",
"type"
],
"type": "object"
},
"type": "object"
},
"stringArray": {
"items": {
"type": "string"
},
"type": "array",
"uniqueItems": true
}
},
"name": "object",
"properties": {
"created_at": {
"description": "Date and time of object creation",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"description": {
"type": "string"
},
"name": {
"maxLength": 255,
"type": "string"
},
"properties": {
"$ref": "#/definitions/property"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"schema": {
"readOnly": true,
"type": "string"
},
"self": {
"readOnly": true,
"type": "string"
},
"updated_at": {
"description": "Date and time of the last object modification",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
]
}
Shows a JSON schema document that represents a metadata definition objects entity.
An objects entity is a container for object entities.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"definitions": {
"positiveInteger": {
"minimum": 0,
"type": "integer"
},
"positiveIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/positiveInteger"
},
{
"default": 0
}
]
},
"property": {
"additionalProperties": {
"properties": {
"additionalItems": {
"type": "boolean"
},
"default": {},
"description": {
"type": "string"
},
"enum": {
"type": "array"
},
"items": {
"properties": {
"enum": {
"type": "array"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
}
},
"type": "object"
},
"maxItems": {
"$ref": "#/definitions/positiveInteger"
},
"maxLength": {
"$ref": "#/definitions/positiveInteger"
},
"maximum": {
"type": "number"
},
"minItems": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minLength": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minimum": {
"type": "number"
},
"name": {
"maxLength": 255,
"type": "string"
},
"operators": {
"items": {
"type": "string"
},
"type": "array"
},
"pattern": {
"format": "regex",
"type": "string"
},
"readonly": {
"type": "boolean"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
},
"uniqueItems": {
"default": false,
"type": "boolean"
}
},
"required": [
"title",
"type"
],
"type": "object"
},
"type": "object"
},
"stringArray": {
"items": {
"type": "string"
},
"type": "array",
"uniqueItems": true
}
},
"links": [
{
"href": "{first}",
"rel": "first"
},
{
"href": "{next}",
"rel": "next"
},
{
"href": "{schema}",
"rel": "describedby"
}
],
"name": "objects",
"properties": {
"first": {
"type": "string"
},
"next": {
"type": "string"
},
"objects": {
"items": {
"additionalProperties": false,
"name": "object",
"properties": {
"created_at": {
"description": "Date and time of object creation",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"description": {
"type": "string"
},
"name": {
"maxLength": 255,
"type": "string"
},
"properties": {
"$ref": "#/definitions/property"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"schema": {
"readOnly": true,
"type": "string"
},
"self": {
"readOnly": true,
"type": "string"
},
"updated_at": {
"description": "Date and time of the last object modification",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
]
},
"type": "array"
},
"schema": {
"type": "string"
}
}
}
Shows a JSON schema document that represents a metadata definition property entity.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"additionalProperties": false,
"definitions": {
"positiveInteger": {
"minimum": 0,
"type": "integer"
},
"positiveIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/positiveInteger"
},
{
"default": 0
}
]
},
"stringArray": {
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"uniqueItems": true
}
},
"name": "property",
"properties": {
"additionalItems": {
"type": "boolean"
},
"default": {},
"description": {
"type": "string"
},
"enum": {
"type": "array"
},
"items": {
"properties": {
"enum": {
"type": "array"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
}
},
"type": "object"
},
"maxItems": {
"$ref": "#/definitions/positiveInteger"
},
"maxLength": {
"$ref": "#/definitions/positiveInteger"
},
"maximum": {
"type": "number"
},
"minItems": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minLength": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minimum": {
"type": "number"
},
"name": {
"maxLength": 255,
"type": "string"
},
"operators": {
"items": {
"type": "string"
},
"type": "array"
},
"pattern": {
"format": "regex",
"type": "string"
},
"readonly": {
"type": "boolean"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
},
"uniqueItems": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"title",
"name"
]
}
Shows a JSON schema document that represents a metadata definition properties entity.
A properties entity is a container for property entities.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200 Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"definitions": {
"positiveInteger": {
"minimum": 0,
"type": "integer"
},
"positiveIntegerDefault0": {
"allOf": [
{
"$ref": "#/definitions/positiveInteger"
},
{
"default": 0
}
]
},
"stringArray": {
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"uniqueItems": true
}
},
"links": [
{
"href": "{first}",
"rel": "first"
},
{
"href": "{next}",
"rel": "next"
},
{
"href": "{schema}",
"rel": "describedby"
}
],
"name": "properties",
"properties": {
"first": {
"type": "string"
},
"next": {
"type": "string"
},
"properties": {
"additionalProperties": {
"additionalProperties": false,
"name": "property",
"properties": {
"additionalItems": {
"type": "boolean"
},
"default": {},
"description": {
"type": "string"
},
"enum": {
"type": "array"
},
"items": {
"properties": {
"enum": {
"type": "array"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
}
},
"type": "object"
},
"maxItems": {
"$ref": "#/definitions/positiveInteger"
},
"maxLength": {
"$ref": "#/definitions/positiveInteger"
},
"maximum": {
"type": "number"
},
"minItems": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minLength": {
"$ref": "#/definitions/positiveIntegerDefault0"
},
"minimum": {
"type": "number"
},
"name": {
"maxLength": 255,
"type": "string"
},
"operators": {
"items": {
"type": "string"
},
"type": "array"
},
"pattern": {
"format": "regex",
"type": "string"
},
"readonly": {
"type": "boolean"
},
"required": {
"$ref": "#/definitions/stringArray"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"array",
"boolean",
"integer",
"number",
"object",
"string",
null
],
"type": "string"
},
"uniqueItems": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"title"
]
},
"type": "object"
},
"schema": {
"type": "string"
}
}
}
Shows a JSON schema document that represents a metadata definition tag entity.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"additionalProperties": false,
"name": "tag",
"properties": {
"created_at": {
"description": "Date and time of tag creation",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"name": {
"maxLength": 255,
"type": "string"
},
"updated_at": {
"description": "Date and time of the last tag modification",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
]
}
Shows a JSON schema document that represents a metadata definition tags entity.
A tags entity is a container for tag entities.
The following schema document is an example. The authoritative response is the actual response to the API call.
Normal response codes: 200
Error response codes: 400, 401
Request¶
There are no request parameters. The call does not take a request body.
Response Example¶
{
"links": [
{
"href": "{first}",
"rel": "first"
},
{
"href": "{next}",
"rel": "next"
},
{
"href": "{schema}",
"rel": "describedby"
}
],
"name": "tags",
"properties": {
"first": {
"type": "string"
},
"next": {
"type": "string"
},
"schema": {
"type": "string"
},
"tags": {
"items": {
"additionalProperties": false,
"name": "tag",
"properties": {
"created_at": {
"description": "Date and time of tag creation",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"name": {
"maxLength": 255,
"type": "string"
},
"updated_at": {
"description": "Date and time of the last tag modification",
"format": "date-time",
"readOnly": true,
"type": "string"
}
},
"required": [
"name"
]
},
"type": "array"
}
}
}