Pulumi · Capability

Pulumi APIs — Users

Pulumi APIs — Users. 16 operations. Lead operation: GetCurrentUser. Self-contained Naftiko capability covering one Pulumi business surface.

Run with Naftiko PulumiUsers

What You Can Do

GET
Getcurrentuser — GetCurrentUser
/v1/api/user
GET
Listgithuborganizationteams — ListGitHubOrganizationTeams
/v1/api/user/github/{ghorgname}/teams
GET
Getgroupsforgitlabapp — GetGroupsForGitLabApp
/v1/api/user/gitlab-app/organizations
GET
Getdefaultorganization — GetDefaultOrganization
/v1/api/user/organizations/default
POST
Updatedefaultorganization — UpdateDefaultOrganization
/v1/api/user/organizations/{orgname}/default
DELETE
Deletependingemailchange — DeletePendingEmailChange
/v1/api/user/pending-emails
GET
Getlatestpendingemailchange — GetLatestPendingEmailChange
/v1/api/user/pending-emails
GET
Listuserorginvites — ListUserOrgInvites
/v1/api/user/pending-invites
GET
Listuserstacks — ListUserStacks
/v1/api/user/stacks
GET
Listpersonaltokens — ListPersonalTokens
/v1/api/user/tokens
POST
Createpersonaltoken — CreatePersonalToken
/v1/api/user/tokens
DELETE
Deletepersonaltoken — DeletePersonalToken
/v1/api/user/tokens/{tokenid}
DELETE
Deleteidentityprovider — DeleteIdentityProvider
/v1/api/user/vcs
GET
Listidentityproviderorganizations — ListIdentityProviderOrganizations
/v1/api/user/vcs/organizations
POST
Syncwithidentityprovider — SyncWithIdentityProvider
/v1/api/user/vcs/sync
GET
Getuserhasverifiedemail — GetUserHasVerifiedEmail
/v1/api/user/verified-email

MCP Tools

getcurrentuser

GetCurrentUser

read-only idempotent
listgithuborganizationteams

ListGitHubOrganizationTeams

read-only idempotent
getgroupsforgitlabapp

GetGroupsForGitLabApp

read-only idempotent
getdefaultorganization

GetDefaultOrganization

read-only idempotent
updatedefaultorganization

UpdateDefaultOrganization

deletependingemailchange

DeletePendingEmailChange

idempotent
getlatestpendingemailchange

GetLatestPendingEmailChange

read-only idempotent
listuserorginvites

ListUserOrgInvites

read-only idempotent
listuserstacks

ListUserStacks

read-only idempotent
listpersonaltokens

ListPersonalTokens

read-only idempotent
createpersonaltoken

CreatePersonalToken

deletepersonaltoken

DeletePersonalToken

idempotent
deleteidentityprovider

DeleteIdentityProvider

idempotent
listidentityproviderorganizations

ListIdentityProviderOrganizations

read-only idempotent
syncwithidentityprovider

SyncWithIdentityProvider

getuserhasverifiedemail

GetUserHasVerifiedEmail

read-only idempotent

Capability Spec

