---
title: "Get"
method: GET
path: "/operations/operations_tasks/v1/{task_id}"
tags: ["/operations/operations_tasks"]
---

# Get

`GET /operations/operations_tasks/v1/{task_id}`

Retrieves a single OperationsTask by id. | authz: min_org_role=operator | () -> (OperationsTask1)

## Path parameters

- `task_id` string, required

## Response `200`

Successful Response

- OperationsTask1
  - `schema_version` 1, required
  - `order_id` string, required
  - `task_type` 'review_order_details' | 'flight_check' | 'facility_check' | 'weather_check' | 'book_cargo' | 'track_and_verify' | 'contact_customer' | 'contact_agent' | 'contact_airline' | 'contact_other' | 'finalize_billing' | 'custom' | 'other', required — Coarse functional buckets a dispatcher batch-processes (powers the per-type functional-queue index). Granular SOP specifics live in the Task's `title`/`description`, not here. Ordered roughly along the shipment lifecycle (review -> research -> book -> track/verify -> contact -> billing). The buckets are the distinct *modes of work* an operator sits down and batches; the exact SOP step (e.g. "Send Shipping Label", "CBC Call", "Get Pack Time") is captured in the title. Contact is split by *who* (customer, agent, airline, other), not by *channel* (call vs. email) — the recipient is what a dispatcher batches around, and the channel is captured in title/description detail.
  - `title` string, required
  - `description` string, required
  - `deadline_timestamp` string, date-time
  - `assigned_user_ids` string[]
  - `_id` string, required
  - `order_short_id` string, required
  - `order_off_chrt_reference_id` string, nullable — Must be a URL-safe string of 1-64 characters. Allowed characters: A-Z, a-z, 0-9, '.', '_', '~', '-' (RFC 3986 unreserved).
  - `org_id` string, required — Must be a string starting with `org_`
  - `department_id` string, nullable
  - `source_task_list_id` string, nullable
  - `status` 'not_started' | 'in_progress' | 'completed' | 'skipped' | 'cancelled' — Operator-driven lifecycle of an operations task. Manually driven by operators for now (no automatic transitions). Kept structurally parallel to the Check status model in anticipation of the eventual Task <-> Check merge.
  - `completed_at_timestamp` string, date-time, nullable
  - `completed_by_user_id` string, nullable — Must be a string starting with `user_`
  - `comments` OperationsTaskComment1[]
    - `id` string
    - `comment` string, required
    - `user_id` string, required — Must be a string starting with `user_`
    - `timestamp` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/chrt/apis/chrt-fastapi.md) · [All operations](https://skmtc.dev/chrt/apis/chrt-fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/chrt/chrt-fastapi/revisions/ea04e157edb3/schema)
