Skip to content

Depot bitlocker

Registers the recovery-key routes on mux.

This page is generated from the Depot route table. Every operation carries the permission it needs and the anchor an agent can link to.

GET /api/v1/endpoints/{agentID}/recovery-keys

Section titled “GET /api/v1/endpoints/{agentID}/recovery-keys”

GETbitlocker:readtenant facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listRecoveryKeys answers one endpoint’s escrowed volumes.

It does NOT 404 on an unknown endpoint. The route is about keys, the keys deliberately outlive the endpoint row, and answering “no such machine” for an agent id whose keys are still on file would be the wrong answer to the question somebody asks after decommissioning one.

NameInTypeRequiredDescription
agentIDpathstringYesA uuid.
pagequeryintegerNoOne-based page number. Defaults to 1.
pageSizequeryintegerNoRows per page, 1 to 200. Defaults to 50.
StatusBodyDescription
200application/json, PagedResultRecoveryKeySummaryViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold bitlocker:read.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
itemsrequiredarray of RecoveryKeySummaryView
items[].driveLetterstring
items[].escrowedAtrequiredstring (date-time)
items[].kindrequiredstring
items[].publicIdrequiredstring
items[].recoveryPasswordIdrequiredstring
items[].volumeIdrequiredstring
pagerequiredinteger
pageSizerequiredinteger
totalrequiredinteger
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/endpoints/<agentID>/recovery-keys?page=0&pageSize=0' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/recovery-keys/{publicID}/reveal

Section titled “POST /api/v1/recovery-keys/{publicID}/reveal”

POSTbitlocker:revealtenant facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

revealRecoveryKey answers the plaintext once, AFTER recording that it did.

THE ORDER IS THE CONTRACT AND IT FAILS CLOSED. The audit row is appended before the column is decrypted, and an audit write that errors answers 500 and never the key. Auditing afterwards would leave the one operation in this service most worth recording as the one that goes unrecorded precisely when the audit write is the thing that broke.

The metadata that identifies WHICH key was read rides the audit row; the key itself never does. The chain is read by more people, and for longer, than this response is.

NameInTypeRequiredDescription
publicIDpathstringYesA uuid.
StatusBodyDescription
200application/json, RecoveryKeyRevealViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold bitlocker:reveal.
404application/problem+json, ProblemDetailsNo resource matches that id.
500application/problem+json, ProblemDetailsNo client store in request context.

200 response body

FieldTypeDescription
auditIdrequiredinteger

int64.

kindrequiredstring
publicIdrequiredstring
recoveryPasswordrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/recovery-keys/<publicID>/reveal' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

Content is licensed CC BY 4.0. Code samples are MIT. Outpost and the Outpost mark are trademarks of Outpost Business Solutions, PBC and are not covered by either license.