CloudBees Teams API

List teams, and get a specific team with optional user expansion.

Operations 3

GET /v4/teams List teams #
GET /v4/teams/{id} Get team #
GET /v1/organizations/{organizationId}/teams List teams in an organization #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cloudbees-teams-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cloudbees-teams-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cloudbees Teams API
  version: '1.0'
  description: 'Operations tagged Teams across 2 of this provider''s published API definitions: cloudbees-unify-beta-openapi.yml, cloudbees-unify-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.cloudbees.io
  description: CloudBees Unify Production API
security:
- BearerAuth: []
tags:
- name: Teams
  description: List teams, and get a specific team with optional user expansion.
paths:
  /v4/teams:
    get:
      tags:
      - Teams
      description: Returns a list of teams. Supports filtering, pagination, and sorting.
      operationId: listTeams
      parameters:
      - name: tenantId
        in: query
        description: Tenant ID (from auth token, scopes results).
        schema:
          type: string
      - name: name
        in: query
        description: Optional name to filter by.
        schema:
          type: string
      - name: include
        in: query
        description: Related data to include inline in response. Use 'users' to include team member list (max 100 users, use /memberships endpoint for full paginated list).
        schema:
          type: array
          items:
            type: string
      - name: orderBy
        in: query
        description: "Optional sort specification.\n Format: \"field [asc|desc]\" (e.g., \"name asc\", \"updated_at desc\")\n Default sort order is ascending if not specified."
        schema:
          type: string
      - name: pageSize
        in: query
        description: "Maximum number of items to return per page.\n Default: 100, Maximum: 1000"
        schema:
          type: integer
          format: int32
      - name: pageToken
        in: query
        description: "Cursor token for retrieving the next page of results.\n Obtained from next_page_token of the previous response.\n Omit or use empty string for the first page."
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.v4.ListTeamsResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.rpc.Status'
      summary: List teams
    servers:
    - url: https://api.cloudbees.io
      description: CloudBees Unify Production API
  /v4/teams/{id}:
    get:
      tags:
      - Teams
      description: Returns detailed information about a specific team.
      operationId: getTeam
      parameters:
      - name: id
        in: path
        description: Team ID (UUID).
        required: true
        schema:
          type: string
      - name: include
        in: query
        description: 'Related data to include in response. Supported values: users.'
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.v4.TeamWithExpansions'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.rpc.Status'
      summary: Get team
    servers:
    - url: https://api.cloudbees.io
      description: CloudBees Unify Production API
  /v1/organizations/{organizationId}/teams:
    get:
      tags:
      - Teams
      operationId: TeamsService_GetTeams
      parameters:
      - name: organizationId
        in: path
        description: Unique identifier of the organization whose teams are to be listed. Required.
        required: true
        schema:
          type: string
      - name: userId
        in: query
        description: Filters results to teams that include the specified user as a member. Omit to return all teams in the organization.
        schema:
          type: string
      - name: pagination.page
        in: query
        description: page (optional) indicates which page is being requested or returned (0 or 1) returns the 1st page of results
        schema:
          type: integer
          format: int32
      - name: pagination.pageLength
        in: query
        description: "page_length (optional) specifies the number of items per page being requested.  If the request is asking for more than an api limit\n allows, the response will indicate the new page_length that should be used for future calls."
        schema:
          type: integer
          format: int32
      - name: pagination.sort.fieldName
        in: query
        description: "field_name specifies the field to use for sorting a list of results.  See documentation for\n specific API endpoints to determine appropriate field names."
        schema:
          type: string
      - name: pagination.sort.order
        in: query
        description: order specifies how to sort the results
        schema:
          enum:
          - ASCENDING
          - DESCENDING
          type: string
      - name: pagination.lastPage
        in: query
        description: 'RESPONSE ONLY: last_page is true {response} if there are no more results to be returned'
        schema:
          type: boolean
      - name: include
        in: query
        description: Optional comma-separated list of related resources to include in each team response, for example `users` or `roles`.
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.auth.GetTeamsResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.rpc.Status'
      summary: List teams in an organization
      description: Returns a list of teams within the specified organization. Use the `userId` query parameter to filter results to teams that include a specific user as a member.
    servers:
    - url: https://api.cloudbees.io
      description: CloudBees Unify Production API
