---
title: "Updates an existing Task Order (TO)"
method: PUT
path: "/portfolios/{portfolioId}/task-orders/{taskOrderId}"
tags: ["provisioning"]
---

# Updates an existing Task Order (TO)

`PUT /portfolios/{portfolioId}/task-orders/{taskOrderId}`

Updates an existing Task Order (TO)

## Request body

- TaskOrder — A Task Order and CLINs used to pay for provisioned resources and services
  - `id` string, required — Represents the unique ID of a Task Order. Must be defined by CSPs upon object creation.
  - `task_order_number` string, required — Represents the current Task Order Number. Subject to change over the lifetime of a Task Order. Should be considered metadata rather than a primary key (use the `id` instead).
  - `clins` CLIN[], required
    - `clin_number` string, required — Contract Line Item Number (CLIN), 0001 through 9999
    - `type` 'CLOUD' | 'NON_CLOUD', required — Distinguishes a "CLOUD" CLIN, which directly funds cloud workloads, from "NON_CLOUD" CLINs, which do not.
    - `classification_level` 'UNCLASSIFIED' | 'SECRET' | 'TOP_SECRET' — Represents the classification level for this environment. Attempts to change this field via PUT or PATCH should result in a HTTP 400.
    - `pop_start_date` string, date, required — Start of period of performance for this CLIN in YYYY-MM-DD format.
    - `pop_end_date` string, date, required — End of period of performance for this CLIN in YYYY-MM-DD format.
  - `pop_start_date` string, date, required — Start of period of performance for this Task Order in YYYY-MM-DD format.
  - `pop_end_date` string, date, required — End of period of performance for this Task Order in YYYY-MM-DD format.

## Response `200`

Successful operation

- TaskOrder — A Task Order and CLINs used to pay for provisioned resources and services
  - `id` string, required — Represents the unique ID of a Task Order. Must be defined by CSPs upon object creation.
  - `task_order_number` string, required — Represents the current Task Order Number. Subject to change over the lifetime of a Task Order. Should be considered metadata rather than a primary key (use the `id` instead).
  - `clins` CLIN[], required
    - `clin_number` string, required — Contract Line Item Number (CLIN), 0001 through 9999
    - `type` 'CLOUD' | 'NON_CLOUD', required — Distinguishes a "CLOUD" CLIN, which directly funds cloud workloads, from "NON_CLOUD" CLINs, which do not.
    - `classification_level` 'UNCLASSIFIED' | 'SECRET' | 'TOP_SECRET' — Represents the classification level for this environment. Attempts to change this field via PUT or PATCH should result in a HTTP 400.
    - `pop_start_date` string, date, required — Start of period of performance for this CLIN in YYYY-MM-DD format.
    - `pop_end_date` string, date, required — End of period of performance for this CLIN in YYYY-MM-DD format.
  - `pop_start_date` string, date, required — Start of period of performance for this Task Order in YYYY-MM-DD format.
  - `pop_end_date` string, date, required — End of period of performance for this Task Order in YYYY-MM-DD format.

## Other responses

- `400` — Invalid ID supplied
- `404` — Portfolio or Task Order not found
- `405` — Not ready to provision

---

[API](https://skmtc.net/dod-ccpo/apis/atat-csp-api.md) · [All operations](https://skmtc.net/dod-ccpo/apis/atat-csp-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dod-ccpo/atat-csp-api/versions/22014acb308f/schema)
