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.

List OpenStack API credentials in the project

GET
/scopes/{scopeId}/iam/openstack-credentials

Lists the OpenStack application credentials minted for this project: the caller's own credentials always; service-account credentials when the caller holds tokens: manage; every credential in the project when the caller holds iam: manage. The secret is NEVER returned here — it exists only in the create/rotate 201 response. Revoked/expired credentials stay listed with revokeReason so the console can explain why a credential stopped working (e.g. role_change: a role change on the project made the cloud delete every credential of that owner there). access describes what the CALLER may do here: whether direct API access is enabled for the organisation, the Keystone roles projected from the caller's portal permissions, the profiles available, the portal-side limits, and the public identity endpoint + OpenStack region a clouds.yaml needs (identityUrl / regionName, null when not known yet -- endpoint card). Authorization: compute, network and storage at least read on the project (the edge floor is compute read). Pagination: {data, meta, access}; page / pageSize (max 200, default 50), newest first; meta.total counts what the caller may see. Retention: a revoked or expired credential stays listed for 90 days after it stopped working, then its row is deleted (audit records are kept separately). Errors: 401; 403; 404 unknown/unreachable scope.

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

scopeId*string

Opaque ownership+authorization scope resolving to tenant + subscription + project.

Query Parameters

status?string

Filter by lifecycle status.

Value in"active""revoked""expired"
page?integer

1-based page number.

Range1 <= value
Default1
pageSize?integer

Items per page (max 200).

Range1 <= value <= 200
Default50

Response Body

Credentials visible to the caller in this project (secrets omitted) plus the caller's access.

application/json
  1. response
data*array<>
meta*

Pagination envelope metadata. List responses are always { data, meta } — never a naked array.

access*

What the caller may do with OpenStack API credentials on this project.

curl -X GET "https://example.com/scopes/string/iam/openstack-credentials"
{  "data": [    {      "id": "string",      "name": "string",      "projectId": "string",      "owner": {        "kind": "user",        "id": "string"      },      "profile": "full",      "roles": [        "string"      ],      "status": "active",      "applicationCredentialId": "string",      "expiresAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z",      "createdBy": "string",      "lastUsedAt": "2019-08-24T14:15:22Z",      "revokedAt": "2019-08-24T14:15:22Z",      "revokeReason": "user",      "rotatedFromId": "string",      "replacedById": "string",      "deleteAfter": "2019-08-24T14:15:22Z"    }  ],  "meta": {    "page": 1,    "pageSize": 1,    "total": 0,    "hasNext": true  },  "access": {    "apiAccessEnabled": true,    "operatorLocked": true,    "projectedRoles": [      "string"    ],    "availableProfiles": [      "full"    ],    "canManageServiceAccounts": true,    "canManageAll": true,    "maxActivePerOwner": 0,    "maxActivePerProject": 0,    "activeInProject": 0,    "maxLifetimeDays": 0,    "defaultLifetimeDays": 0,    "identityUrl": "string",    "regionName": "string"  }}