Snapshots
Snapshots recorded against a source or a store.
9 endpoints · Plakar Control Plane v0.18 · Base URL, authentication and errors
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 -
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,
"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 -
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,
"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"
]
}
]
}