---
title: "Listing all Users"
method: GET
path: "/v1/users"
tags: ["Users"]
---

# Listing all Users

`GET /v1/users`

Currently, there are no paging or filtering options, so listing `User`s will get you every User in the system, every time.

Optionally, a `q` querystring parameter may be provided to filter the returned users by any given string. The search is performed via a [trigram similarity index](https://www.postgresql.org/docs/14/pgtrgm.html) over both the Email and Display Name fields, and results are ordered by match score, best matches first. Note that short search terms (less than 4 or 5 characters) may not return any results. Try a longer search if nothing is appearing.

If a `q` parameter is given, and it exactly matches an email address that exists in the system, that user's details will always be returned, even for actors who cannot `user.list`. The request must still authenticate as a valid Actor. This allows non-Administrators to choose a user for an action (eg grant rights) without allowing full search.

Actors who cannot `user.list` will always receive `[]` with a `200 OK` response.

## Query parameters

- `q` string

## Response `200`

OK

- User[]
  - `createdAt` string, required — ISO date format
  - `displayName` string, required — All `Actor`s, regardless of type, have a display name
  - `id` number, required
  - `type` 'user' | 'field_key' | 'public_link' | 'singleUse', required — The type of actor
  - `updatedAt` string — ISO date format
  - `deletedAt` string — ISO date format
  - `email` string — The email address of the user
  - `lastLoginAt` string, date-time, nullable — The timestamp of when the user last logged in. Will be null if the user has never logged in.

---

[API](https://skmtc.net/getodk/apis/odk-central-api.md) · [All operations](https://skmtc.net/getodk/apis/odk-central-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getodk/odk-central-api/versions/d8f5a0886a8b/schema)
