Secret providers
External secret providers.
10 endpoints · Plakar Control Plane v0.18 · Base URL, authentication and errors
List the secret providers
/api/v1/account/organizations/{id}/secret_providers
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 -
searchstringFree-text search on secret providers. -
secret_provider_idstring<uuid>Only this secret provider.
Response 200 OK application/json
-
itemsarray[object]-
created_atstring<date-time> -
fieldsmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
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
-
-
last_checkstring<date-time> -
namestring -
protocolstring -
revisioninteger -
updated_atstring<date-time>
-
-
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}/secret_providers' \
-H 'Authorization: Bearer <badge>'Response 200
{
"items": [
{
"created_at": "2026-01-01T00:00:00Z",
"fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "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"
},
"last_check": "2026-01-01T00:00:00Z",
"name": "string",
"protocol": "string",
"revision": 0,
"updated_at": "2026-01-01T00:00:00Z"
}
],
"total": 0
}Create a secret provider
/api/v1/account/organizations/{id}/secret_providers
Path parameters
-
idstring<uuid> requiredOrganization ID, at or below the caller’s.
Request body application/json required
-
fieldsmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
integrationobject-
idstring<uuid>
-
-
namestring -
protocolstring
Response 200 OK application/json
-
created_atstring<date-time> -
fieldsmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
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
-
-
last_checkstring<date-time> -
namestring -
protocolstring -
revisioninteger -
updated_atstring<date-time>
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/account/organizations/{id}/secret_providers' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "string"
}
},
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"name": "string",
"protocol": "string"
}'Response 200
{
"created_at": "2026-01-01T00:00:00Z",
"fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "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"
},
"last_check": "2026-01-01T00:00:00Z",
"name": "string",
"protocol": "string",
"revision": 0,
"updated_at": "2026-01-01T00:00:00Z"
}Create a secret provider from a form
/api/v1/account/organizations/{id}/secret_providers/form
Path parameters
-
idstring required
Request body application/json required
-
configurationmap[any] -
integrationobject-
idstring<uuid>
-
-
namestring -
protocolstring
Response 200 OK application/json
-
configurationmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
idstring<uuid>
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/account/organizations/{id}/secret_providers/form' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"configuration": {
"key": {}
},
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"name": "string",
"protocol": "string"
}'Response 200
{
"configuration": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "string"
}
},
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}Get a secret provider
/api/v1/secret_providers/{id}
Path parameters
-
idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
revisionintegerRevision to load. 0 is the latest.Default: 0
Response 200 OK application/json
-
created_atstring<date-time> -
fieldsmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
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
-
-
last_checkstring<date-time> -
namestring -
protocolstring -
revisioninteger -
updated_atstring<date-time>
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/secret_providers/{id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"created_at": "2026-01-01T00:00:00Z",
"fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "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"
},
"last_check": "2026-01-01T00:00:00Z",
"name": "string",
"protocol": "string",
"revision": 0,
"updated_at": "2026-01-01T00:00:00Z"
}Update a secret provider
/api/v1/secret_providers/{id}
Path parameters
-
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
-
fieldsmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
integrationobject-
idstring<uuid>
-
-
namestring -
protocolstring
Response 200 OK application/json
-
created_atstring<date-time> -
fieldsmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
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
-
-
last_checkstring<date-time> -
namestring -
protocolstring -
revisioninteger -
updated_atstring<date-time>
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 PUT 'https://pcp.example.com/api/v1/secret_providers/{id}' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "string"
}
},
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"name": "string",
"protocol": "string"
}'Response 200
{
"created_at": "2026-01-01T00:00:00Z",
"fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "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"
},
"last_check": "2026-01-01T00:00:00Z",
"name": "string",
"protocol": "string",
"revision": 0,
"updated_at": "2026-01-01T00:00:00Z"
}Delete a secret provider
/api/v1/secret_providers/{id}
Path parameters
-
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
-
deleted_atstring<date-time> -
revisioninteger
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 DELETE 'https://pcp.example.com/api/v1/secret_providers/{id}' \
-H 'Authorization: Bearer <badge>'Response 200
{
"deleted_at": "2026-01-01T00:00:00Z",
"revision": 0
}List what the caller may do on a secret provider
/api/v1/secret_providers/{id}/capabilities
Path parameters
-
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
-
actionsarray[string] -
idstring<uuid> -
resourcestring
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/secret_providers/{id}/capabilities' \
-H 'Authorization: Bearer <badge>'Response 200
{
"actions": [
"string"
],
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"resource": "string"
}Get a secret provider as form data
/api/v1/secret_providers/{id}/form
Path parameters
-
idstring required
Query parameters
-
organization_idstring<uuid>Organization to act on, at or below the caller’s. Defaults to the caller’s. -
revisionintegerRevision to load. 0 is the latest.Default: 0
Response 200 OK application/json
-
configurationmap[any] -
created_atstring<date-time> -
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
-
-
last_checkstring<date-time> -
namestring -
protocolstring -
revisioninteger -
schemaobject-
bundle_fieldsmap[object] nullable-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
initialmap[any] -
schemamap[any] -
schemestring
-
-
updated_atstring<date-time>
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/secret_providers/{id}/form' \
-H 'Authorization: Bearer <badge>'Response 200
{
"configuration": {
"key": {}
},
"created_at": "2026-01-01T00:00:00Z",
"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"
},
"last_check": "2026-01-01T00:00:00Z",
"name": "string",
"protocol": "string",
"revision": 0,
"schema": {
"bundle_fields": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "string"
}
},
"initial": {
"key": {}
},
"schema": {
"key": {}
},
"scheme": "string"
},
"updated_at": "2026-01-01T00:00:00Z"
}Update a secret provider from a form
/api/v1/secret_providers/{id}/form
Path parameters
-
idstring required
Request body application/json required
-
configurationmap[any] -
integrationobject-
idstring<uuid>
-
-
namestring -
protocolstring
Response 200 OK application/json
-
configurationmap[object]-
providerobject nullable-
idstring<uuid>
-
-
valuestring
-
-
idstring<uuid>
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/secret_providers/{id}/form' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"configuration": {
"key": {}
},
"integration": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"name": "string",
"protocol": "string"
}'Response 200
{
"configuration": {
"key": {
"provider": {
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
},
"value": "string"
}
},
"id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}Test a secret provider
/api/v1/secret_providers/{id}/test
Path parameters
-
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
-
errorstring nullable -
okboolean
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/secret_providers/{id}/test' \
-H 'Authorization: Bearer <badge>'Response 200
{
"error": "string",
"ok": true
}