Trellis tasks API

Trellis task contracts generated from Hono/Zod schemas.

OpenAPI Specification

trellistech-tasks-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Trellis Public API v1 properties tasks API
  version: 1.4.0
  description: Public, versioned REST contracts for workspace-scoped Trellis tasks and properties. Authenticate with an existing workspace API key.
servers:
- url: /
  description: Current host
tags:
- name: tasks
  description: Trellis task contracts generated from Hono/Zod schemas.
paths:
  /api/v1/workspaces/{workspaceId}/tasks:
    get:
      tags:
      - tasks
      summary: List tasks
      description: Returns non-deleted Trellis tasks for the authenticated workspace. Use filters for status, priority, property, department, schedule window, or text search.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      - schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
          example: 50
          description: Maximum number of items to return.
        required: false
        description: Maximum number of items to return.
        name: limit
        in: query
      - schema:
          type:
          - integer
          - 'null'
          minimum: 0
          default: 0
          example: 0
          description: Number of items to skip.
        required: false
        description: Number of items to skip.
        name: offset
        in: query
      - schema:
          allOf:
          - $ref: '#/components/schemas/TaskStatus'
          - description: Filter tasks by computed Trellis status.
            example: OPEN
        required: false
        description: Filter tasks by computed Trellis status.
        name: status
        in: query
      - schema:
          allOf:
          - $ref: '#/components/schemas/Priority'
          - description: Filter tasks by priority.
            example: HIGH
        required: false
        description: Filter tasks by priority.
        name: priority
        in: query
      - schema:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
          description: Filter tasks for a property.
        required: false
        description: Filter tasks for a property.
        name: propertyId
        in: query
      - schema:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
          description: Filter tasks assigned to a department.
        required: false
        description: Filter tasks assigned to a department.
        name: departmentId
        in: query
      - schema:
          type: string
          format: date
          pattern: ^\d{4}-\d{2}-\d{2}$
          example: '2026-05-22'
          description: Include tasks scheduled on or after this date.
        required: false
        description: Include tasks scheduled on or after this date.
        name: scheduledFrom
        in: query
      - schema:
          type: string
          format: date
          pattern: ^\d{4}-\d{2}-\d{2}$
          example: '2026-05-22'
          description: Include tasks scheduled on or before this date.
        required: false
        description: Include tasks scheduled on or before this date.
        name: scheduledTo
        in: query
      - schema:
          type: string
          format: date
          pattern: ^\d{4}-\d{2}-\d{2}$
          example: '2026-06-18'
          description: Include tasks scheduled exactly on this date. When present, this overrides scheduledFrom/scheduledTo.
        required: false
        description: Include tasks scheduled exactly on this date. When present, this overrides scheduledFrom/scheduledTo.
        name: scheduledDate
        in: query
      - schema:
          type: string
          enum:
          - field_ops
          description: Filter task departments by a stable public kind. Currently supports field_ops.
          example: field_ops
        required: false
        description: Filter task departments by a stable public kind. Currently supports field_ops.
        name: departmentKind
        in: query
      - schema:
          type: string
          pattern: ^(costItems|assignees)(,(costItems|assignees))*$
          description: 'Comma-separated related resources to embed in each task. Supported values: costItems, assignees.'
          example: costItems,assignees
        required: false
        description: 'Comma-separated related resources to embed in each task. Supported values: costItems, assignees.'
        name: include
        in: query
      - schema:
          type: string
          minLength: 1
          maxLength: 120
          description: Case-insensitive search over title, description, and short id.
        required: false
        description: Case-insensitive search over title, description, and short id.
        name: q
        in: query
      responses:
        '200':
          description: Tasks in the workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTasksResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    post:
      tags:
      - tasks
      summary: Create a task
      description: Creates a Trellis task in the authenticated workspace and runs the normal task side effects.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskRequest'
      responses:
        '201':
          description: The created task.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutateTaskResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /api/v1/workspaces/{workspaceId}/tasks/daily-work-orders:
    get:
      tags:
      - tasks
      summary: List daily work orders and costs
      description: Returns scheduled work orders for one day in the authenticated workspace, including task cost totals, cost item rows, property, department, and scoped assignee names.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      - schema:
          type: string
          format: date
          pattern: ^\d{4}-\d{2}-\d{2}$
          example: '2026-06-18'
          description: Local calendar date to export, formatted as YYYY-MM-DD.
        required: true
        description: Local calendar date to export, formatted as YYYY-MM-DD.
        name: date
        in: query
      responses:
        '200':
          description: Daily scheduled work orders with cost summary.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DailyWorkOrdersResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /api/v1/workspaces/{workspaceId}/tasks/{taskId}:
    get:
      tags:
      - tasks
      summary: Get a task
      description: Returns one non-deleted Trellis task by id within the authenticated workspace.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      - schema:
          type: string
          format: uuid
          example: 22222222-2222-4222-8222-222222222222
        required: true
        name: taskId
        in: path
      responses:
        '200':
          description: The requested task.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTaskResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    put:
      tags:
      - tasks
      summary: Replace task fields
      description: Applies the supplied task fields using the same mutation behavior as PATCH. Omitted fields are left unchanged.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      - schema:
          type: string
          format: uuid
          example: 22222222-2222-4222-8222-222222222222
        required: true
        name: taskId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTaskRequest'
      responses:
        '200':
          description: The updated task.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutateTaskResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    delete:
      tags:
      - tasks
      summary: Delete a task
      description: Soft-deletes a Trellis task in the authenticated workspace and runs the normal task side effects.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      - schema:
          type: string
          format: uuid
          example: 22222222-2222-4222-8222-222222222222
        required: true
        name: taskId
        in: path
      responses:
        '200':
          description: The task was deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteTaskResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    patch:
      tags:
      - tasks
      summary: Update a task
      description: Updates a Trellis task in the authenticated workspace and runs the normal task side effects.
      security:
      - WorkspaceApiKey: []
      parameters:
      - schema:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        required: true
        name: workspaceId
        in: path
      - schema:
          type: string
          format: uuid
          example: 22222222-2222-4222-8222-222222222222
        required: true
        name: taskId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTaskRequest'
      responses:
        '200':
          description: The updated task.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutateTaskResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    VendorAcceptanceStatus:
      type:
      - string
      - 'null'
      enum:
      - PENDING
      - ACCEPTED
      - REJECTED
      - null
    CreateTaskRequest:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          example: Replace bathroom light bulb
        departmentId:
          type: string
          format: uuid
          example: 33333333-3333-4333-8333-333333333333
          description: Department that owns the task.
        description:
          type:
          - string
          - 'null'
        propertyId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        propertyName:
          type: string
          minLength: 1
        propertyElementId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        priority:
          $ref: '#/components/schemas/Priority'
        scheduledDate:
          type:
          - string
          - 'null'
          format: date
          pattern: ^\d{4}-\d{2}-\d{2}$
          example: '2026-05-22'
        scheduledTime:
          type:
          - string
          - 'null'
          pattern: ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$
          example: '10:30:00'
        estimatedDurationMinutes:
          type:
          - integer
          - 'null'
          minimum: 0
        reservationId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        contactId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        pendingUntil:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        parentTaskId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        templateId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        templateVariables:
          $ref: '#/components/schemas/TaskTemplateVariables'
        source:
          $ref: '#/components/schemas/TaskSource'
        sourceTagId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        sourceTagName:
          type:
          - string
          - 'null'
          minLength: 1
        isIssue:
          type: boolean
        isPublished:
          type: boolean
        vendorAcceptanceStatus:
          $ref: '#/components/schemas/VendorAcceptanceStatus'
        conversationId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        triggerSourceId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        triggerSourceType:
          type:
          - string
          - 'null'
          minLength: 1
        schedulingTiming:
          type:
          - string
          - 'null'
          minLength: 1
        schedulingTimingOffset:
          type:
          - integer
          - 'null'
        pmWorkspaceId:
          type:
          - string
          - 'null'
          minLength: 1
        createdByAgentId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        aiProvenance: {}
        primaryUserId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        primaryVendorOrgId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        additionalPrimaryIds:
          type: array
          items:
            type: string
            format: uuid
            example: 11111111-1111-4111-8111-111111111111
        secondaryAssigneeIds:
          type: array
          items:
            type: string
            format: uuid
            example: 11111111-1111-4111-8111-111111111111
        tagIds:
          type: array
          items:
            type: string
            format: uuid
            example: 11111111-1111-4111-8111-111111111111
        skillIds:
          type: array
          items:
            type: string
            format: uuid
            example: 11111111-1111-4111-8111-111111111111
        useDefaultAssignees:
          type: boolean
        allowInactive:
          type: boolean
      required:
      - title
      - departmentId
    GetTaskResponse:
      type: object
      properties:
        task:
          $ref: '#/components/schemas/Task'
      required:
      - task
    DailyWorkOrderCostItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        amount:
          type: number
          example: 35.5
        currency:
          type: string
          minLength: 1
          example: EUR
        description:
          type:
          - string
          - 'null'
          example: Replacement bulb and labor
        billToType:
          $ref: '#/components/schemas/BillToType'
        billToId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        claimId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        categoryId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        categoryName:
          type:
          - string
          - 'null'
          example: Maintenance materials
        notes:
          type:
          - string
          - 'null'
      required:
      - id
      - amount
      - currency
      - description
      - billToType
      - billToId
      - claimId
      - categoryId
      - categoryName
      - notes
    Task:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        shortId:
          type: string
          example: TK-1234
        workspaceId:
          type: string
          minLength: 1
          example: haven-vacation-rentals
        propertyId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        propertyElementId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        reservationId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        externalId:
          type:
          - string
          - 'null'
          example: bw-task-12345
        externalProviderId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        integrationId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        departmentId:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        title:
          type: string
          example: Replace bathroom light bulb
        description:
          type:
          - string
          - 'null'
          example: Guest reported flickering light.
        status:
          $ref: '#/components/schemas/TaskStatus'
        priority:
          $ref: '#/components/schemas/Priority'
        source:
          $ref: '#/components/schemas/TaskSource'
        sourceTagId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        isIssue:
          type: boolean
          example: true
        scheduledDate:
          type:
          - string
          - 'null'
          format: date
          pattern: ^\d{4}-\d{2}-\d{2}$
          example: '2026-05-22'
        scheduledTime:
          type:
          - string
          - 'null'
          pattern: ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$
          example: '10:30:00'
        estimatedDurationMinutes:
          type:
          - integer
          - 'null'
          example: 45
        sortOrder:
          type: integer
          example: 0
        startedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        completedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        completedBy:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        pmWorkspaceId:
          type:
          - string
          - 'null'
          example: haven-vendor-partner
        claimedBy:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        claimedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        vendorAcceptanceStatus:
          $ref: '#/components/schemas/VendorAcceptanceStatus'
        vendorRejectionReason:
          type:
          - string
          - 'null'
        isPublished:
          type: boolean
          example: false
        projectId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        templateId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        createdByAgentId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        triggerSourceType:
          type:
          - string
          - 'null'
          example: reservation
        triggerSourceId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        aiProvenance:
          description: AI provenance metadata attached to tasks created or enriched by agents.
        conversationId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        contactId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        pendingUntil:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        parentTaskId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        schedulingTiming:
          type:
          - string
          - 'null'
          example: ON_CHECKOUT
        schedulingTimingOffset:
          type:
          - integer
          - 'null'
          example: 1
        summary:
          type:
          - string
          - 'null'
          example: Bulb replaced and tested.
        billableToOwner:
          type: boolean
          example: false
        cost:
          type:
          - number
          - 'null'
          example: 35.5
        costCurrency:
          type: string
          example: EUR
        isNoCharge:
          type: boolean
          example: false
        customFields:
          type: object
          additionalProperties: {}
          description: Workspace-specific task fields configured in Trellis.
        bwStatus:
          type:
          - string
          - 'null'
          example: finished
        bwWebhookWrittenAt:
          type:
          - string
          - 'null'
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        syncStatus:
          type: string
          example: PENDING
        syncError:
          type:
          - string
          - 'null'
        isClosed:
          type: boolean
          example: false
        createdBy:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        createdAt:
          type: string
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        updatedAt:
          type: string
          format: date-time
          example: '2026-05-22T17:00:00.000Z'
        property:
          $ref: '#/components/schemas/TaskRelatedProperty'
        department:
          $ref: '#/components/schemas/TaskDepartment'
        costItems:
          type: array
          items:
            $ref: '#/components/schemas/TaskCostItem'
        assignees:
          type: array
          items:
            $ref: '#/components/schema

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/trellistech/refs/heads/main/openapi/trellistech-tasks-api-openapi.yml