pulumi-users.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Pulumi APIs — Users
  description: 'Pulumi APIs — Users. 16 operations. Lead operation: GetCurrentUser. Self-contained Naftiko capability covering
    one Pulumi business surface.'
  tags:
  - Pulumi
  - Users
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    PULUMI_API_KEY: PULUMI_API_KEY
capability:
  consumes:
  - type: http
    namespace: pulumi-users
    baseUri: ''
    description: Pulumi APIs — Users business capability. Self-contained, no shared references.
    resources:
    - name: api-user
      path: /api/user
      operations:
      - name: getcurrentuser
        method: GET
        description: GetCurrentUser
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-user-github-ghOrgName-teams
      path: /api/user/github/{ghOrgName}/teams
      operations:
      - name: listgithuborganizationteams
        method: GET
        description: ListGitHubOrganizationTeams
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: ghOrgName
          in: path
          type: string
          description: The GitHub organization name
          required: true
    - name: api-user-gitlab-app-organizations
      path: /api/user/gitlab-app/organizations
      operations:
      - name: getgroupsforgitlabapp
        method: GET
        description: GetGroupsForGitLabApp
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-user-organizations-default
      path: /api/user/organizations/default
      operations:
      - name: getdefaultorganization
        method: GET
        description: GetDefaultOrganization
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-user-organizations-orgName-default
      path: /api/user/organizations/{orgName}/default
      operations:
      - name: updatedefaultorganization
        method: POST
        description: UpdateDefaultOrganization
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgName
          in: path
          type: string
          description: The organization name
          required: true
    - name: api-user-pending-emails
      path: /api/user/pending-emails
      operations:
      - name: deletependingemailchange
        method: DELETE
        description: DeletePendingEmailChange
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: getlatestpendingemailchange
        method: GET
        description: GetLatestPendingEmailChange
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-user-pending-invites
      path: /api/user/pending-invites
      operations:
      - name: listuserorginvites
        method: GET
        description: ListUserOrgInvites
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-user-stacks
      path: /api/user/stacks
      operations:
      - name: listuserstacks
        method: GET
        description: ListUserStacks
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: continuationToken
          in: query
          type: string
          description: Token from a previous response to fetch the next page of results
        - name: maxResults
          in: query
          type: integer
          description: Maximum number of stacks to return per page
        - name: organization
          in: query
          type: string
          description: Filter stacks to those owned by this organization
        - name: project
          in: query
          type: string
          description: Filter stacks to those in this project
        - name: roleID
          in: query
          type: string
          description: List stacks only using this custom role
        - name: tagName
          in: query
          type: string
          description: Filter stacks by tag name (use with tagValue for exact match)
        - name: tagValue
          in: query
          type: string
          description: Filter stacks by tag value (requires tagName)
    - name: api-user-tokens
      path: /api/user/tokens
      operations:
      - name: listpersonaltokens
        method: GET
        description: ListPersonalTokens
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: filter
          in: query
          type: string
          description: Filter tokens by name or description
      - name: createpersonaltoken
        method: POST
        description: CreatePersonalToken
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: reason
          in: query
          type: string
          description: Tracks the context that triggered token creation (e.g., redirect URL or referral source)
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-user-tokens-tokenId
      path: /api/user/tokens/{tokenId}
      operations:
      - name: deletepersonaltoken
        method: DELETE
        description: DeletePersonalToken
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: tokenId
          in: path
          type: string
          description: The access token identifier
          required: true
    - name: api-user-vcs
      path: /api/user/vcs
      operations:
      - name: deleteidentityprovider
        method: DELETE
        description: DeleteIdentityProvider
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: identity
          in: query
          type: string
          description: The VCS identity provider to disconnect (e.g., github, gitlab, bitbucket)
    - name: api-user-vcs-organizations
      path: /api/user/vcs/organizations
      operations:
      - name: listidentityproviderorganizations
        method: GET
        description: ListIdentityProviderOrganizations
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-user-vcs-sync
      path: /api/user/vcs/sync
      operations:
      - name: syncwithidentityprovider
        method: POST
        description: SyncWithIdentityProvider
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: identity
          in: query
          type: string
          description: The VCS identity provider to sync profile data from (e.g., github, gitlab)
    - name: api-user-verified-email
      path: /api/user/verified-email
      operations:
      - name: getuserhasverifiedemail
        method: GET
        description: GetUserHasVerifiedEmail
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    namespace: pulumi-users-rest
    port: 8080
    description: REST adapter for Pulumi APIs — Users. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/api/user
      name: api-user
      description: REST surface for api-user.
      operations:
      - method: GET
        name: getcurrentuser
        description: GetCurrentUser
        call: pulumi-users.getcurrentuser
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/github/{ghorgname}/teams
      name: api-user-github-ghorgname-teams
      description: REST surface for api-user-github-ghOrgName-teams.
      operations:
      - method: GET
        name: listgithuborganizationteams
        description: ListGitHubOrganizationTeams
        call: pulumi-users.listgithuborganizationteams
        with:
          ghOrgName: rest.ghOrgName
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/gitlab-app/organizations
      name: api-user-gitlab-app-organizations
      description: REST surface for api-user-gitlab-app-organizations.
      operations:
      - method: GET
        name: getgroupsforgitlabapp
        description: GetGroupsForGitLabApp
        call: pulumi-users.getgroupsforgitlabapp
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/organizations/default
      name: api-user-organizations-default
      description: REST surface for api-user-organizations-default.
      operations:
      - method: GET
        name: getdefaultorganization
        description: GetDefaultOrganization
        call: pulumi-users.getdefaultorganization
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/organizations/{orgname}/default
      name: api-user-organizations-orgname-default
      description: REST surface for api-user-organizations-orgName-default.
      operations:
      - method: POST
        name: updatedefaultorganization
        description: UpdateDefaultOrganization
        call: pulumi-users.updatedefaultorganization
        with:
          orgName: rest.orgName
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/pending-emails
      name: api-user-pending-emails
      description: REST surface for api-user-pending-emails.
      operations:
      - method: DELETE
        name: deletependingemailchange
        description: DeletePendingEmailChange
        call: pulumi-users.deletependingemailchange
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getlatestpendingemailchange
        description: GetLatestPendingEmailChange
        call: pulumi-users.getlatestpendingemailchange
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/pending-invites
      name: api-user-pending-invites
      description: REST surface for api-user-pending-invites.
      operations:
      - method: GET
        name: listuserorginvites
        description: ListUserOrgInvites
        call: pulumi-users.listuserorginvites
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/stacks
      name: api-user-stacks
      description: REST surface for api-user-stacks.
      operations:
      - method: GET
        name: listuserstacks
        description: ListUserStacks
        call: pulumi-users.listuserstacks
        with:
          continuationToken: rest.continuationToken
          maxResults: rest.maxResults
          organization: rest.organization
          project: rest.project
          roleID: rest.roleID
          tagName: rest.tagName
          tagValue: rest.tagValue
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/tokens
      name: api-user-tokens
      description: REST surface for api-user-tokens.
      operations:
      - method: GET
        name: listpersonaltokens
        description: ListPersonalTokens
        call: pulumi-users.listpersonaltokens
        with:
          filter: rest.filter
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createpersonaltoken
        description: CreatePersonalToken
        call: pulumi-users.createpersonaltoken
        with:
          reason: rest.reason
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/tokens/{tokenid}
      name: api-user-tokens-tokenid
      description: REST surface for api-user-tokens-tokenId.
      operations:
      - method: DELETE
        name: deletepersonaltoken
        description: DeletePersonalToken
        call: pulumi-users.deletepersonaltoken
        with:
          tokenId: rest.tokenId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/vcs
      name: api-user-vcs
      description: REST surface for api-user-vcs.
      operations:
      - method: DELETE
        name: deleteidentityprovider
        description: DeleteIdentityProvider
        call: pulumi-users.deleteidentityprovider
        with:
          identity: rest.identity
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/vcs/organizations
      name: api-user-vcs-organizations
      description: REST surface for api-user-vcs-organizations.
      operations:
      - method: GET
        name: listidentityproviderorganizations
        description: ListIdentityProviderOrganizations
        call: pulumi-users.listidentityproviderorganizations
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/vcs/sync
      name: api-user-vcs-sync
      description: REST surface for api-user-vcs-sync.
      operations:
      - method: POST
        name: syncwithidentityprovider
        description: SyncWithIdentityProvider
        call: pulumi-users.syncwithidentityprovider
        with:
          identity: rest.identity
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/user/verified-email
      name: api-user-verified-email
      description: REST surface for api-user-verified-email.
      operations:
      - method: GET
        name: getuserhasverifiedemail
        description: GetUserHasVerifiedEmail
        call: pulumi-users.getuserhasverifiedemail
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: pulumi-users-mcp
    port: 9090
    transport: http
    description: MCP adapter for Pulumi APIs — Users. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: getcurrentuser
      description: GetCurrentUser
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.getcurrentuser
      outputParameters:
      - type: object
        mapping: $.
    - name: listgithuborganizationteams
      description: ListGitHubOrganizationTeams
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.listgithuborganizationteams
      with:
        ghOrgName: tools.ghOrgName
      outputParameters:
      - type: object
        mapping: $.
    - name: getgroupsforgitlabapp
      description: GetGroupsForGitLabApp
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.getgroupsforgitlabapp
      outputParameters:
      - type: object
        mapping: $.
    - name: getdefaultorganization
      description: GetDefaultOrganization
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.getdefaultorganization
      outputParameters:
      - type: object
        mapping: $.
    - name: updatedefaultorganization
      description: UpdateDefaultOrganization
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulumi-users.updatedefaultorganization
      with:
        orgName: tools.orgName
      outputParameters:
      - type: object
        mapping: $.
    - name: deletependingemailchange
      description: DeletePendingEmailChange
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: pulumi-users.deletependingemailchange
      outputParameters:
      - type: object
        mapping: $.
    - name: getlatestpendingemailchange
      description: GetLatestPendingEmailChange
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.getlatestpendingemailchange
      outputParameters:
      - type: object
        mapping: $.
    - name: listuserorginvites
      description: ListUserOrgInvites
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.listuserorginvites
      outputParameters:
      - type: object
        mapping: $.
    - name: listuserstacks
      description: ListUserStacks
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.listuserstacks
      with:
        continuationToken: tools.continuationToken
        maxResults: tools.maxResults
        organization: tools.organization
        project: tools.project
        roleID: tools.roleID
        tagName: tools.tagName
        tagValue: tools.tagValue
      outputParameters:
      - type: object
        mapping: $.
    - name: listpersonaltokens
      description: ListPersonalTokens
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.listpersonaltokens
      with:
        filter: tools.filter
      outputParameters:
      - type: object
        mapping: $.
    - name: createpersonaltoken
      description: CreatePersonalToken
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulumi-users.createpersonaltoken
      with:
        reason: tools.reason
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: deletepersonaltoken
      description: DeletePersonalToken
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: pulumi-users.deletepersonaltoken
      with:
        tokenId: tools.tokenId
      outputParameters:
      - type: object
        mapping: $.
    - name: deleteidentityprovider
      description: DeleteIdentityProvider
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: pulumi-users.deleteidentityprovider
      with:
        identity: tools.identity
      outputParameters:
      - type: object
        mapping: $.
    - name: listidentityproviderorganizations
      description: ListIdentityProviderOrganizations
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.listidentityproviderorganizations
      outputParameters:
      - type: object
        mapping: $.
    - name: syncwithidentityprovider
      description: SyncWithIdentityProvider
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: pulumi-users.syncwithidentityprovider
      with:
        identity: tools.identity
      outputParameters:
      - type: object
        mapping: $.
    - name: getuserhasverifiedemail
      description: GetUserHasVerifiedEmail
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: pulumi-users.getuserhasverifiedemail
      outputParameters:
      - type: object
        mapping: $.