Skip to content
Kumquat
Esc
↑↓navigate↵open⌘Jpreview

User Options

Assignee-picker autocomplete: id + display label only, no directory metadata.

The TTL can be long where the task autocomplete’s cannot: every writer of the users mirror drops the tag — this router, the Clerk webhook, kumquat-cli sync-users — so it is only the backstop for a mirror edited outside all three. assignable and groups are in the key because they change the answer, and search is bounded because it goes in verbatim; groups is sorted into the key so the same pair picked in either order is one entry rather than two.

GET/api/v1/users/options
Authorization
AuthorizationBearer token · headerrequired
or
AuthorizationOAuth2 access token · headerrequired
Query parameters
searchstring | any
case-insensitive match on name / email
limitinteger
min 1 · max 50 · default: 10
assignableboolean
only users who can hold work (creator/admin)
default: false
groupsUserGroup[] | any
in any of these groups; repeat the param
Responses
200Successful Response
successboolean
default: true
dataUserOption[] | any
Show properties
Any of:
UserOption[]
Array of UserOption
idstringrequired
labelstringrequired
image_urlstring | any
Show properties
Any of:
string
string
any
any
groupsstring[]
any
any
messagestring | any
Show properties
Any of:
string
string
any
any
errorsstring[] | any
Show properties
Any of:
string[]
Array of string
string
any
any
422Validation Error
detailValidationError[]
Show properties
Array of ValidationError
locstring | integer[]required
Show properties
Array of string | integer
Any of:
string
string
integer
integer
msgstringrequired
typestringrequired
inputany
ctxobject
Request
curl -X GET "/api/v1/users/options" \
  -H "Authorization: Bearer YOUR_TOKEN"
Response
{
  "success": true,
  "data": [
    {
      "id": "string",
      "label": "string",
      "image_url": "string",
      "groups": [
        "string"
      ]
    }
  ],
  "message": "string",
  "errors": [
    "string"
  ]
}