Identity & Access Management

Preview — pending review

This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.

A member's access matrix

GET
/tenants/{tenantId}/iam/users/{userId}/access

The member's rows in the tenant -- each a role at the tenant, a subscription or a project -- with editable = whether the CALLER may remove (or re-grant) it. Rows at scopes the caller does not reach are not listed (hiddenCount counts them); summary counts every row. dropped / removed are empty on this read. Authorization: the caller must reach the tenant (404) and hold iam: read in it (403); the member must belong to the tenant (404).

Authorization

bearerToken
headerAuthorizationBearer <token>

An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.

Path Parameters

tenantId*string

The tenant id.

userId*string

The member (its id is its email).

Response Body

The member's access matrix.

application/json
  1. response

A member's access matrix in the tenant.

userId*string
tenantId*string
rows*array<>
hiddenCount*integer

Rows at scopes the caller does not reach (not listed, never changed by its writes).

Range0 <= value
summary*

What a member can reach in the tenant, for list rows. tenant when it holds any tenant row; scoped when it holds subscription/project rows only; none when it holds no row. The counts are the distinct subscriptions / projects named by its explicit rows (computed over every row, including ones the viewer cannot edit).

dropped*array<>

Input rows not written because another row already grants them (writes only).

removed*array<>

Rows the write removed (writes only).

curl -X GET "https://example.com/tenants/string/iam/users/string/access"
{  "userId": "string",  "tenantId": "string",  "rows": [    {      "assignmentId": "string",      "scopeKind": "tenant",      "scopeId": "string",      "scopeName": "string",      "subscriptionId": "string",      "role": "string",      "roleName": "string",      "grantedBy": "string",      "createdAt": "2019-08-24T14:15:22Z",      "editable": true    }  ],  "hiddenCount": 0,  "summary": {    "kind": "tenant",    "subscriptions": 0,    "projects": 0  },  "dropped": [    {      "index": 0,      "scopeKind": "tenant",      "scopeId": "string",      "role": "string",      "reason": "DUPLICATE",      "coveredBy": {        "scopeKind": "tenant",        "scopeId": "string"      }    }  ],  "removed": [    {      "assignmentId": "string",      "scopeKind": "tenant",      "scopeId": "string",      "scopeName": "string",      "subscriptionId": "string",      "role": "string",      "roleName": "string",      "grantedBy": "string",      "createdAt": "2019-08-24T14:15:22Z",      "editable": true    }  ]}