> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcliq.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a team

> Changes a team. By default (`save_as: version`) it mints the next version from
`manifest` (or from the saved working copy): a patch bump, or `bump: minor | major`.
`save_as: draft` saves the manifest as a working copy without a version; `discard`
drops the working copy. A description alone changes only the description.

Requires a token whose user can see the team given by `team_id` or `name`: a public listed team, or a team of an organization you belong to.



## OpenAPI

````yaml /openapi/hub-by-tag/hub-teams.yaml post /v1/teams/update
openapi: 3.0.3
info:
  title: 'CliqHub API: Teams'
  version: 1.0.0
  description: >-
    The CliqHub team registry. A team is published under a scope
    (`@acme/code-review`) as

    numbered versions. Create a draft, change it (each change can mint the next
    version),

    publish it to make it installable, then install it on daemons. List teams
    with a

    `realm_id` to see a realm's roster and where each team is installed, or with
    a

    `daemon_id` to see what one daemon has. Build a team with AI drafts a team
    from a

    description.


    Changing a team (update, rename, publish, unpublish, delete) needs its
    author, or the

    publish permission in the organization that owns its scope.
servers:
  - url: https://{host}
    variables:
      host:
        default: cliqhub.io
        description: CliqHub host
security: []
tags:
  - name: Teams
    description: >-
      The CliqHub team registry. A team is published under a scope
      (`@acme/code-review`) as

      numbered versions. Create a draft, change it (each change can mint the
      next version),

      publish it to make it installable, then install it on daemons. List teams
      with a

      `realm_id` to see a realm's roster and where each team is installed, or
      with a

      `daemon_id` to see what one daemon has. Build a team with AI drafts a team
      from a

      description.


      Changing a team (update, rename, publish, unpublish, delete) needs its
      author, or the

      publish permission in the organization that owns its scope.
paths:
  /v1/teams/update:
    post:
      tags:
        - Teams
      summary: Update a team
      description: >-
        Changes a team. By default (`save_as: version`) it mints the next
        version from

        `manifest` (or from the saved working copy): a patch bump, or `bump:
        minor | major`.

        `save_as: draft` saves the manifest as a working copy without a version;
        `discard`

        drops the working copy. A description alone changes only the
        description.


        Requires a token whose user can see the team given by `team_id` or
        `name`: a public listed team, or a team of an organization you belong
        to.
      operationId: POST_v1_teams_update
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: >-
                    Team name — mutually exclusive with team_id as the lookup
                    key
                scope:
                  type: string
                  description: Scope (publisher) slug
                team_id:
                  type: string
                  format: uuid
                  description: Team UUID — mutually exclusive with name as the lookup key
                description:
                  type: string
                  description: Updated human-readable summary
                manifest:
                  oneOf:
                    - type: string
                    - type: object
                      additionalProperties: true
                  description: >-
                    Updated manifest as YAML string or parsed object; triggers a
                    new patch version
                team_json:
                  type: string
                  description: Updated SPA builder canvas JSON string
                bump:
                  type: string
                  enum:
                    - minor
                    - major
                  description: >-
                    Bump magnitude when updating manifest; omit for patch
                    (default)
                save_as:
                  type: string
                  enum:
                    - draft
                    - version
                    - discard
                  description: >-
                    'draft': keep the manifest as the team's working copy
                    without minting a version;
                changelog:
                  type: string
                  maxLength: 2000
                  description: What changed in the version being minted
            examples:
              version:
                summary: Mint 1.6.0
                value:
                  team_id: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
                  manifest: |-
                    name: code-review
                    version: 1.6.0
                    …
                  bump: minor
                  changelog: Adds a verify phase
              draft:
                summary: Save a working copy
                value:
                  team_id: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
                  manifest: |-
                    name: code-review
                    …
                  save_as: draft
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                  - ok
                  - data
                properties:
                  ok:
                    type: boolean
                    enum:
                      - true
                    description: Always `true` on success.
                  data:
                    $ref: '#/components/schemas/TeamMutationData'
              example:
                ok: true
                data:
                  id: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
                  name: code-review
                  scope: acme
                  status: published
                  version: 1.6.0
                  draft_saved_at: null
        '401':
          description: >-
            `unauthorized`: No `Authorization` header, or the token is
            malformed, expired or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                unauthorized:
                  summary: unauthorized
                  value:
                    ok: false
                    error:
                      code: unauthorized
                      message: Authentication required
        '403':
          description: >-
            `forbidden`: You can see the record but your role in its realm is
            too low or lacks the required permission.


            `forbidden`: You are not the team's author and lack the publish
            permission for its scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                forbidden:
                  summary: forbidden
                  value:
                    ok: false
                    error:
                      code: forbidden
                      message: You do not have access to do this
                forbidden (endpoint):
                  summary: forbidden (endpoint)
                  value:
                    ok: false
                    error: You are not the author of this team
                    code: forbidden
        '404':
          description: >-
            `not_found`: The team does not exist or is in a realm you cannot see
            (404 rather than 403, so its existence is not revealed).


            `not_found`: No team has this id, or this name in the scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                not_found:
                  summary: not_found
                  value:
                    ok: false
                    error:
                      code: not_found
                      message: Not found
                not_found (endpoint):
                  summary: not_found (endpoint)
                  value:
                    ok: false
                    error: Team not found
                    code: not_found
        '422':
          description: >-
            `invalid_params`: Neither `team_id` nor `name` was sent, `save_as:
            draft` without a `manifest`, or the manifest is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                invalid_params:
                  summary: invalid_params
                  value:
                    ok: false
                    error: A draft needs a manifest
                    code: invalid_params
                    details:
                      field: manifest
        '500':
          description: >-
            `internal_error`: An unexpected server fault. Retry later; if it
            persists, report it with the time of the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                internal_error:
                  summary: internal_error
                  value:
                    ok: false
                    error: Internal server error
                    code: internal_error
      security:
        - BearerAuth: []
components:
  schemas:
    TeamMutationData:
      type: object
      properties:
        id:
          type: string
          description: Team UUID
        name:
          type: string
          description: Team name
        scope:
          type: string
          description: Scope (publisher) slug
        status:
          type: string
          enum:
            - draft
            - published
          description: Lifecycle status after the mutation
        version:
          type: string
          nullable: true
          description: Version string after the mutation; null when no version was seeded
        listed:
          type: boolean
          description: Listed flag (present after unpublish)
        draft_saved_at:
          type: string
          nullable: true
          description: >-
            teams/update: when the working copy was saved (save_as draft), or
            null after a version was minted
      required:
        - id
        - name
        - scope
        - status
        - version
    HubErr:
      type: object
      required:
        - ok
        - error
      description: >-
        Every failure. Route-policy denials (401/403/404, and 400 when neither
        realm_id nor org_id was sent) answer `error` as `{ code, message }`;
        errors raised by the endpoint answer `error` as the message with the
        code beside it in `code`. Every error has a code. See
        [Errors](/hub-api/errors).
      properties:
        ok:
          type: boolean
          description: Always false on error
        error:
          description: The message, or `{ code, message }` for an access denial.
          oneOf:
            - type: string
            - type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                message:
                  type: string
        code:
          type: string
          description: Stable error code of an endpoint error.
        details:
          type: object
          additionalProperties: true
          description: Structured detail, when there is some.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: cliq_tok_* | cliq_dt_*
      description: >-
        User PAT (`cliq_tok_…`, including session-scoped) or realm token
        (`cliq_dt_…`).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.