Authorization: Bearer <token>).
| Method | Path | Purpose |
|---|---|---|
GET | /api/v1/admin/bookkeeper-orgs | List organizations (paginated) |
POST | /api/v1/admin/bookkeeper-orgs | Create an organization |
GET | /api/v1/admin/bookkeeper-orgs/{id} | Get one organization |
PUT | /api/v1/admin/bookkeeper-orgs/{id} | Update an organization |
DELETE | /api/v1/admin/bookkeeper-orgs/{id} | Deactivate (soft delete) |
List organizations
Query parameters
Page number (1-based).
Number of results per page.
Case-insensitive match against
name, slug, and email.Pass
true to return only active organizations. Any other value returns all.Response
Paginated envelope:
items, total, page, pageSize, totalPages. Each
item includes a _count of related companies and adminUsers.Create an organization
Request body
Organization name.
URL slug. If omitted, generated from
name. Must be unique.Contact email (validated as an email when present).
Weekly hours before overtime applies. Minimum
0.Overtime pay multiplier. Minimum
1.201 with the created organization (and _count). Returns 400
Slug already exists if the slug collides.
Get an organization
The organization’s UUID.
companies (with employee counts) and
adminUsers. Returns 404 if not found.
Response (200)
Update an organization
The organization’s UUID.
Minimum
0.Minimum
1.Set
false to deactivate or true to reactivate.200 with the updated organization, or 404 if not found.
Deactivate an organization
The organization’s UUID.
active = false and returns the updated
record. Returns 404 if not found.
Response (200)
These handlers call
requireAuth(request, 'admin'), so a valid admin token is
required. The source comments mark create as “super admin only” but the
handlers do not enforce a specific admin role beyond the admin token type.