List project admins
Lists the people who can administer the project, and how each of them
gets that access. A person appears once, with one entry in sources per
way they hold it:
owning_team: an active member of the team that owns the project (ADR 054 §2). Removing a grant does not remove this access; it ends only when the person leaves the team or the project changes owner.grant: an unexpiredadmingrant on the project, either to the person (grant_idonly) or to a team they are an active member of (grant_idandteam). Revoking that grant removes this source.
The list follows the authorization check: team membership is read from
the same membership projection the check expands, so a person who left a
team, or whose team or user was deactivated, is not listed through it.
Grants that expired or carry a lower role are left out. A person whose
only access is a viewer or editor grant is not an admin and is not
listed. Like the check, the list does not look at a person's user status
beyond that, so a direct grant to a suspended person is listed.
A person whose access comes only through teams the caller is not a
member of is left out, and a team the caller is not in is named by
team_id only. The grant to such a team still shows in the project's
grants.
Ordered by user_id and paginated with page_token.
Accepts either a project secret (oauth2) or a user-bound Console
session cookie (sessionCookie) that can read the project.
AuthorizationBearer <token>Scope: project.write
project_id*string^[a-zA-Z0-9_-]+$limit?integerMaximum number of items to return.
1 <= value <= 10020page_token?stringToken for fetching the next page of results.
Obtain this value from next_page_token in the previous response.
Omit to start from the beginning.
Its format is opaque and may change between releases.
The admins of the project were returned.
application/json- response
A page of the people who administer a project.
admins*array<>next_page_token?|Token to pass as page_token in the next request to fetch the following page.
Absent when there are no more results.
import { configureZitadel, getApi } from "@zitadel/api/config";// In the browser, through the SDK proxy: the session cookie authenticates the call.const client = getApi(configureZitadel({ projectId: "proj_01KWH1P4MYS7F0N9WD3P2E4YM5" }));const projectAdmins = await client.listProjectAdmins("string");{ "admins": [ { "user": { "user_id": "string", "identifier": "string", "identifier_property": "string", "display": "string" }, "sources": [ { "type": "owning_team", "team": { "team_id": "string", "name": "string" } } ] } ], "next_page_token": "string"}Was this helpful?