Organizations
The Organizations API allows you to manage Pulumi Cloud organizations, including members, teams, access tokens, and webhooks. Organizations are the primary management boundary in Pulumi Cloud.
See Organizations for conceptual documentation and getting-started guides.
List Change Gates
/api/change-gates/{orgName}Lists change gates for an entity within the organization. Change gates define approval requirements that must be satisfied before changes can be applied to infrastructure resources. Currently supports listing gates for a single entity specified by entityType and qualifiedName query parameters.
Request Parameters
orgNamestring path requiredThe organization nameentityTypestring query optionalThe entity type to filter byqualifiedNamestring query optionalThe fully qualified entity name
Responses
- List of change gates
- ↳
idstring requiredUnique identifier of the change gate - ↳
namestring requiredName of the change gate - ↳
enabledboolean requiredWhether the change gate is enabled - Rule configuration for the gate
- Target configuration for the gate
continuationTokenstring requiredContinuation token for pagination. If null, there are no more results available.
Create Change Gate
/api/change-gates/{orgName}Creates a new change gate for an entity in the organization. Change gates enforce approval workflows by requiring one or more approvals before infrastructure changes can be applied to the protected resource.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
namestring requiredName of the change gateenabledboolean requiredWhether the change gate is enabled- Rule configuration for the gate
- ↳
ruleTypestring required - Target configuration for the gate
- ↳
entityTypeenum requiredThe entity type this gate targetsValues:environment - ↳
qualifiedNamestring optionalThe qualified name of the entity this gate targets (e.g., ‘project/env’) - ↳
actionTypesarray[string] requiredThe action types this gate targets (currently only supports single action)
Responses
idstring requiredUnique identifier of the change gatenamestring requiredName of the change gateenabledboolean requiredWhether the change gate is enabled- Rule configuration for the gate
- ↳
ruleTypestring required - Target configuration for the gate
- ↳
entityTypeenum requiredThe entity type this gate targetsValues:environment - ↳
qualifiedNamestring optionalThe qualified name of the entity this gate targets (e.g., ‘project/env’) - ↳
actionTypesarray[string] requiredThe action types this gate targets - Populated details about the target entity
Read Change Gate
/api/change-gates/{orgName}/{gateID}Retrieves the configuration and status of a specific change gate, including its approval requirements and the entity it protects.
Request Parameters
orgNamestring path requiredThe organization namegateIDstring path requiredThe change gate identifier
Responses
idstring requiredUnique identifier of the change gatenamestring requiredName of the change gateenabledboolean requiredWhether the change gate is enabled- Rule configuration for the gate
- ↳
ruleTypestring required - Target configuration for the gate
- ↳
entityTypeenum requiredThe entity type this gate targetsValues:environment - ↳
qualifiedNamestring optionalThe qualified name of the entity this gate targets (e.g., ‘project/env’) - ↳
actionTypesarray[string] requiredThe action types this gate targets - Populated details about the target entity
Update Change Gate
/api/change-gates/{orgName}/{gateID}Updates the configuration of an existing change gate, such as modifying its approval requirements or protected entity.
Request Parameters
orgNamestring path requiredThe organization namegateIDstring path requiredThe change gate identifier
Request Body
namestring requiredName of the change gateenabledboolean requiredWhether the change gate is enabled- Target configuration for the gate
- ↳
entityTypeenum requiredThe entity type this gate targetsValues:environment - ↳
qualifiedNamestring optionalThe qualified name of the entity this gate targets (e.g., ‘project/env’) - ↳
actionTypesarray[string] requiredThe action types this gate targets (currently only supports single action) - Rule configuration for the gate
- ↳
ruleTypestring required
Responses
idstring requiredUnique identifier of the change gatenamestring requiredName of the change gateenabledboolean requiredWhether the change gate is enabled- Rule configuration for the gate
- ↳
ruleTypestring required - Target configuration for the gate
- ↳
entityTypeenum requiredThe entity type this gate targetsValues:environment - ↳
qualifiedNamestring optionalThe qualified name of the entity this gate targets (e.g., ‘project/env’) - ↳
actionTypesarray[string] requiredThe action types this gate targets - Populated details about the target entity
Delete Change Gate
/api/change-gates/{orgName}/{gateID}Deletes a change gate, removing the approval requirement from the protected entity. Changes to the entity will no longer require approval.
Request Parameters
orgNamestring path requiredThe organization namegateIDstring path requiredThe change gate identifier
Responses
List Change Requests
/api/change-requests/{orgName}Lists change requests for an organization with support for pagination and filtering by entity type and entity ID. Change requests represent proposed infrastructure modifications that require approval before being applied.
Request Parameters
orgNamestring path requiredThe organization namecontinuationTokenstring query optionalContinuation token for paginated resultscountinteger query optionalNumber of items to returnentityIdstring query optionalThe entity identifier to filter byentityTypestring query optionalThe entity type to filter by
Responses
- The list of change requests
- ↳
idstring requiredThe change request ID - ↳
statusstring requiredThe current status of the change request - ↳
orgIDstring requiredThe organization ID - The user who created this change request
- ↳
descriptionstring requiredThe description/justification for this change request - ↳
createdAtstring requiredWhen this change request was created - The entity this change request targets
- ↳
actionenum requiredThe type of action this change request will performValues:update,open - ↳
latestRevisionNumberinteger requiredThe current revision number continuationTokenstring requiredContinuation token for pagination. If null, there are no more results available.
Read Change Request
/api/change-requests/{orgName}/{changeRequestID}Retrieves the details of a specific change request, including its current status, description, approvals, and the proposed infrastructure changes.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Responses
- The gate evaluation results for this change request
- ↳
satisfiedboolean requiredIndicates if all applicable gates are satisfied and the change request is ready for application - Lists all gates that apply to this change request
idstring requiredThe change request IDstatusstring requiredThe current status of the change requestorgIDstring requiredThe organization ID- The user who created this change request
- ↳
namestring requiredThe user’s display name. - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information. descriptionstring requiredThe description/justification for this change requestcreatedAtstring requiredWhen this change request was created- The entity this change request targets
- ↳
entityTypestring required actionenum requiredThe type of action this change request will performValues:update,openlatestRevisionNumberinteger requiredThe current revision number
Update Change Request
/api/change-requests/{orgName}/{changeRequestID}Updates a change request’s metadata. Currently only the description field can be modified after creation.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Request Body
descriptionstring requiredUpdated description/justification for the change request
Responses
Apply Change Request
/api/change-requests/{orgName}/{changeRequestID}/applyApplies an approved change request, triggering the execution of the proposed infrastructure changes. The change request must have received the required number of approvals before it can be applied. Returns 409 if there is a conflict preventing application.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Responses
entityUrlstring requiredAPI endpoint for fetching the updated entitymessagestring optionalOptional details about the apply operation
Approve Change Request
/api/change-requests/{orgName}/{changeRequestID}/approveRecords an approval for a change request from the authenticated user. Once the required number of approvals is met, the change request can be applied.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Request Body
revisionNumberinteger requiredWhich revision to approve.commentstring optionalOptional note accompanying the approval
Responses
Unapprove Change Request
/api/change-requests/{orgName}/{changeRequestID}/approveWithdraws a previously given approval for a change request. If the change request no longer has the required number of approvals after withdrawal, it cannot be applied until additional approvals are granted.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Request Body
commentstring optionalOptional note clarifying the reason for revoking approval
Responses
Close Change Request
/api/change-requests/{orgName}/{changeRequestID}/closeCloses a change request without applying it. The proposed infrastructure changes are discarded and the request is marked as closed.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Request Body
commentstring optionalOptional comment explaining why the change request is being closed
Responses
Add Change Request Comment
/api/change-requests/{orgName}/{changeRequestID}/commentsAdds a comment to a change request without approving or closing it. This allows reviewers to provide feedback or ask questions before making a decision.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Request Body
commentstring requiredThe comment text to add to the change request.
Responses
List Change Request Events
/api/change-requests/{orgName}/{changeRequestID}/eventsLists the event log for a change request, including approvals, status changes, and other lifecycle events. Supports pagination via continuation token.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifiercontinuationTokenstring query optionalContinuation token for paginated results
Responses
- The list of events for this page.
- ↳
idstring requiredThe event ID - ↳
replacedBystring optionalID of event that replaces this one (for event updates) - ↳
changeRequestIdstring requiredThe change request this event belongs to - ↳
revisionNumberinteger requiredThe revision number that was latest when this event occurred - The user who triggered this event
- ↳
createdAtstring requiredWhen this event occurred - ↳
commentstring optionalOptional comment associated with this event - ↳
eventTypestring required continuationTokenstring requiredContinuation token for pagination. If null, there are no more results available.
Submit Change Request
/api/change-requests/{orgName}/{changeRequestID}/submitSubmits a draft change request for approval. Once submitted, the request enters the review workflow and requires the configured number of approvals before it can be applied.
Request Parameters
orgNamestring path requiredThe organization namechangeRequestIDstring path requiredThe change request identifier
Request Body
descriptionstring optionalDescription/justification for the change request
Responses
Get Organization
/api/orgs/{orgName}Returns detailed information about the specified organization, including its name, display name, avatar URL, enabled features, subscription tier, and access control settings. The response includes member count, team availability, and other configuration relevant to the caller’s role within the organization.
Request Parameters
orgNamestring path requiredThe organization name
Responses
githubLoginstring requiredThe GitHub login associated with the organization.namestring requiredThe name of the organization.avatarUrlstring requiredThe URL of the organization’s avatar image.- The repositories belonging to the organization.
- ↳
orgNamestring requiredThe name of the organization that owns this repository. - ↳
namestring requiredThe name of the repository. - Version control system information for the repository.
- The projects within this repository.
Update Organization Settings
/api/orgs/{orgName}Updates an organization’s settings, such as the default stack permission level for new members, whether members can create teams, and other organization-wide configuration options. Returns the updated organization metadata.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
setDefaultStackPermissionenum optionalThe new default stack permission for the organization.Values:0,101,102,103,104setDefaultEnvironmentPermissionenum optionalThe new default environment permission for the organization.Values:none,read,open,write,adminsetDefaultAccountPermissionenum optionalThe new default account permission for the organization.Values:0,1,2,3setMembersCanCreateStacksboolean optionalWhether members can create stacks.setMembersCanInviteCollaboratorsboolean optionalWhether members can invite collaborators.setMembersCanDeleteStacksboolean optionalWhether members can delete stacks.setMembersCanTransferStacksboolean optionalWhether members can transfer stacks.setMembersCanCreateAccountsboolean optionalWhether members can create accounts.setMembersCanCreateTeamsboolean optionalWhether members can create teams.setAiEnablementstring optionalThe AI enablement setting for the organization.setNeoEnabledboolean optionalWhether Neo is enabled for the organization.setNeoApprovalModeenum optionalThe default approval mode for Neo tasks.Values:manual,auto,balancedsetNeoTaskSharingModeenum optionalThe task sharing mode for Neo.Values:none,orgsetPreferredVCSenum optionalThe preferred VCS provider for the organization.Values:none,bitbucket,github,gitlabsetDefaultDeploymentRoleIdstring optionalThe ID of the default deployment role. When set, this role is applied to all deployments that do not have a role explicitly configured in their stack deployment settings. Set to an empty string to clear the default.setDefaultAgentPoolIDstring optionalThe ID of the default agent pool for the organization. Set to empty string to revert to the Pulumi Hosted Pool.
Responses
idstring requiredThe unique identifier of the organization.kindenum requiredThe kind of backing identity provider for the organization.Values:single-user,bitbucket,github,gitlab,pulumi,samlcreatedstring requiredThe time the organization was created.backingOrgLoginstring optionalThe login name of the backing organization on the identity provider.productenum optionalSubscription-related information if the organization has a Pulumi subscription. Otherwise, assume it is a grandfathered TeamPerStack org or in the Community Edition.Values:team-per-stack,community,individual,team-starter,team-pro,enterprise,team-growth,enterprise-growth,business-criticalsubscriptionStatusstring optionalThe Stripe subscription status (e.g. active, past_due, canceled), if applicable.subscriptionTrialEndinteger optionalThe Unix timestamp when the subscription trial ends.subscriptionCancelAtPeriodEndboolean optionalWhether the subscription will be canceled at the end of the current billing period.subscriptionPeriodEndstring optionalThe time when the current subscription or license period ends. For SaaS subscriptions this is the Stripe billing period end. For self-hosted installations this is the license expiry date.userRoleenum requiredUserRole is the requesting user’s role in the organization.Values:none,member,admin,potential-member,stack-collaborator,billing-managerdefaultStackPermissionenum requiredDefaultStackPermission is the default permission every member has for accessing the organization’s stacks.Values:0,101,102,103,104defaultEnvironmentPermissionenum requiredDefaultEnvironmentPermission is the default permission every member has for accessing the organization’s environments.Values:none,read,open,write,admindefaultAccountPermissionenum requiredDefaultAccountPermission is the default permission every member has for accessing the organization’s insight accounts.Values:0,1,2,3membersCanCreateStacksboolean requiredWhether organization members can create stacks.membersCanDeleteStacksboolean requiredWhether organization members can delete stacks.membersCanTransferStacksboolean requiredWhether organization members can transfer stacks.membersCanCreateTeamsboolean requiredWhether organization members can create teams.membersCanCreateAccountsboolean requiredWhether organization members can create Insights accounts.neoEnabledboolean requiredWhether Neo AI agent features are enabled for the organization.neoApprovalModeenum requiredneoApprovalMode is the default approval mode for new Neo AI agent tasks.Values:manual,auto,balancedneoTaskSharingModeenum requiredNeoTaskSharingMode is the task sharing mode for Neo AI agents in the organization.Values:none,orginsightsTrialEndinteger optionalThe Unix timestamp when the Insights trial ends.insightsBillingAcceptedboolean optionaltrue if accepted, false if denied, nil if no action takeninsightsTrialUsingPolicyboolean requiredtrue if org needs to be upgraded to business criticalaiEnablementstring requiredThe AI feature enablement status for the organization (e.g. enabled, disabled, opt-in).preferredVCSenum requiredThe organization’s preferred VCS vendor.Values:none,bitbucket,github,gitlabauditLogsEnabledboolean requiredDeprecated. Access the AuditLogsEnabled feature from the Features property.webhooksEnabledboolean requiredDeprecated. Access the WebhooksEnabled feature from the Features property.- The feature flags enabled for this organization, controlling access to specific functionality.
- ↳
auditLogsEnabledboolean requiredWhether audit logs are enabled for the organization. - ↳
crossGuardEnabledboolean requiredWhether CrossGuard policy enforcement is enabled. - ↳
webhooksEnabledboolean requiredWhether webhooks are enabled for the organization. - ↳
integrationAssistantEnabledboolean requiredWhether the integration assistant is enabled. - ↳
aleEnabledboolean requiredWhether audit log export (ALE) is enabled. - ↳
deployEnabledboolean requiredWhether Pulumi Deployments is enabled. - ↳
scimEnabledboolean requiredWhether SCIM provisioning is enabled. - ↳
resourceSearchEnabledboolean requiredWhether resource search is enabled. - ↳
resourceExportEnabledboolean requiredWhether resource export is enabled. - ↳
propertySearchUIEnabledboolean requiredWhether the property search UI is enabled. - ↳
nlpSearchEnabledboolean requiredWhether natural language search is enabled. - ↳
customTemplatesEnabledboolean requiredWhether custom templates are enabled. - ↳
restoreStacksEnabledboolean requiredWhether restoring deleted stacks is enabled. - ↳
environmentsEnabledboolean requiredWhether Pulumi ESC environments are enabled. - ↳
environmentRevisionTagsEnabledboolean requiredWhether environment revision tags are enabled. - ↳
legacyDeploymentsOrgTokenboolean requiredWhether the organization uses a legacy org token for deployments. - ↳
gitHubEnterpriseIntegrationEnabledboolean requiredWhether GitHub Enterprise integration is enabled. - ↳
agentPoolRegistrationEnabledboolean requiredWhether agent pool registration is enabled for self-hosted deployments. - ↳
dashboardOnboardingUIEnabledboolean requiredWhether the dashboard onboarding UI is enabled. - ↳
driftDetectionEnabledboolean requiredWhether drift detection is enabled. - ↳
selfHostedDeploymentsEnabledboolean requiredWhether self-hosted deployment agents are enabled. - ↳
auditLogUIFilteringEnabledboolean requiredWhether audit log UI filtering is enabled. - ↳
dependencyCachingEnabledboolean requiredWhether dependency caching for deployments is enabled. - ↳
environmentsRestoreEnabledboolean requiredWhether restoring deleted environments is enabled. - ↳
pangeaAccountsScanPageEnabledboolean requiredWhether the Pangea accounts scan page is enabled. - ↳
customRolesEnabledboolean requiredWhether custom RBAC roles are enabled. - ↳
environmentSecretRotationEnabledboolean requiredWhether environment secret rotation is enabled. - ↳
insightsMonetizationEnabledboolean requiredWhether Insights monetization features are enabled. - ↳
selfServeIDPRemovalboolean requiredWhether self-serve IDP removal is enabled. - ↳
iacCloudImportEnabledboolean requiredWhether IaC cloud import is enabled. - ↳
bringYourOwnKeyEnabledboolean requiredWhether bring-your-own-key encryption is enabled. - ↳
approvalsEnabledboolean requiredWhether change request approvals are enabled. - ↳
escOnboardingEnabledboolean requiredWhether ESC onboarding is enabled. - ↳
escOnboardingV2Enabledboolean requiredWhether ESC onboarding v2 is enabled. - ↳
escEditorRevampEnabledboolean requiredWhether the ESC editor revamp is enabled. - ↳
escOnboardingAzureOAuthClientEnabledboolean requiredWhether the Azure OAuth client for ESC onboarding is enabled. - ↳
escOnboardingGcpOAuthClientEnabledboolean requiredWhether the GCP OAuth client for ESC onboarding is enabled. - ↳
policyManagementV2Enabledboolean requiredWhether policy management v2 is enabled. - ↳
policyIssueManagementEnabledboolean requiredWhether policy issue management is enabled. - ↳
aiAgentsEnabledboolean requiredWhether AI agents (Pulumi Copilot) are enabled. - ↳
themingEnabledboolean requiredWhether UI theming is enabled. - ↳
customRoleConditionboolean requiredWhether custom role conditions are enabled. - ↳
neoTaskSharingEnabledboolean requiredWhether Copilot task sharing is enabled. - ↳
ghAppDetailedDiffEnabledboolean requiredWhether the GitHub App detailed diff view is enabled. - ↳
neoServerSideApprovalsEnabledboolean requiredWhether Neo server side approvals is enabled. - ↳
neoPlanModeEnabledboolean requiredWhether Neo plan mode is enabled. - ↳
getStartedOnboardEnabledboolean requiredWhether the getting started onboarding flow is enabled. - ↳
neoReadOnlyEnabledboolean requiredWhether Neo read-only permission mode is enabled. - ↳
discoveredStacksEnabledboolean requiredWhether discovered stacks are enabled. - ↳
agentIntegrationCatalogEnabledboolean requiredWhether the agent integration catalog is enabled. - ↳
aiReviewCodeAccessEnabledboolean requiredWhether AI review code access is enabled. - ↳
genericVCSEnabledboolean requiredWhether generic VCS integrations are enabled. - ↳
bitbucketVCSEnabledboolean requiredWhether Bitbucket VCS integration is enabled. accountCountinteger requiredAccountCount is the current number of Insights Accounts in the organization. (May be more than the requesting user has permission to see.)environmentCountinteger requiredEnvironmentCount is the current number of environments in the organization. (May be more than the requesting user has permission to see.)stackCountinteger requiredStackCount is the current number of stacks in the organization. (May be more than the requesting user has permission to see.)maxStacksinteger optionalMaxStacks is the maximum number of stacks the organization can have based on its subscription. Will be nil/omitted if there is no limit.memberCountinteger requiredMemberCount is the number of members the organization has. Will be incorrect for organizations on the TeamPerStack subscription plan.maxMembersinteger optionalMaxMembers is the maximum number of members the organization can have based on its subscription. (Only set for per-member billed orgs.)lockedenum optionalLocked is non-nil if an organization is locked, indicating the specific reason why it was locked. (Which may determine which actions are available in the Console.)Values:bad-subscription,not-locked,read-only,rename-in-progress,transfer-in-progressdefaultRoleIdstring optionalDefaultRoleID is the ID of the default role for new users added to the organization. If unset, defaults to the “Member” role.defaultDeploymentRoleIdstring optionalDefaultDeploymentRoleID is the ID of the default role used for deployments when no specific role is configured in the stack’s deployment settings. If unset, deployments run using the triggering user’s own permissions.
Update Auth Policy
/api/orgs/{orgName}/auth/policies/{policyId}Updates an authentication policy for an organization. Authentication policies define rules for how OIDC tokens are validated and what access they grant, including claim mappings, trust conditions, and role assignments. The policy definition cannot be empty.
The request body contains a policies array where each policy object includes:
decision:allowordenytokenType:organization,team,personal, orrunnerteamName: required when tokenType isteamuserLogin: required when tokenType ispersonalrunnerID: required when tokenType isrunnerauthorizedPermissions: array of permissions (onlyadminis supported for organization tokens)rules: object defining claim-matching rules for the token
For more information about authorization rules, refer to the OIDC authorization policies documentation.
Request Parameters
orgNamestring path requiredThe organization namepolicyIdstring path requiredThe policy identifier
Request Body
- List of policies
- ↳
decisionstring requiredThe access decision for matching tokens (e.g. ‘allow’, ‘deny’). - ↳
tokenTypestring requiredThe type of token this rule applies to (e.g. ‘personal’, ‘org’, ’team’). - ↳
teamNamestring optionalTeam name filter. When set, this rule only applies to tokens belonging to this team. - ↳
userLoginstring optionalUser login filter. When set, this rule only applies to tokens belonging to this user. - ↳
runnerIDstring optionalRunner ID filter. When set, this rule only applies to tokens for this deployment runner. - ↳
roleIDstring optionalRole ID filter. When set, this rule only applies to tokens with this role. - ↳
authorizedPermissionsarray[string] requiredThe set of permissions granted when this rule matches. - ↳
rulesmap[string]object requiredAdditional rule conditions as key-value pairs.
Responses
idstring requiredThe unique identifierversioninteger requiredThe version numbercreatedstring optionalThe creation timestampmodifiedstring optionalThe last modification timestamp- List of policies
- ↳
decisionstring requiredThe access decision for matching tokens (e.g. ‘allow’, ‘deny’). - ↳
tokenTypestring requiredThe type of token this rule applies to (e.g. ‘personal’, ‘org’, ’team’). - ↳
teamNamestring optionalTeam name filter. When set, this rule only applies to tokens belonging to this team. - ↳
userLoginstring optionalUser login filter. When set, this rule only applies to tokens belonging to this user. - ↳
runnerIDstring optionalRunner ID filter. When set, this rule only applies to tokens for this deployment runner. - ↳
roleIDstring optionalRole ID filter. When set, this rule only applies to tokens with this role. - ↳
authorizedPermissionsarray[string] requiredThe set of permissions granted when this rule matches. - ↳
rulesmap[string]object requiredAdditional rule conditions as key-value pairs.
Transfer All Stacks
/api/orgs/{orgName}/bulk-transfer/stacksTransferAllStacks transfers all active stacks from one org to another, where deleted stacks will be skipped/ignored. We are currently constraining usage of this function to organizations with less than or equal to TransferAllStacksMax stacks.
NOTE: This operation will lock the organization while the transfer is in-progress, to rewrite all checkpoint files that use service-managed secrets. This means that the organization will be read-only and no stack updates can begin until the rename process has completed.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
fromOrgstring requiredThe source organization to transfer stacks from. Must match the organization in the URL route.toOrgstring requiredThe destination organization to transfer stacks to.
Responses
List Organization Keys
/api/orgs/{orgName}/cmkReturns all customer managed keys (CMK) configured for an organization, including their key identifiers, cloud provider details, enabled status, and which key is set as the default for new stacks.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Create Organization Key
/api/orgs/{orgName}/cmkCreates a new customer managed key (CMK) for an organization, allowing the organization to use their own encryption keys for securing secrets stored in Pulumi Cloud. The key must be a valid cloud provider key (e.g., AWS KMS). Once created, the key can be set as the default encryption key for all new stacks in the organization.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
namestring requiredThe namekeyTypeenum requiredThe key typeValues:aws_kms,service- The aws kms
- ↳
roleArnstring requiredARN of the IAM role to assume for KMS operations. - ↳
keyArnstring requiredARN of the KMS key to use for encrypting/decrypting secrets.
Responses
idstring requiredThe unique identifiernamestring requiredThe namekeyTypeenum requiredThe key typeValues:aws_kms,service- The aws kms
- ↳
roleArnstring requiredARN of the IAM role to assume for KMS operations. - ↳
keyArnstring requiredARN of the KMS key to use for encrypting/decrypting secrets. statestring optionalThe current state
Set Default Organization Key
/api/orgs/{orgName}/cmk/{keyID}/defaultSets a customer managed key as the default encryption key for the organization. New stacks created in the organization will use this key for encrypting secrets by default. The key must already be created and enabled for the organization.
Request Parameters
orgNamestring path requiredThe organization namekeyIDstring path requiredThe key identifier
Responses
Disable Organization Key
/api/orgs/{orgName}/cmk/{keyID}/disableDisables a specific customer managed key (CMK) for an organization. The key can no longer be used for encrypting new secrets, but existing secrets encrypted with this key remain accessible.
Request Parameters
orgNamestring path requiredThe organization namekeyIDstring path requiredThe key identifier
Request Body
destIDstring requiredThe destination identifier for the customer-managed key to disable.
Responses
Disable All Organization Keys
/api/orgs/{orgName}/cmk/disableDisables all customer managed keys (CMK) for an organization, reverting to Pulumi-managed encryption for secrets. After disabling, new stacks will use the default Pulumi-managed encryption rather than customer-provided keys.
Request Parameters
orgNamestring path requiredThe organization name
Responses
List Organization Key Migrations
/api/orgs/{orgName}/cmk/migrationReturns all key encryption key (KEK) migrations for an organization. KEK migrations track the process of re-encrypting secrets when rotating customer managed keys. Each migration record includes the source and destination keys, status, and any errors encountered during the migration process.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Retry Organization Key Migrations
/api/orgs/{orgName}/cmk/migration/retryRetries any failed key encryption key (KEK) migrations for an organization. KEK migrations can fail due to transient errors when re-encrypting secrets during customer managed key rotation. This endpoint re-attempts the failed migrations without restarting the entire process.
Request Parameters
orgNamestring path requiredThe organization name
Responses
List Organization Members
/api/orgs/{orgName}/membersListOrganizationMembers lists the members of an organization. This API unfortunately has two different “modes”, returning either the organization’s “frontend members” or “backend members”.
- A “frontend member” is data stored in the Pulumi Service’s database. For organizations billed per-member, this is the set of members that are counted against the organization’s seat cap.
- A “backend member” is data stored in the organization’s backend. (e.g. GitHub, GitLab, or for SAML orgs, also the Pulumi Service database.)
This isn’t ideal, but is required so that the APIs can be paginated correctly while not returning any users twice. (Which would be impossible in some cases.)
Request Parameters
orgNamestring path requiredThe organization namecontinuationTokenstring query optionalToken for paginated result retrievaltypestring query optionalMember type to list: ‘frontend’ for Pulumi Service members or ‘backend’ for organization backend members
Responses
- The list of organization members
- ↳
roleenum requiredDeprecated: UsefgaRoleinstead. The member’s built-in role within the organization. For members assigned a custom role, this is the closest built-in projection (member,admin, orbillingManager) and may lose detail;fgaRoleis authoritative.Values:none,member,admin,potential-member,stack-collaborator,billing-manager - The user information for this organization member.
- ↳
createdstring requiredWhen the member joined the organization. - ↳
knownToPulumiboolean requiredKnownToPulumi returns if the organization member has a Pulumi account. - ↳
virtualAdminboolean requiredVirtualAdmin indicates that the member does not have admin access on the backing identity provider, but does have admin access to the Pulumi organization. - Links to the member in the Pulumi Console
- The role currently assigned to this member — either a built-in role (member, admin, billingManager) or a custom role. Falls back to the organization’s default role if no role is assigned directly.
continuationTokenstring optionalAn opaque token for fetching the next page of members
Add Organization Member
/api/orgs/{orgName}/members/{userLogin}Adds an existing Pulumi user to an organization with a built-in role. Important: The user must have already signed up for a Pulumi account before they can be added to an organization.
This endpoint only assigns built-in roles. To onboard a user with a custom role, use the organization invite flow (BatchCreateOrgInviteEmail) and set roleId on the invite — the custom role is applied when the user accepts. Alternatively, add the user here with a built-in role and then call UpdateOrganizationMember with fgaRoleId to reassign.
Returns the newly created organization member record. Returns 409 if the user is already a member of the organization.
Request Parameters
orgNamestring path requiredThe organization nameuserLoginstring path requiredThe user login name
Request Body
roleenum requiredThe built-in role assigned to the new member. Must bemember,admin, orbillingManager.Values:none,member,admin,potential-member,stack-collaborator,billing-manager
Responses
roleenum requiredDeprecated: UsefgaRoleinstead. The member’s built-in role within the organization. For members assigned a custom role, this is the closest built-in projection (member,admin, orbillingManager) and may lose detail;fgaRoleis authoritative.Values:none,member,admin,potential-member,stack-collaborator,billing-manager- The user information for this organization member.
- ↳
namestring requiredThe user’s display name. - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information. createdstring requiredWhen the member joined the organization.knownToPulumiboolean requiredKnownToPulumi returns if the organization member has a Pulumi account.virtualAdminboolean requiredVirtualAdmin indicates that the member does not have admin access on the backing identity provider, but does have admin access to the Pulumi organization.- Links to the member in the Pulumi Console
- ↳
selfstring optionalA self-referencing hypermedia link (URL) to this member resource. - The role currently assigned to this member — either a built-in role (member, admin, billingManager) or a custom role. Falls back to the organization’s default role if no role is assigned directly.
- ↳
idstring requiredThe unique identifier of the role. - ↳
namestring requiredThe name of the role. - ↳
modifiedAtstring requiredThe timestamp when the role was last modified.
Update Organization Member
/api/orgs/{orgName}/members/{userLogin}Modifies a user’s role within an organization. Set role to assign a built-in role (member, admin, or billingManager), or set fgaRoleId to assign a custom role. If both are provided, fgaRoleId takes precedence.
Request Parameters
orgNamestring path requiredThe organization nameuserLoginstring path requiredThe user login name
Request Body
roleenum optionalThe built-in role to assign to the member. Must bemember,admin, orbilling-manager. Ignored iffgaRoleIdis also set.Values:none,member,admin,potential-member,stack-collaborator,billing-managerfgaRoleIdstring optionalThe ID of a custom role to assign to the member. If bothroleandfgaRoleIdare provided,fgaRoleIdtakes precedence.
Responses
Delete Organization Member
/api/orgs/{orgName}/members/{userLogin}Removes a user from an organization. The removed user loses access to all organization resources including stacks, teams, and projects. The caller cannot remove themselves from the organization. The user is also removed from all teams they belong to within the organization.
Request Parameters
orgNamestring path requiredThe organization nameuserLoginstring path requiredThe user login name
Responses
Set Sole Organization Admin
/api/orgs/{orgName}/members/{userLogin}/set-adminPromotes a member to administrator on organizations that are limited to a single admin. This endpoint is only valid for Team subscriptions (Team Starter and Team Growth) — it returns 400 on any other plan. On these plans, UpdateOrganizationMember cannot promote a member to admin, because doing so would require simultaneously demoting the current admin. This endpoint performs both changes atomically: the caller (who must be the current sole admin) is demoted to member and the target user is promoted to admin.
Note: This endpoint operates on built-in roles only and does not integrate with custom roles.
Request Parameters
orgNamestring path requiredThe organization nameuserLoginstring path requiredThe user login name
Responses
Get Organization Metadata
/api/orgs/{orgName}/metadataGetOrganizationMetadata returns metadata about the given organization. This is designed to be an inexpensive call.
Request Parameters
orgNamestring path requiredThe organization name
Responses
idstring requiredThe unique identifier of the organization.kindenum requiredThe kind of backing identity provider for the organization.Values:single-user,bitbucket,github,gitlab,pulumi,samlcreatedstring requiredThe time the organization was created.backingOrgLoginstring optionalThe login name of the backing organization on the identity provider.productenum optionalSubscription-related information if the organization has a Pulumi subscription. Otherwise, assume it is a grandfathered TeamPerStack org or in the Community Edition.Values:team-per-stack,community,individual,team-starter,team-pro,enterprise,team-growth,enterprise-growth,business-criticalsubscriptionStatusstring optionalThe Stripe subscription status (e.g. active, past_due, canceled), if applicable.subscriptionTrialEndinteger optionalThe Unix timestamp when the subscription trial ends.subscriptionCancelAtPeriodEndboolean optionalWhether the subscription will be canceled at the end of the current billing period.subscriptionPeriodEndstring optionalThe time when the current subscription or license period ends. For SaaS subscriptions this is the Stripe billing period end. For self-hosted installations this is the license expiry date.userRoleenum requiredUserRole is the requesting user’s role in the organization.Values:none,member,admin,potential-member,stack-collaborator,billing-managerdefaultStackPermissionenum requiredDefaultStackPermission is the default permission every member has for accessing the organization’s stacks.Values:0,101,102,103,104defaultEnvironmentPermissionenum requiredDefaultEnvironmentPermission is the default permission every member has for accessing the organization’s environments.Values:none,read,open,write,admindefaultAccountPermissionenum requiredDefaultAccountPermission is the default permission every member has for accessing the organization’s insight accounts.Values:0,1,2,3membersCanCreateStacksboolean requiredWhether organization members can create stacks.membersCanDeleteStacksboolean requiredWhether organization members can delete stacks.membersCanTransferStacksboolean requiredWhether organization members can transfer stacks.membersCanCreateTeamsboolean requiredWhether organization members can create teams.membersCanCreateAccountsboolean requiredWhether organization members can create Insights accounts.neoEnabledboolean requiredWhether Neo AI agent features are enabled for the organization.neoApprovalModeenum requiredneoApprovalMode is the default approval mode for new Neo AI agent tasks.Values:manual,auto,balancedneoTaskSharingModeenum requiredNeoTaskSharingMode is the task sharing mode for Neo AI agents in the organization.Values:none,orginsightsTrialEndinteger optionalThe Unix timestamp when the Insights trial ends.insightsBillingAcceptedboolean optionaltrue if accepted, false if denied, nil if no action takeninsightsTrialUsingPolicyboolean requiredtrue if org needs to be upgraded to business criticalaiEnablementstring requiredThe AI feature enablement status for the organization (e.g. enabled, disabled, opt-in).preferredVCSenum requiredThe organization’s preferred VCS vendor.Values:none,bitbucket,github,gitlabauditLogsEnabledboolean requiredDeprecated. Access the AuditLogsEnabled feature from the Features property.webhooksEnabledboolean requiredDeprecated. Access the WebhooksEnabled feature from the Features property.- The feature flags enabled for this organization, controlling access to specific functionality.
- ↳
auditLogsEnabledboolean requiredWhether audit logs are enabled for the organization. - ↳
crossGuardEnabledboolean requiredWhether CrossGuard policy enforcement is enabled. - ↳
webhooksEnabledboolean requiredWhether webhooks are enabled for the organization. - ↳
integrationAssistantEnabledboolean requiredWhether the integration assistant is enabled. - ↳
aleEnabledboolean requiredWhether audit log export (ALE) is enabled. - ↳
deployEnabledboolean requiredWhether Pulumi Deployments is enabled. - ↳
scimEnabledboolean requiredWhether SCIM provisioning is enabled. - ↳
resourceSearchEnabledboolean requiredWhether resource search is enabled. - ↳
resourceExportEnabledboolean requiredWhether resource export is enabled. - ↳
propertySearchUIEnabledboolean requiredWhether the property search UI is enabled. - ↳
nlpSearchEnabledboolean requiredWhether natural language search is enabled. - ↳
customTemplatesEnabledboolean requiredWhether custom templates are enabled. - ↳
restoreStacksEnabledboolean requiredWhether restoring deleted stacks is enabled. - ↳
environmentsEnabledboolean requiredWhether Pulumi ESC environments are enabled. - ↳
environmentRevisionTagsEnabledboolean requiredWhether environment revision tags are enabled. - ↳
legacyDeploymentsOrgTokenboolean requiredWhether the organization uses a legacy org token for deployments. - ↳
gitHubEnterpriseIntegrationEnabledboolean requiredWhether GitHub Enterprise integration is enabled. - ↳
agentPoolRegistrationEnabledboolean requiredWhether agent pool registration is enabled for self-hosted deployments. - ↳
dashboardOnboardingUIEnabledboolean requiredWhether the dashboard onboarding UI is enabled. - ↳
driftDetectionEnabledboolean requiredWhether drift detection is enabled. - ↳
selfHostedDeploymentsEnabledboolean requiredWhether self-hosted deployment agents are enabled. - ↳
auditLogUIFilteringEnabledboolean requiredWhether audit log UI filtering is enabled. - ↳
dependencyCachingEnabledboolean requiredWhether dependency caching for deployments is enabled. - ↳
environmentsRestoreEnabledboolean requiredWhether restoring deleted environments is enabled. - ↳
pangeaAccountsScanPageEnabledboolean requiredWhether the Pangea accounts scan page is enabled. - ↳
customRolesEnabledboolean requiredWhether custom RBAC roles are enabled. - ↳
environmentSecretRotationEnabledboolean requiredWhether environment secret rotation is enabled. - ↳
insightsMonetizationEnabledboolean requiredWhether Insights monetization features are enabled. - ↳
selfServeIDPRemovalboolean requiredWhether self-serve IDP removal is enabled. - ↳
iacCloudImportEnabledboolean requiredWhether IaC cloud import is enabled. - ↳
bringYourOwnKeyEnabledboolean requiredWhether bring-your-own-key encryption is enabled. - ↳
approvalsEnabledboolean requiredWhether change request approvals are enabled. - ↳
escOnboardingEnabledboolean requiredWhether ESC onboarding is enabled. - ↳
escOnboardingV2Enabledboolean requiredWhether ESC onboarding v2 is enabled. - ↳
escEditorRevampEnabledboolean requiredWhether the ESC editor revamp is enabled. - ↳
escOnboardingAzureOAuthClientEnabledboolean requiredWhether the Azure OAuth client for ESC onboarding is enabled. - ↳
escOnboardingGcpOAuthClientEnabledboolean requiredWhether the GCP OAuth client for ESC onboarding is enabled. - ↳
policyManagementV2Enabledboolean requiredWhether policy management v2 is enabled. - ↳
policyIssueManagementEnabledboolean requiredWhether policy issue management is enabled. - ↳
aiAgentsEnabledboolean requiredWhether AI agents (Pulumi Copilot) are enabled. - ↳
themingEnabledboolean requiredWhether UI theming is enabled. - ↳
customRoleConditionboolean requiredWhether custom role conditions are enabled. - ↳
neoTaskSharingEnabledboolean requiredWhether Copilot task sharing is enabled. - ↳
ghAppDetailedDiffEnabledboolean requiredWhether the GitHub App detailed diff view is enabled. - ↳
neoServerSideApprovalsEnabledboolean requiredWhether Neo server side approvals is enabled. - ↳
neoPlanModeEnabledboolean requiredWhether Neo plan mode is enabled. - ↳
getStartedOnboardEnabledboolean requiredWhether the getting started onboarding flow is enabled. - ↳
neoReadOnlyEnabledboolean requiredWhether Neo read-only permission mode is enabled. - ↳
discoveredStacksEnabledboolean requiredWhether discovered stacks are enabled. - ↳
agentIntegrationCatalogEnabledboolean requiredWhether the agent integration catalog is enabled. - ↳
aiReviewCodeAccessEnabledboolean requiredWhether AI review code access is enabled. - ↳
genericVCSEnabledboolean requiredWhether generic VCS integrations are enabled. - ↳
bitbucketVCSEnabledboolean requiredWhether Bitbucket VCS integration is enabled. accountCountinteger requiredAccountCount is the current number of Insights Accounts in the organization. (May be more than the requesting user has permission to see.)environmentCountinteger requiredEnvironmentCount is the current number of environments in the organization. (May be more than the requesting user has permission to see.)stackCountinteger requiredStackCount is the current number of stacks in the organization. (May be more than the requesting user has permission to see.)maxStacksinteger optionalMaxStacks is the maximum number of stacks the organization can have based on its subscription. Will be nil/omitted if there is no limit.memberCountinteger requiredMemberCount is the number of members the organization has. Will be incorrect for organizations on the TeamPerStack subscription plan.maxMembersinteger optionalMaxMembers is the maximum number of members the organization can have based on its subscription. (Only set for per-member billed orgs.)lockedenum optionalLocked is non-nil if an organization is locked, indicating the specific reason why it was locked. (Which may determine which actions are available in the Console.)Values:bad-subscription,not-locked,read-only,rename-in-progress,transfer-in-progressdefaultRoleIdstring optionalDefaultRoleID is the ID of the default role for new users added to the organization. If unset, defaults to the “Member” role.defaultDeploymentRoleIdstring optionalDefaultDeploymentRoleID is the ID of the default role used for deployments when no specific role is configured in the stack’s deployment settings. If unset, deployments run using the triggering user’s own permissions.
Get Package Used By Stacks
/api/orgs/{orgName}/packages/usageReturns the stacks within an organization that use a specific Pulumi package, helping track package adoption and identify affected stacks when planning package upgrades or deprecations.
Request Parameters
orgNamestring path requiredThe organization namecontinuationTokenstring query optionalThe continuation tokenlimitinteger query optionalMaximum number of results to return per page. Defaults to 100, maximum 500.packageNamestring query optionalThe package nameversionstring query optionalFilter to stacks using this specific version. If omitted, returns stacks using any version.
Responses
packageNamestring optionalThe package name that was queried.totalStacksinteger optionalThe total number of stacks using this package.- The list of stacks using this package.
- ↳
stackNamestring optionalThe name of the stack. - ↳
stackIdstring optionalThe unique identifier of the stack. - ↳
projectNamestring optionalThe name of the project containing this stack. - ↳
versionstring optionalThe parsed semantic version of the package used, if available. - ↳
providerUrnstring optionalThe full provider URN for this stack. - Information about the most recent stack update, if available.
continuationTokenstring optionalToken for fetching the next page of results. Null if there are no more results.
List Deleted Stacks
/api/orgs/{orgName}/restore-stackListDeletedStacks returns the last 25 deleted stacks for a given org. It would be incredible to one day
merge this function with ListOrganizationProjects – but that function is very bloated and not performant, so implementing
a lighter-weight handler focusing only on the most recently deleted stacks.
Request Parameters
orgNamestring path requiredThe organization name
Responses
- The list of deleted stacks
- ↳
idstring requiredThe unique identifier of the deleted stack. - ↳
programIdstring requiredThe program identifier associated with the stack. - ↳
projectNamestring requiredThe name of the project the stack belonged to. - ↳
stackNamestring requiredThe name of the stack. - ↳
versioninteger requiredThe version number of the stack. - ↳
deletedAtinteger requiredThe Unix timestamp when the stack was deleted. - The last update summary for the stack before deletion.
Restore Deleted Stack
/api/orgs/{orgName}/restore-stack/{programID}RestoreDeletedStack un-deletes a soft-deleted stack for the given programID if the organization has the restore stacks feature enabled.
Request Parameters
orgNamestring path requiredThe organization nameprogramIDstring path requiredThe program identifier
Request Body
stackNamestring requiredThe name of the stack to restore.
Responses
List Roles By Org ID And UX Purpose
/api/orgs/{orgName}/rolesReturns custom roles for an organization filtered by their UX purpose (e.g., ‘organization’, ’team’, or ’token’). This allows the UI to display only the roles relevant to the current context, such as showing only organization-level roles when managing member access.
Request Parameters
orgNamestring path requiredThe organization nameuxPurposestring query optionalFilter roles by their UX purpose (e.g., ‘organization’, ’team’, ’token’)
Responses
- The list of roles
- ↳
createdstring requiredWhen the role was created. - ↳
namestring optionalThe name of the permission descriptor. - ↳
descriptionstring optionalA human-readable description of the permission descriptor. - ↳
modifiedstring requiredWhen the role was last modified. - ↳
idstring requiredThe unique identifier for this role. - ↳
resourceTypestring optionalThe resource type this permission descriptor applies to. - ↳
orgIdstring requiredThe ID of the organization this role belongs to. - ↳
uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,set - ↳
defaultIdentifierstring optionalThe identifier for default roles. Empty for custom roles. - The detailed permission descriptor tree.
- ↳
versioninteger requiredThe version of this role. - ↳
isOrgDefaultboolean requiredWhether this role is the organization default.
Create Role
/api/orgs/{orgName}/rolesCreates a new custom role for an organization. Custom roles define fine-grained permission sets that can be assigned to organization members and teams, enabling precise access control beyond the built-in admin and member roles. Optionally, an associated policy and role binding can be created alongside the role.
Request Parameters
orgNamestring path requiredThe organization namecreatePolicyAndRoleboolean query optionalAlso create an associated policy and role binding alongside the role
Request Body
namestring optionalThe name of the permission descriptor.descriptionstring optionalA human-readable description of the permission descriptor.resourceTypestring optionalThe resource type this permission descriptor applies to.uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,set- The detailed permission descriptor tree.
- ↳
__typestring required
Responses
createdstring requiredWhen the role was created.namestring optionalThe name of the permission descriptor.descriptionstring optionalA human-readable description of the permission descriptor.modifiedstring requiredWhen the role was last modified.idstring requiredThe unique identifier for this role.resourceTypestring optionalThe resource type this permission descriptor applies to.orgIdstring requiredThe ID of the organization this role belongs to.uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,setdefaultIdentifierstring optionalThe identifier for default roles. Empty for custom roles.- The detailed permission descriptor tree.
- ↳
__typestring required versioninteger requiredThe version of this role.isOrgDefaultboolean requiredWhether this role is the organization default.
Get Role
/api/orgs/{orgName}/roles/{roleID}Returns the details of a specific custom role, including its name, description, and the set of permission scopes it grants. Custom roles enable fine-grained access control beyond the built-in admin and member roles.
Request Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifier
Responses
createdstring requiredWhen the role was created.namestring optionalThe name of the permission descriptor.descriptionstring optionalA human-readable description of the permission descriptor.modifiedstring requiredWhen the role was last modified.idstring requiredThe unique identifier for this role.resourceTypestring optionalThe resource type this permission descriptor applies to.orgIdstring requiredThe ID of the organization this role belongs to.uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,setdefaultIdentifierstring optionalThe identifier for default roles. Empty for custom roles.- The detailed permission descriptor tree.
- ↳
__typestring required versioninteger requiredThe version of this role.isOrgDefaultboolean requiredWhether this role is the organization default.
Update Role
/api/orgs/{orgName}/roles/{roleID}Updates an existing custom role’s name, description, or permission scopes. Changes take effect immediately for all members and teams assigned to the role.
Request Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifier
Request Body
Namestring requiredThe new name for the role.Descriptionstring requiredThe new description for the role.- The permission details for the role.
- ↳
__typestring required
Responses
createdstring requiredWhen the role was created.namestring optionalThe name of the permission descriptor.descriptionstring optionalA human-readable description of the permission descriptor.modifiedstring requiredWhen the role was last modified.idstring requiredThe unique identifier for this role.resourceTypestring optionalThe resource type this permission descriptor applies to.orgIdstring requiredThe ID of the organization this role belongs to.uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,setdefaultIdentifierstring optionalThe identifier for default roles. Empty for custom roles.- The detailed permission descriptor tree.
- ↳
__typestring required versioninteger requiredThe version of this role.isOrgDefaultboolean requiredWhether this role is the organization default.
Delete Role
/api/orgs/{orgName}/roles/{roleID}Deletes a custom role from an organization. If the role is currently assigned to members or teams, deletion requires the force parameter. Deleting a role revokes the permissions it granted to any assigned members or teams.
Request Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifierforceboolean query optionalForce deletion even if the role is currently assigned to members or teams
Responses
Update Organization Default Role
/api/orgs/{orgName}/roles/{roleID}/defaultSets the default custom role for the organization. New members who join the organization will be automatically assigned this role unless a different role is specified during the invitation process.
Request Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifier
Responses
List Teams With Role
/api/orgs/{orgName}/roles/{roleID}/teamsRequest Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifier
Responses
- Teams that are backed by the given role.
- ↳
kindenum requiredThe kind of team (e.g., pulumi or GitHub-backed).Values:github,pulumi,scim - ↳
namestring requiredThe unique identifier name of the team within the organization. - ↳
displayNamestring requiredThe human-readable display name shown in the UI. - ↳
descriptionstring requiredA free-form text description of the team’s purpose. - The list of team members.
- The list of stack permissions granted to the team.
- The list of environment settings for the team.
- The list of account permissions granted to the team.
- ↳
listMembersErrorstring optionalListMembersError is the error message if an error was encountered whilst trying to contact the team’s backend (eg. GitHub). The UI will only show this error if it is non-nil and if Members itself is an empty slice. - ↳
userRoleenum optionalUserRole is the calling user’s role on the given team.Values:none,member,admin - ↳
roleIdsarray[string] optionalRoleIDs are the IDs of the FGA roles assigned to the team, if any. Currently only one role per team is supported.
List Org Tokens With Role
/api/orgs/{orgName}/roles/{roleID}/tokensReturns all organization tokens that have been assigned to a specific custom role. This helps administrators audit which tokens have particular permission levels and manage token-to-role assignments for least-privilege access.
Request Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifier
Responses
- The list of access tokens
- ↳
idstring requiredUnique identifier for this access token. - ↳
namestring requiredHuman-readable name assigned to this access token. - ↳
descriptionstring requiredUser-provided description of the token’s purpose. - ↳
createdstring requiredTimestamp when the token was created, in ISO 8601 format. - ↳
lastUsedinteger requiredUnix epoch timestamp (seconds) when the token was last used. Zero if never used. - ↳
expiresinteger requiredUnix epoch timestamp (seconds) when the token expires. Zero if it never expires. - ↳
adminboolean requiredWhether this token has Pulumi Cloud admin privileges. - ↳
createdBystring requiredUser.GitHubLogin of the user that created the access token - Role associated with the token, if applicable
List Users With Role
/api/orgs/{orgName}/roles/{roleID}/usersRequest Parameters
orgNamestring path requiredThe organization nameroleIDstring path requiredThe role identifier
Responses
- Users that have been explicitly configured to the given role (ie, not configured via default role).
- ↳
namestring requiredThe user’s display name. - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information.
List Available Scopes
/api/orgs/{orgName}/roles/scopesReturns all available permission scopes that can be assigned to custom roles, organized by category (e.g., stacks, teams, organization settings). Each scope represents a specific action or capability that can be granted or denied.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Get SAML Organization
/api/orgs/{orgName}/samlReturns the SAML configuration data for an organization, including the SSO endpoint URL, identity provider metadata, and SAML attribute mappings. SAML-backed organizations use an external identity provider for user authentication and can enforce single sign-on for all members.
Request Parameters
orgNamestring path requiredThe organization name
Responses
- The Pulumi organization.
- ↳
githubLoginstring requiredThe GitHub login associated with the organization. - ↳
namestring requiredThe name of the organization. - ↳
avatarUrlstring requiredThe URL of the organization’s avatar image. - The repositories belonging to the organization.
idpSsoDescriptorstring requiredThe SAML Identity Provider SSO descriptor XML.entityIdstring optionalThe following fields can be empty if the metadata (IDPSSODescriptor) itself is empty for the organization.ssoUrlstring optionalThe SSO URL for the identity provider.validUntilstring optionalValidUntil is the date until which the X.509 Certificate issued to the organization by the identity provider is valid.nameIdFormatstring optionalThe SAML NameID format used by the identity provider.validationErrorstring optionalValidationError will be set only if there is an error validating the SAML org’s metadata XML.
Update SAML Organization
/api/orgs/{orgName}/samlUpdates the SAML configuration for a SAML-backed organization, including the identity provider SSO descriptor, attribute mappings, and other SAML settings. The new IDP SSO descriptor is required in the update request.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
newIdpSsoDescriptorstring optionalThe new IDP SSO descriptor XML for the SAML configuration.
Responses
- The Pulumi organization.
- ↳
githubLoginstring requiredThe GitHub login associated with the organization. - ↳
namestring requiredThe name of the organization. - ↳
avatarUrlstring requiredThe URL of the organization’s avatar image. - The repositories belonging to the organization.
idpSsoDescriptorstring requiredThe SAML Identity Provider SSO descriptor XML.entityIdstring optionalThe following fields can be empty if the metadata (IDPSSODescriptor) itself is empty for the organization.ssoUrlstring optionalThe SSO URL for the identity provider.validUntilstring optionalValidUntil is the date until which the X.509 Certificate issued to the organization by the identity provider is valid.nameIdFormatstring optionalThe SAML NameID format used by the identity provider.validationErrorstring optionalValidationError will be set only if there is an error validating the SAML org’s metadata XML.
List SAML Organization Admins
/api/orgs/{orgName}/saml/adminsListSAMLOrganizationAdmins returns the list of SAML admins for an organization. We currently only support one SAML admin per organization, where the SAML admin is the user who onboarded the organization to SAML.
Request Parameters
orgNamestring path requiredThe organization name
Responses
- The list of SAML administrators
- ↳
namestring requiredThe user’s display name. - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information.
Update SAML Organization Admins
/api/orgs/{orgName}/saml/admins/{userLogin}Updates the SAML admin for an organization. The SAML admin is the user who manages the SAML SSO configuration. Currently, each organization supports only one SAML admin (typically the user who onboarded the organization to SAML). The new admin must not belong to other organizations.
Request Parameters
orgNamestring path requiredThe organization nameuserLoginstring path requiredThe user login name
Responses
Search Cluster Available
/api/orgs/{orgName}/searchReturns a 200 response if the search cluster is available and healthy, 404 otherwise. This is a lightweight health check used to determine whether resource search functionality is operational for the organization.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Get Resource Column Filter Set
/api/orgs/{orgName}/search/column-setReturns aggregation results for a given field in resource search, providing the unique values and counts for a specific field like ’type’, ‘package’, or ‘project’. This is used to populate filter dropdowns and faceted navigation in the resource search UI.
Request Parameters
orgNamestring path requiredThe organization namefieldstring query optionalThe resource field to aggregate (e.g., ’type’, ‘package’, ‘project’)querystring query optionalSearch query string
Responses
Get Usage Summary Environment Secrets
/api/orgs/{orgName}/secrets/summaryGetUsageSummaryEnvironmentSecrets handles request to fetch the summary of ESC secret hours for an organization.
Request Parameters
orgNamestring path requiredThe organization namegranularitystring query optionalTime granularity for aggregation (e.g., ‘hourly’, ‘daily’, ‘monthly’)lookbackDaysinteger query optionalNumber of days to look back from the current time or lookbackStartlookbackStartinteger query optionalUnix timestamp for the start of the lookback period (defaults to current time if omitted)
Responses
- The list of resource count summaries
- ↳
yearinteger requiredThe 4-digit year. - ↳
monthinteger optionalThe month of the year. Ranges from 1 to 12. - ↳
dayinteger optionalThe day of month. Ranges from 1 to 31. - ↳
weekNumberinteger optionalThe week number in the year with Sunday marking the start of the week. Ranges from 0-53. - ↳
hourinteger optionalThe hour of the day. Ranges from 0 to 23. - ↳
resourcesinteger requiredThe RUM (total number of resources under management at a given time). Calculated by getting the average of the all the resources for the given time frame. - ↳
resourceHoursinteger requiredThe RHUM, which is the number of hours the resources under management have been running. Calculated by getting the sum of all the resources for the given time frame. 1 resource hour = 1 Pulumi credit.
List Teams
/api/orgs/{orgName}/teamsRetrieves all teams within an organization. Teams provide a centralized way to manage stack access permissions for groups of users. The response includes each team’s name, type (Pulumi-managed, GitHub-backed, or GitLab-backed), member count, and summary of stack permissions. Teams are available to organizations on Enterprise and Business Critical editions.
Request Parameters
orgNamestring path requiredThe organization name
Responses
- The list of teams
- ↳
kindenum requiredThe kind of team (e.g., pulumi or GitHub-backed).Values:github,pulumi,scim - ↳
namestring requiredThe unique identifier name of the team within the organization. - ↳
displayNamestring requiredThe human-readable display name shown in the UI. - ↳
descriptionstring requiredA free-form text description of the team’s purpose. - The list of team members.
- The list of stack permissions granted to the team.
- The list of environment settings for the team.
- The list of account permissions granted to the team.
- ↳
listMembersErrorstring optionalListMembersError is the error message if an error was encountered whilst trying to contact the team’s backend (eg. GitHub). The UI will only show this error if it is non-nil and if Members itself is an empty slice. - ↳
userRoleenum optionalUserRole is the calling user’s role on the given team.Values:none,member,admin - ↳
roleIdsarray[string] optionalRoleIDs are the IDs of the FGA roles assigned to the team, if any. Currently only one role per team is supported.
Get Team
/api/orgs/{orgName}/teams/{teamName}Retrieves detailed information about a specific team within an organization. The response includes the team name, display name, description, team type (Pulumi-managed, GitHub-backed, or GitLab-backed), list of members with their roles (team admin or team member), and the stack permissions granted to the team. Teams provide a centralized way to manage stack access for groups of users.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team name
Responses
kindenum requiredThe kind of team (e.g., pulumi or GitHub-backed).Values:github,pulumi,scimnamestring requiredThe unique identifier name of the team within the organization.displayNamestring requiredThe human-readable display name shown in the UI.descriptionstring requiredA free-form text description of the team’s purpose.- The list of team members.
- ↳
namestring requiredThe user’s display name. - ↳
roleenum requiredThe member’s role within the team.Values:none,member,admin - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information. - The list of stack permissions granted to the team.
- ↳
projectNamestring requiredThe project containing the stack. - ↳
stackNamestring requiredThe stack within the project. - ↳
permissionenum requiredThe permission level the team has on this stack (e.g., read, write, admin).Values:0,101,102,103,104 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this stack, when available. Enables read-only entity access UI without requiring RoleRead. - The list of environment settings for the team.
- ↳
projectNamestring requiredThe project containing the environment. - ↳
envNamestring requiredThe environment within the project. - ↳
permissionenum requiredThe permission level the team has on this environment.Values:none,read,open,write,admin - ↳
maxOpenDurationstring optionalThe maximum duration an environment session can remain open, as a Go duration string (e.g. “1h30m”). - ↳
permissionSetNamestring optionalDisplay name of the permission set for this environment, when available. Enables read-only entity access UI without requiring RoleRead. - The list of account permissions granted to the team.
- ↳
accountNamestring requiredThe Insights account name. - ↳
permissionenum requiredThe permission level the team has on this Insights account.Values:0,1,2,3 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this account, when available. Enables read-only entity access UI without requiring RoleRead. listMembersErrorstring optionalListMembersError is the error message if an error was encountered whilst trying to contact the team’s backend (eg. GitHub). The UI will only show this error if it is non-nil and if Members itself is an empty slice.userRoleenum optionalUserRole is the calling user’s role on the given team.Values:none,member,adminroleIdsarray[string] optionalRoleIDs are the IDs of the FGA roles assigned to the team, if any. Currently only one role per team is supported.
Update Team
/api/orgs/{orgName}/teams/{teamName}Updates a team’s membership and configuration. This multi-purpose endpoint supports several operations:
Update membership: Use member (username) and memberAction (add or remove) to manage team members.
Grant stack access: Use addStackPermission with projectName, stackName, and permission (integer: 101 = read, 102 = edit, 103 = admin).
Remove stack access: Use removeStack with projectName and stackName.
Members added to a team inherit the team’s stack permissions. Teams are not available to individual (single-user) organizations.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team name
Request Body
newDisplayNamestring optionalThe new display name for the team.newDescriptionstring optionalThe new description for the team.memberActionenum optionalMemberAction is the action to perform.Values:add,remove,promote,demotememberstring optionalMember to be added or removed based on MemberAction.- A stack permission to add to the team.
- ↳
projectNamestring requiredThe project containing the stack. - ↳
stackNamestring requiredThe stack within the project. - ↳
permissionenum requiredThe permission level the team has on this stack (e.g., read, write, admin).Values:0,101,102,103,104 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this stack, when available. Enables read-only entity access UI without requiring RoleRead. - A stack permission to edit on the team.
- ↳
projectNamestring requiredThe project containing the stack. - ↳
stackNamestring requiredThe stack within the project. - ↳
permissionenum requiredThe permission level the team has on this stack (e.g., read, write, admin).Values:0,101,102,103,104 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this stack, when available. Enables read-only entity access UI without requiring RoleRead. - A stack to remove from the team.
- ↳
projectNamestring requiredThe name of the project containing the stack. - ↳
stackNamestring requiredThe name of the stack to remove. - An environment permission to add to the team.
- ↳
projectNamestring requiredThe project containing the environment. - ↳
envNamestring requiredThe environment within the project. - ↳
permissionenum requiredThe permission level the team has on this environment.Values:none,read,open,write,admin - ↳
maxOpenDurationstring optionalThe maximum duration an environment session can remain open, as a Go duration string (e.g. “1h30m”). - ↳
permissionSetNamestring optionalDisplay name of the permission set for this environment, when available. Enables read-only entity access UI without requiring RoleRead. - An environment permission to edit on the team.
- ↳
projectNamestring requiredThe project containing the environment. - ↳
envNamestring requiredThe environment within the project. - ↳
permissionenum requiredThe permission level the team has on this environment.Values:none,read,open,write,admin - ↳
maxOpenDurationstring optionalThe maximum duration an environment session can remain open, as a Go duration string (e.g. “1h30m”). - ↳
permissionSetNamestring optionalDisplay name of the permission set for this environment, when available. Enables read-only entity access UI without requiring RoleRead. - An environment to remove from the team.
- ↳
projectNamestring requiredThe name of the project containing the environment. - ↳
envNamestring requiredThe name of the environment to remove.
Responses
Delete Team
/api/orgs/{orgName}/teams/{teamName}Permanently removes a team from an organization. All stack permission grants assigned to the team are revoked, and team members lose any access that was granted solely through team membership. Team tokens associated with the team are also invalidated. This action cannot be undone.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team name
Responses
Enable Team Roles
/api/orgs/{orgName}/teams/{teamName}/enable-team-rolesEnables custom role-based access control for a team. Once enabled, the team can be assigned custom roles that define fine-grained permissions beyond the default team admin and team member roles. Returns the created role descriptor.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team name
Responses
createdstring requiredWhen the role was created.namestring optionalThe name of the permission descriptor.descriptionstring optionalA human-readable description of the permission descriptor.modifiedstring requiredWhen the role was last modified.idstring requiredThe unique identifier for this role.resourceTypestring optionalThe resource type this permission descriptor applies to.orgIdstring requiredThe ID of the organization this role belongs to.uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,setdefaultIdentifierstring optionalThe identifier for default roles. Empty for custom roles.- The detailed permission descriptor tree.
- ↳
__typestring required versioninteger requiredThe version of this role.isOrgDefaultboolean requiredWhether this role is the organization default.
List Team Roles
/api/orgs/{orgName}/teams/{teamName}/rolesListTeamRoles will list the roles for a team. For now, this will always be a list of one, since we currently only support one role per team.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team name
Responses
- The list of roles assigned to the team
- ↳
createdstring requiredWhen the role was created. - ↳
namestring optionalThe name of the permission descriptor. - ↳
descriptionstring optionalA human-readable description of the permission descriptor. - ↳
modifiedstring requiredWhen the role was last modified. - ↳
idstring requiredThe unique identifier for this role. - ↳
resourceTypestring optionalThe resource type this permission descriptor applies to. - ↳
orgIdstring requiredThe ID of the organization this role belongs to. - ↳
uxPurposeenum optionalThe UX purpose of this permission descriptor (e.g. role, policy, set).Values:role,role_private,role_temporary,policy,set - ↳
defaultIdentifierstring optionalThe identifier for default roles. Empty for custom roles. - The detailed permission descriptor tree.
- ↳
versioninteger requiredThe version of this role. - ↳
isOrgDefaultboolean requiredWhether this role is the organization default.
Update Team Roles
/api/orgs/{orgName}/teams/{teamName}/roles/{roleID}UpdateTeamRoles upserts the role assigned to a team since we currently only support a 1:1 mapping of teams to roles.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team nameroleIDstring path requiredThe role identifier
Responses
Delete Team Role
/api/orgs/{orgName}/teams/{teamName}/roles/{roleID}Removes a custom role assignment from a team. This revokes the permissions that were granted to team members through the role. Currently only one role can be assigned per team.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team nameroleIDstring path requiredThe role identifier
Responses
List Team Tokens
/api/orgs/{orgName}/teams/{teamName}/tokensRetrieves all access tokens for a specific team. Team tokens inherit the stack permissions assigned to the team, providing scoped CI/CD automation access. The response includes token metadata such as name, description, creation date, last used date, and expiration status. The actual token values are never returned after initial creation. An optional filter parameter can include expired tokens.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team namefilterstring query optionalFilter tokens by status (e.g., include expired tokens)
Responses
- The list of access tokens
- ↳
idstring requiredUnique identifier for this access token. - ↳
namestring requiredHuman-readable name assigned to this access token. - ↳
descriptionstring requiredUser-provided description of the token’s purpose. - ↳
createdstring requiredTimestamp when the token was created, in ISO 8601 format. - ↳
lastUsedinteger requiredUnix epoch timestamp (seconds) when the token was last used. Zero if never used. - ↳
expiresinteger requiredUnix epoch timestamp (seconds) when the token expires. Zero if it never expires. - ↳
adminboolean requiredWhether this token has Pulumi Cloud admin privileges. - ↳
createdBystring requiredUser.GitHubLogin of the user that created the access token - Role associated with the token, if applicable
Create Team Token
/api/orgs/{orgName}/teams/{teamName}/tokensGenerates a new access token scoped to a specific team within an organization. Team tokens inherit the stack permissions assigned to the team, making them suitable for CI/CD pipelines that need access limited to a specific set of stacks.
The name field must be unique across the organization (including deleted tokens) and cannot exceed 40 characters. The expires field accepts a unix epoch timestamp up to two years from the present, or 0 for no expiry (default).
Important: The token value in the response is only returned once at creation time and cannot be retrieved later.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team namereasonstring query optionalAudit log reason for creating this token
Request Body
descriptionstring requiredThe descriptionnamestring requiredThe nameexpiresinteger requiredThe expiration time
Responses
idstring requiredThe unique identifiertokenValuestring requiredThe token value
Delete Team Token
/api/orgs/{orgName}/teams/{teamName}/tokens/{tokenId}Permanently revokes and deletes a team access token. Any CI/CD pipelines or automation using this token will immediately lose access to the stacks assigned to the team. This action cannot be undone.
Request Parameters
orgNamestring path requiredThe organization nameteamNamestring path requiredThe team nametokenIdstring path requiredThe access token identifierreasonstring query optionalAudit log reason for deleting this token
Responses
Create GitHub Team
/api/orgs/{orgName}/teams/githubCreates a new Pulumi team backed by a GitHub team. When an organization is backed by GitHub, existing GitHub teams can be imported into Pulumi to manage stack permissions. Membership is managed through GitHub while stack access permissions are controlled within Pulumi Cloud. The request must include the GitHub team ID. Returns 409 if a team with the same name already exists.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
githubTeamIDinteger requiredGitHubTeamID is the GitHub ID of the team to mirror. Must be in the same GitHub organization that the Pulumi org is backed by.
Responses
kindenum requiredThe kind of team (e.g., pulumi or GitHub-backed).Values:github,pulumi,scimnamestring requiredThe unique identifier name of the team within the organization.displayNamestring requiredThe human-readable display name shown in the UI.descriptionstring requiredA free-form text description of the team’s purpose.- The list of team members.
- ↳
namestring requiredThe user’s display name. - ↳
roleenum requiredThe member’s role within the team.Values:none,member,admin - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information. - The list of stack permissions granted to the team.
- ↳
projectNamestring requiredThe project containing the stack. - ↳
stackNamestring requiredThe stack within the project. - ↳
permissionenum requiredThe permission level the team has on this stack (e.g., read, write, admin).Values:0,101,102,103,104 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this stack, when available. Enables read-only entity access UI without requiring RoleRead. - The list of environment settings for the team.
- ↳
projectNamestring requiredThe project containing the environment. - ↳
envNamestring requiredThe environment within the project. - ↳
permissionenum requiredThe permission level the team has on this environment.Values:none,read,open,write,admin - ↳
maxOpenDurationstring optionalThe maximum duration an environment session can remain open, as a Go duration string (e.g. “1h30m”). - ↳
permissionSetNamestring optionalDisplay name of the permission set for this environment, when available. Enables read-only entity access UI without requiring RoleRead. - The list of account permissions granted to the team.
- ↳
accountNamestring requiredThe Insights account name. - ↳
permissionenum requiredThe permission level the team has on this Insights account.Values:0,1,2,3 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this account, when available. Enables read-only entity access UI without requiring RoleRead. listMembersErrorstring optionalListMembersError is the error message if an error was encountered whilst trying to contact the team’s backend (eg. GitHub). The UI will only show this error if it is non-nil and if Members itself is an empty slice.userRoleenum optionalUserRole is the calling user’s role on the given team.Values:none,member,adminroleIdsarray[string] optionalRoleIDs are the IDs of the FGA roles assigned to the team, if any. Currently only one role per team is supported.
Create Pulumi Team
/api/orgs/{orgName}/teams/pulumiCreatePulumiTeam creates a “Pulumi” team, i.e. one whose membership is managed by Pulumi. (As opposed to a GitHub or GitLab-based team.)
Request Parameters
orgNamestring path requiredThe organization name
Request Body
namestring requiredThe namedisplayNamestring requiredThe display namedescriptionstring requiredThe description
Responses
kindenum requiredThe kind of team (e.g., pulumi or GitHub-backed).Values:github,pulumi,scimnamestring requiredThe unique identifier name of the team within the organization.displayNamestring requiredThe human-readable display name shown in the UI.descriptionstring requiredA free-form text description of the team’s purpose.- The list of team members.
- ↳
namestring requiredThe user’s display name. - ↳
roleenum requiredThe member’s role within the team.Values:none,member,admin - ↳
githubLoginstring requiredThe user’s login name. - ↳
avatarUrlstring requiredThe URL of the user’s avatar image. - ↳
emailstring optionalIMPORTANT: The email address of the user is only included on a few admin-only APIs. For nearly all APIs that return a UserInfo object, this will not be provided. considered sensitive information. - The list of stack permissions granted to the team.
- ↳
projectNamestring requiredThe project containing the stack. - ↳
stackNamestring requiredThe stack within the project. - ↳
permissionenum requiredThe permission level the team has on this stack (e.g., read, write, admin).Values:0,101,102,103,104 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this stack, when available. Enables read-only entity access UI without requiring RoleRead. - The list of environment settings for the team.
- ↳
projectNamestring requiredThe project containing the environment. - ↳
envNamestring requiredThe environment within the project. - ↳
permissionenum requiredThe permission level the team has on this environment.Values:none,read,open,write,admin - ↳
maxOpenDurationstring optionalThe maximum duration an environment session can remain open, as a Go duration string (e.g. “1h30m”). - ↳
permissionSetNamestring optionalDisplay name of the permission set for this environment, when available. Enables read-only entity access UI without requiring RoleRead. - The list of account permissions granted to the team.
- ↳
accountNamestring requiredThe Insights account name. - ↳
permissionenum requiredThe permission level the team has on this Insights account.Values:0,1,2,3 - ↳
permissionSetNamestring optionalDisplay name of the permission set for this account, when available. Enables read-only entity access UI without requiring RoleRead. listMembersErrorstring optionalListMembersError is the error message if an error was encountered whilst trying to contact the team’s backend (eg. GitHub). The UI will only show this error if it is non-nil and if Members itself is an empty slice.userRoleenum optionalUserRole is the calling user’s role on the given team.Values:none,member,adminroleIdsarray[string] optionalRoleIDs are the IDs of the FGA roles assigned to the team, if any. Currently only one role per team is supported.
Get Project Template
/api/orgs/{orgName}/templateGetProjectTemplate attempts to fetch Pulumi.yaml from a template repository. If the repository represents a valid template, we return a response identical to the format we use for the public pulumi/templates repo.
This API accepts either a url or project query param to denote
either where to fetch the project template from or which project’s
pre-configured template to use respectively. If both are passed in project
take precedence, falling back to url if there is no source configured on
the project.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Get Project Template Configuration
/api/orgs/{orgName}/template/configurationGetProjectTemplateConfiguration attempts to lookup any config we store for the template using the template query parameter passed in as a key into the org’s template sources.
Request Parameters
orgNamestring path requiredThe organization name
Responses
- The template destination configuration
- ↳
urlstring requiredThe destination URL.
Get Org Template Download
/api/orgs/{orgName}/template/downloadDownloads a template archive for an organization as an application/x-tar binary stream. The template is identified by a URL query parameter pointing to the template source. Returns the tar archive containing the template’s project files and configuration.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Get Org Template Readme
/api/orgs/{orgName}/template/readmeReturns the README content for an organization template as Markdown text. The template is identified by a URL query parameter. Returns 404 if the template does not contain a README.md file, or 422 if the README content is invalid.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Get Org Templates
/api/orgs/{orgName}/templatesReturns a combined list of all templates available to the organization and the current user. This includes templates from the organization’s configured template collections as well as Pulumi’s built-in public templates. Each template includes its name, description, language, and source URL.
Request Parameters
orgNamestring path requiredThe organization name
Responses
templatesmap[string]array requiredMap of template source names to their available templatesorgHasTemplatesboolean requiredWhether the organization has any templates configuredhasAccessErrorboolean requiredWhether there was an access error retrieving templateshasUpstreamErrorboolean requiredWhether there was an upstream error retrieving templatesdiagnosticsarray[string] optionalDiagnostic messages from template retrieval
Get Org Template Collections
/api/orgs/{orgName}/templates/sourcesReturns all template collections (sources) configured for an organization. Template collections define where project templates are sourced from, such as Git repositories. Each collection includes its name, URL, and the templates it provides.
Request Parameters
orgNamestring path requiredThe organization name
Responses
- The list of template sources
- ↳
idstring requiredThe unique identifier of the template source. - ↳
isValidboolean requiredWhether the template source configuration is valid. - ↳
errorstring optionalAn error message if the template source is invalid. Omitted or empty when the source is valid. - ↳
namestring requiredThe human-readable name for this template source. - ↳
sourceURLstring requiredThe source URL to fetch templates from. - ↳
destinationURLstring optionalThe destination URL for the template source. - Deprecated - use destinationURL instead.
Create Org Template Collection
/api/orgs/{orgName}/templates/sourcesCreates a new template collection (source) for an organization. Template collections define where project templates are sourced from, such as a Git repository. Organization members can use these templates to create new stacks with pre-configured infrastructure code.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
namestring requiredThe name of the template source.sourceURLstring requiredThe source URL to fetch templates from.destinationURLstring optionalThe destination URL for the template source.- deprecated - use DestinationURL instead
- ↳
urlstring requiredThe destination URL.
Responses
idstring requiredThe unique identifier of the template source.isValidboolean requiredWhether the template source configuration is valid.errorstring optionalAn error message if the template source is invalid. Omitted or empty when the source is valid.namestring requiredThe human-readable name for this template source.sourceURLstring requiredThe source URL to fetch templates from.destinationURLstring optionalThe destination URL for the template source.- Deprecated - use destinationURL instead.
- ↳
urlstring requiredThe destination URL.
Update Org Template Collection
/api/orgs/{orgName}/templates/sources/{templateID}Updates an existing template collection for an organization, allowing modification of the template source URL, name, or other configuration. Template collections define where project templates are sourced from.
Request Parameters
orgNamestring path requiredThe organization nametemplateIDstring path requiredThe template identifier
Request Body
namestring requiredThe name of the template source.sourceURLstring requiredThe source URL to fetch templates from.destinationURLstring optionalThe destination URL for the template source.- deprecated - use DestinationURL instead
- ↳
urlstring requiredThe destination URL.
Responses
idstring requiredThe unique identifier of the template source.isValidboolean requiredWhether the template source configuration is valid.errorstring optionalAn error message if the template source is invalid. Omitted or empty when the source is valid.namestring requiredThe human-readable name for this template source.sourceURLstring requiredThe source URL to fetch templates from.destinationURLstring optionalThe destination URL for the template source.- Deprecated - use destinationURL instead.
- ↳
urlstring requiredThe destination URL.
Delete Org Template Collection
/api/orgs/{orgName}/templates/sources/{templateID}Removes a template collection (source) from an organization. Templates sourced from this collection will no longer be available to organization members when creating new stacks. Returns 400 if the template ID is invalid, or 404 if the template source does not exist.
Request Parameters
orgNamestring path requiredThe organization nametemplateIDstring path requiredThe template identifier
Responses
Batch Decrypt Project Value
/api/projects/{orgName}/{projectName}/batch-decryptBatchDecryptProjectValue works just like BatchDecryptValueHandler, but using the project’s encryption key instead of the stack’s
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project name
Request Body
Responses
Decrypt Project Value
/api/projects/{orgName}/{projectName}/decryptDecryptProjectValue works just like DecryptValueHandler, but using the project’s encryption key instead of the stack’s
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project name
Request Body
Responses
Encrypt Project Value
/api/projects/{orgName}/{projectName}/encryptEncryptProjectValue encrypts a value using the project’s key. The request body contains the base64 encoded value to be encrypted.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project name
Request Body
Responses
Create Stack
/api/stacks/{orgName}/{projectName}Creates a new stack within a project in the organization. If the project does not exist, it will be created. A stack is an isolated, independently configurable instance of a Pulumi program, typically representing a deployment environment (e.g., development, staging, production). The stack name must be unique within the project.
The optional config object supports:
environment: reference to an ESC environment for storing stack configuration (must not already exist)secretsProvider: the secrets provider for the stackencryptedKey: KMS-encrypted ciphertext for the data key (cloud-based secrets providers only)encryptionSalt: base64-encoded encryption salt (passphrase-based secrets providers only)
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project name
Request Body
stackNamestring requiredThe name of the stack being created.tagsmap[string]string optionalAn optional set of tags to apply to the stack.teamsarray[string] optionalAn optional set of teams to assign to the stack.- An optional state to initialize the stack with.
- ↳
versioninteger optionalThe schema version of the encoded deployment. - ↳
featuresarray[string] optionalAn optional list of features used by this deployment. The CLI will error when reading a deployment that uses a feature that is not supported by that version of the CLI. Only honored whenversionis 4 or greater. - ↳
deploymentobject optionalThe opaque Pulumi deployment payload. Treated as a raw JSON value so the contents are preserved verbatim across client and server versions. - The configuration for the new stack.
- ↳
environmentstring requiredReference to ESC environment to use as stack configuration. - ↳
secretsProviderstring optionalThe stack’s secrets provider. - ↳
encryptedKeystring optionalThe KMS-encrypted ciphertext for the data key used for secrets encryption. Only used for cloud-based secrets providers. - ↳
encryptionSaltstring optionalThe stack’s base64-encoded encryption salt. Only used for passphrase-based secrets providers.
Responses
- Messages is a list of messages that should be displayed to the user.
- ↳
severityenum optionalSeverity is the severity of the message.Values:warning,error,info - ↳
messagestring requiredMessage is the message to display to the user.
Project Exists
/api/stacks/{orgName}/{projectName}Checks whether a project exists within an organization. Returns 200 with the project name if it exists, or 404 if not found. This is a lightweight existence check useful for validating project names before creating stacks or performing other operations.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project name
Responses
Thank you for your feedback!
If you have a question about how to use Pulumi, reach out in Community Slack.
Open an issue on GitHub to report a problem or suggest an improvement.