client.projects.memberships
client.projects.memberships — the projects.memberships operations.
On AsyncKindgi every method is the same, awaited.
client.projects.memberships.list()
Section titled “client.projects.memberships.list()”list( *, limit: int | None = None, cursor: str | None = None, timeout: float | None = None,) -> ProjectMembershipCollectionPageList direct memberships of a project. GET /v1/projects/{projectId}/memberships
Cursor-paginated. Direct-grant memberships only — team-mediated grants are resolved through the FGA store per tenant.
client.projects.memberships.add()
Section titled “client.projects.memberships.add()”add( *, idempotency_key: str | None = None, timeout: float | None = None, **fields: Any,) -> AddProjectMembershipResultAdd a user directly to a project. POST /v1/projects/{projectId}/memberships
Idempotent on (projectId, userId) — re-adding an existing member with a different role does NOT overwrite; use PATCH for role changes.
client.projects.memberships.update_role()
Section titled “client.projects.memberships.update_role()”update_role( *, idempotency_key: str | None = None, timeout: float | None = None, **fields: Any,) -> NoneChange an existing project member's role. PATCH /v1/projects/{projectId}/memberships/{userId}
client.projects.memberships.remove()
Section titled “client.projects.memberships.remove()”remove(*, idempotency_key: str | None = None, timeout: float | None = None) -> NoneRemove a user from a project (idempotent). DELETE /v1/projects/{projectId}/memberships/{userId}