openapi: 3.0.3 info: description: APIs and Definitions for the Pulumi Cloud product. title: Pulumi APIs AccessTokens OAuthTokenExchange API version: 1.0.0 tags: - name: OAuthTokenExchange paths: /api/oauth/token: post: description: 'Exchanges an external identity provider token for a Pulumi access token using the OAuth 2.0 Token Exchange flow (RFC 8693). The request body must include: - `audience`: a URN identifying the target org (e.g., `urn:pulumi:org:{ORG_NAME}`) - `grant_type`: must be `urn:ietf:params:oauth:grant-type:token-exchange` - `subject_token`: the OIDC identity token from the external provider - `subject_token_type`: must be `urn:ietf:params:oauth:token-type:id_token` - `requested_token_type`: one of `urn:pulumi:token-type:access_token:organization`, `...team`, `...personal`, or `...runner` Optional parameters: - `scope`: depends on the requested token type. For `organization`, must be empty or `admin`. For `team`, must be `team:TEAM_NAME`. For `personal`, must be `user:USER_LOGIN`. For `runner`, must be `runner:RUNNER_NAME`. - `expiration`: token lifetime in seconds The response includes `access_token`, `issued_token_type`, `token_type`, `expires_in`, `scope`, and `refresh_token`.' operationId: Token requestBody: content: application/json: schema: additionalProperties: type: object type: object x-originalParamName: body responses: '200': content: application/json: schema: $ref: '#/components/schemas/TokenExchangeGrantResponse' description: OK summary: Token tags: - OAuthTokenExchange components: schemas: TokenExchangeGrantResponse: description: https://datatracker.ietf.org/doc/html/rfc8693#section-2.2.1 properties: access_token: description: The security token issued by the authorization server. type: string x-order: 1 expires_in: description: The lifetime in seconds of the access token. format: int64 type: integer x-order: 4 issued_token_type: description: The type of the issued token. type: string x-order: 2 refresh_token: description: The refresh token, if issued. type: string x-order: 6 scope: description: The scope of the access token. type: string x-order: 5 token_type: description: The token type (e.g., Bearer). type: string x-order: 3 required: - access_token - expires_in - issued_token_type - scope - token_type type: object