in packages/better-auth/src/plugins/admin/admin.ts [463:563]
listUsers: createAuthEndpoint(
"/admin/list-users",
{
method: "GET",
use: [adminMiddleware],
query: z.object({
searchValue: z
.string({
description: "The value to search for",
})
.optional(),
searchField: z
.enum(["email", "name"], {
description:
"The field to search in, defaults to email. Can be `email` or `name`",
})
.optional(),
searchOperator: z
.enum(["contains", "starts_with", "ends_with"], {
description:
"The operator to use for the search. Can be `contains`, `starts_with` or `ends_with`",
})
.optional(),
limit: z
.string({
description: "The number of users to return",
})
.or(z.number())
.optional(),
offset: z
.string({
description: "The offset to start from",
})
.or(z.number())
.optional(),
sortBy: z
.string({
description: "The field to sort by",
})
.optional(),
sortDirection: z
.enum(["asc", "desc"], {
description: "The direction to sort by",
})
.optional(),
filterField: z
.string({
description: "The field to filter by",
})
.optional(),
filterValue: z
.string({
description: "The value to filter by",
})
.or(z.number())
.or(z.boolean())
.optional(),
filterOperator: z
.enum(["eq", "ne", "lt", "lte", "gt", "gte", "contains"], {
description: "The operator to use for the filter",
})
.optional(),
}),
metadata: {
openapi: {
operationId: "listUsers",
summary: "List users",
description: "List users",
responses: {
200: {
description: "List of users",
content: {
"application/json": {
schema: {
type: "object",
properties: {
users: {
type: "array",
items: {
$ref: "#/components/schemas/User",
},
},
total: {
type: "number",
},
limit: {
type: "number",
},
offset: {
type: "number",
},
},
required: ["users", "total"],
},
},
},
},
},
},
},
},