Skip to main content
Baobyte AML Suite
Documentation contents

API reference

Privacy

11 operations in this area of the contract. Every one declares the permission it requires.

Contract version 0.2.0All areas

Operations

GET/v1/privacy/authority-requests

List authority requests and legal-hold state

Required permission: privacy.request.readlistAuthorityRequests
Show parameters and responses

Parameters

NameInTypeDescription
statusquerypending_review | active | refused | release_pending | released—
limitqueryintegerPage size, capped at 200.

Responses

  • 200Authority request queueAuthorityRequestPage
POST/v1/privacy/authority-requests

Record an authority request and propose subject holds

Required permission: privacy.authority.createcreateAuthorityRequest

Creates pending hold rows and a maker-checker proposal. Holds become active only after a different authorised reviewer approves. This is neutral intake, not an EFCC schema, authenticity attestation, or direct submission mechanism (Q34).

Show parameters and responses

Responses

  • 202Recorded and awaiting activation reviewAuthorityRequest
  • 422—
GET/v1/privacy/authority-requests/{authorityRequestID}

Read an authority request, holds and immutable history

Required permission: privacy.request.readgetAuthorityRequest
Show parameters and responses

Parameters

NameInTypeDescription
authorityRequestIDrequiredpathstring—

Responses

  • 200Authority requestAuthorityRequest
  • 404—
POST/v1/privacy/authority-requests/{authorityRequestID}/release

Propose release of every hold on an authority request

Required permission: privacy.legal_hold.releaseproposeAuthorityRelease

Release is itself maker-checker governed. Until a different authorised actor approves, every linked hold remains blocking; a refused release restores `active`.

Show parameters and responses

Parameters

NameInTypeDescription
authorityRequestIDrequiredpathstring—

Responses

  • 202Release proposed and holds still blockingAuthorityRequest
  • 409—
POST/v1/privacy/authority-requests/{authorityRequestID}/response-exports

Generate and retain a hashed evidence manifest

Required permission: privacy.authority.response_exportexportAuthorityResponse

Returns a neutral inventory with per-domain record counts, SHA-256 digests, scope and provenance. It is auditable and reproducible, but intentionally is not an invented EFCC payload and performs no external submission.

Show parameters and responses

Parameters

NameInTypeDescription
authorityRequestIDrequiredpathstring—

Responses

  • 201Recorded response-package manifestAuthorityResponsePackage
  • 409—
GET/v1/privacy/authority-requests/{authorityRequestID}/response-exports/{exportID}

Read an exact previously generated evidence manifest

Required permission: privacy.authority.response_exportgetAuthorityResponseExport

The stored JSON is the same manifest whose SHA-256 was recorded and audited at generation.

Show parameters and responses

Parameters

NameInTypeDescription
authorityRequestIDrequiredpathstring—
exportIDrequiredpathstring—

Responses

  • 200Stored response-package manifestAuthorityResponsePackage
  • 404—
GET/v1/privacy/erasures

List data-subject erasure requests

Required permission: privacy.request.readlistErasureRequests
Show parameters and responses

Parameters

NameInTypeDescription
statusquerypending_review | approved | refused | executed—
limitqueryintegerPage size, capped at 200.

Responses

  • 200Erasure request queueErasureRequestPage
POST/v1/privacy/erasures

Record an erasure request and restrict the subject pending review

Required permission: privacy.erasure.createcreateErasureRequest

Creates a maker-checker proposal. Recording the request does not decide Q5 and does not destroy data. The linked party becomes `restricted` until a second authorised actor approves or refuses it.

Show parameters and responses

Responses

  • 202Recorded and awaiting a different reviewer's decisionErasureRequest
  • 409—
  • 422—
GET/v1/privacy/erasures/{erasureID}

Read an erasure request and immutable history

Required permission: privacy.request.readgetErasureRequest
Show parameters and responses

Parameters

NameInTypeDescription
erasureIDrequiredpathstring—

Responses

  • 200Erasure requestErasureRequest
  • 404—
POST/v1/privacy/erasures/{erasureID}/execute

Execute an approved erasure if no hold blocks it

Required permission: privacy.erasure.executeexecuteErasureRequest

Fails closed while any hold is active or release-pending. Otherwise destroys the wrapped subject DEK and redacts mutable plaintext onboarding PII. AML transaction, screening, risk, alert, case, report and audit skeletons remain; the audit hash chain is never rewritten. Repeating a completed execution is idempotent.

Show parameters and responses

Parameters

NameInTypeDescription
erasureIDrequiredpathstring—

Responses

  • 200Executed request, or the already-executed request on a retryErasureRequest
  • 404—
  • 409Not approved, or blocked by an active/release-pending legal hold
GET/v1/privacy/subjects/{partyID}/status

Read a subject's restricted/erased state and hold count

Required permission: privacy.request.readgetPrivacySubjectStatus

This endpoint is intentionally protected by `privacy.request.read`, not customer read. Front-office roles cannot infer that an authority has placed a customer on hold (Q34).

Show parameters and responses

Parameters

NameInTypeDescription
partyIDrequiredpathstring—

Responses

  • 200Privacy and hold statusPrivacySubjectStatus
  • 404—