Skip to content

Permissions

Clearance policy

CLEARANCE_POLICY in dps-code-api/authz.py — minimum clearance_level required per capability, checked against the live agents row on every request. /auth/me returns these flags plus minimum_clearances.

PermissionLevelNotes
view_dashboard1General dashboard + docket reads
view_agents1Agent directory
add_case_note1Notes (plus assignment gate)
add_evidence1Evidence (plus assignment gate)
view_analytics2Analytics page
manage_dockets2Status/field updates, actions, contact, timeline
view_punishments2Punishment list/detail/profile reads
reassign_docket4+ Head Investigator rank or above
decide_appeal4Appeal decision surface (audit log)
manage_punishments4Issue/edit/revoke, user lookups
manage_agents5Agent creation
delete_docket5Report deletion (reason required)

Admin capabilities

ADMIN_PERMISSIONS — gated by require_admin (admin allowlist + clearance; Director rank for Director-only).

CapabilityClearanceDirector-only?
admin_panel4no — gates the whole /admin area
admin_health4no
admin_queue4no
admin_audit4no
admin_agents4no — but rank/clearance edits require Director
admin_reports5yes
admin_schema5yes
access management (admin_access_*)4yes (via admin_agents + director_only)

Rank gates

GateRanks
Supervisor reports/queue, audit visibility, trainer eligibility (SUPERVISOR_RANKS)Senior Agent, Head Investigator, Lead Agent, Director, Department Director
Case reassignment (REASSIGN_RANKS)Head Investigator, Lead Agent, Director, Department Director
Director authority (DIRECTOR_RANKS)Director, Department Director
Trainer role (_is_trainer)is_trainer flag or supervisor rank

Rank order (lowest → highest): Trial Agent, Probationary Agent, Agent, Senior Agent, Head Investigator, Lead Agent, Director, Department Director.

Report-level gates

GateRule
AssignmentOnly the assigned agent may update/note/evidence/timeline/action/contact (supervisor ranks bypass)
Supervisor rowsSenior Agent+ (or API key); restricted placeholders + zeroed counts below
Claimmanage_dockets; ALREADY_CLAIMED when assigned
Reopen concluded caseClearance 4+
Bot-only fieldsis_supervisor, notes, reason (dashboard may never set)

Bot (API key) capability surface

AllowedDenied
Report creation, generators, util/timestampTraining routes (403)
Queue pickup/complete/requeuePunishment/discipline mutation routes (403)
Contact respond, discord-profiles ingestionAdmin routes (403)
Onboarding agent field updates (no rank)Any rank write (400)
ER:LC player lookup