HIPAA tenant BAA attestation checklist — first run
Run this checklist once when your organization first handles Protected Health Information (PHI) in Orbit. It covers only the Business Associate Agreement (BAA) attestation and gate-verification steps; the broader HIPAA enablement sequence (roles, retention, PHI-adjacent audiences, evidence binder) lives in the HIPAA first-enablement runbook.Step 1 — Declare PHI in scope
An owner or admin attests that PHI is entering the workspace. This is the act that raises thehipaa_required flag and opens the BAA execution flow.
- Dashboard: Settings → Compliance → BAA → Start handling PHI
- API:
POST /api/v1/compliance/baa/require
baa_statusispendinghipaa_requiredistrue- The audit log receives a
compliance.baa.hipaa_requiredentry naming the actor and the optional reason
reason field (up to 500 characters) is recorded on the audit row.
Step 2 — Execute the BAA
Execution binds the organization, so it is owner-only. The signer reviews the rendered template, then types their legal name intotyped_attestation; the server rejects the call unless it matches signer_name exactly.
- Dashboard: Settings → Compliance → BAA → Execute BAA
- API:
POST /api/v1/compliance/baa/execute
baa_statusbecomesexecutedbaa_executed_at,expires_at, anddays_until_expiryare populated- The audit log receives a
compliance.baa.executedentry carrying the signer, template version, and signature method (type_the_name)
GET /api/v1/compliance/baa/download for 24 hours per request.
Step 3 — Verify the gate before sign-off
Before you call the first production PHI send official, prove the gate behaves. With the BAA still pending, a PHI-enabled send must return422 HIPAA_BAA_REQUIRED. After execution, the same send must pass.
- Before execution (or on a scratch workspace left at
pending), attempt a PHI-bearing send:
- After execution, repeat the same send. It should proceed past the gate and return a normal send response.
Step 4 — Find the audit log entries
Every BAA lifecycle action appends a row under Settings → Audit log. Look for these actions:
The audit row, not the current status field, is the legal evidence of attestation. Keep the audit log reachable for compliance reviews.
Step 5 — Know the decline and revert paths
Two paths return the workspace to the defaultnot_required state. They are not interchangeable.
Decline (compliance.baa.declined)
Use this when PHI was declared in scope but the organization has not yet executed the BAA and now attests that no PHI is in scope.
- Who: owner or admin
- API:
POST /api/v1/compliance/baa/decline - When it fires: from
pendingonly; it refuses an executed BAA with400 - Effect: clears
hipaa_required, returnsbaa_statustonot_required, and lifts the send gate
Revert (compliance.baa.reverted)
Use this after an executed or expired BAA has run its contractual course and HIPAA mode has been disabled.
- Who: owner only
- API:
POST /api/v1/compliance/baa/revert - When it fires: from
executedorexpiredonly; requires HIPAA mode to be off first - Effect: returns
baa_statustonot_requiredwhile preserving the executed PDF and audit history
400 with a message asking you to disable HIPAA mode first.
Fail-closed rule
The BAA gate is fail-closed. There is no bypass, tenant override, or support path that opens it while the required proof is missing. An unverifiable compliance state blocks sends rather than risk a PHI transmission. Treat any500 HIPAA_BAA_GATE_DB_FAIL response as a verification outage, not a missing BAA, and retry.
Related pages
- Business Associate Agreement (BAA) flow — full lifecycle, states, and endpoints
- HIPAA BAA gate evaluation guide — how the gate evaluates a send
- HIPAA first-enablement runbook — roles, retention, PHI audiences, and evidence binder
- HIPAA readiness checklist runbook — from the free checklist tool to go/no-go