Remote Snapshots

Remote snapshots are point-in-time versions of a drive. They can be cloned to a full drive, which makes it possible to restore an older version of a VM image.

Remote snapshots are our backup solution. If the drive gets deleted and the remote snapshot is created, the remote snapshot won’t disappear. All remote snapshots (backups) of deleted drives can be found in the UI -> Storage -> Backups. But the remote snapshots of active drives can be found at the Storage -> Drives -> A drive in detailed view -> Backups section.

Remote snapshots are billed based on their occupied size. Since only the differences from the current drive image are stored, a single remote snapshot’s size will be equal to the size of the data which has changed since the remote snapshot has taken. If no data has changed, the remote snapshot’s size will be zero.

Note that remote snapshots are billed as backup, so backup subscriptions should be bought in order not to burst on remote snapshots usage.

We have remote snapshots in the following locations: GVA, ZRH, FRA, CWL, LON, and DUB

Allowed HTTP methods

Method

Description

GET

get / list object/s

POST

create new object/s

PUT

update / modify object/s

DELETE

delete object/s

Note

See RFC 2616#section-9 for more details on HTTP methods semantics.

Listing

GET /remotesnapshots/

Gets the list of remote snapshots to which the authenticated user has access.

Parameters:
  • fields – A set of field names specifying the returned fields.

Status Codes:

Example request - default list:

GET /api/2.0/snapshots/?limit=0 HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response - default list:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 6
    },
    "objects": [
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
                "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
            },
            "grantees": [],
            "meta": {},
            "name": "b7cb6615-b6a5-4c31-b755-b86980c64d59__2014-06-05__09_53_28",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/f69d43df-092d-4fef-9766-668cb6469f31/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:28.851859+00:00",
            "uuid": "f69d43df-092d-4fef-9766-668cb6469f31"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/cb1e0fee-7666-4cb9-ab17-9f064adf6177/",
                "uuid": "cb1e0fee-7666-4cb9-ab17-9f064adf6177"
            },
            "grantees": [],
            "meta": {},
            "name": "cb1e0fee-7666-4cb9-ab17-9f064adf6177__2014-06-05__09_53_30",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/78db3f50-945d-4795-814b-cff122f6b11f/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:30.563748+00:00",
            "uuid": "78db3f50-945d-4795-814b-cff122f6b11f"
        },
        {
            "allocated_size": null,
            "drive": {
                "resource_uri": "/api/2.0/drives/bb2b8f77-04ee-42c1-b142-47bc31c2824e/",
                "uuid": "bb2b8f77-04ee-42c1-b142-47bc31c2824e"
            },
            "grantees": [],
            "meta": {},
            "name": "bb2b8f77-04ee-42c1-b142-47bc31c2824e__2014-06-05__09_53_32",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/44b7f63a-7fb7-4ea4-b32c-ed7d4873a3f1/",
            "status": "creating",
            "tags": [],
            "timestamp": "2014-06-05 09:53:32.186344+00:00",
            "uuid": "44b7f63a-7fb7-4ea4-b32c-ed7d4873a3f1"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/cb1e0fee-7666-4cb9-ab17-9f064adf6177/",
                "uuid": "cb1e0fee-7666-4cb9-ab17-9f064adf6177"
            },
            "grantees": [],
            "meta": {},
            "name": "cb1e0fee-7666-4cb9-ab17-9f064adf6177__2014-06-05__09_53_29",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/33c0b447-d545-457f-a01c-156f674095c8/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:29.770356+00:00",
            "uuid": "33c0b447-d545-457f-a01c-156f674095c8"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/bb2b8f77-04ee-42c1-b142-47bc31c2824e/",
                "uuid": "bb2b8f77-04ee-42c1-b142-47bc31c2824e"
            },
            "grantees": [],
            "meta": {},
            "name": "bb2b8f77-04ee-42c1-b142-47bc31c2824e__2014-06-05__09_53_31",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/62c600cf-7a25-4703-8003-b3c4445233af/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:31.377681+00:00",
            "uuid": "62c600cf-7a25-4703-8003-b3c4445233af"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
                "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
            },
            "grantees": [],
            "meta": {},
            "name": "b7cb6615-b6a5-4c31-b755-b86980c64d59__2014-06-05__09_53_28",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/3a057cc8-9b42-44f2-a8cb-c5561f2eddd3/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:28.048803+00:00",
            "uuid": "3a057cc8-9b42-44f2-a8cb-c5561f2eddd3"
        }
    ]
}

