Iam
Generated from Huudis's own code: every route in this area, what it takes and how to call it.
| Method | Path | What it does |
|---|---|---|
GET |
/api/v1/iam/access-keys |
List access keys |
POST |
/api/v1/iam/access-keys |
Create an access key |
DELETE |
/api/v1/iam/access-keys/{id} |
Delete an access key |
POST |
/api/v1/iam/access-keys/{id}/revoke |
Revoke an access key |
GET |
/api/v1/iam/assumed-sessions |
List assumed sessions |
POST |
/api/v1/iam/assumed-sessions/{id}/revoke |
Revoke an assumed session |
GET |
/api/v1/iam/groups |
List groups |
POST |
/api/v1/iam/groups |
Create a group |
DELETE |
/api/v1/iam/groups/{id} |
Delete a group |
GET |
/api/v1/iam/groups/{id} |
Get a group |
POST |
/api/v1/iam/groups/{id}/members |
Members a group |
DELETE |
/api/v1/iam/groups/{id}/members/{userId} |
Delete a member |
GET |
/api/v1/iam/identity-providers |
List identity providers |
POST |
/api/v1/iam/identity-providers |
Create an identity provider |
DELETE |
/api/v1/iam/identity-providers/{id} |
Delete an identity provider |
PATCH |
/api/v1/iam/identity-providers/{id} |
Update an identity provider |
GET |
/api/v1/iam/invites |
List invites |
POST |
/api/v1/iam/invites |
Create an invite |
DELETE |
/api/v1/iam/invites/{id} |
Delete an invite |
GET |
/api/v1/iam/key-actions |
List key actions |
POST |
/api/v1/iam/key-actions/{id}/undo |
Undo a key action |
GET |
/api/v1/iam/key-requests |
List key requests |
GET |
/api/v1/iam/key-requests/{id} |
Get a key request |
POST |
/api/v1/iam/key-requests/{id}/approve |
Approve a key request with the code from its challenge. |
POST |
/api/v1/iam/key-requests/{id}/challenge |
Start approving a key request: a second-factor challenge for the signed-in owner (an emailed code is sent when they have an email factor). |
POST |
/api/v1/iam/key-requests/{id}/deny |
Deny a key request |
GET |
/api/v1/iam/policies |
List policies |
POST |
/api/v1/iam/policies |
Create a policy |
DELETE |
/api/v1/iam/policies/{id} |
Delete a policy |
GET |
/api/v1/iam/policies/{id} |
Get a policy |
PATCH |
/api/v1/iam/policies/{id} |
Update a policy |
GET |
/api/v1/iam/policy-attachments |
List policy attachments |
POST |
/api/v1/iam/policy-attachments |
Create a policy attachment |
DELETE |
/api/v1/iam/policy-attachments/{id} |
Delete a policy attachment |
GET |
/api/v1/iam/roles |
List roles |
POST |
/api/v1/iam/roles |
Create a role |
DELETE |
/api/v1/iam/roles/{id} |
Delete a role |
GET |
/api/v1/iam/roles/{id} |
Get a role |
GET |
/api/v1/iam/service-accounts |
List service accounts |
POST |
/api/v1/iam/service-accounts |
Create a service account |
DELETE |
/api/v1/iam/service-accounts/{id} |
Delete a service account |
GET |
/api/v1/iam/service-accounts/{id} |
Get a service account |
GET |
/api/v1/iam/users |
List users |
POST |
/api/v1/iam/users |
Create an user |
DELETE |
/api/v1/iam/users/{id} |
Delete an user |
PATCH |
/api/v1/iam/users/{id} |
Update an user |
POST |
/api/v1/iam/users/{id}/reset-password |
Reset password an user |
List access keys
GET /api/v1/iam/access-keys
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListAccessKeys. See access keys.
Query parameters
| Name | Type | Required | Notes |
|---|---|---|---|
principalType |
user or service_account |
yes | |
principalId |
string | yes | min length 1 |
Example
curl -X GET "https://huudis.com/api/v1/iam/access-keys" \
-H "Authorization: Bearer <access token>"
Create an access key
POST /api/v1/iam/access-keys
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route creates or revokes an access key — a person decides which keys exist.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
principalType |
user or service_account |
yes | |
principalId |
string | yes | min length 1 |
label |
string | no | max length 120 |
expiresAt |
string (date-time) | no |
Example
curl -X POST "https://huudis.com/api/v1/iam/access-keys" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"principalType":"user","principalId":"…","label":"…","expiresAt":"2026-01-01T00:00:00Z"}'
Delete an access key
DELETE /api/v1/iam/access-keys/{id}
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route creates or revokes an access key — a person decides which keys exist.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/access-keys/:id" \
-H "Authorization: Bearer <access token>"
Revoke an access key
POST /api/v1/iam/access-keys/{id}/revoke
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route creates or revokes an access key — a person decides which keys exist.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X POST "https://huudis.com/api/v1/iam/access-keys/:id/revoke" \
-H "Authorization: Bearer <access token>"
List assumed sessions
GET /api/v1/iam/assumed-sessions
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListAssumedSessions. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/assumed-sessions" \
-H "Authorization: Bearer <access token>"
Revoke an assumed session
POST /api/v1/iam/assumed-sessions/{id}/revoke
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:RevokeAssumedSession. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X POST "https://huudis.com/api/v1/iam/assumed-sessions/:id/revoke" \
-H "Authorization: Bearer <access token>"
List groups
GET /api/v1/iam/groups
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListGroups. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/groups" \
-H "Authorization: Bearer <access token>"
Create a group
POST /api/v1/iam/groups
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:CreateGroup. See access keys.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | yes | min length 1; max length 120 |
description |
string | no | max length 500 |
Example
curl -X POST "https://huudis.com/api/v1/iam/groups" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…"}'
Delete a group
DELETE /api/v1/iam/groups/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:DeleteGroup. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/groups/:id" \
-H "Authorization: Bearer <access token>"
Get a group
GET /api/v1/iam/groups/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:GetGroup. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X GET "https://huudis.com/api/v1/iam/groups/:id" \
-H "Authorization: Bearer <access token>"
Members a group
POST /api/v1/iam/groups/{id}/members
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:AddGroupMember. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Body
| Field | Type | Required | Notes |
|---|---|---|---|
userId |
string | yes | min length 1 |
Example
curl -X POST "https://huudis.com/api/v1/iam/groups/:id/members" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"userId":"…"}'
Delete a member
DELETE /api/v1/iam/groups/{id}/members/{userId}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:RemoveGroupMember. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes | |
userId |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/groups/:id/members/:userId" \
-H "Authorization: Bearer <access token>"
List identity providers
GET /api/v1/iam/identity-providers
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListIdentityProviders. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/identity-providers" \
-H "Authorization: Bearer <access token>"
Create an identity provider
POST /api/v1/iam/identity-providers
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:CreateIdentityProvider itself (a wildcard such as huudis:* does not grant it). A workspace owner approves each key request first, with a second-factor code: the key gets 202 with a request id, then sends the same request again, which runs once. See the workspace's people and sign-in setup.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | yes | min length 1; max length 120 |
type |
saml or oidc |
yes | |
metadata |
object | no | default {} |
Example
curl -X POST "https://huudis.com/api/v1/iam/identity-providers" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"name":"…","type":"saml","metadata":{}}'
Delete an identity provider
DELETE /api/v1/iam/identity-providers/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:DeleteIdentityProvider itself (a wildcard such as huudis:* does not grant it). A workspace owner approves each key request first, with a second-factor code: the key gets 202 with a request id, then sends the same request again, which runs once. See the workspace's people and sign-in setup.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/identity-providers/:id" \
-H "Authorization: Bearer <access token>"
Update an identity provider
PATCH /api/v1/iam/identity-providers/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:UpdateIdentityProvider itself (a wildcard such as huudis:* does not grant it). A workspace owner approves each key request first, with a second-factor code: the key gets 202 with a request id, then sends the same request again, which runs once. See the workspace's people and sign-in setup.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | no | min length 1; max length 120 |
metadata |
object | no |
Example
curl -X PATCH "https://huudis.com/api/v1/iam/identity-providers/:id" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"name":"…","metadata":{}}'
List invites
GET /api/v1/iam/invites
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListInvites. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/invites" \
-H "Authorization: Bearer <access token>"
Create an invite
POST /api/v1/iam/invites
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:InviteMember itself (a wildcard such as huudis:* does not grant it). A key's change happens at once and every workspace owner is emailed a link to undo it; granting, changing or removing the owner role needs an owner's approval first. See the workspace's people and sign-in setup.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
email |
string (email) | yes | max length 200 |
role |
owner or admin or member |
no | default "member" |
Example
curl -X POST "https://huudis.com/api/v1/iam/invites" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"email":"…","role":"member"}'
Delete an invite
DELETE /api/v1/iam/invites/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:DeleteInvite. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/invites/:id" \
-H "Authorization: Bearer <access token>"
List key actions
GET /api/v1/iam/key-actions
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListKeyActions. See access keys.
Query parameters
| Name | Type | Required | Notes |
|---|---|---|---|
limit |
any | no |
Example
curl -X GET "https://huudis.com/api/v1/iam/key-actions" \
-H "Authorization: Bearer <access token>"
Undo a key action
POST /api/v1/iam/key-actions/{id}/undo
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route is a workspace owner's check on what access keys do.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Body
| Field | Type | Required | Notes |
|---|---|---|---|
revokeKey |
boolean | no | default false |
Example
curl -X POST "https://huudis.com/api/v1/iam/key-actions/:id/undo" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"revokeKey":false}'
List key requests
GET /api/v1/iam/key-requests
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListKeyRequests. See access keys.
Query parameters
| Name | Type | Required | Notes |
|---|---|---|---|
limit |
any | no | |
status |
any | no |
Example
curl -X GET "https://huudis.com/api/v1/iam/key-requests" \
-H "Authorization: Bearer <access token>"
Get a key request
GET /api/v1/iam/key-requests/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:GetKeyRequest. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X GET "https://huudis.com/api/v1/iam/key-requests/:id" \
-H "Authorization: Bearer <access token>"
Approve a key request with the code from its challenge.
POST /api/v1/iam/key-requests/{id}/approve
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route is a workspace owner's check on what access keys do.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Body
| Field | Type | Required | Notes |
|---|---|---|---|
challengeToken |
string | yes | min length 1 |
code |
string | yes | min length 1; max length 64 |
Example
curl -X POST "https://huudis.com/api/v1/iam/key-requests/:id/approve" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"challengeToken":"…","code":"…"}'
Start approving a key request: a second-factor challenge for the signed-in owner (an emailed code is sent when they have an email factor).
POST /api/v1/iam/key-requests/{id}/challenge
Start approving a key request: a second-factor challenge for the signed-in owner (an emailed code is sent when they have an email factor).
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route is a workspace owner's check on what access keys do.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X POST "https://huudis.com/api/v1/iam/key-requests/:id/challenge" \
-H "Authorization: Bearer <access token>"
Deny a key request
POST /api/v1/iam/key-requests/{id}/deny
Authentication: Takes a signed-in person's session or bearer token only. An access key is refused (PERSON_ONLY): this route is a workspace owner's check on what access keys do.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X POST "https://huudis.com/api/v1/iam/key-requests/:id/deny" \
-H "Authorization: Bearer <access token>"
List policies
GET /api/v1/iam/policies
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListPolicies. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/policies" \
-H "Authorization: Bearer <access token>"
Create a policy
POST /api/v1/iam/policies
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:CreatePolicy. See access keys.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | yes | min length 1; max length 120 |
description |
string | no | max length 500 |
document |
object | yes |
Example
curl -X POST "https://huudis.com/api/v1/iam/policies" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…","document":{"Version":"…","Statement":[]}}'
Delete a policy
DELETE /api/v1/iam/policies/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:DeletePolicy. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/policies/:id" \
-H "Authorization: Bearer <access token>"
Get a policy
GET /api/v1/iam/policies/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:GetPolicy. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X GET "https://huudis.com/api/v1/iam/policies/:id" \
-H "Authorization: Bearer <access token>"
Update a policy
PATCH /api/v1/iam/policies/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:UpdatePolicy. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Body
| Field | Type | Required | Notes |
|---|---|---|---|
description |
string | no | max length 500 |
document |
object | no |
Example
curl -X PATCH "https://huudis.com/api/v1/iam/policies/:id" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"description":"…","document":{"Version":"…","Statement":[]}}'
List policy attachments
GET /api/v1/iam/policy-attachments
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListPolicyAttachments. See access keys.
Query parameters
| Name | Type | Required | Notes |
|---|---|---|---|
policyId |
string | no | |
principalType |
user or group or role or service_account |
no | |
principalId |
string | no |
Example
curl -X GET "https://huudis.com/api/v1/iam/policy-attachments" \
-H "Authorization: Bearer <access token>"
Create a policy attachment
POST /api/v1/iam/policy-attachments
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:AttachPolicy. See access keys.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
policyId |
string | yes | min length 1 |
principalType |
user or group or role or service_account |
yes | |
principalId |
string | yes | min length 1 |
Example
curl -X POST "https://huudis.com/api/v1/iam/policy-attachments" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"policyId":"…","principalType":"user","principalId":"…"}'
Delete a policy attachment
DELETE /api/v1/iam/policy-attachments/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:DetachPolicy. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/policy-attachments/:id" \
-H "Authorization: Bearer <access token>"
List roles
GET /api/v1/iam/roles
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListRoles. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/roles" \
-H "Authorization: Bearer <access token>"
Create a role
POST /api/v1/iam/roles
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:CreateRole. See access keys.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | yes | min length 1; max length 120 |
description |
string | no | max length 500 |
trustPolicy |
object | yes | |
maxSessionDurationSec |
integer | no | min 900; max 43200 |
Example
curl -X POST "https://huudis.com/api/v1/iam/roles" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…","trustPolicy":{"Version":"…","Statement":[]},"maxSessionDurationSec":900}'
Delete a role
DELETE /api/v1/iam/roles/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:DeleteRole. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/roles/:id" \
-H "Authorization: Bearer <access token>"
Get a role
GET /api/v1/iam/roles/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:GetRole. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X GET "https://huudis.com/api/v1/iam/roles/:id" \
-H "Authorization: Bearer <access token>"
List service accounts
GET /api/v1/iam/service-accounts
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListServiceAccounts. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/service-accounts" \
-H "Authorization: Bearer <access token>"
Create a service account
POST /api/v1/iam/service-accounts
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:CreateServiceAccount. See access keys.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
name |
string | yes | min length 1; max length 120 |
description |
string | no | max length 500 |
Example
curl -X POST "https://huudis.com/api/v1/iam/service-accounts" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…"}'
Delete a service account
DELETE /api/v1/iam/service-accounts/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:DeleteServiceAccount. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/service-accounts/:id" \
-H "Authorization: Bearer <access token>"
Get a service account
GET /api/v1/iam/service-accounts/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:GetServiceAccount. See access keys.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X GET "https://huudis.com/api/v1/iam/service-accounts/:id" \
-H "Authorization: Bearer <access token>"
List users
GET /api/v1/iam/users
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies allow huudis:ListUsers. See access keys.
Example
curl -X GET "https://huudis.com/api/v1/iam/users" \
-H "Authorization: Bearer <access token>"
Create an user
POST /api/v1/iam/users
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:AddMember itself (a wildcard such as huudis:* does not grant it). A key's change happens at once and every workspace owner is emailed a link to undo it; granting, changing or removing the owner role needs an owner's approval first. See the workspace's people and sign-in setup.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
email |
string (email) | yes | max length 200 |
name |
string | no | max length 120 |
password |
string | no | min length 10; max length 200 |
role |
owner or admin or member |
no | default "member" |
emailVerified |
boolean | no | default true |
sendInviteEmail |
boolean | no | default true |
Example
curl -X POST "https://huudis.com/api/v1/iam/users" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"email":"…","name":"…","password":"…","role":"member","emailVerified":true,"sendInviteEmail":true}'
Delete an user
DELETE /api/v1/iam/users/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:RemoveMember itself (a wildcard such as huudis:* does not grant it). A key's change happens at once and every workspace owner is emailed a link to undo it; granting, changing or removing the owner role needs an owner's approval first. See the workspace's people and sign-in setup.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X DELETE "https://huudis.com/api/v1/iam/users/:id" \
-H "Authorization: Bearer <access token>"
Update an user
PATCH /api/v1/iam/users/{id}
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:UpdateMember itself (a wildcard such as huudis:* does not grant it). A key's change happens at once and every workspace owner is emailed a link to undo it; granting, changing or removing the owner role needs an owner's approval first. See the workspace's people and sign-in setup.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Body
| Field | Type | Required | Notes |
|---|---|---|---|
role |
owner or admin or member |
no | |
emailVerified |
boolean | no |
Example
curl -X PATCH "https://huudis.com/api/v1/iam/users/:id" \
-H "Authorization: Bearer <access token>" \
-H "Content-Type: application/json" \
-d '{"role":"owner","emailVerified":false}'
Reset password an user
POST /api/v1/iam/users/{id}/reset-password
Authentication: Takes a signed-in person's session or bearer token, or an IAM access key (Huudis-HMAC-SHA256) whose user's policies name huudis:ResetMemberPassword itself (a wildcard such as huudis:* does not grant it). A workspace owner approves each key request first, with a second-factor code: the key gets 202 with a request id, then sends the same request again, which runs once. See the workspace's people and sign-in setup.
Path parameters
| Name | Type | Required | Notes |
|---|---|---|---|
id |
string | yes |
Example
curl -X POST "https://huudis.com/api/v1/iam/users/:id/reset-password" \
-H "Authorization: Bearer <access token>"