List
Every account row the caller may read, newest-name-first by default: admin sees all tenants, tenant_admin and developer see their own tenant, a plain user sees only themselves — the same compiled row filter GET /accounts/summary uses, so a summary tile and the list it drills into always agree on which rows count. All query filters intersect (AND). since/until run on accounts.created_at and are parsed by the same window parser /accounts/summary uses, so the formats and error codes cannot drift between the two endpoints. Service accounts are excluded by default; kind=service|all surfaces them for tenant admins.
Request
- Base URL: https://api.instruxi.dev/api/v1/enforcer
- URL: https://api.instruxi.dev/api/v1/enforcer/accounts
- Auth: one of:
- API key in header Authorization
- API key in header X-API-Key
Query parameters
free-text search
exact email match
filter by active flag
true = verified emails only, false = unverified only; absent = no filter
true = the PERSON (canonical name record) is missing a first or last name, false = complete profiles only; absent = no filter. Same predicate as the summary profile_complete tile and gRPC ListProfileIncomplete; service accounts are never incomplete
admin-set provisioner flag (PATCH /accounts/:id/profile-completed): true = marked complete, false = awaiting review; absent = no filter. NOT the same as profile_incomplete, which derives from name data
accounts with a verified session from this provider (e.g. persona)
KYC rollup bucket, same precedence as /accounts/summary?group_by=verification_status
role slug, same buckets as group_by=role
true = has at least one wallet, false = none
true = a phone on the linked person, false = none
true = invited by anyone, false = organic signup
only accounts I invited
only accounts invited by this account id (admin invitee tracking; row-level authz still applies)
only members of this group; 404 group_not_found if the group is not visible to you
drop members of this group; 404 group_not_found if the group is not visible to you
created at or after this instant (RFC3339) — same param as /accounts/summary
created before this instant (RFC3339) — same param as /accounts/summary
last active at or after this instant (RFC3339); never-active accounts never match
sort order
page size
page offset
list this tenant instead of your own (default: the caller's own tenant, platform admins included). Another tenant requires the cross_tenant grant — 403 otherwise
list EVERY tenant (platform-wide admin view). Requires the cross_tenant grant — 403 otherwise. Mutually exclusive with tenant_id (400 conflicting_tenant_scope)
account kind: human (default, excludes service accounts), service, or all. service|all require tenant admin (403 otherwise)
Response
OK
Example response
{
"success": true
}Changes
No recorded changes to this operation across all 1 revision of this API.