List service accounts (integration + API-key) in the organization.
GET /v1/service-accounts
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Freetext ILIKE across first_name, last_name, and email.
Restrict to integration SAs, credential SAs, or both (default).
Role UUIDs — matches SAs holding any of the listed roles.
Inclusive lower bound on users.created_date.
Inclusive upper bound on users.created_date.
Responses
Section titled “ Responses ”List service accounts in the organization
object
A service account belonging to the organization. Covers both integration
service accounts (jira / wiz / etc. — created automatically when an
integration is configured) and credential service accounts (created through
POST /v1/oauth/clients).
Unlike [OrganizationMember], service accounts have no last_login.
object
Relative path to the user’s avatar endpoint, e.g.
"users/{id}/avatar?v={hash}". None when the user has no avatar.
IP allowlist enforced on token exchange. Populated only for credential SAs.
Public OAuth client ID (arm_sa_…). Populated only for credential SAs.
The admin user who provisioned this credential SA, resolved from
oauth_client.created_by and batch-loaded so the table can render a
chip without an extra round-trip per row. Populated only for
credential SAs whose creator still exists in the org.
object
Relative path to the user’s avatar endpoint, e.g.
"users/{id}/avatar?v={hash}". None when the user has no avatar.
Soft-deactivation timestamp from organization_user.deactivated_date.
None means the SA is currently active. The unified Service Accounts
page uses this to render disabled rows alongside active ones.
Hard expiry on the credential. Populated only for credential SAs.
Primary discriminator on a service account.
Wire format is SCREAMING_SNAKE_CASE (INTEGRATION, CREDENTIAL) so the
values read as constants. The DB enum (organization_user_kind) is
snake_case and is translated via the From impl in organization.rs.
Most-recent successful token exchange. Populated only for credential SAs.
Internal oauth_client.id. Populated only for credential SAs. The UI
uses this to address PATCH/DELETE /v1/oauth/clients/{id}. Distinct
from client_id (the public arm_sa_… string used at token-exchange
time).
When the credential was administratively revoked. Populated only for
credential SAs; mirrors deactivated_date once revoked.
Roles held by this SA. Empty for integration SAs; populated from
role_user_org for credential SAs.
Unauthorized
Internal server error