Docs

List project admins

GET
/projects/{project_id}/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 unexpired admin grant on the project, either to the person (grant_id only) or to a team they are an active member of (grant_id and team). 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.

Authorization

headerAuthorizationBearer <token>

Scope: project.write

Path Parameters

project_id*string
Match^[a-zA-Z0-9_-]+$

Query Parameters

limit?integer

Maximum number of items to return.

Range1 <= value <= 100
Default20
page_token?string

Token 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.

Response Body

The admins of the project were returned.

application/json
  1. 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.

Example Request
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");
Example Response
{  "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?