Blarass PM

Keys

Why keys work this way

Authorization vocabulary is roles, not keys. A key proves which member is calling and nothing more — so losing a key is a credential problem, never a permissions problem. That's why the lifecycle is deliberately simple.

The rules (source-verified)

  • Prefix bpm_, stored hashed; the raw value exists only in the mint/rotate response. Shown once.
  • One active key per member. Minting while one is active → 409; rotate or revoke first.
  • Rotation (POST /v1/keys/:id/rotate): old key → rotated status (stops working immediately), new raw key returned once. Self-rotation for your own key; admin/owner for anyone's.
  • Revocation (POST /v1/keys/:id/revoke): marks revoked, leaves the member keyless.
  • human members get no key on create unless create_key: true; agent/app members are auto-keyed unless create_key: false.
  • A member-key caller without an active key must pass create_key: true on member-update routes — that rotates their old key away in the same call.
  • GET /v1/keys returns metadata only, never raw secrets.

Cheat sheet

SituationCall
Agent lost its key valueadmin/owner: POST /v1/keys/:id/rotate
You want to disable an old integrationPOST /v1/keys/:id/revoke
Suspected leakrotate (audit-conscious) or revoke (hard stop)
You're keyless and need back inadd create_key: true to your member-update call

Related: Members & Roles · REST · Keys