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

# Update a roadmap item

> Its author rewords their suggestion: the title and the description.



## OpenAPI

````yaml /openapi/backend.json patch /v1/roadmapBoards/{board}/items/{item}
openapi: 3.0.0
info:
  title: Plazza API
  description: >-
    The Plazza REST API. Errors follow AIP-193 and carry a message in the
    language of Accept-Language, French or English.
  version: v1
servers:
  - url: https://api.plazza.ca
security:
  - bearer: []
paths:
  /v1/roadmapBoards/{board}/items/{item}:
    patch:
      tags:
        - Roadmap
      summary: Update a roadmap item
      description: 'Its author rewords their suggestion: the title and the description.'
      operationId: RoadmapItems.update
      parameters:
        - name: board
          required: true
          in: path
          description: 'The board: `hire` for employers, `talents` for job seekers.'
          schema:
            type: string
            enum:
              - hire
              - talents
            description: 'The board: `hire` for employers, `talents` for job seekers.'
            example: hire
        - name: item
          required: true
          in: path
          description: The item's id.
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            description: The item's id.
            example: 019a7c2e-4b1d-7c3a-9d4e-5f6a7b8c9d0e
        - name: updateMask
          required: false
          in: query
          description: >-
            AIP-134: the comma-separated fields to change, or `*` for every
            editable field. A field in the mask but not in the body is cleared.
            Without a mask, the fields in the body change.
          schema:
            description: >-
              AIP-134: the comma-separated fields to change, or `*` for every
              editable field. A field in the mask but not in the body is
              cleared. Without a mask, the fields in the body change.
            example: title,body
            type: string
            maxLength: 200
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoadmapItemUpdate'
      responses:
        '200':
          description: A suggestion or a planned change on a roadmap board.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoadmapItem'
        default:
          description: An AIP-193 error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    RoadmapItemUpdate:
      type: object
      properties:
        title:
          type: string
          maxLength: 1000
          description: The title, 3 to 180 characters.
          example: Swap shifts between employees
        body:
          type: string
          maxLength: 100000
          description: The description in Markdown, up to 20,000 characters.
          example: Let employees trade shifts, with a manager approving the swap.
        etag:
          type: string
          pattern: ^"[1-9]\d{0,9}"$
          description: >-
            The `etag` of the resource as you last read it. A change made since
            then refuses the request with ABORTED.
          example: '"3"'
      required:
        - etag
      additionalProperties: false
      description: What the author changes in their suggestion.
    RoadmapItem:
      type: object
      properties:
        name:
          type: string
          description: The item's resource name.
          example: roadmapBoards/hire/items/019a7c2e-4b1d-7c3a-9d4e-5f6a7b8c9d0e
        source:
          type: string
          enum:
            - PLAZZA
            - LINEAR
          description: >-
            `PLAZZA` for a member’s suggestion; `LINEAR` for an item the Plazza
            team curates in Linear, where its content and status are managed.
          example: PLAZZA
        slug:
          type: string
          description: A readable form of the title, for URLs.
          example: swap-shifts-between-employees
        title:
          type: string
          description: >-
            The title, in the language its author wrote it. Empty once
            withdrawn.
          example: Swap shifts between employees
        body:
          type: string
          description: The description, in Markdown. Empty once withdrawn.
          example: Let employees trade shifts, with a manager approving the swap.
        kind:
          type: string
          enum:
            - FEATURE
            - ENHANCEMENT
            - FIX
            - DESIGN
          description: >-
            What the item is: a new feature, an improvement, a fix, or a design
            change.
          example: FEATURE
        tags:
          type: array
          items:
            type: string
          description: Up to 8 topics.
          example:
            - Scheduling
            - Mobile
        plans:
          type: array
          items:
            type: string
          description: Up to 8 plans the item concerns.
          example:
            - Pro
        area:
          nullable: true
          description: The part of the product it concerns, if any.
          example: Scheduling
          type: string
        status:
          type: string
          enum:
            - BACKLOG
            - PLANNED
            - IN_PROGRESS
            - SHIPPED
            - DECLINED
            - ARCHIVED
          description: Where the item stands in the workflow.
          example: PLANNED
        shipTime:
          nullable: true
          type: string
          format: date-time
          description: When it shipped. Null unless `status` is `SHIPPED`.
          example: '2026-11-04T14:32:08.512Z'
        state:
          type: string
          enum:
            - PUBLISHED
            - UNPUBLISHED
            - SUSPENDED
            - WITHDRAWN
            - MERGED
          description: >-
            `PUBLISHED` items are listed. Staff can `UNPUBLISH` one, its author
            can withdraw it, which erases its text but keeps the discussion, and
            staff can merge a duplicate into another item. The Linear sync
            `SUSPENDED` one while its issue can’t be read or left the Roadmap
            team.
          example: PUBLISHED
        mergedInto:
          nullable: true
          description: The resource name of the item a duplicate was merged into.
          example: null
          type: string
        author:
          nullable: true
          description: Who suggested it. Null for a curated item and once withdrawn.
          example:
            displayName: Camille Tremblay
            staff: false
          allOf:
            - $ref: '#/components/schemas/RoadmapAuthor'
        voteCount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: How many people back it.
          example: 42
        commentCount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: How many comments it has, removed ones aside.
          example: 7
        etag:
          type: string
          description: >-
            AIP-154: send it back to change the item, so a concurrent change is
            refused.
          example: '"3"'
        createTime:
          type: string
          format: date-time
          description: When it was suggested.
          example: '2026-11-04T14:32:08.512Z'
        updateTime:
          type: string
          format: date-time
          description: When its content, status or state last changed.
          example: '2026-11-04T14:32:08.512Z'
        deleteTime:
          nullable: true
          type: string
          format: date-time
          description: 'AIP-164: when its author withdrew it. Null otherwise.'
          example: '2026-11-04T14:32:08.512Z'
      required:
        - name
        - source
        - slug
        - title
        - body
        - kind
        - tags
        - plans
        - area
        - status
        - shipTime
        - state
        - mergedInto
        - author
        - voteCount
        - commentCount
        - etag
        - createTime
        - updateTime
        - deleteTime
      additionalProperties: false
      description: A suggestion or a planned change on a roadmap board.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            message:
              type: string
            status:
              type: string
              enum:
                - INVALID_ARGUMENT
                - FAILED_PRECONDITION
                - OUT_OF_RANGE
                - UNAUTHENTICATED
                - PERMISSION_DENIED
                - NOT_FOUND
                - ABORTED
                - ALREADY_EXISTS
                - RESOURCE_EXHAUSTED
                - INTERNAL
                - UNIMPLEMENTED
                - UNAVAILABLE
                - DEADLINE_EXCEEDED
            details:
              type: array
              items:
                oneOf:
                  - type: object
                    properties:
                      '@type':
                        type: string
                        enum:
                          - type.googleapis.com/google.rpc.ErrorInfo
                      reason:
                        type: string
                      domain:
                        type: string
                      metadata:
                        type: object
                        additionalProperties:
                          type: string
                    required:
                      - '@type'
                      - reason
                      - domain
                    additionalProperties: false
                  - type: object
                    properties:
                      '@type':
                        type: string
                        enum:
                          - type.googleapis.com/google.rpc.LocalizedMessage
                      locale:
                        type: string
                      message:
                        type: string
                    required:
                      - '@type'
                      - locale
                      - message
                    additionalProperties: false
                  - type: object
                    properties:
                      '@type':
                        type: string
                        enum:
                          - type.googleapis.com/google.rpc.BadRequest
                      fieldViolations:
                        type: array
                        items:
                          type: object
                          properties:
                            field:
                              type: string
                            description:
                              type: string
                          required:
                            - field
                            - description
                          additionalProperties: false
                    required:
                      - '@type'
                      - fieldViolations
                    additionalProperties: false
                  - type: object
                    properties:
                      '@type':
                        type: string
                        enum:
                          - type.googleapis.com/google.rpc.RetryInfo
                      retryDelay:
                        type: string
                        pattern: ^\d+s$
                    required:
                      - '@type'
                      - retryDelay
                    additionalProperties: false
          required:
            - code
            - message
            - status
            - details
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: An AIP-193 error.
      example:
        error:
          code: 401
          message: Unauthorized
          status: UNAUTHENTICATED
          details:
            - '@type': type.googleapis.com/google.rpc.ErrorInfo
              reason: MISSING_CREDENTIALS
              domain: api.plazza.ca
            - '@type': type.googleapis.com/google.rpc.LocalizedMessage
              locale: en
              message: Sign in to continue.
    RoadmapAuthor:
      type: object
      properties:
        displayName:
          nullable: true
          description: >-
            The name they chose for the roadmap. Null for a staff member who
            never chose one: show your team name.
          example: Camille Tremblay
          type: string
        staff:
          type: boolean
          description: Whether they work at Plazza.
          example: false
      required:
        - displayName
        - staff
      additionalProperties: false
      description: Who wrote something on the roadmap, as shown publicly.
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: >-
        The session token of a signed-in Plazza account, sent as `Authorization:
        Bearer <token>`.

````

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