Detailed listing

GET /remotesnapshots/detail/

Gets the detailed list of remote snapshots with additional information to which the authenticated user has access.

Parameters:
  • fields – No parameters.

Status Codes:

Example request:

GET /api/2.0/snapshots/detail/?limit=0 HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 6
    },
    "objects": [
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
                "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
            },
            "grantees": [],
            "meta": {},
            "name": "b7cb6615-b6a5-4c31-b755-b86980c64d59__2014-06-05__09_53_28",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/f69d43df-092d-4fef-9766-668cb6469f31/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:28.851859+00:00",
            "uuid": "f69d43df-092d-4fef-9766-668cb6469f31"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/cb1e0fee-7666-4cb9-ab17-9f064adf6177/",
                "uuid": "cb1e0fee-7666-4cb9-ab17-9f064adf6177"
            },
            "grantees": [],
            "meta": {},
            "name": "cb1e0fee-7666-4cb9-ab17-9f064adf6177__2014-06-05__09_53_30",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/78db3f50-945d-4795-814b-cff122f6b11f/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:30.563748+00:00",
            "uuid": "78db3f50-945d-4795-814b-cff122f6b11f"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/bb2b8f77-04ee-42c1-b142-47bc31c2824e/",
                "uuid": "bb2b8f77-04ee-42c1-b142-47bc31c2824e"
            },
            "grantees": [],
            "meta": {},
            "name": "bb2b8f77-04ee-42c1-b142-47bc31c2824e__2014-06-05__09_53_32",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/44b7f63a-7fb7-4ea4-b32c-ed7d4873a3f1/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:32.186344+00:00",
            "uuid": "44b7f63a-7fb7-4ea4-b32c-ed7d4873a3f1"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/cb1e0fee-7666-4cb9-ab17-9f064adf6177/",
                "uuid": "cb1e0fee-7666-4cb9-ab17-9f064adf6177"
            },
            "grantees": [],
            "meta": {},
            "name": "cb1e0fee-7666-4cb9-ab17-9f064adf6177__2014-06-05__09_53_29",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/33c0b447-d545-457f-a01c-156f674095c8/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:29.770356+00:00",
            "uuid": "33c0b447-d545-457f-a01c-156f674095c8"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/bb2b8f77-04ee-42c1-b142-47bc31c2824e/",
                "uuid": "bb2b8f77-04ee-42c1-b142-47bc31c2824e"
            },
            "grantees": [],
            "meta": {},
            "name": "bb2b8f77-04ee-42c1-b142-47bc31c2824e__2014-06-05__09_53_31",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/62c600cf-7a25-4703-8003-b3c4445233af/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:31.377681+00:00",
            "uuid": "62c600cf-7a25-4703-8003-b3c4445233af"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
                "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
            },
            "grantees": [],
            "meta": {},
            "name": "b7cb6615-b6a5-4c31-b755-b86980c64d59__2014-06-05__09_53_28",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/3a057cc8-9b42-44f2-a8cb-c5561f2eddd3/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:28.048803+00:00",
            "uuid": "3a057cc8-9b42-44f2-a8cb-c5561f2eddd3"
        }
    ]
}

List single remote snapshot

GET /remotesnapshots/{uuid}/

Gets detailed information on a remote snapshot identified by snapshot_uuid.

Status Codes:

Example request:

