Audit
Audit logs and signed attestations.
7 endpoints · Plakar Control Plane v0.18 · Base URL, authentication and errors
List audit log entries
GET
Badge
/api/v1/organizations/{id}/audit-logs
Path parameters
-
idstring required
Query parameters
-
offsetintegerNumber of items to skip.Default: 0 -
limitintegerMaximum number of items to return.Default: 200 Min: 1 Max: 200 -
sincestring<date-time>Only entries at or after this time. -
untilstring<date-time>Only entries at or before this time. -
eventsstringComma-separated event names. A name also matches its dot-suffixed descendants. -
actor_user_idstring<uuid>Only entries by this user. -
target_user_idstring<uuid>Only entries about this user.
Response 200 OK application/json
-
itemsarray[object]-
actorobject nullable-
emailstring nullable -
identity_fingerprintstring nullable -
identity_idstring<uuid> -
namestring nullable -
user_idstring<uuid>
-
-
created_atstring<date-time> -
currmap[any] nullable -
eventstring -
idstring<uuid> -
metadatamap[any] nullable -
organizationobject-
idstring<uuid> -
namestring
-
-
originstring nullable -
prevmap[any] nullable -
targetobject nullable-
emailstring -
namestring -
user_idstring<uuid>
-
-
-
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/organizations/{id}/audit-logs' \
-H 'Authorization: Bearer <badge>'Response 200
{
"items": [
{
"actor": {
"email": "string",
"identity_fingerprint": "string",
"identity_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string",
"user_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"created_at": "2026-01-01T00:00:00Z",
"curr": {
"key": {}
},
"event": "string",
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"metadata": {
"key": {}
},
"organization": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"name": "string"
},
"origin": "string",
"prev": {
"key": {}
},
"target": {
"email": "string",
"name": "string",
"user_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}
}
],
"total": 0
}Export the audit log
GET
Badge
/api/v1/organizations/{id}/audit-logs/export
Path parameters
-
idstring required
Query parameters
-
sincestring<date-time>Only entries at or after this time. -
untilstring<date-time>Only entries at or before this time. -
eventsstringComma-separated event names. A name also matches its dot-suffixed descendants. -
actor_user_idstring<uuid>Only entries by this user. -
target_user_idstring<uuid>Only entries about this user. -
after_seqinteger<int64>Resume after this chain sequence number. Not combinable with the filters or with csv. -
formatstringExport format.Allowed: jsonl, cef, leef, csv Default: "jsonl"
Response 200 The audit log, in the requested format application/x-ndjson
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/organizations/{id}/audit-logs/export' \
-H 'Authorization: Bearer <badge>'Get the key that signs audit exports
GET
Badge
/api/v1/organizations/{id}/audit-logs/signing-key
Path parameters
-
idstring required
Response 200 OK application/json
-
algorithmstring -
fingerprintstring -
public_keystring
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/organizations/{id}/audit-logs/signing-key' \
-H 'Authorization: Bearer <badge>'Response 200
{
"algorithm": "string",
"fingerprint": "string",
"public_key": "string"
}Export the legal hold attestation
GET
Badge
/api/v1/organizations/{id}/legal-hold/export
Path parameters
-
idstring required
Query parameters
-
formatstringExport format.Allowed: jsonl, cef, leef Default: "jsonl"
Response 200 The signed attestation, in the requested format application/x-ndjson
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/organizations/{id}/legal-hold/export' \
-H 'Authorization: Bearer <badge>'Get the key that signs legal hold attestations
GET
Badge
/api/v1/organizations/{id}/legal-hold/signing-key
Path parameters
-
idstring required
Response 200 OK application/json
-
algorithmstring -
fingerprintstring -
public_keystring
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/organizations/{id}/legal-hold/signing-key' \
-H 'Authorization: Bearer <badge>'Response 200
{
"algorithm": "string",
"fingerprint": "string",
"public_key": "string"
}Export the residency attestation
GET
Badge
/api/v1/organizations/{id}/residency/export
Path parameters
-
idstring required
Query parameters
-
formatstringExport format.Allowed: jsonl, cef, leef Default: "jsonl"
Response 200 The signed attestation, in the requested format application/x-ndjson
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/organizations/{id}/residency/export' \
-H 'Authorization: Bearer <badge>'Get the key that signs residency attestations
GET
Badge
/api/v1/organizations/{id}/residency/signing-key
Path parameters
-
idstring required
Response 200 OK application/json
-
algorithmstring -
fingerprintstring -
public_keystring
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/organizations/{id}/residency/signing-key' \
-H 'Authorization: Bearer <badge>'Response 200
{
"algorithm": "string",
"fingerprint": "string",
"public_key": "string"
}