Authorization: Bearer <token>).
List organizations
Query parameters
integer
default:"1"
Page number (1-based).
integer
default:"20"
Number of results per page.
string
Case-insensitive match against
name, slug, and email.string
Pass
true to return only active organizations. Any other value returns all.Response
object
Paginated envelope:
items, total, page, pageSize, totalPages. Each
item includes a _count of related companies and adminUsers.Create an organization
Request body
string
required
Organization name.
string
URL slug. If omitted, generated from
name. Must be unique.string
Contact email (validated as an email when present).
string
string
string
string
string
string
default:"USA"
string
default:"America/New_York"
string
default:"MM/DD/YYYY"
number
default:"40"
Weekly hours before overtime applies. Minimum
0.number
default:"1.5"
Overtime pay multiplier. Minimum
1.201 with the created organization (and _count). Returns 400
Slug already exists if the slug collides.
Get an organization
string
required
The organization’s UUID.
companies (with employee counts) and
adminUsers. Returns 404 if not found.
Response (200)
Update an organization
string
required
The organization’s UUID.
string
string
string
string
string
string
string
string
string
string
number
Minimum
0.number
Minimum
1.boolean
Set
false to deactivate or true to reactivate.200 with the updated organization, or 404 if not found.
Deactivate an organization
string
required
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.