GET /api/2.0/snapshots/62c600cf-7a25-4703-8003-b3c4445233af/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "allocated_size": null,
    "drive": {
        "resource_uri": "/api/2.0/drives/bb2b8f77-04ee-42c1-b142-47bc31c2824e/",
        "uuid": "bb2b8f77-04ee-42c1-b142-47bc31c2824e"
    },
    "grantees": [],
    "meta": {},
    "name": "bb2b8f77-04ee-42c1-b142-47bc31c2824e__2014-06-05__09_53_31",
    "owner": {
        "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
        "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
    },
    "permissions": [],
    "resource_uri": "/api/2.0/snapshots/62c600cf-7a25-4703-8003-b3c4445233af/",
    "status": "creating",
    "tags": [],
    "timestamp": "2014-06-05 09:53:31.377681+00:00",
    "uuid": "62c600cf-7a25-4703-8003-b3c4445233af"
}

Creating

Please note that you cannot create more than one remote snapshot of a drive within 30 minutes. And also you cannot create a second remote snapshot of a drive when the previous one is in transferring or creating state.

POST /remotesnapshots/

Creates a new remote snapshot.

Status Codes:

Example request:

Create a remote snapshot

POST /api/2.0/snapshots/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "drive": "450357dc-cbe1-471d-b4cc-dbdfe5f28d84",
    "meta": {
        "key": "val"
    },
    "name": "first_snapshot"
}

Example response

HTTP/1.1 201 CREATED
Content-Type: application/json; charset=utf-8

{
    "objects": [
        {
            "allocated_size": null,
            "drive": {
                "resource_uri": "/api/2.0/drives/450357dc-cbe1-471d-b4cc-dbdfe5f28d84/",
                "uuid": "450357dc-cbe1-471d-b4cc-dbdfe5f28d84"
            },
            "grantees": [],
            "meta": {
                "key": "val"
            },
            "name": "first_snapshot",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/855ebdc8-ce4b-48d0-9d8d-306c9074be29/",
            "status": "creating",
            "tags": [],
            "timestamp": "2014-06-05 09:52:53.896622+00:00",
            "uuid": "855ebdc8-ce4b-48d0-9d8d-306c9074be29"
        }
    ]
}

Editing

Please note that you cannot edit a remote snapshot when the state is transferring or creating.

PUT /remotesnapshots/{uuid}/

Edits a remote snapshot.

Status Codes:

Example request:

PUT /api/2.0/snapshots/855ebdc8-ce4b-48d0-9d8d-306c9074be29/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "drive": "450357dc-cbe1-471d-b4cc-dbdfe5f28d84",
    "meta": {
        "key": "val_changed",
        "new_key": "new_key_value"
    },
    "name": "first_snapshot_renamed"
}

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "allocated_size": 0,
    "drive": {
        "resource_uri": "/api/2.0/drives/450357dc-cbe1-471d-b4cc-dbdfe5f28d84/",
        "uuid": "450357dc-cbe1-471d-b4cc-dbdfe5f28d84"
    },
    "grantees": [],
    "meta": {
        "key": "val_changed",
        "new_key": "new_key_value"
    },
    "name": "first_snapshot_renamed",
    "owner": {
        "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
        "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
    },
    "permissions": [],
    "resource_uri": "/api/2.0/snapshots/855ebdc8-ce4b-48d0-9d8d-306c9074be29/",
    "status": "available",
    "tags": [],
    "timestamp": "2014-06-05 09:52:53.896622+00:00",
    "uuid": "855ebdc8-ce4b-48d0-9d8d-306c9074be29"
}

Metadata

It is possible to add arbitrary key-value data to a remote snapshot definition. See Objects’ metadata field for more information.

Deleting

Please note that you cannot delete a remote snapshot when the state is transferring or creating.

Single Remote snapshot

DELETE /remotesnapshots/{uuid}/

Deletes a single remote snapshot.

Status Codes:

Example request:

DELETE /api/2.0/snapshots/855ebdc8-ce4b-48d0-9d8d-306c9074be29/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 204 NO CONTENT
Content-Type: text/html; charset=utf-8

Multiple remote snapshots

DELETE /remotesnapshots/

Deletes multiple remote snapshots specified by their UUIDs.

statuscode 204:

No content, object deletion started.

Example request:

Request body

{"objects":
  [
    {
     "uuid":"b137e217-42b6-4ecf-8575-d72efc2d3dbd",
    },
    {
     "uuid":"e035a488-8587-4a15-ab25-9b7343236bc9",
    },
    {
     "uuid":"feded33c-106f-49fa-a1c4-be5c718ad1b5",
    }
  ]
}

