Sign Up

Volumes

GET
/volumes

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: read:volumes

Query Parameters

include_deleted?boolean

Include retired (deleted) volumes in the listing.

Response Body

Volumes in the project

application/json
  1. response

Response envelope for GET /volumes.

volumes*array<>
curl -X GET 'https://example.com/volumes'
{  "volumes": [    {      "conflicts": null,      "created_at": "2019-08-24T14:15:22Z",      "error_reason": "string",      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "last_manifest_id": "string",      "last_used_at": "2019-08-24T14:15:22Z",      "name": "string",      "options": {},      "size_gb": 0,      "state": "string",      "type": "string",      "updated_at": "2019-08-24T14:15:22Z",      "used_bytes": 0,      "used_bytes_at": "2019-08-24T14:15:22Z"    }  ]}
POST
/volumes

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: write:volumes

Request Body

application/json
  1. body
bucket?null|
name*string
size_gb?|

Per-volume scratch size (GiB); absent => 100. Disk volumes only — supplying it on a bucket volume is a 400.

Formatint32
type?|

disk (the default) or bucket. blockmount is accepted as the pre-rename spelling of disk.

Response Body

Volume created (ready immediately)

application/json
  1. response

A volume as returned by the API. last_manifest_id/conflicts are read best-effort from the CAS store on detail routes only (never on list).

conflicts?unknown

Concurrent-write conflicts recorded on the latest manifest (audit trail).

created_at*string
Formatdate-time
error_reason?string|null
id*string
Formatuuid
last_manifest_id?|

Blockmount CAS pointer, read-through on detail routes (best-effort).

last_used_at?|
Formatdate-time
name*string
options?

Per-type options, namespaced by type (PLAN-VOLUME-TYPES.md §1): {} for a disk volume, {"bucket": {...}} for a bucket one. Credentials appear as the project-secret NAMES that were supplied, never as values — values are write-only across the whole API.

size_gb?|

Scratch capacity in GiB. Disk volumes only — a bucket volume has no capacity of its own and reports null.

Formatint32
state*string
type*string
updated_at*string
Formatdate-time
used_bytes?|

Real (logical) usage in bytes: sum of committed file sizes, hardlink groups counted once. Cached from runner events.volume.* reports; absent until the first report lands (never written / pre-feature volume).

Formatint64
used_bytes_at?|

When the cached used_bytes was observed by the runner.

Formatdate-time
curl -X POST 'https://example.com/volumes' \  -H 'Content-Type: application/json' \  -d '{  "name": "string"}'
{  "conflicts": null,  "created_at": "2019-08-24T14:15:22Z",  "error_reason": "string",  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "last_manifest_id": "string",  "last_used_at": "2019-08-24T14:15:22Z",  "name": "string",  "options": {},  "size_gb": 0,  "state": "string",  "type": "string",  "updated_at": "2019-08-24T14:15:22Z",  "used_bytes": 0,  "used_bytes_at": "2019-08-24T14:15:22Z"}
GET
/volumes/{id}

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: read:volumes

Path Parameters

id*string

Volume id or name

Query Parameters

id_only?boolean

Resolve the path strictly as a UUID, without a name fallback.

Response Body

Volume detail (CAS fields best-effort)

application/json
  1. response

A volume as returned by the API. last_manifest_id/conflicts are read best-effort from the CAS store on detail routes only (never on list).

conflicts?unknown

Concurrent-write conflicts recorded on the latest manifest (audit trail).

created_at*string
Formatdate-time
error_reason?string|null
id*string
Formatuuid
last_manifest_id?|

Blockmount CAS pointer, read-through on detail routes (best-effort).

last_used_at?|
Formatdate-time
name*string
options?

Per-type options, namespaced by type (PLAN-VOLUME-TYPES.md §1): {} for a disk volume, {"bucket": {...}} for a bucket one. Credentials appear as the project-secret NAMES that were supplied, never as values — values are write-only across the whole API.

size_gb?|

Scratch capacity in GiB. Disk volumes only — a bucket volume has no capacity of its own and reports null.

Formatint32
state*string
type*string
updated_at*string
Formatdate-time
used_bytes?|

Real (logical) usage in bytes: sum of committed file sizes, hardlink groups counted once. Cached from runner events.volume.* reports; absent until the first report lands (never written / pre-feature volume).

Formatint64
used_bytes_at?|

When the cached used_bytes was observed by the runner.

Formatdate-time
curl -X GET 'https://example.com/volumes/string'
{  "conflicts": null,  "created_at": "2019-08-24T14:15:22Z",  "error_reason": "string",  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "last_manifest_id": "string",  "last_used_at": "2019-08-24T14:15:22Z",  "name": "string",  "options": {},  "size_gb": 0,  "state": "string",  "type": "string",  "updated_at": "2019-08-24T14:15:22Z",  "used_bytes": 0,  "used_bytes_at": "2019-08-24T14:15:22Z"}

DELETE /volumes/:id

DELETE
/volumes/{id}

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: delete:volumes

Path Parameters

id*string

Volume id or name

Query Parameters

id_only?boolean

Resolve the path strictly as a UUID, without a name fallback.

Response Body

Deletion complete

application/json
  1. response

Response for DELETE /volumes/{id}.

id*string
Formatuuid
state*string

deleting while accepted work is pending; deleted once complete.

curl -X DELETE 'https://example.com/volumes/string'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "state": "string"}