Snapshots
Snapshots recorded against a source or a store.
15 endpoints · Plakar Control Plane v0.20 · Base URL, authentication and errors
List the restore points of the organization with the state of each store
/api/v1/account/organizations/{id}/restore/points
Path parameters
-
idstring<uuid> requiredOrganization ID, at or below the caller’s.
Query parameters
-
offsetintegerNumber of items to skip.Default: 0 -
limitintegerMaximum number of items to return.Default: 100 Min: 1 Max: 100 -
source_idstring<uuid>Only snapshots of this source. -
store_idstring<uuid>Only snapshots with a live copy on this store. -
sincestring<date-time>Only snapshots created at or after this time. -
beforestring<date-time>Only snapshots created before this time. -
tagarray[string]Only snapshots carrying every one of these tags. -
facetsbooleanAlso count the snapshots per source, store and tag, each count ignoring its own filter, and with no filter at all.Default: false
Response 200 OK application/json
-
facetsobject nullable-
sourcesarray[object]-
countinteger -
sourceobject-
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
namestring
-
-
-
storesarray[object]-
countinteger -
storeobject-
deletedboolean -
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
lockedboolean -
namestring -
temperaturestring
-
-
-
tagsarray[object]-
countinteger -
tagstring
-
-
unfiltered_totalinteger
-
-
itemsarray[object]-
creation_timestring<date-time> -
itemsinteger nullable -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring -
sourceobject-
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
namestring
-
-
storesarray[object]-
country_detectedstring nullable -
deletedboolean -
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
legal_holdboolean -
lockedboolean -
namestring -
residencystring nullable -
temperaturestring
-
-
tagsarray[string] nullable
-
-
totalinteger
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/account/organizations/{id}/restore/points' \
-H 'Authorization: Bearer <badge>'Response 200
{
"facets": {
"sources": [
{
"count": 0,
"source": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"name": "string"
}
}
],
"stores": [
{
"count": 0,
"store": {
"deleted": true,
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"locked": true,
"name": "string",
"temperature": "string"
}
}
],
"tags": [
{
"count": 0,
"tag": "string"
}
],
"unfiltered_total": 0
},
"items": [
{
"creation_time": "2026-01-01T00:00:00Z",
"items": 0,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"source": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"name": "string"
},
"stores": [
{
"country_detected": "string",
"deleted": true,
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"legal_hold": true,
"locked": true,
"name": "string",
"residency": "string",
"temperature": "string"
}
],
"tags": [
"string"
]
}
],
"total": 0
}List the restore points of a source with the state of each store
/api/v1/account/organizations/{id}/restore/sources/{source_id}/points
Path parameters
-
idstring<uuid> requiredOrganization ID, at or below the caller’s. -
source_idstring required
Query parameters
-
offsetintegerNumber of items to skip.Default: 0 -
limitintegerMaximum number of items to return.Default: 100 Min: 1 Max: 100 -
store_idstring<uuid>Only snapshots with a live copy on this store. -
sincestring<date-time>Only snapshots created at or after this time. -
beforestring<date-time>Only snapshots created before this time. -
tagarray[string]Only snapshots carrying every one of these tags. -
facetsbooleanAlso count the snapshots per store and per tag, each count ignoring its own filter.Default: false
Response 200 OK application/json
-
facetsobject nullable-
sourcesarray[object]-
countinteger -
sourceobject-
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
namestring
-
-
-
storesarray[object]-
countinteger -
storeobject-
deletedboolean -
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
lockedboolean -
namestring -
temperaturestring
-
-
-
tagsarray[object]-
countinteger -
tagstring
-
-
unfiltered_totalinteger
-
-
itemsarray[object]-
creation_timestring<date-time> -
itemsinteger nullable -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring -
sourceobject-
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
namestring
-
-
storesarray[object]-
country_detectedstring nullable -
deletedboolean -
idstring<uuid> -
integrationobject-
idstring<uuid> -
namestring -
versionstring
-
-
legal_holdboolean -
lockedboolean -
namestring -
residencystring nullable -
temperaturestring
-
-
tagsarray[string] nullable
-
-
totalinteger
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/account/organizations/{id}/restore/sources/{source_id}/points' \
-H 'Authorization: Bearer <badge>'Response 200
{
"facets": {
"sources": [
{
"count": 0,
"source": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"name": "string"
}
}
],
"stores": [
{
"count": 0,
"store": {
"deleted": true,
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"locked": true,
"name": "string",
"temperature": "string"
}
}
],
"tags": [
{
"count": 0,
"tag": "string"
}
],
"unfiltered_total": 0
},
"items": [
{
"creation_time": "2026-01-01T00:00:00Z",
"items": 0,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"source": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"name": "string"
},
"stores": [
{
"country_detected": "string",
"deleted": true,
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"version": "string"
},
"legal_hold": true,
"locked": true,
"name": "string",
"residency": "string",
"temperature": "string"
}
],
"tags": [
"string"
]
}
],
"total": 0
}List the snapshots of a source
/api/v1/snapshots/source/{source_id}
Path parameters
-
source_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
offsetintegerNumber of items to skip.Default: 0 -
limitintegerMaximum number of items to return.Default: 100 Min: 1 Max: 100
Response 200 OK application/json
-
itemsarray[object]-
categorystring nullable -
creation_timestring<date-time> -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring -
storesarray[object]-
country_detectedstring nullable -
idstring<uuid> -
integrationobject-
created_atstring<date-time> -
fieldsmap[array[object]] nullable -
idstring<uuid> -
namestring nullable -
protocolsarray[string] nullable -
supportsarray[string] nullable -
updated_atstring<date-time> -
versionstring nullable
-
-
legal_holdboolean -
namestring -
residencystring nullable -
typestring
-
-
tagsarray[string] nullable
-
-
totalinteger
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/snapshots/source/{source_id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"items": [
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"stores": [
{
"country_detected": "string",
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"created_at": "2026-01-01T00:00:00Z",
"fields": {
"key": [
{
"default": "string",
"description": "string",
"display_name": "string",
"enum": [
"string"
],
"inventory_value": "string",
"name": "string",
"pattern": "string",
"required": true,
"sensitive": true,
"type": "string"
}
]
},
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"protocols": [
"string"
],
"supports": [
"string"
],
"updated_at": "2026-01-01T00:00:00Z",
"version": "string"
},
"legal_hold": true,
"name": "string",
"residency": "string",
"type": "string"
}
],
"tags": [
"string"
]
}
],
"total": 0
}Get a snapshot of a source
/api/v1/snapshots/source/{source_id}/{snapshot_id}
Path parameters
-
source_idstring required -
snapshot_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Response 200 OK application/json
-
categorystring nullable -
creation_timestring<date-time> -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring -
storesarray[object]-
country_detectedstring nullable -
idstring<uuid> -
integrationobject-
created_atstring<date-time> -
fieldsmap[array[object]] nullable -
idstring<uuid> -
namestring nullable -
protocolsarray[string] nullable -
supportsarray[string] nullable -
updated_atstring<date-time> -
versionstring nullable
-
-
legal_holdboolean -
namestring -
residencystring nullable -
typestring
-
-
tagsarray[string] nullable
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/snapshots/source/{source_id}/{snapshot_id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"stores": [
{
"country_detected": "string",
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"integration": {
"created_at": "2026-01-01T00:00:00Z",
"fields": {
"key": [
{
"default": "string",
"description": "string",
"display_name": "string",
"enum": [
"string"
],
"inventory_value": "string",
"name": "string",
"pattern": "string",
"required": true,
"sensitive": true,
"type": "string"
}
]
},
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"protocols": [
"string"
],
"supports": [
"string"
],
"updated_at": "2026-01-01T00:00:00Z",
"version": "string"
},
"legal_hold": true,
"name": "string",
"residency": "string",
"type": "string"
}
],
"tags": [
"string"
]
}List the snapshots of a store
/api/v1/snapshots/store/{store_id}
Path parameters
-
store_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
offsetintegerNumber of items to skip.Default: 0 -
limitintegerMaximum number of items to return.Default: 100 Min: 1 Max: 100
Response 200 OK application/json
-
itemsarray[object]-
categorystring nullable -
creation_timestring<date-time> required -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
legal_holdboolean -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring required -
store_idstring<uuid> -
tagsarray[string] nullable
-
-
totalinteger
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/snapshots/store/{store_id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"items": [
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"legal_hold": true,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"store_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"tags": [
"string"
]
}
],
"total": 0
}Preview a prune of a store
/api/v1/snapshots/store/{store_id}/prune/preview
Path parameters
-
store_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Request body application/json required
-
afterinteger nullableMax: 1.8446744073709552e+19 -
beforeinteger nullableMax: 1.8446744073709552e+19 -
dayinteger nullable -
execobject-
concurrencyinteger -
cpuinteger
-
-
formatstring nullable -
hooksobject-
post_jobstring nullable -
pre_jobstring nullable
-
-
hourinteger nullable -
ignoresarray[string] nullable -
labelsarray[string] nullable -
latestboolean nullable -
locateobject-
filtersobject-
beforestring<date-time> nullable -
categorystring nullable -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
idsarray[string] nullable -
ignore_tagsarray[string] nullable -
jobstring nullable -
latestboolean nullable -
namestring nullable -
originsarray[string] nullable -
perimeterstring nullable -
rootsarray[string] nullable -
sincestring<date-time> nullable -
tagsarray[string] nullable -
typesarray[string] nullable
-
-
group_bystring nullable -
periodsobject-
dayobject-
capinteger nullable -
keepinteger nullable
-
-
fridayobject-
capinteger nullable -
keepinteger nullable
-
-
hourobject-
capinteger nullable -
keepinteger nullable
-
-
minuteobject-
capinteger nullable -
keepinteger nullable
-
-
mondayobject-
capinteger nullable -
keepinteger nullable
-
-
monthobject-
capinteger nullable -
keepinteger nullable
-
-
saturdayobject-
capinteger nullable -
keepinteger nullable
-
-
sundayobject-
capinteger nullable -
keepinteger nullable
-
-
thursdayobject-
capinteger nullable -
keepinteger nullable
-
-
tuesdayobject-
capinteger nullable -
keepinteger nullable
-
-
wednesdayobject-
capinteger nullable -
keepinteger nullable
-
-
weekobject-
capinteger nullable -
keepinteger nullable
-
-
yearobject-
capinteger nullable -
keepinteger nullable
-
-
-
-
minuteinteger nullable -
monthinteger nullable -
pathstring nullable -
per_dayinteger nullable -
per_hourinteger nullable -
per_minuteinteger nullable -
per_monthinteger nullable -
per_weekinteger nullable -
per_yearinteger nullable -
rootstring nullable -
snapshot_idstring nullable -
snapshot_idsarray[string] nullable -
weekinteger nullable -
yearinteger nullable
Response 200 OK application/json
-
flooredarray[string] -
heldarray[string] -
would_deletearray[string] -
would_keeparray[string]
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X POST 'https://pcp.example.com/api/v1/snapshots/store/{store_id}/prune/preview' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"after": 0,
"before": 0,
"day": 0,
"exec": {
"concurrency": 0,
"cpu": 0
},
"format": "string",
"hooks": {
"post_job": "string",
"pre_job": "string"
},
"hour": 0,
"ignores": [
"string"
],
"labels": [
"string"
],
"latest": true,
"locate": {
"filters": {
"before": "2026-01-01T00:00:00Z",
"category": "string",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"ids": [
"string"
],
"ignore_tags": [
"string"
],
"job": "string",
"latest": true,
"name": "string",
"origins": [
"string"
],
"perimeter": "string",
"roots": [
"string"
],
"since": "2026-01-01T00:00:00Z",
"tags": [
"string"
],
"types": [
"string"
]
},
"group_by": "string",
"periods": {
"day": {
"cap": 0,
"keep": 0
},
"friday": {
"cap": 0,
"keep": 0
},
"hour": {
"cap": 0,
"keep": 0
},
"minute": {
"cap": 0,
"keep": 0
},
"monday": {
"cap": 0,
"keep": 0
},
"month": {
"cap": 0,
"keep": 0
},
"saturday": {
"cap": 0,
"keep": 0
},
"sunday": {
"cap": 0,
"keep": 0
},
"thursday": {
"cap": 0,
"keep": 0
},
"tuesday": {
"cap": 0,
"keep": 0
},
"wednesday": {
"cap": 0,
"keep": 0
},
"week": {
"cap": 0,
"keep": 0
},
"year": {
"cap": 0,
"keep": 0
}
}
},
"minute": 0,
"month": 0,
"path": "string",
"per_day": 0,
"per_hour": 0,
"per_minute": 0,
"per_month": 0,
"per_week": 0,
"per_year": 0,
"root": "string",
"snapshot_id": "string",
"snapshot_ids": [
"string"
],
"week": 0,
"year": 0
}'Response 200
{
"floored": [
"string"
],
"held": [
"string"
],
"would_delete": [
"string"
],
"would_keep": [
"string"
]
}Prune a store
/api/v1/snapshots/store/{store_id}/prune/run
Path parameters
-
store_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
actorstringScheduler to address. default: tasks created through the UI or the API. policy: tasks created by SLA policies, and their jobs. custom: tasks of integrations that drive the scheduler, such as Kubernetes; deprecated in favor of user:. user: the caller’s personal scheduler; 404 until POST /scheduling/scheduler creates it. user: : the personal scheduler of another user; needs view access on schedulers. Default: "default"
Request body application/json required
-
afterinteger nullableMax: 1.8446744073709552e+19 -
beforeinteger nullableMax: 1.8446744073709552e+19 -
dayinteger nullable -
execobject-
concurrencyinteger -
cpuinteger
-
-
formatstring nullable -
hooksobject-
post_jobstring nullable -
pre_jobstring nullable
-
-
hourinteger nullable -
ignoresarray[string] nullable -
labelsarray[string] nullable -
latestboolean nullable -
locateobject-
filtersobject-
beforestring<date-time> nullable -
categorystring nullable -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
idsarray[string] nullable -
ignore_tagsarray[string] nullable -
jobstring nullable -
latestboolean nullable -
namestring nullable -
originsarray[string] nullable -
perimeterstring nullable -
rootsarray[string] nullable -
sincestring<date-time> nullable -
tagsarray[string] nullable -
typesarray[string] nullable
-
-
group_bystring nullable -
periodsobject-
dayobject-
capinteger nullable -
keepinteger nullable
-
-
fridayobject-
capinteger nullable -
keepinteger nullable
-
-
hourobject-
capinteger nullable -
keepinteger nullable
-
-
minuteobject-
capinteger nullable -
keepinteger nullable
-
-
mondayobject-
capinteger nullable -
keepinteger nullable
-
-
monthobject-
capinteger nullable -
keepinteger nullable
-
-
saturdayobject-
capinteger nullable -
keepinteger nullable
-
-
sundayobject-
capinteger nullable -
keepinteger nullable
-
-
thursdayobject-
capinteger nullable -
keepinteger nullable
-
-
tuesdayobject-
capinteger nullable -
keepinteger nullable
-
-
wednesdayobject-
capinteger nullable -
keepinteger nullable
-
-
weekobject-
capinteger nullable -
keepinteger nullable
-
-
yearobject-
capinteger nullable -
keepinteger nullable
-
-
-
-
minuteinteger nullable -
monthinteger nullable -
pathstring nullable -
per_dayinteger nullable -
per_hourinteger nullable -
per_minuteinteger nullable -
per_monthinteger nullable -
per_weekinteger nullable -
per_yearinteger nullable -
rootstring nullable -
snapshot_idstring nullable -
snapshot_idsarray[string] nullable -
weekinteger nullable -
yearinteger nullable
Response 200 OK application/json
-
at_idsarray[string<uuid>] -
deletedarray[string] -
flooredarray[string] -
heldarray[string]
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X POST 'https://pcp.example.com/api/v1/snapshots/store/{store_id}/prune/run' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"after": 0,
"before": 0,
"day": 0,
"exec": {
"concurrency": 0,
"cpu": 0
},
"format": "string",
"hooks": {
"post_job": "string",
"pre_job": "string"
},
"hour": 0,
"ignores": [
"string"
],
"labels": [
"string"
],
"latest": true,
"locate": {
"filters": {
"before": "2026-01-01T00:00:00Z",
"category": "string",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"ids": [
"string"
],
"ignore_tags": [
"string"
],
"job": "string",
"latest": true,
"name": "string",
"origins": [
"string"
],
"perimeter": "string",
"roots": [
"string"
],
"since": "2026-01-01T00:00:00Z",
"tags": [
"string"
],
"types": [
"string"
]
},
"group_by": "string",
"periods": {
"day": {
"cap": 0,
"keep": 0
},
"friday": {
"cap": 0,
"keep": 0
},
"hour": {
"cap": 0,
"keep": 0
},
"minute": {
"cap": 0,
"keep": 0
},
"monday": {
"cap": 0,
"keep": 0
},
"month": {
"cap": 0,
"keep": 0
},
"saturday": {
"cap": 0,
"keep": 0
},
"sunday": {
"cap": 0,
"keep": 0
},
"thursday": {
"cap": 0,
"keep": 0
},
"tuesday": {
"cap": 0,
"keep": 0
},
"wednesday": {
"cap": 0,
"keep": 0
},
"week": {
"cap": 0,
"keep": 0
},
"year": {
"cap": 0,
"keep": 0
}
}
},
"minute": 0,
"month": 0,
"path": "string",
"per_day": 0,
"per_hour": 0,
"per_minute": 0,
"per_month": 0,
"per_week": 0,
"per_year": 0,
"root": "string",
"snapshot_id": "string",
"snapshot_ids": [
"string"
],
"week": 0,
"year": 0
}'Response 200
{
"at_ids": [
"3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
],
"deleted": [
"string"
],
"floored": [
"string"
],
"held": [
"string"
]
}Get a snapshot of a store
/api/v1/snapshots/store/{store_id}/{snapshot_id}
Path parameters
-
store_idstring required -
snapshot_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Response 200 OK application/json
-
categorystring nullable -
creation_timestring<date-time> required -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
legal_holdboolean -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring required -
store_idstring<uuid> -
tagsarray[string] nullable
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/snapshots/store/{store_id}/{snapshot_id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"legal_hold": true,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"store_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"tags": [
"string"
]
}Update a snapshot in a store
/api/v1/snapshots/store/{store_id}/{snapshot_id}
Path parameters
-
store_idstring required -
snapshot_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Request body application/json required
-
legal_holdboolean nullable
Response 200 OK application/json
-
categorystring nullable -
creation_timestring<date-time> required -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
legal_holdboolean -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring required -
store_idstring<uuid> -
tagsarray[string] nullable
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X PATCH 'https://pcp.example.com/api/v1/snapshots/store/{store_id}/{snapshot_id}' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"legal_hold": true
}'Response 200
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"legal_hold": true,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"store_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"tags": [
"string"
]
}List the stores holding a snapshot
/api/v1/snapshots/{snapshot_id}
Path parameters
-
snapshot_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Response 200 OK application/json
-
entriesarray[object]-
categorystring nullable -
creation_timestring<date-time> required -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
legal_holdboolean -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring required -
store_idstring<uuid> -
tagsarray[string] nullable
-
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/snapshots/{snapshot_id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"entries": [
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"legal_hold": true,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"store_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"tags": [
"string"
]
}
]
}Update a snapshot in every store
/api/v1/snapshots/{snapshot_id}
Path parameters
-
snapshot_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Request body application/json required
-
legal_holdboolean nullable
Response 200 OK application/json
-
entriesarray[object]-
categorystring nullable -
creation_timestring<date-time> required -
data_classesarray[string] nullable -
datasetstring nullable -
environmentstring nullable -
itemsinteger nullable -
legal_holdboolean -
namestring nullable -
originstring nullable -
rootstring nullable -
sizeinteger nullable -
snapshot_idstring required -
store_idstring<uuid> -
tagsarray[string] nullable
-
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X PATCH 'https://pcp.example.com/api/v1/snapshots/{snapshot_id}' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"legal_hold": true
}'Response 200
{
"entries": [
{
"category": "string",
"creation_time": "2026-01-01T00:00:00Z",
"data_classes": [
"string"
],
"dataset": "string",
"environment": "string",
"items": 0,
"legal_hold": true,
"name": "string",
"origin": "string",
"root": "string",
"size": 0,
"snapshot_id": "string",
"store_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"tags": [
"string"
]
}
]
}Get the daily history of the stores
/api/v1/stores/history
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
daysintegerHow many days back, today included.Default: 30 Min: 1 Max: 365
Response 200 OK application/json
-
daysarray[object]-
bytesinteger<int64> -
daystring -
objectsinteger -
recordedinteger -
sizedinteger
-
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/stores/history' \
-H 'Authorization: Bearer <badge>'Response 200
{
"days": [
{
"bytes": 0,
"day": "string",
"objects": 0,
"recorded": 0,
"sized": 0
}
]
}Sum up the integrity checks of the stores
/api/v1/stores/integrity
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s.
Response 200 OK application/json
-
checkedinteger -
failinginteger -
failing_storesarray[object]-
failinginteger -
idstring -
namestring
-
-
not_standardinteger -
objectsinteger -
offinteger -
off_storesarray[object]-
idstring -
namestring
-
-
passinginteger -
storage_bytesinteger<int64> -
storage_objectsinteger -
storage_sizedinteger -
store_sizesarray[object]-
bytesinteger<int64> -
idstring -
namestring -
objectsinteger -
sizedinteger
-
-
storesinteger
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/stores/integrity' \
-H 'Authorization: Bearer <badge>'Response 200
{
"checked": 0,
"failing": 0,
"failing_stores": [
{
"failing": 0,
"id": "string",
"name": "string"
}
],
"not_standard": 0,
"objects": 0,
"off": 0,
"off_stores": [
{
"id": "string",
"name": "string"
}
],
"passing": 0,
"storage_bytes": 0,
"storage_objects": 0,
"storage_sized": 0,
"store_sizes": [
{
"bytes": 0,
"id": "string",
"name": "string",
"objects": 0,
"sized": 0
}
],
"stores": 0
}List the contents of a store
/api/v1/stores/{store_id}/contents
Path parameters
-
store_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
typestringOnly resources of this type.Allowed: packfile, state -
failingbooleanOnly the resources whose last integrity check failed. -
offsetintegerNumber of items to skip.Default: 0 -
limitintegerMaximum number of items to return.Default: 100 Min: 1 Max: 100
Response 200 OK application/json
-
bytesinteger<int64> -
coveragearray[object]-
bytesinteger<int64> -
checkedinteger -
oldeststring<date-time> nullable -
secondsinteger<int64>
-
-
daily_budgetinteger<int64> nullable -
errorstring nullable -
failinginteger -
full_cycle_daysnumber<double> nullable -
integrity_check_everyinteger<int64> nullable -
integrity_check_sampleobject nullable-
orderstring nullableAllowed: random, oldest, newest -
percentinteger
-
-
itemsarray[object]-
check_errorstring nullable -
checked_atstring<date-time> nullable -
created_atstring<date-time> -
macstring -
sizeinteger<int64> nullable -
typestring
-
-
last_check_passedinteger -
listed_atstring<date-time> nullable -
never_checkedinteger -
packfilesinteger -
passinginteger -
sampledinteger -
sizedinteger -
statesinteger -
totalinteger
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/stores/{store_id}/contents' \
-H 'Authorization: Bearer <badge>'Response 200
{
"bytes": 0,
"coverage": [
{
"bytes": 0,
"checked": 0,
"oldest": "2026-01-01T00:00:00Z",
"seconds": 0
}
],
"daily_budget": 0,
"error": "string",
"failing": 0,
"full_cycle_days": 0,
"integrity_check_every": 0,
"integrity_check_sample": {
"order": "random",
"percent": 0
},
"items": [
{
"check_error": "string",
"checked_at": "2026-01-01T00:00:00Z",
"created_at": "2026-01-01T00:00:00Z",
"mac": "string",
"size": 0,
"type": "string"
}
],
"last_check_passed": 0,
"listed_at": "2026-01-01T00:00:00Z",
"never_checked": 0,
"packfiles": 0,
"passing": 0,
"sampled": 0,
"sized": 0,
"states": 0,
"total": 0
}Get the daily history of a store
/api/v1/stores/{store_id}/history
Path parameters
-
store_idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
daysintegerHow many days back, today included.Default: 30 Min: 1 Max: 365
Response 200 OK application/json
-
daysarray[object]-
bytesinteger<int64> -
checkedinteger -
daystring -
failedinteger -
packfilesinteger -
recordedboolean -
sizedinteger -
statesinteger
-
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/stores/{store_id}/history' \
-H 'Authorization: Bearer <badge>'Response 200
{
"days": [
{
"bytes": 0,
"checked": 0,
"day": "string",
"failed": 0,
"packfiles": 0,
"recorded": true,
"sized": 0,
"states": 0
}
]
}