Example response:

HTTP/1.0 204 NO CONTENT

Cloning

Please note that you cannot clone (promote to a full drive) a remote snapshot when the state is transferring or creating.

POST /remotesnapshots/{uuid}/action/?do=clone

Clones a remote snapshot to a drive. Request body is optional and any or all of the key/value pairs can be omitted.

Status Codes:
  • 202 Accepted – Action accepted, execution is proceeding.

Example request:

POST /api/2.0/snapshots/c6368b7c-9d3d-4631-b008-83b73c05f1bd/action/?do=clone&avoid=d7da5038-ac2d-4776-9097-f60167d6e587 HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{}

Example response: The response is actually a drive definition.

HTTP/1.1 202 ACCEPTED
Content-Type: application/json; charset=utf-8

{
    "affinities": [],
    "allow_multimount": false,
    "grantees": [],
    "jobs": [
        {
            "resource_uri": "/api/2.0/jobs/260512fc-e9ac-470f-880d-52b4dfcc2b72/",
            "uuid": "260512fc-e9ac-470f-880d-52b4dfcc2b72"
        }
    ],
    "licenses": [],
    "media": "disk",
    "meta": {},
    "mounted_on": [],
    "name": "7fbfb2ac-5b21-4c5a-81cb-d4343fca71a1__2015-03-19__13_53_52",
    "owner": {
        "resource_uri": "/api/2.0/user/c2fc9982-cf2e-434a-bf63-e22a27b39f00/",
        "uuid": "c2fc9982-cf2e-434a-bf63-e22a27b39f00"
    },
    "permissions": [],
    "resource_uri": {
        "resource_uri": "/api/2.0/drives/be62f52e-0b0f-480c-89b2-73e108dd2cef/",
        "uuid": "be62f52e-0b0f-480c-89b2-73e108dd2cef"
    },
    "runtime": {
        "is_snapshotable": null,
        "snapshots_allocated_size": 0,
        "storage_type": "dssd"
    },
    "size": 1073741824,
    "snapshots": [],
    "status": "cloning_dst",
    "storage_type": "dssd",
    "tags": [],
    "uuid": "be62f52e-0b0f-480c-89b2-73e108dd2cef"
}

Note

The name of the cloned drive will be changed using the clone naming strategy set in the profile. See Clone naming for more information.

Listing a drive’s remote snapshots

There are 2 ways of getting all the remote snapshots of a drive.

By filtering remote snapshots

You can apply a drive filter to remote snapshots.

GET /remotesnapshots/{uuid}/?drive={drive_uuid}

Example request:

GET /api/2.0/snapshots/detail/?limit=0&drive=b7cb6615-b6a5-4c31-b755-b86980c64d59 HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 2
    },
    "objects": [
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
                "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
            },
            "grantees": [],
            "meta": {},
            "name": "b7cb6615-b6a5-4c31-b755-b86980c64d59__2014-06-05__09_53_28",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/f69d43df-092d-4fef-9766-668cb6469f31/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:28.851859+00:00",
            "uuid": "f69d43df-092d-4fef-9766-668cb6469f31"
        },
        {
            "allocated_size": 0,
            "drive": {
                "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
                "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
            },
            "grantees": [],
            "meta": {},
            "name": "b7cb6615-b6a5-4c31-b755-b86980c64d59__2014-06-05__09_53_28",
            "owner": {
                "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
                "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
            },
            "permissions": [],
            "resource_uri": "/api/2.0/snapshots/3a057cc8-9b42-44f2-a8cb-c5561f2eddd3/",
            "status": "available",
            "tags": [],
            "timestamp": "2014-06-05 09:53:28.048803+00:00",
            "uuid": "3a057cc8-9b42-44f2-a8cb-c5561f2eddd3"
        }
    ]
}

In drive definition

In the detailed drive definition there is a “remote_snapshots” field.

GET /drives/{drive_uuid}/

Example request:

