Trellis tasks API

Trellis task contracts generated from Hono/Zod schemas.

Operations 7

GET /api/v1/workspaces/{workspaceId}/tasks List tasks
POST /api/v1/workspaces/{workspaceId}/tasks Create a task
GET /api/v1/workspaces/{workspaceId}/tasks/daily-work-orders List daily work orders and costs
GET /api/v1/workspaces/{workspaceId}/tasks/{taskId} Get a task
PUT /api/v1/workspaces/{workspaceId}/tasks/{taskId} Replace task fields
DELETE /api/v1/workspaces/{workspaceId}/tasks/{taskId} Delete a task
PATCH /api/v1/workspaces/{workspaceId}/tasks/{taskId} Update a task

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/trellistech-tasks-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

trellistech-tasks-api-openapi.yml Raw ↑
openapi: 3.2.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:
    TaskAssignee:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        role:
          $ref: '#/components/schemas/AssigneeRole'
        type:
          $ref: '#/components/schemas/TaskAssigneeType'
        userId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        vendorOrgId:
          type:
          - string
          - 'null'
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        name:
          type:
          - string
          - 'null'
          example: Ari Operator
      required:
      - id
      - role
      - type
      - userId
      - vendorOrgId
      - name
    ApiError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        details: {}
      required:
      - error
    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/schemas/TaskAssignee'
      required:
      - id
      - shortId
      - workspaceId
      - propertyId
      - propertyElementId
      - reservationId
      - externalId
      - externalProviderId
      - integrationId
      - departmentId
      - title
      - description
      - status
      - priority
      - source
      - sourceTagId
      - isIssue
      - scheduledDate
      - scheduledTime
      - estimatedDurationMinutes
      - sortOrder
      - startedAt
      - completedAt
      - completedBy
      - pmWorkspaceId
      - claimedBy
      - claimedAt
      - vendorAcceptanceStatus
      - vendorRejectionReason
      - isPublished
      - projectId
      - templateId
      - createdByAgentId
      - triggerSourceType
      - triggerSourceId
      - conversationId
      - contactId
      - pendingUntil
      - parentTaskId
      - schedulingTiming
      - schedulingTimingOffset
      - summary
      - billableToOwner
      - cost
      - costCurrency
      - isNoCharge
      - customFields
      - bwStatus
      - bwWebhookWrittenAt
      - syncStatus
      - syncError
      - isClosed
      - createdBy
      - createdAt
      - updatedAt
      - property
      - department
    TaskStatus:
      type: string
      enum:
      - OPEN
      - CREATED
      - DRAFT
      - DRAFTED
      - SCHEDULED
      - IN_PROGRESS
      - FINISHED
      - CLOSED
      - PENDING_APPROVAL
      - REQUEST_APPROVED
      - REQUEST_REJECTED
      - COMPLETED
    BillToType:
      type: string
      enum:
      - COMPANY
      - PROPERTY
    TaskDepartment:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        name:
          type: string
          example: Maintenance
        slug:
          type: string
          example: maintenance
      required:
      - id
      - name
      - slug
    GetTaskResponse:
      type: object
      properties:
        task:
          $ref: '#/components/schemas/Task'
      required:
      - task
    DailyWorkOrder:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 11111111-1111-4111-8111-111111111111
        shortId:
          type: string
          example: TK-1234
        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'
        property:
          $ref: '#/components/schemas/TaskRelatedProperty'
        department:
          $ref: '#/components/schemas/TaskDepartment'
        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
        billableToOwner:
          type: boolean
          example: false
        cost:
          type:
          - number
          - 'null'
          example: 35.5
        costCurrency:
          type: string
          minLength: 1
          example: EUR
        isNoCharge:
          type: boolean
          example: false
        costItems:
          type: array
          items:
            $ref: '#/components/schemas/DailyWorkOrderCostItem'
        assignees:
          type: array
          items:
            $ref: '#/components/schemas/DailyWorkOrderAssignee'
      required:
      - id
      - shortId
      - title
      - description
      - status
      - priority
      - property
      - department
      - scheduledDate
      - scheduledTime
      - estimatedDurationMinutes
      - billableToOwner
      - cost
      - costCurrency
      - isNoCharge
      - costItems
      - assignees
    DailyWorkOrderAssigneeType:
      type: string
      enum:
      - USER
      - VENDOR
    ListTasksResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Task'
        pagination:
          $ref: '#/components/schemas/PaginationMeta'
      required:
      - items
      - pagination
    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: '#/component

# --- 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