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

# Update deliverable progress

> Body is an action union (see 'ProgressAction'), not '{status, completed, wip}'. Response is '{ kickedWorkers }' — not the updated deliverable; re-fetch it separately if needed.



## OpenAPI

````yaml /openapi.yaml post /deliverable/root/{rootId}/progress/{id}
openapi: 3.0.3
info:
  title: BuildingSwell Public API
  version: 2.0.0
  description: >
    BuildingSwell v2 Public API. All endpoints require the `X-API-Key` header.

    Keys are scoped to your organization — all data is automatically filtered.


    See the [Guides](/index) for querying, filtering, joins, and response
    formats.
servers:
  - url: https://{instance}/api/v2
    description: Your BuildingSwell instance
    variables:
      instance:
        default: app.buildingswell.com
        description: Your BuildingSwell host
security:
  - ApiKeyAuth: []
tags:
  - name: Projects
    description: Top-level project groupings
  - name: Stages
    description: Stages — reusable department-scoped shop stations
  - name: Deliverables
    description: Work-tree nodes (orders, routes, phases, stages, steps, etc.)
  - name: Work sessions
    description: Work sessions on deliverables
  - name: Comments
    description: Comments on deliverables
  - name: Documents
    description: Documents attached to deliverables
  - name: Notes
    description: Notes on deliverables
  - name: Notifications
    description: Notifications and read-state
  - name: QC
    description: QC inspection sets and templates
  - name: Dependencies
    description: Dependency links between deliverables
  - name: Workers
    description: Workforce roster
  - name: Timesheets
    description: Unified time-tracking records (read-only)
  - name: Organization
    description: Roles and organization members
  - name: Concepts
    description: Concept-aware deliverable endpoints with validation
paths:
  /deliverable/root/{rootId}/progress/{id}:
    post:
      tags:
        - Deliverables
      summary: Update deliverable progress
      description: >-
        Body is an action union (see 'ProgressAction'), not '{status, completed,
        wip}'. Response is '{ kickedWorkers }' — not the updated deliverable;
        re-fetch it separately if needed.
      parameters:
        - name: rootId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProgressAction'
      responses:
        '200':
          description: >-
            Progress updated. Returns the ids of workers whose active work
            sessions/plans were stopped as a side effect — not the deliverable.
          content:
            application/json:
              schema:
                type: object
                properties:
                  kickedWorkers:
                    type: array
                    items:
                      type: string
                      format: uuid
components:
  schemas:
    ProgressAction:
      description: Discriminated union keyed on 'type'.
      oneOf:
        - type: object
          required:
            - type
          properties:
            type:
              type: string
              enum:
                - complete
                - rework
                - put-on-hold
                - resume-work
        - type: object
          required:
            - type
            - quantity
          properties:
            type:
              type: string
              enum:
                - uncomplete
                - send-ahead
            quantity:
              type: number
        - type: object
          required:
            - type
            - percentage
          properties:
            type:
              type: string
              enum:
                - set-percentage
            percentage:
              type: number
              minimum: 0
              maximum: 100
              description: Not allowed on qcstep nodes.
      discriminator:
        propertyName: type
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````