GET /api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "affinities": [],
    "allow_multimount": false,
    "grantees": [],
    "jobs": [],
    "licenses": [],
    "media": "disk",
    "meta": {},
    "mounted_on": [],
    "name": "test_drive_snapshot",
    "owner": {
        "resource_uri": "/api/2.0/user/5b4a69a3-8e78-4c45-a8ba-8b13f0895e23/",
        "uuid": "5b4a69a3-8e78-4c45-a8ba-8b13f0895e23"
    },
    "permissions": [],
    "resource_uri": "/api/2.0/drives/b7cb6615-b6a5-4c31-b755-b86980c64d59/",
    "runtime": {
        "is_snapshotable": true,
        "snapshots_allocated_size": 0,
        "storage_type": "dssd"
    },
    "size": 1073741824,
    "snapshots": [
        {
            "resource_uri": "/api/2.0/snapshots/f69d43df-092d-4fef-9766-668cb6469f31/",
            "uuid": "f69d43df-092d-4fef-9766-668cb6469f31"
        },
        {
            "resource_uri": "/api/2.0/snapshots/3a057cc8-9b42-44f2-a8cb-c5561f2eddd3/",
            "uuid": "3a057cc8-9b42-44f2-a8cb-c5561f2eddd3"
        }
    ],
    "status": "unmounted",
    "storage_type": "dssd",
    "tags": [],
    "uuid": "b7cb6615-b6a5-4c31-b755-b86980c64d59"
}

Request schema

{
   "description":"Clone remote snapshot",
   "properties":{
          "name":{
                  "description": "Name of the cloned remote snapshot",
          }
          "media":{
                  "description": "Media of the cloned remote snapshot",
          }
          "affinities":{
                  "description": "Affinities of the cloned remote snapshot",
          }
   }
}

Schema

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "allowed_detail_http_methods": [
        "get",
        "put",
        "delete"
    ],
    "allowed_list_http_methods": [
        "get",
        "put",
        "delete",
        "post"
    ],
    "default_format": "application/json",
    "default_limit": 20,
    "fields": {
        "allocated_size": {
            "default": "No default provided.",
            "help_text": "Physical size of the snapshot",
            "readonly": true,
            "required": true,
            "type": "integer"
        },
        "drive": {
            "default": null,
            "help_text": "Drive UUID",
            "readonly": false,
            "required": true,
            "type": "related"
        },
        "grantees": {
            "default": "No default provided.",
            "help_text": "A list of data. Ex: ['abc', 26.73, 8]",
            "readonly": false,
            "required": false,
            "type": "list"
        },
        "meta": {
            "default": {},
            "help_text": "User defined meta information",
            "readonly": false,
            "required": false,
            "type": "dict"
        },
        "name": {
            "default": null,
            "help_text": "Optional human readable name of the snapshot",
            "readonly": false,
            "required": false,
            "type": "string"
        },
        "owner": {
            "default": null,
            "help_text": "Owner of the snapshot",
            "readonly": true,
            "required": false,
            "type": "related"
        },
        "permissions": {
            "default": "No default provided.",
            "help_text": "A list of data. Ex: ['abc', 26.73, 8]",
            "readonly": false,
            "required": false,
            "type": "list"
        },
        "resource_uri": {
            "default": "No default provided.",
            "help_text": "Unicode string data. Ex: \"Hello World\"",
            "readonly": true,
            "required": true,
            "type": "string"
        },
        "status": {
            "default": "No default provided.",
            "help_text": "Status of the snapshot.",
            "readonly": true,
            "required": true,
            "type": "string"
        },
        "tags": {
            "default": "No default provided.",
            "help_text": "Many related resources. Can be either a list of URIs or list of individually nested resource data.",
            "readonly": false,
            "required": false,
            "type": "related"
        },
        "timestamp": {
            "default": null,
            "help_text": "Timestamp of the snapshot creation",
            "readonly": true,
            "required": true,
            "type": "string"
        },
        "uuid": {
            "default": null,
            "help_text": "UUID of the snapshot",
            "readonly": true,
            "required": true,
            "type": "string"
        }
    },
    "filtering": {
        "name": "exact",
        "name__contains": "exact",
        "tag": "exact",
        "uuid": "exact"
    }
}