
backup_id should have been restorePoint with nested backupRef fixed 'users' api where database should be databases Fixes: bug #1196695 Change-Id: If10e3813a241fed229837a460ef55cc62f334487
37 KiB
OpenStack Database API v1
The Database API primarily fulfills administrative functionality for various database implementations. The api instruments a virtual database appliance and takes care of ongoing administration and uptime of the database service.
API Conventions
The Database API provides a RESTful JSON and XML interface.
Each REST resource contains a canonically unique identifier (ID) defined by the
Database service implementation and is provided as the id
attribute; Resource
ID's are strings of non-zero length.
The resource paths of all collections are plural and are represented at the
root of the API (e.g. /v1/entities
).
Required Attributes
Headers:
-
X-Auth-Token
This header is used to convey the authentication token when accessing Database APIs.
For collections:
-
links
(object)Specifies a list of relational links to the collection.
-
self
(url)A self-relational link provided as an absolute URL. This attribute is provided by the database service implementation.
-
previous
(url)A relational link to the previous page of the list, provided as an absolute URL. This attribute is provided by the database service implementation. May be null.
-
next
(url)A relational to the next page of the list, provided as an absolute URL. This attribute is provided by the database service implementation. May be null.
-
For members:
-
id
(string)Globally unique resource identifier. This attribute is provided by the database service implementation.
-
links
(object)Specifies a set of relational links relative to the collection member.
-
self
(url)A self-relational link provided as an absolute URL. This attribute is provided by the database service implementation.
-
CRUD Operations
Unless otherwise documented, all resources provided by the Identity API support basic CRUD operations (create, read, update, delete).
The examples in this section utilize a resource collection of Entities on
/v1/entities
which is not actually a part of the Identity API, and is used
for illustrative purposes only.
Create an Entity
When creating an entity, you must provide all required attributes (except those provided by the Database service implementation, such as the resource ID):
Request:
POST /entities
{
"entity": {
"name": string,
"description": string,
"enabled": boolean
}
}
The full entity is returned in a successful response (including the new resource's ID and a self-relational link), keyed by the singular form of the resource name:
201 Created
{
"entity": {
"id": string,
"name": string,
"description": string,
"enabled": boolean,
"links": {
"self": url
}
}
}
List Entities
Request the entire collection of entities:
GET /entities
A successful response includes a list of anonymous dictionaries, keyed by the plural form of the resource name (identical to that found in the resource URL):
200 OK
{
"entities": [
{
"id": string,
"name": string,
"description": string,
"enabled": boolean,
"links": {
"self": url
}
},
{
"id": string,
"name": string,
"description": string,
"enabled": boolean,
"links": {
"self": url
}
}
],
"links": {
"self": url,
"next": url,
"previous": url
}
}
Get an Entity
Request a specific entity by ID:
GET /entities/{entity_id}
The full resource is returned in response:
200 OK
{
"entity": {
"id": string,
"name": string,
"description": string,
"enabled": boolean,
"links": {
"self": url
}
}
}
Update an Entity
Partially update an entity (unlike a standard PUT
operation, only the
specified attributes are replaced):
PATCH /entities/{entity_id}
{
"entity": {
"description": string,
}
}
The full entity is returned in response:
200 OK
{
"entity": {
"id": string,
"name": string,
"description": string,
"enabled": boolean,
"links": {
"self": url
}
}
}
Delete an Entity
Delete a specific entity by ID:
DELETE /entities/{entity_id}
A successful response does not include a body:
204 No Content
HTTP Status Codes
The Database API uses a subset of the available HTTP status codes to communicate specific success and failure conditions to the client.
200 OK
This status code is returned in response to successful GET
and PATCH
operations.
201 Created
This status code is returned in response to successful POST
operations.
204 No Content
This status code is returned in response to successful HEAD
, PUT
and
DELETE
operations.
300 Multiple Choices
This status code is returned by the root identity endpoint, with references to
one or more Database API versions (such as /v1/
).
400 Bad Request
This status code is returned when the Database service fails to parse the
request as expected. This is most frequently returned when a required attribute
is missing, a disallowed attribute is specified (such as an id
on POST
in a
basic CRUD operation), or an attribute is provided of an unexpected data type.
The client is assumed to be in error.
401 Unauthorized
This status code is returned when either authentication has not been performed, the provided X-Auth-Token is invalid or authentication credentials are invalid (including the user having been disabled).
403 Forbidden
This status code is returned when the request is successfully authenticated but not authorized to perform the requested action.
404 Not Found
This status code is returned in response to failed GET
, HEAD
, POST
,
PUT
, PATCH
and DELETE
operations when a referenced entity cannot be found
by ID. In the case of a POST
request, the referenced entity may be in the
request body as opposed to the resource path.
500 Internal Server Error
This status code is returned when an unexpected error has occurred in the Database service implementation.
501 Not Implemented
This status code is returned when the Database service implementation is unable to fulfill the request because it is incapable of implementing the entire API as specified.
For example, an Database service may be incapable of returning an exhaustive collection of Instances with any reasonable expectation of performance, or lack the necessary permission to create or modify the collection of users (depending on a database implementation); the implementation may therefore choose to return this status code to communicate this condition to the client.
503 Service Unavailable
This status code is returned when the Database service is unable to communicate with a backend service, or by a proxy in front of the Database service unable to communicate with the Database service itself.
API Resources
Users: /v1/instances
A database instance is an isolated MySQL instance in a single tenant environment on a shared physical host machine. Also referred to as instance.
Additional required attributes:
-
name
(string)Name of the instance to create. The length of the name is limited to 255 characters and any characters are permitted.
-
flavorRef
(integer)Reference (href) to a flavor as specified in the response from the List Flavors API call. This is the actual URI as specified by the href field in the link. Refer to the List Flavors response examples that follow for an example of the flavorRef.
-
size
(integer)Specifies the volume size in gigabytes (GB).
Optional attributes:
-
databases
(list)-
Name
(string)Specifies database names for creating databases on instance creation.
-
character_set
(string)Set of symbols and encodings. The default character set is utf8.
-
collate
(string)Set of rules for comparing characters in a character set. The default value for collate is utf8_general_ci.
-
-
users
(list)-
Name
(string)Specifies user name for the database on instance creation.
-
password
(string)Specifies password for those users on instance creation.
-
databases
(list)name
(string)
Specifies names of databases that those users can access on instance creation.
-
Example entity:
{
"instance": {
"databases": [
{
"character_set": "utf8",
"collate": "utf8_general_ci",
"name": "sampledb"
},
{
"name": "nextround"
}
],
"flavorRef": "https://endpoint/v1.0/1234/flavors/1",
"name": "json_rack_instance",
"users": [
{
"databases": [
{
"name": "sampledb"
}
],
"name": "demouser",
"password": "demopassword"
}
],
"volume": {
"size": 2
}
}
}
Databases: /v1/instances/{instance_id}/databases
A list database within a database instance.
Additional required attributes:
-
name
(string)Specifies the database name for creating the database.
Optional attributes:
-
character_set
(string)Set of symbols and encodings. The default character set is utf8.
-
collate
(string)Set of rules for comparing characters in a character set. The default value for collate is utf8_general_ci.
Example entity:
{
"database": {
"character_set": "utf8",
"collate": "utf8_general_ci",
"name": "testingdb"
}
}
Users: /v1/instances/{instance_id}/users
A user for a specified database.
Additional required attributes:
-
name
(string)Specifies the name of the user for the database.
-
password
(string)Specifies the user password for database access.
-
databases
(list)name
(string) Name of the database that the user can access. One or more database names must be specified.
Example entity:
{
"user": {
"databases": [
{
"name": "databaseB"
},
{
"name": "databaseC"
}
],
"name": "dbuser",
"password": "password"
}
}
Flavors: /v1/flavors
A flavor is an available hardware configuration for a database instance. Each flavor has a unique combination of memory capacity and priority for CPU time
Example entity:
{
"flavor": {
"id": 1,
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
],
"name": "m1.tiny",
"ram": 512
}
}
Limits: /v1/limits
Database-as-a-Service supports API rate limiting for its API. The rate limiting allows an administrator to configure limits on the type and number of API calls that can be made in a specific time interval. DBaaS also supports absolute limits. An admin can configure and impose absolute limits on resources consumed by users.
When API rate limits are exceeded, HTTP requests will return a error with a status code of 413 "Request entity too large", and will also include a 'Retry-After' HTTP header. The response body will include the error details, and the delay before the request should be retried. Rate limits are applied in order, relative to the HTTP method, going from least to most specific.
Absolute limits are specified as name/value pairs. The name of the absolute limit uniquely identifies the limit within a deployment. Please consult your provider for an exhaustive list of absolute value names. An absolute limit value is always specified as an integer. The name of the absolute limit determines the unit type of the integer value. For example, the name max_instances implies that the value is in terms of number of instances.
Example entity:
{
"limits": [
{
"max_instances": 10,
"max_volumes": 100,
"max_backups": 20,
"verb": "ABSOLUTE"
},
{
"nextAvailable": "2013-05-21T17:27:25Z",
"regex": ".*",
"remaining": 200,
"unit": "MINUTE",
"uri": "*",
"value": 200,
"verb": "POST"
},
{
"nextAvailable": "2013-05-21T17:27:25Z",
"regex": ".*",
"remaining": 200,
"unit": "MINUTE",
"uri": "*",
"value": 200,
"verb": "PUT"
},
{
"nextAvailable": "2013-05-21T17:27:25Z",
"regex": ".*",
"remaining": 200,
"unit": "MINUTE",
"uri": "*",
"value": 200,
"verb": "DELETE"
},
{
"nextAvailable": "2013-05-21T17:27:25Z",
"regex": ".*",
"remaining": 199,
"unit": "MINUTE",
"uri": "*",
"value": 200,
"verb": "GET"
}
]
}
Security Groups: /v1/security-groups
A security group is is a collection of rules that act as a firewall to control traffic that is allowed to reach your database instance. Whenever an instance is created, a security group is also created and associated with the instance. You can add rules to the security group that control the inbound traffic allowed to reach your database instance.
Example entity:
{
"created": "2013-04-04T20:42:54",
"description": "Default Security Group Description",
"id": "2",
"links": [
{
"href": "http://10.6.146.21:8779/v1.0/ten-id/security-groups/2",
"rel": "self"
}
],
"name": "SecGroup_df65588e-ed08-497b-8803-daa5b83c9c0f",
"rules": [],
"updated": "2013-04-04T20:42:54"
}
Security Group Rules: /v1/security-group-rules
Security group rules are rules that act as a firewall to control traffic that is allowed to reach your database instance. You can add rules to the security group associated with your database instance to control the inbound traffic allowed to reach your instance.
Example entity:
{
"cidr": "0.0.0.0/0",
"from_port": 3306,
"id": "1",
"protocol": "tcp",
"to_port": 3306
}
Core API
Versions
List versions; GET /
(TBD: This needs additional definition to match the detail below)
Instances
Use cases:
- Creating an instance
- Listing instances
- Retrieving instance details
CREATE instance: POST /instances
This operation asynchronously provisions a new database instance. This call requires the user to specify a flavor and a volume size. The service then provisions the instance with the requested flavor and sets up a volume of the specified size, which is the storage for the database instance.
Request:
{
"instance": {
"databases": [
{
"character_set": "utf8",
"collate": "utf8_general_ci",
"name": "sampledb"
},
{
"name": "nextround"
}
],
"flavorRef": "https://endpoint/v1.0/1234/flavors/1",
"name": "json_rack_instance",
"users": [
{
"databases": [
{
"name": "sampledb"
}
],
"name": "demouser",
"password": "demopassword"
}
],
"volume": {
"size": 2
}
}
}
Response:
Status: 200 OK
{
"instance": {
"created": "2012-01-25T21:53:09Z",
"flavor": {
"id": "1",
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
]
},
"hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.rackspaceclouddb.com",
"id": "dea5a2f7-3ec7-4496-adab-0abb5a42d635",
"links": [
{
"href": "https://endpoint/v1.0/1234/instances/dea5a2f7-3ec7-4496-adab-0abb5a42d635",
"rel": "self"
},
{
"href": "https://endpoint/instances/dea5a2f7-3ec7-4496-adab-0abb5a42d635",
"rel": "bookmark"
}
],
"name": "json_rack_instance",
"status": "BUILD",
"updated": "2012-01-25T21:53:10Z",
"volume": {
"size": 2
}
}
}
LIST instances: GET /instances
This operation lists the status and information for all database instances.
Response:
{
"instances": [
{
"flavor": {
"id": "1",
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
]
},
"id": "28d1b8f3-172a-4f6d-983d-36021508444a",
"links": [
{
"href": "https://endpoint/v1.0/1234/instances/28d1b8f3-172a-4f6d-983d-36021508444a",
"rel": "self"
},
{
"href": "https://endpoint/instances/28d1b8f3-172a-4f6d-983d-36021508444a",
"rel": "bookmark"
}
],
"name": "instance1",
"status": "ACTIVE",
"volume": {
"size": 2
}
},
{
"flavor": {
"id": "1",
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
]
},
"id": "8fb081af-f237-44f5-80cc-b46be1840ca9",
"links": [
{
"href": "https://endpoint/v1.0/1234/instances/8fb081af-f237-44f5-80cc-b46be1840ca9",
"rel": "self"
},
{
"href": "https://endpoint/instances/8fb081af-f237-44f5-80cc-b46be1840ca9",
"rel": "bookmark"
}
],
"name": "instance2",
"status": "ACTIVE",
"volume": {
"size": 2
}
}
]
}
List Database Instance Details GET /instances/{instance_id}
This operation lists the status and details of the specified database instance. It also lists the volume size in gigabytes (GB) and the approximate GB used.
Response:
Status: 200 OK
{
"instance": {
"created": "2012-03-28T21:31:02Z",
"flavor": {
"id": "1",
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
]
},
"hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.rackspaceclouddb.com",
"id": "2450c73f-7805-4afe-a42c-4094ab42666b",
"links": [
{
"href": "https://endpoint/v1.0/1234/instances/2450c73f-7805-4afe-a42c-4094ab42666b",
"rel": "self"
},
{
"href": "https://endpoint/instances/2450c73f-7805-4afe-a42c-4094ab42666b",
"rel": "bookmark"
}
],
"name": "xml_rack_instance",
"status": "ACTIVE",
"updated": "2012-03-28T21:34:25Z",
"volume": {
"size": 2,
"used": 0.124542236328125
}
}
}
Delete instance: DELETE /instances/{instance_id}
Response:
Status: 202 ACCEPTED
Enable root user: POST /instances/{instance_id}/root
This operation enables login from any host for the root user and provides the user with a generated root password.
Response:
Status: 200 OK
{
"user": {
"name": "root",
"password": "d4311cb1-d912-45be-8517-e8a46f54df66"
}
}
Get root enabled status: GET /instances/{instance_id}/root
This operation checks an active specified database instance to see if root access is enabled. It returns True if root user is enabled for the specified database instance or False otherwise.
Response:
Status: 200 OK
{
"rootEnabled": true
}
Instance Actions
Restart instance POST /instances/{instanceId}/action
The restart operation will restart only the MySQL Instance. Restarting MySQL will erase any dynamic configuration settings that you have made within MySQL.
Request:
{
"restart": {}
}
Response:
Status 202 ACCEPTED
Resize instance POST /instances/{instanceId}/action
This operation changes the memory size of the instance, assuming a valid flavorRef is provided. Restarts MySQL in the process.
Request:
{
"resize": {
"flavorRef": "https://endpoint/v1.0/1234/flavors/2"
}
}
Response:
Status 202 ACCEPTED
Resize volume POST /instances/{instanceId}/action
This operation supports resizing the attached volume for an instance. It supports only increasing the volume size and does not support decreasing the size. The volume size is in gigabytes (GB) and must be an integer.
Request:
{
"resize": {
"volume": {
"size": 4
}
}
}
Response:
Status 202 ACCEPTED
Database
Create database POST /instances/{instance_id}/databases
Creates a new database(s) within the specified instance.
Request:
{
"databases": [
{
"character_set": "utf8",
"collate": "utf8_general_ci",
"name": "testingdb"
},
{
"name": "sampledb"
}
]
}
Response:
Status 202 ACCEPTED
List databases GET /instances/{instance_id}/databases
Lists databases for the specified instance.
Response:
{
"databases": [
{
"name": "anotherexampledb"
},
{
"name": "exampledb"
},
{
"name": "nextround"
},
{
"name": "sampledb"
},
{
"name": "testingdb"
}
]
}
Delete database DELETE /instances/{instance_id}/databases/{database_name}
Deletes the requested database within the specified database instance. Note that all data associated with the database is also deleted.
Response
Status: 202 ACCEPTED
Users
Create user POST /instances/{instance_id}/users
Creates a new user(s) within the specified instance.
Request:
{
"users": [
{
"databases": [
{
"name": "databaseA"
}
],
"name": "dbuser3",
"password": "password"
},
{
"databases": [
{
"name": "databaseB"
},
{
"name": "databaseC"
}
],
"name": "dbuser4",
"password": "password"
}
]
}
Response:
Status 202 ACCEPTED
Get User GET /instances/{instance_id}/users/{username}
Show a single user and the databases to which this user has privileges.
Response:
{
"user": {
"name": "username",
"databases": [
{
"name": "databaseB"
},
{
"name": "databaseC"
}
]
}
}
List users GET /instances/{instance_id}/users
Lists users for the specified instance.
Response:
{
"users": [
{
"databases": [
{
"name": "databaseA"
}
],
"name": "dbuser3"
},
{
"databases": [
{
"name": "databaseB"
},
{
"name": "databaseC"
}
],
"name": "dbuser4"
}
]
}
Get users databases GET /instances/{instance_id}/users/{username}/databases
Gets a list of databases for which a user has access.
Response:
{
"databases": [
{
"name": "databaseB"
},
{
"name": "databaseC"
}
]
}
Add database privileges PUT /instances/{instance_id}/users/{username}/databases
Adds privileges on the specified database(s) to the user.
Request:
{
"databases": [
{
"name": "databaseB"
},
{
"name": "databaseC"
}
]
}
Response:
Status: 202 ACCEPTED
Remove database privileges DELETE /instances/{instance_id}/users/{username}/databases/{databaseName}
Response:
Status: 202 ACCEPTED
Modify user password PUT /instances/{instance_id}/users
Changes the password of the specified user(s).
Request:
{
"users": [
{
"name": "dbuser3",
"password": "password"
},
{
"name": "dbuser4",
"password": "password"
}
]
}
Delete user DELETE /instances/{instance_id}/users/{user_name}
Deletes the requested user within the specified instance.
Response
Status: 202 ACCEPTED
Flavors
List Flavors GET /flavors
Lists information for all available flavors. This resource is identical to the flavors found in the OpenStack Nova API, but without the disk property.
Response:
{
"flavors": [
{
"id": 1,
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
],
"name": "m1.tiny",
"ram": 512
},
{
"id": 2,
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/2",
"rel": "self"
},
{
"href": "https://endpoint/flavors/2",
"rel": "bookmark"
}
],
"name": "m1.small",
"ram": 1024
},
{
"id": 3,
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/3",
"rel": "self"
},
{
"href": "https://endpoint/flavors/3",
"rel": "bookmark"
}
],
"name": "m1.medium",
"ram": 2048
},
{
"id": 4,
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/4",
"rel": "self"
},
{
"href": "https://endpoint/flavors/4",
"rel": "bookmark"
}
],
"name": "m1.large",
"ram": 4096
},
]
}
Get Flavor Details GET /flavors/{flavor_id}
Gets more detailed information about a given flavor.
Response:
{
"flavor": {
"id": 1,
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
],
"name": "m1.tiny",
"ram": 512
}
}
Security Groups
List Security Groups GET /security_groups
Lists all of the Security Groups, with details of which instances they are attached to.
Response:
{
"created": "2013-04-04T20:42:54",
"description": "Default Security Group Description",
"id": "2",
"links": [
{
"href": "http://10.6.146.21:8779/v1.0/ten-id/security-groups/2",
"rel": "self"
}
],
"name": "SecGroup_df65588e-ed08-497b-8803-daa5b83c9c0f",
"rules": [],
"updated": "2013-04-04T20:42:54"
}
Get Security Group GET /security_groups/{security_group_id}
Gets more detailed information about a given security group.
Response:
{
"created": "2013-04-04T20:42:54",
"description": "Default Security Group Description",
"id": "2",
"links": [
{
"href": "http://10.6.146.21:8779/v1.0/ten-id/security-groups/2",
"rel": "self"
}
],
"name": "SecGroup_df65588e-ed08-497b-8803-daa5b83c9c0f",
"rules": [
{
"cidr": "0.0.0.0/0",
"from_port": 3306,
"id": "1",
"protocol": "tcp",
"to_port": 3306
}
],
"updated": "2013-04-04T20:42:54"
}
Security Group Rules
Add Security Group Rule POST /security_group_rules
Creates a security group rule within the specified security group.
Request:
{
"security_group_rule":
{
"cidr": "0.0.0.0/0",
"group_id": "2",
}
}
Response:
Status: 202 ACCEPTED
Delete Security Group Rule
DELETE /security_group_rules/{security-group-rule-id}
Deletes a security group rule corresponding to the specified security-group-rule-id.
Response:
Status: 204 DELETED
Backups
Create Backup POST /backups
Creates a new, full backup of an existing instance.
Request:
{
"backup":
{
"description": null,
"instance": "d6338c9c-3cc8-4313-b98f-13cc0684cf15",
"name": "testback-backup"
}
}
Response:
{
"backup":
{
"created": "2013-05-01T00:00:00",
"description": null,
"id": "aeb6fa4c-932d-4acc-a339-cccfb9f300b2",
"instance_id": "d6338c9c-3cc8-4313-b98f-13cc0684cf15",
"locationRef": null,
"name": "testback-backup",
"status": "NEW",
"updated": "2013-05-01T00:00:00"
}
}
Get Backup GET /backups/{backup_id}
Shows detailed information about the specified backup
Response:
{
"backup":
{
"created": "2013-05-01T00:00:00",
"description": null,
"id": "aeb6fa4c-932d-4acc-a339-cccfb9f300b2",
"instance_id": "d6338c9c-3cc8-4313-b98f-13cc0684cf15",
"locationRef": "http://10.0.0.1:8080/v1/AUTH_xyz/z_CLOUDDB_BACKUPS/aeb6fa4c-932d-4acc-a339-cccfb9f300b2.xbstream.gz",
"name": "testback-backup",
"status": "COMPLETED",
"updated": "2013-05-01T00:00:00"
}
}
List Backups GET /backups
Shows detailed information about all backups for a tenant
Response:
{
"backups":
[
{
"created": "2013-05-01T00:00:00",
"description": null,
"id": "aeb6fa4c-932d-4acc-a339-cccfb9f300b2",
"instance_id": "d6338c9c-3cc8-4313-b98f-13cc0684cf15",
"locationRef": null,
"name": "testback-backup",
"status": "COMPLETED",
"updated": "2013-05-01T00:00:00"
},
{
"created": "2013-05-04T00:00:00",
"description": null,
"id": "aeb6fa4c-932d-4acc-a339-cccfb9f300b3",
"instance_id": "d6338c9c-3cc8-4313-b98f-13cc0684cf15",
"locationRef": null,
"name": "testback-backup2",
"status": "COMPLETED",
"updated": "2013-05-04T00:00:00"
}
]
}
Delete Backup DELETE /backups/{backup_id}
Response:
Status: 202 ACCEPTED
Restore Backup POST /instances
This operation asynchronously provisions a new database instance. This call requires the user to specify a flavor and a volume size. The service then provisions the instance with the requested flavor and sets up a volume of the specified size, which is the storage for the database instance.
Finally, this will restore a copy of the database based on the specified 'backupRef' of 'restorePoint'.
Request:
{
"instance": {
"flavorRef": "https://endpoint/v1.0/1234/flavors/1",
"name": "dbaas_restore_instance",
"volume": {
"size": 2
},
"restorePoint": {
"backupRef": "aeb6fa4c-932d-4acc-a339-cccfb9f300b3"
}
}
}
Response:
Status: 200 OK
{
"instance": {
"created": "2013-05-04T00:00:00",
"flavor": {
"id": "1",
"links": [
{
"href": "https://endpoint/v1.0/1234/flavors/1",
"rel": "self"
},
{
"href": "https://endpoint/flavors/1",
"rel": "bookmark"
}
]
},
"hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.somewhere.com",
"id": "dea5a2f7-3ec7-4496-adab-0abb5a42d635",
"links": [
{
"href": "https://endpoint/v1.0/1234/instances/dea5a2f7-3ec7-4496-adab-0abb5a42d635",
"rel": "self"
},
{
"href": "https://endpoint/instances/dea5a2f7-3ec7-4496-adab-0abb5a42d635",
"rel": "bookmark"
}
],
"name": "dbaas_restore_instance",
"status": "BUILD",
"updated": "2013-05-04T00:00:00",
"volume": {
"size": 2
}
}
}