karbor/doc/source/api/karbor_api.v1.yaml

1604 lines
49 KiB
YAML

swagger: '2.0'
info:
title: Karbor API
description: Protect all you hold dear
version: 0.99.0
host: api.karbor.nowhere.com
schemes:
- https
basePath: /v1
produces:
- application/json
paths:
/{project_id}/providers:
get:
summary: Providers
description: |
The Providers endpoint returns information about the providers
offered at a given service. All providers need to be configured
first by the admin.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Protection Provider
responses:
'200':
description: An array of providers
schema:
type: array
items:
$ref: '#/definitions/Provider'
examples:
application/json: [
{
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"name": "OS Infra Provider",
"description": "This provider uses OpenStack's own services (swift, cinder) as storage",
"extended_info_schema": {
"OS::Nova::Cinder": {
"type": "object",
"properties": {
"use_cbt": {
"type": "boolean",
"title": "Use CBT",
"description": "Use Changed Block Tracking when backin up this volume"
}
}
}
}
}
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/providers/{provider_id}:
get:
summary: Provider
description: |
The Providers endpoint returns information about a specific provider.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/provider_idParam'
tags:
- Protection Provider
responses:
'200':
description: A protection provider.
schema:
$ref: '#/definitions/Provider'
examples:
application/json:
{
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"name": "OS Infra Provider",
"description": "This provider uses OpenStack's own services (swift, cinder) as storage",
"extended_info_schema": {
"OS::Nova::Cinder": {
"type": "object",
"properties": {
"use_cbt": {
"type": "boolean",
"title": "Use CBT",
"description": "Use Changed Block Tracking when backing up this volume"
}
}
}
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/providers/{provider_id}/checkpoints:
get:
summary: List checkpoints
description: |
The checkpoints endpoint returns information about the checkpoints
offered at a given provider.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/provider_idParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Protection Provider
- Checkpoint
responses:
'200':
description: An array of checkpoints
schema:
type: array
items:
$ref: '#/definitions/Checkpoint'
examples:
application/json: [
{
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"project_id": "446a04d8-6ff5-4e0e-99a4-827a6389e9ff",
"status": "committed",
"protection_plan": {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My 3 tier application",
"resources": [
{
"id": "64e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Nova::Server"
},
{
"id": "61e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume"
},
{
"id": "62e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume"
}
],
"protection_provider_id": "efc6a88b-9096-4bb6-8634-cda182a6e12a"
}
}
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
post:
summary: Checkpoints
description: |
Execute the protect operation for the specified plan and create a
checkpoint at a given provider.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/provider_idParam'
- name: checkpoint
in: body
required: true
schema:
$ref: '#/definitions/Checkpoint'
tags:
- Protection Provider
- Checkpoint
responses:
'200':
description: Checkpoint created
schema:
$ref: '#/definitions/Checkpoint'
examples:
application/json: {
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"project_id": "446a04d8-6ff5-4e0e-99a4-827a6389e9ff",
"status": "committed",
"protection_plan": {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My 3 tier application",
"resources": [
{
"id": "64e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Nova::Server"
},
{
"id": "61e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume"
},
{
"id": "62e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume"
}
]
},
"protection_provider_id": "efc6a88b-9096-4bb6-8634-cda182a6e12a"
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/providers/{provider_id}/checkpoints/{checkpoint_id}:
get:
summary: Get the specified checkpoint
description: |
The checkpoints endpoint returns information about the specified
checkpoint offered at a given provider.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/provider_idParam'
- $ref: '#/parameters/checkpoint_idParam'
tags:
- Protection Provider
- Checkpoint
responses:
'200':
description: The checkpoint information
schema:
$ref: '#/definitions/Checkpoint'
examples:
application/json: {
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"project_id": "446a04d8-6ff5-4e0e-99a4-827a6389e9ff",
"status": "committed",
"protection_plan": {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My 3 tier application",
"resources": [
{
"id": "64e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Nova::Server",
"extended_info": {
"name": "VM1",
"backup status": "done",
"available_memory": 512
}
},
{
"id": "61e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume",
"extended_info": {
"backup status": "done",
"consistency_achieved": "Crash"
}
},
{
"id": "62e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume",
"extended_info": {
"backup status": "in_progress",
"progress": 0.7
}
}
]
},
"protection_provider_id": "efc6a88b-9096-4bb6-8634-cda182a6e12a"
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
delete:
summary: Delete checkpoint
description: |
The checkpoint endpoint deletes a checkpoint
at a given provider.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/provider_idParam'
- $ref: '#/parameters/checkpoint_idParam'
tags:
- Protection Provider
- Checkpoint
responses:
'200':
description: Checkpoint deleted
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/plans:
get:
summary: Get protection plans
description: |
The Plans endpoint returns information about the protection plans
offered for the given project.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Project API
- Protection Plan
responses:
'200':
description: An array of protection plans
schema:
type: array
items:
$ref: '#/definitions/ProtectionPlan'
examples:
application/json: [
{
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My 3 tier application",
"provider_id": "efc6a88b-9096-4bb6-8634-cda182a6e12a",
"resources": [
{
"id": "64e51e85-4f31-441f-9a5d-6e93e3193312",
"type": "OS::Nova::Server",
"name": "App server",
},
{
"id": "61e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume",
"name": "System volume",
},
{
"id": "62e51e85-4f31-441f-9a5d-6e93e3196629",
"type": "OS::Cinder::Volume",
"name": "Data volume",
}
],
"parameters": {
"OS::Nova::Server": {
"backup_name": "os"
},
"OS::Nova::Server#64e51e85-4f31-441f-9a5d-6e93e3193312": {
"backup_name": "crash"
},
"OS::Cinder::Volume": {
"backup_name": "os"
},
"OS::Cinder::Volume#61e51e85-4f31-441f-9a5d-6e93e3196628": {
"backup_name": "crash"
}
}
}
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
post:
summary: Create a plan
description: |
Create a new plan. The update will create a new revision for
the plan.
tags:
- Project API
- Protection Plan
parameters:
- $ref: '#/parameters/projectParam'
- name: plan
in: body
required: true
schema:
$ref: '#/definitions/ProtectionPlan'
responses:
'200':
description: The new created plan information
schema:
$ref: '#/definitions/ProtectionPlan'
examples:
application/json: {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My 3 tier application",
"provider_id": "efc6a88b-9096-4bb6-8634-cda182a6e12a",
"resources": [
{
"id": "64e51e85-4f31-441f-9a5d-6e93e3193312",
"type": "OS::Nova::Server",
"name": "App server",
},
{
"id": "61e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume",
"name": "System volume",
},
{
"id": "62e51e85-4f31-441f-9a5d-6e93e3196629",
"type": "OS::Cinder::Volume",
"name": "Data volume",
}
],
"parameters": {
"OS::Nova::Server": {
"backup_name": "os"
},
"OS::Nova::Server#64e51e85-4f31-441f-9a5d-6e93e3193312": {
"backup_name": "crash"
},
"OS::Cinder::Volume": {
"backup_name": "os"
},
"OS::Cinder::Volume#61e51e85-4f31-441f-9a5d-6e93e3196628": {
"backup_name": "crash"
}
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/plans/{plan_id}:
get:
summary: Protection Plan
description: |
The Plan endpoint returns information about a specific plan.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/plan_idParam'
tags:
- Project API
- Protection Plan
responses:
'200':
description: the protection plan
schema:
$ref: '#/definitions/ProtectionPlan'
examples:
application/json: {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My 3 tier application",
"provider_id": "efc6a88b-9096-4bb6-8634-cda182a6e12a",
"resources": [
{
"id": "64e51e85-4f31-441f-9a5d-6e93e3193312",
"type": "OS::Nova::Server",
"name": "App server",
},
{
"id": "61e51e85-4f31-441f-9a5d-6e93e3196628",
"type": "OS::Cinder::Volume",
"name": "System volume",
},
{
"id": "62e51e85-4f31-441f-9a5d-6e93e3196629",
"type": "OS::Cinder::Volume",
"name": "Data volume",
}
],
"parameters": {
"OS::Nova::Server": {
"backup_name": "os"
},
"OS::Nova::Server#64e51e85-4f31-441f-9a5d-6e93e3193312": {
"backup_name": "crash"
},
"OS::Cinder::Volume": {
"backup_name": "os"
},
"OS::Cinder::Volume#61e51e85-4f31-441f-9a5d-6e93e3196628": {
"backup_name": "crash"
}
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
delete:
summary: Protection Plan
description: |
The Plan endpoint deletes a specific plan.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/plan_idParam'
tags:
- Project API
- Protection Plan
responses:
'200':
description: Protection plan deleted
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/protectables:
get:
summary: Protectables
description: |
Return all the available protectable types.
parameters:
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Protectable
responses:
'200':
description: The available protectable types
schema:
type: array
items:
$ref: '#/definitions/ProtectableType'
examples:
application/json: [
"OS::Nova::Server",
"OS::Cinder::Volume"
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/protectables/{protectable_type}:
get:
summary: Protectables
description: |
Return the information of a given protectable type.
parameters:
- $ref: '#/parameters/protectable_typeParam'
tags:
- Protectable
responses:
'200':
description: The protectable information
schema:
$ref: '#/definitions/ProtectableInfo'
examples:
application/json: {
"name": "OS::Nova::Server",
"dependent_types": [
"OS::Cinder::Volume",
"OS::Glance::Image"
]
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/protectables/{protectable_type}/instances:
get:
summary: Resource Instances
description: |
Return all the available instances for the given protectable type.
parameters:
- $ref: '#/parameters/protectable_typeParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Protectable
- Resource
responses:
'200':
description: The available instances for the protectable type.
schema:
type: array
items:
$ref: '#/definitions/Resource'
examples:
application/json: [
{
"id": "557d0cd2-fd8d-4279-91a5-24763ebc6cbc",
"type": "OS::Nova::Server",
"name": "My VM",
"dependent_resources": [
{
"id": "5fad94de-2926-486b-ae73-ff5d3477f80d",
"type": "OS::Cinder::Volume"
}
]
}
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/protectables/{protectable_type}/instances/{resource_id}:
get:
summary: Resource Instance
description: |
Return information about a specific instance and it's immediate dependencies.
parameters:
- $ref: '#/parameters/protectable_typeParam'
- $ref: '#/parameters/resource_idParam'
tags:
- Protectable
- Resource
responses:
'200':
description: Information about the instance.
schema:
$ref: '#/definitions/Resource'
examples:
application/json:
{
"id": "557d0cd2-fd8d-4279-91a5-24763ebc6cbc",
"type": "OS::Nova::Server",
"name": "My VM",
"dependent_resources": [
{
"id": "5fad94de-2926-486b-ae73-ff5d3477f80d",
"type": "OS::Cinder::Volume",
"name": "My Volume"
}
]
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/scheduled_operations:
get:
summary: Scheduled Operations
description: |
Scheduled operations are operations that will be executed when
a specific trigger is triggered.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Project API
- Scheduled Operation
responses:
'200':
description: An array of scheduled operations
schema:
type: array
items:
$ref: '#/definitions/ScheduledOperation'
examples:
application/json: [
{
"id": "1a2c0c3d-f402-4cd8-b5db-82e85cb51fad",
"name": "My scheduled operation",
"project_id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"operation_type": "protect",
"trigger_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"operation_definition": {
"plan_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398"
}
},
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
post:
summary: Scheduled operation
description: |
Create a new scheduled operation.
tags:
- Project API
- Scheduled Operation
parameters:
- $ref: '#/parameters/projectParam'
- name: scheduled_operation
in: body
required: true
schema:
$ref: '#/definitions/ScheduledOperation'
responses:
'200':
description: The new scheduled operation
schema:
$ref: '#/definitions/ScheduledOperation'
examples:
application/json: {
"id": "1a2c0c3d-f402-4cd8-b5db-82e85cb51fad",
"name": "My scheduled operation",
"project_id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"operation_type": "protect",
"trigger_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"operation_definition": {
"plan_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398"
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/scheduled_operations/{scheduled_operation_id}:
get:
summary: Scheduled Operation
description: |
Get the specified scheduled operation information.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/scheduled_operation_idParam'
tags:
- Project API
- Scheduled Operation
responses:
'200':
description: A scheduled operation
schema:
$ref: '#/definitions/ScheduledOperation'
examples:
application/json: {
"id": "1a2c0c3d-f402-4cd8-b5db-82e85cb51fad",
"name": "My scheduled operation",
"project_id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"operation_type": "protect",
"trigger_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"operation_definition": {
"plan_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398"
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
delete:
summary: Scheduled operation
description: |
Delete a scheduled operation.
tags:
- Project API
- Scheduled Operation
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/scheduled_operation_idParam'
responses:
'200':
description: Scheduled operation deleted
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/operation_logs/:
get:
summary: Operation log entry point.
description: |
Get the information about operation instances in karbor.
Whenever an operation is run a log instance is created.
The user never creates operation logs.
This should not include the 'entires' property for the operation log.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Project API
- Scheduled Operation
responses:
'200':
description: An array of operation logs (without the entries)
schema:
type: array
items:
$ref: '#/definitions/OperationLog'
examples:
application/json: [
{
"id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"scheduled_operation_id": "23902b02-5666-4ee6-8dfe-962ac09c3991",
"started_at": "2015-08-27T09:50:58-05:00",
"state": "running"
},
{
"id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"scheduled_operation_id": "23902b02-5666-4ee6-8dfe-962ac09c3991",
"started_at": "2015-08-27T09:50:58-05:00",
"ended_at": "2015-08-27T10:50:58-05:00",
"state": "finished"
},
{
"id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"scheduled_operation_id": "23902b02-5666-4ee6-8dfe-962ac09c3991",
"started_at": "2015-08-27T09:50:58-05:00",
"ended_at": "2015-08-27T10:50:58-05:00",
"state": "failed",
"error": "Could not access bank"
},
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/operation_logs/{operation_log_id}:
get:
summary: Operation log.
description: |
Get the information about a specific run of an operation
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/operation_log_idParam'
tags:
- Project API
- Scheduled Operation
responses:
'200':
description: An array of operation logs (with the entries)
schema:
$ref: '#/definitions/OperationLog'
examples:
application/json: |
{
"id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"scheduled_operation_id": "23902b02-5666-4ee6-8dfe-962ac09c3991",
"started_at": "2015-08-27T09:50:58-05:00",
"state": "running"
"entries": [
{
"timestamp": "2015-08-27T09:50:58-05:00",
"message": "Operation started"
},
{
"timestamp": "2015-08-27T09:50:51-05:00",
"message": "Doing things"
}
]
},
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/restore:
get:
summary: Restores
description: |
List all restores finished and in progress, triggered by
a given project.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Project API
- Restore
responses:
'200':
description: An array of restores
schema:
type: array
items:
$ref: '#/definitions/Restore'
examples:
application/json: [
{
"id": "36ea41b2-c358-48a7-9117-70cb7617410a",
"project_id": "586cc6ce-e286-40bd-b2b5-dd32694d9944",
"provider_id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"checkpoint_id": "09edcbdc-d1c2-49c1-a212-122627b20968",
"restore_target": "192.168.1.2:35357/v2.0",
"parameters": {
"username": "admin"
},
"status": "SUCCESS"
}
]
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
post:
summary: Restores
description: |
Start a restore.
tags:
- Project API
- Restore
parameters:
- $ref: '#/parameters/projectParam'
- name: scheduled_operation
in: body
required: true
schema:
$ref: '#/definitions/Restore'
responses:
'200':
description: The new started restore information
schema:
$ref: '#/definitions/Restore'
examples:
application/json: {
"id": "36ea41b2-c358-48a7-9117-70cb7617410a",
"project_id": "586cc6ce-e286-40bd-b2b5-dd32694d9944",
"provider_id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"checkpoint_id": "09edcbdc-d1c2-49c1-a212-122627b20968",
"restore_target": "192.168.1.2:35357/v2.0",
"parameters": {
"username": "admin"
},
"status": "IN PROGRESS"
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/restores/{restore_id}:
get:
summary: Restores
description: |
Get the information of a given restore.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/restore_idParam'
tags:
- Project API
- Restore
responses:
'200':
description: The restore information
schema:
$ref: '#/definitions/Restore'
examples:
application/json: {
"id": "36ea41b2-c358-48a7-9117-70cb7617410a",
"project_id": "586cc6ce-e286-40bd-b2b5-dd32694d9944",
"provider_id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"checkpoint_id": "09edcbdc-d1c2-49c1-a212-122627b20968",
"restore_target": "192.168.1.2:35357/v2.0",
"parameters": {
"username": "admin"
},
"status": "IN PROGRESS"
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/triggers:
get:
summary: Triggers
description: |
List all of the triggers created by a given project.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/nameFilterParam'
- $ref: '#/parameters/typeFilterParam'
- $ref: '#/parameters/propertiesFilterParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/limitParam'
- $ref: '#/parameters/markerParam'
tags:
- Project API
- Trigger
responses:
'200':
description: An array of triggers
schema:
type: array
items:
$ref: '#/definitions/Trigger'
examples:
application/json: {
"triggers": [{
"trigger_info": {
"id": "cc1a-4516-9435-0ebb13caa398",
"name": "My backup trigger",
"type": "time",
"properties": {
"format": "crontab",
"pattern": "0 9 * * *",
"start_time": "2015-12-17T08:30:00",
"end_time": "2016-03-17T08:30:00",
"window": "60",
}
}
},
],
"triggers_links": ""
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
post:
summary: Trigger
description: |
Create a new scheduled operation.
tags:
- Project API
- Trigger
parameters:
- $ref: '#/parameters/projectParam'
- name: trigger_info
in: body
required: true
schema:
$ref: '#/definitions/TriggerCreateBody'
responses:
'200':
description: The new created trigger
schema:
$ref: '#/definitions/Trigger'
examples:
application/json: {
"trigger_info": {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My backup trigger",
"type": "time",
"properties": {
"format": "crontab",
"pattern": "0 9 * * *",
"start_time": "2015-12-17T08:30:00",
"end_time": "2016-03-17T08:30:00",
"window": "60",
}
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/{project_id}/triggers/{trigger_id}:
post:
summary: Trigger
description: |
Update the specified trigger created by a given project.
tags:
- Project API
- Trigger
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/trigger_idParam'
- name: trigger_info
in: body
required: true
schema:
$ref: '#/definitions/TriggerUpdateBody'
responses:
'200':
description: The updated trigger
schema:
$ref: '#/definitions/Trigger'
examples:
application/json: {
"trigger_info": {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My backup trigger",
"type": "time",
"properties": {
"format": "crontab",
"pattern": "0 10 * * *",
"start_time": "2015-12-17T08:30:00",
"end_time": "2016-03-17T08:30:00",
"window": "60",
}
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
get:
summary: Triggers
description: |
Get the specified trigger created by a given project.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/trigger_idParam'
tags:
- Project API
- Trigger
responses:
'200':
description: The trigger information
schema:
$ref: '#/definitions/Trigger'
examples:
application/json: {
"trigger_info": {
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
"name": "My backup trigger",
"type": "time",
"properties": {
"format": "crontab",
"pattern": "0 9 * * *",
"start_time": "2015-12-17T08:30:00",
"end_time": "2016-03-17T08:30:00",
"window": "60",
}
}
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
delete:
summary: Trigger
description: |
Delete a trigger created by a given project.
parameters:
- $ref: '#/parameters/projectParam'
- $ref: '#/parameters/trigger_idParam'
tags:
- Project API
- Trigger
responses:
'200':
description: Trigger deleted
'424':
description: Trigger is being used by scheduled operation
schema:
$ref: '#/definitions/Error'
examples:
application/json: {
"code": 424,
"message": "Trigger is being used by one or more operations",
}
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
definitions:
Provider:
type: object
required: [ name ]
properties:
id:
readOnly: true
type: string
format: UUID
description: |
Unique identifier representing a specific protection provider.
description:
type: string
description: Description of provider.
name:
type: string
description: Display name of provider.
options_schema:
type: object
description: |
A mapping between a resource type and a JSON Schema that defines the options for that type.
restore_options_schema:
type: object
description: |
A mapping between a resource type and a JSON Schema that defines the restore options for that type.
saved_info_schema:
type: object
description: |
A mapping between a resource type and a JSON Schema that defines the saved info fields for that type.
Checkpoint:
type: object
properties:
id:
readOnly: true
type: string
format: UUID
description: |
Unique identifier representing a specific protection provider.
project_id:
type: string
format: UUID
protection_plan:
readOnly: true
$ref: '#/definitions/ProtectionPlan'
status:
readOnly: true
type: string
Resource:
type: object
properties:
type:
$ref: '#/definitions/ProtectableType'
readOnly: true
id:
readOnly: true
type: string
name:
readOnly: true
type: string
ProtectionPlan:
type: object
required: [ name, protection_provider_id, resources ]
properties:
id:
readOnly: true
type: string
format: UUID
description: Unique identifier representing a specific protection protection plan.
name:
type: string
description: Display name of plan.
description:
type: string
description: description about the plan.
resources:
type: array
items:
$ref: '#/definitions/Resource'
status:
type: string
description: The status of the plan. It's either 'enabled' or 'disabled'.
protection_provider_id:
type: string
format: UUID
description: |
Unique identifier representing a specific protection provider that
will store checkpoints for this protection plan.
parameters:
type: object
description: TODO
ProtectableType:
type: string
format: Heat Type String
example: "OS::Nova::Server"
description: |
Name of the resource type. When available the types that are defined by Heat
are used.
ProtectableInfo:
type: object
properties:
name:
$ref: '#/definitions/ProtectableType'
is_root:
type: boolean
description: |
Defines whether this type has any dependencies or not. Useful for
UIs.
dependent_types:
type: array
description: |
List of types that might depend on this type. For example an
"OS::Nova::Server" has "OS::Cinder::Volume" as a dependent type.
items:
$ref: '#/definitions/ProtectableType'
OperationDefinition:
type: object
discriminator: type
required: [ type ]
properties:
id:
type: string
format: UUID
description: |
Unique identifier representing a specific operation definition.
type:
type: string
description: |
Type of the operation. This defines what kind of operation this
object defines the arguments for.
ProtectOperationDefinition:
description: |
Operation definition for protect operation.
allOf:
- $ref: '#/definitions/OperationDefinition'
- type: object
properties:
protection_plan_id:
type: string
format: UUID
parameters:
type: object
format: dict
required: [ protection_plan_id ]
DeleteOperationDefinition:
description: |
Operation definition for delete operation.
allOf:
- $ref: '#/definitions/OperationDefinition'
- type: object
properties:
checkpoint_path:
type: string
provider_id:
type: string
format: UUID
required: [ checkpoint_path, provider_id ]
StartOperationDefinition:
description: |
Operation definition for start operation.
allOf:
- $ref: '#/definitions/OperationDefinition'
- type: object
properties:
protection_plan_id:
type: string
format: UUID
required: [ protection_plan_id ]
SuspendOperationDefinition:
description: |
Operation definition for suspend operation.
allOf:
- $ref: '#/definitions/OperationDefinition'
- type: object
properties:
protection_plan_id:
type: string
format: UUID
required: [ protection_plan_id ]
RestoreOperationDefinition:
description: |
Operation definition for restore operation.
allOf:
- $ref: '#/definitions/OperationDefinition'
- type: object
properties:
checkpoint_id:
type: string
format: UUID
provider_id:
type: string
format: UUID
restore_target:
type: string
format: UUID
parameters:
type: object
format: dict
required: [ checkpoint_id, provider_id ]
ScheduledOperation:
type: object
properties:
id:
type: string
format: UUID
description: |
Unique identifier representing a specific scheduled operation.
name:
type: string
description: Display name of scheduled operation.
project_id:
type: string
format: UUID
operation_type:
type: string
description:
type: string
description: Description about the scheduled operation.
trigger_id:
type: string
format: UUID
operation_definition:
$ref: '#/definitions/OperationDefinition'
OperationStatus:
type: object
properties:
status:
type: string
description:
type: string
OperationLog:
type: object
properties:
id:
type: string
format: UUID
description: |
Unique identifier representing a specific operation log.
scheduled_operation_id:
type: string
format: UUID
description: |
ID of the scheduled operation that defines this log.
started_at:
type: string
description: When was this operation run started in ISO 8601 format.
ended_at:
type: string
description: When was this operation run ended in ISO 8601 format.
status:
type: string
description: Status of the operation could be running, finished, failed.
error:
type: string
description: If the status is 'failed' this will contain the reason for the failure.
entries:
type: array
description: Complete log of the entires for the operation.
items:
$ref: '#/definitions/OperationLogEntry'
OperationLogEntry:
type: object
properties:
timestamp:
type: string
description: When was this log line emitted in ISO 8601 format.
message:
type: string
description: Message containing information about an event.
Trigger:
type: object
discriminator: type
required: [ type ]
properties:
id:
type: string
format: UUID
description: |
Unique identifier representing a specific trigger.
name:
type: string
description: Display name of trigger.
type:
type: string
description: |
Type of the trigger. This defines what kind of trigger this
object defines the arguments for.
properties:
type: object
description: |
Trigger properties. Supply parameters for the trigger type.
TimeTrigger:
description: |
Trigger definition for time trigger.
allOf:
- $ref: '#/definitions/Trigger'
- type: object
properties:
property:
type: object
required: [ start_time, trigger_window, format ]
properties:
format:
type: string
enum: [ crontab ]
start_time:
type: string
trigger_window:
type: string
format: xsd:duration
TriggerCreateBody:
type: object
discriminator: type
required: [ type ]
properties:
name:
type: string
description: Display name of trigger.
type:
type: string
description: |
Type of the trigger. This defines what kind of trigger this
object defines the arguments for.
properties:
type: object
description: |
Trigger properties. Supply parameters for the trigger type.
TriggerUpdateBody:
type: object
discriminator: type
required: [ type ]
properties:
name:
type: string
description: Display name of trigger.
properties:
type: object
description: |
Trigger properties. Supply parameters for the trigger type.
Restore:
type: object
properties:
id:
type: string
format: UUID
description: |
Unique identifier representing a specific restore.
project_id:
type: string
format: UUID
provider_id:
type: string
format: UUID
checkpoint_id:
type: string
format: UUID
restore_target:
type: string
format: UUID
parameters:
type: object
format: dict
status:
type: string
Error:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
parameters:
sortParam:
name: sort
in: query
description: |
Comma-separated list of sort keys and optional sort directions in the
form of '<key>[:<direction>]`. A valid direction is asc
(ascending) or desc (descending).
required: false
type: string
limitParam:
name: limit
in: query
description: |
Requests a specified page size of returned items from the query.
Returns a number of items up to the specified limit value.
Use the limit parameter to make an initial limited request and use the
ID of the last-seen item from the response as the marker parameter value
in a subsequent limited request.
type: integer
format: int64
markerParam:
name: marker
in: query
description: |
Specifies the ID of the last-seen item. Use the limit parameter to make
an initial limited request and use the ID of the last-seen item from the
response as the marker parameter value in a subsequent limited request.
type: string
projectParam:
name: project_id
in: path
description: |
Specifies the ID of the project that owns this entity
type: string
format: uuid
required: true
nameFilterParam:
name: name
in: query
format: regex
description: name of the entity. Could be a regex pattern.
required: false
type: string
typeFilterParam:
name: type
in: query
description: type of the entity.
required: false
type: string
propertiesFilterParam:
name: properties
in: query
format: regex
description: property of the entity. Could be a regex pattern.
required: false
type: string
provider_idParam:
name: provider_id
type: string
format: uuid
required: true
in: path
description: id of the provider.
plan_idParam:
name: plan_id
type: string
format: uuid
required: true
in: path
description: id of the plan.
checkpoint_idParam:
name: checkpoint_id
type: string
format: uuid
required: true
in: path
description: id of the checkpoint.
trigger_idParam:
name: trigger_id
type: string
format: uuid
required: true
in: path
description: id of the trigger.
resource_idParam:
name: resource_id
type: string
format: uuid
required: true
in: path
description: id of the resource.
restore_idParam:
name: restore_id
type: string
format: uuid
required: true
in: path
description: id of the restore.
scheduled_operation_idParam:
name: scheduled_operation_id
type: string
format: uuid
required: true
in: path
description: id of the scheduled operation.
operation_log_idParam:
name: operation_log_id
type: string
format: uuid
required: true
in: path
description: id of the operation log.
protectable_typeParam:
name: protectable_type
type: string
format: Heat Type String
required: true
in: path
description: the resource type.