components:
  schemas:
    google.rpc.Status:
      type: object
      properties:
        code:
          type: integer
          description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
          format: int32
        message:
          type: string
          description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
        details:
          type: array
          items:
            $ref: '#/components/schemas/google.protobuf.Any'
          description: A list of messages that carry the error details.  There is a common set of message types for APIs to use.
      description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).'
    api.v4.ListTeamsResponse:
      type: object
      properties:
        teams:
          type: array
          items:
            $ref: '#/components/schemas/api.v4.TeamWithExpansions'
          description: List of teams matching the request.
        nextPageToken:
          type: string
          description: "Cursor token for retrieving the next page of results.\n Empty string indicates this is the last page."
        totalSize:
          type: integer
          description: "Total number of items matching the query across all pages.\n Optional - may be omitted if computing the total would be expensive\n (e.g., large datasets, complex filters, cross-shard queries).\n Clients MUST NOT assume this field will always be present."
          format: int32
      description: Response message for ListTeams.
    api.v4.TeamWithExpansions:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this team
        name:
          type: string
          description: Team name
        description:
          type: string
          description: Optional description explaining the team's purpose or scope
        tenantId:
          type: string
          description: tenant_id field
        updatedAt:
          type: string
          description: When this team was last modified
          format: date-time
        immutable:
          type: boolean
          description: Whether this team is synchronized from your identity provider and cannot be modified directly
        type:
          enum:
          - TEAM_TYPE_UNSPECIFIED
          - TEAM_TYPE_PREDEFINED
          - TEAM_TYPE_USERDEFINED
          type: string
          description: Distinguishes platform-managed teams (PREDEFINED) from teams you create (USERDEFINED)
        users:
          type: array
          items:
            $ref: '#/components/schemas/api.v4.User'
          description: Users who are members of this team.
      description: Team with optional expansion fields.
    api.v4.User:
      required:
      - email
      type: object
      properties:
        id:
          readOnly: true
          type: string
          description: Unique identifier for this user
        email:
          type: string
          description: Primary email address for authentication and contact
        displayName:
          readOnly: true
          type: string
          description: Display name for this user
        firstName:
          type: string
          description: First name of the user
        lastName:
          type: string
          description: Last name of the user
        additionalEmails:
          type: array
          items:
            type: string
          description: Additional email addresses linked to user account
      description: A person that can access CloudBees Unify. Invite users to a tenant to grant them access to your organizations.
    google.protobuf.Any:
      type: object
      properties:
        '@type':
          type: string
          description: The type of the serialized message.
      additionalProperties: true
      description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
    api.auth.Connection:
      type: object
      properties:
        id:
          type: string
        organizationId:
          type: string
          description: Organization the connection was created for
        entityId:
          type: string
          description: Entity ID of the SAML IdP
        signInEndpoint:
          type: string
          description: Sign-in endpoint for the SAML IdP
        signInCertificate:
          type: string
          description: Sign-in certificate from the SAML IdP
        connectionName:
          type: string
          description: Display name for the connection
        isEnabled:
          type: boolean
          description: Whether the connection is enabled or not
        autoprovision:
          type: boolean
          description: "Whether auto-provision is enabled or not\n (when on, users from the SAML IdP are automatically added to the organization during login)"
        strict:
          type: boolean
          description: "Whether strict is enabled or not\n (when on, only email's with the connection's linked email-domain can be invited + forces everyone with linked email domains to use SAML login)"
        wantAssertionsSigned:
          type: boolean
          description: "Whether this connection requires the identity provider to digitally sign SAML assertions before they are accepted.\n This is a standard and commonly supported setting in SAML identity providers. Enabled by default."
        wantAssertionsEncrypted:
          type: boolean
          description: "Whether this connection requires the identity provider to encrypt SAML assertions before they are accepted.\n This is preferable but not supported by all major identity providers. Disable if your IdP is Microsoft Entra ID or Google Workspace."
        validateSignatures:
          type: boolean
          description: Whether this connection validates signatures on incoming SAML responses.
        source:
          type: string
          description: 'Adding source attrribute to differentiate whether connection is migrated from UDS or already present in CBP, Ticket : CBP-13455'
    api.Audit:
      type: object
      properties:
        who:
          type: string
          description: UUID of the user that made the change
        when:
          type: string
          description: timestamp of the update
          format: date-time
        why:
          type: string
          description: reason for the update (optional)
      description: Audit records the person that updated the data last.
    api.auth.Login:
      type: object
      properties:
        id:
          type: string
          description: unique id of the login
        type:
          enum:
          - LOGIN_TYPE_UNDEFINED
          - LOGIN_TYPE_PASSWORD
          - LOGIN_TYPE_GOOGLE
          - LOGIN_TYPE_GITHUB
          - LOGIN_TYPE_SAML
          - LOGIN_TYPE_LDAP
          - LOGIN_TYPE_OAUTH2
          type: string
          description: what type is the login, see enum
        email:
          type: string
          description: email address
        password:
          type: string
          description: for password logins, the encrypted password
        salt:
          type: string
          description: for password logins, the salt
        isVerified:
          type: boolean
          description: "whether the login method has been verified, some login methods are\n automatically verified"
        userId:
          type: string
          description: user this login belongs to
        audit:
          $ref: '#/components/schemas/api.Audit'
      description: How a user logs in to the system
    api.auth.GetTeamsResponse:
      type: object
      properties:
        teams:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Team'
          description: The list of teams in the specified organization.
        pagination:
          allOf:
          - $ref: '#/components/schemas/api.Pagination'
          description: Pagination metadata for the response, including whether this is the last page of results.
    api.auth.permission.Permission:
      required:
      - action
      - type
      type: object
      properties:
        action:
          enum:
          - UNDEFINED
          - CREATE
          - READ
          - UPDATE
          - DELETE
          - EXECUTE
          - ACCESS
          type: string
          description: The action allowed
        type:
          enum:
          - ORGANIZATION
          - USER_ENTITY
          - USER_INVITE
          - TEAM
          - MEMBERSHIP
          - AUTHORIZATION
          - ROLE
          - ENDPOINT
          - PROPERTY
          - SECRET
          - RESOURCE
          - SERVICE
          - ENVIRONMENT
          - FLAG
          - EXTENSION
          - AUDIT
          - LOG
          - ACCOUNT
          - SUBSCRIPTION
          - ENTITLEMENT
          - AUTOMATION
          - RECENT_ORG_RECORD
          - DEFAULT_PLAN
          - VSM
          - CI_INSIGHTS
          - ARTIFACT
          - SECURITY
          - WORKFLOW_EVENT
          - APPROVAL
          - API_TOKEN
          - SLA_CONFIGURATION
          - ASSET_SERVICE_MARKETPLACE
          - RESOURCE_ERROR
          - TRIAGE_APPROVAL
          - APPLICATION_RELEASE
          - TRIAGE_FINDINGS
          - VIEW_FINDINGS_BY_TRIAGE_STATUS
          - REVIEW_RA_REQUEST
          - REVIEW_FP_REQUEST
          - EXTERNAL_WORKFLOW_EVENTS
          - TARGET_GROUP
          - CUSTOM_PROPERTY
          - APPROVAL_REQUEST
          - POLICY
          - EDGE_RUNNER
          - SMART_TESTS_WORKSPACE
          type: string
          description: The type of entity being protected
      description: Permission message represents a permission that can be granted to a user on an API entity.
    api.auth.Team:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the team.
        name:
          type: string
          description: Display name of the team.
        isDefault:
          type: boolean
          description: Indicates whether this is the default team for the organization. Every organization has exactly one default team, which automatically includes all members and cannot be deleted.
        immutable:
          type: boolean
          description: Indicates whether the team is managed by an SSO connection. When true, team membership and configuration cannot be modified manually.
        organizationId:
          type: string
          description: Unique identifier of the organization this team belongs to.
        userIds:
          type: array
          items:
            type: string
          description: List of unique identifiers of users who are members of this team.
        supportEnabled:
          type: boolean
          description: Indicates whether this team is synced with Zendesk support.
        metadata:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/google.protobuf.Any'
          description: Key-value pairs of additional information stored on the team object.
        isDeleted:
          type: boolean
          description: Indicates whether the team has been soft-deleted.
        audit:
          allOf:
          - $ref: '#/components/schemas/api.Audit'
          description: Audit metadata including creation and last modification timestamps.
        description:
          type: string
          description: Optional description providing additional details about the team's purpose.
        users:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.User'
          description: Full user objects for each member of this team, populated when users are included in the response.
        type:
          enum:
          - UNKNOWN
          - PREDEFINED
          - USERDEFINED
          type: string
          description: The type of team. Valid values are PREDEFINED (system-created, cannot be deleted) or USERDEFINED (user-created, can be deleted).
        organization:
          allOf:
          - $ref: '#/components/schemas/api.auth.Org'
          description: The organization this team belongs to, populated when organization details are included in the response.
        invites:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Invite'
          description: Pending invitations associated with this team.
        roles:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Role'
          description: Roles assigned to this team.
    api.Pagination:
      type: object
      properties:
        page:
          type: integer
          description: page (optional) indicates which page is being requested or returned (0 or 1) returns the 1st page of results
          format: int32
        pageLength:
          type: integer
          description: "page_length (optional) specifies the number of items per page being requested.  If the request is asking for more than an api limit\n allows, the response will indicate the new page_length that should be used for future calls."
          format: int32
        sort:
          allOf:
          - $ref: '#/components/schemas/api.Sort'
          description: sort (optional) specifies how the results should be sorted {request} or how they are actually sorted {response}.
        lastPage:
          type: boolean
          description: 'RESPONSE ONLY: last_page is true {response} if there are no more results to be returned'
      description: Pagination is sent as part of a request to specify handling for paginated results, and returned with paginated results=
    api.auth.User:
      type: object
      properties:
        id:
          type: string
          description: unique id of the user
        givenname:
          type: string
          description: given name is the "first" name
        familyname:
          type: string
          description: family is the sur or "last" name
        displayname:
          type: string
          description: displayname is the preferred name to use in the UI
        type:
          enum:
          - USER_TYPE_UNDEFINED
          - USER_TYPE_PERSON
          - USER_TYPE_MACHINE
          type: string
          description: indicates the type of the user, could be a human, could be a machine
        status:
          enum:
          - USER_STATUS_UNDEFINED
          - USER_STATUS_ACTIVE
          - USER_STATUS_DISABLED
          - USER_STATUS_DELETED
          type: string
          description: indicates the status of the user
        loginIds:
          type: array
          items:
            type: string
          description: "logins are the specific login methods that user uses to authenticate\n with the system. See Login message."
        preferences:
          type: object
          additionalProperties:
            type: string
          description: Key value pair of preferences, things like font, theme, avatar url
        audit:
          $ref: '#/components/schemas/api.Audit'
        logins:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Login'
        associatedEmails:
          type: array
          items:
            type: string
          description: list of emails linked to this user; not used for login
        email:
          type: string
        timezone:
          type: string
        mfaEnabled:
          type: boolean
        createdat:
          type: string
          format: date-time
        updatedat:
          type: string
          format: date-time
        lastlogindate:
          type: string
          format: date-time
      description: "User will live in a separate database from the rest of the\n platform due to PII"
    api.auth.Role:
      required:
      - organizationId
      - name
      - audit
      type: object
      properties:
        organizationId:
          type: string
          description: The organization the role belongs to
        name:
          type: string
          description: Role name
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.permission.Permission'
          description: Permissions assigned to the role
        isDeleted:
          type: boolean
          description: "IsDeleted indicates if this record is no longer valid\n Anyone assigned this role will no longer have the permissions granted by this role"
        audit:
          allOf:
          - $ref: '#/components/schemas/api.Audit'
          description: Audit information for the role
        description:
          type: string
          description: Description of the role (optional)
        isEditable:
          type: boolean
          description: "Is the role editable. If not, the role can not be modified or deleted.\n This is useful for system roles that should not be modified Vs \"custom\" roles that can.\n Default is false."
        id:
          type: string
          description: Unique identifier for the role
      description: "Roles are a collection of permission actions.\n PermissionActions can not be granted to a user\n directly, a role must be created."
    api.auth.EmailDomain:
      type: object
      properties:
        id:
          type: string
        domainName:
          type: string
          description: 'Name of the domain (example: cloudbees.com - what comes after the @ in an email address)'
        organizationId:
          type: string
          description: Organization this email-domain record was created for
        challenge:
          type: string
          description: UUID used for verification of this email-domain record
        isVerified:
          type: boolean
          description: Whether the email-domain is already verified or not
        connectionId:
          type: string
          description: Connection id that this email-domain is linked to
    api.auth.Org:
      type: object
      properties:
        id:
          type: string
          description: "ID here must match with the resource ID in resources table,\n since an organization is a type of resource."
        displayName:
          type: string
          description: Organization display name  -  not the same as the resource name
        domainName:
          type: string
          description: "Organization domain name  -  this must match with the resource name\n (since resource name could be in the URL, it must be URL-safe, that's why the domain)"
        isDisabled:
          type: boolean
          description: if true, the organization is no longer active
        childOrganizations:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Org'
          description: sub-organizations
        parentId:
          type: string
          description: parent id if this is a sub-organization
        description:
          type: string
          description: description field
        metadata:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/google.protobuf.Any'
          description: '@Deprecated - use the properties field instead'
        audit:
          $ref: '#/components/schemas/api.Audit'
        properties:
          type: object
          additionalProperties:
            type: string
          description: key value pair of extra information to store in the organization object
        teams:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Team'
          description: Teams that are part of the organization
        roles:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Role'
          description: Roles
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.permission.Permission'
          description: Permissions assigned to the role
        emailDomains:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.EmailDomain'
          description: email domains
        connections:
          type: array
          items:
            $ref: '#/components/schemas/api.auth.Connection'
          description: connections
    api.auth.Invite:
      type: object
      properties:
        id:
          type: string
          description: unique id of the invite
        email:
          type: string
          description: email invited to the platform
        teamId:
          type: string
          description: team to which this email was invited
        teamRole:
          type: string
          description: role for this email when accepted into the team
        redirectUrl:
          type: string
          description: redirect url post invite acceptance
        expirationDate:
          type: string
          description: expiration date for this invitation
          format: date-time
        isAutogenerated:
          type: boolean
          description: if this invite was created based on a different invite
        audit:
          $ref: '#/components/schemas/api.Audit'
        invitedBy:
          type: string
          description: user ID of the user who created this invite
      description: Record of the invitation for a new user for an organization
    api.Sort:
      type: object
      properties:
        fieldName:
          type: string
          description: "field_name specifies the field to use for sorting a list of results.  See documentation for\n specific API endpoints to determine appropriate field names."
        order:
          enum:
          - ASCENDING
          - DESCENDING
          type: string
          description: order specifies how to sort the results
      description: Sort describes which field to sort the results on and the order in which to sort them
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: CloudBees Unify API access token or personal access token
x-refined-from:
- cloudbees-unify-beta-openapi.yml
- cloudbees-unify-openapi.yml