Skip to content

Replace task planned work asynchronously

PUT
/tasks/{id}/planned-work
curl --request PUT \
--url https://api.de.teamgrid.app/v1/tasks/example/planned-work \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'If-Match: example' \
--data '{ "dayLoads": [ 1 ], "plannedEnd": "2026-04-15T12:00:00Z", "plannedStart": "2026-04-15T12:00:00Z" }'

Atomically compares the strong task schedule revision and accepts a credential-owned asynchronous replacement. The same Idempotency-Key and payload replay the original operation; a different payload conflicts.

id
required
string
>= 1 characters <= 128 characters
If-Match
required
string
/^"pw1-[a-f0-9]{64}"$/

Exactly one strong ETag returned by the latest task planned-work GET. Wildcards, weak validators, and lists are rejected.

Idempotency-Key
required
string
>= 1 characters <= 128 characters /^[!-~]+$/

Unique request key retained for seven days. Within that window, reuse with different data is rejected.

Media typeapplication/json
object
dayLoads
required
Array<number>
<= 366 items
plannedEnd
required
string format: date-time
plannedStart
required
string format: date-time
Examplegenerated
{
"dayLoads": [
1
],
"plannedEnd": "2026-04-15T12:00:00Z",
"plannedStart": "2026-04-15T12:00:00Z"
}

The asynchronous schedule replacement was accepted or replayed.

Media typeapplication/json
object
data
required
object
attributes
required
object
attempts
required
integer
createdAt
required
string format: date-time
error
object
code
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_.-]+$/
message
required
string
>= 1 characters <= 500 characters
finishedAt
string format: date-time
plannedEnd
required
string format: date-time
plannedStart
required
string format: date-time
projectId
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_-]+$/
sourceRevision
required
string
/^pw1-[a-f0-9]{64}$/
state
required
string
Allowed values: failed pending running succeeded
targetRevision
required
string
/^pw1-[a-f0-9]{64}$/
taskId
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_-]+$/
updatedAt
required
string format: date-time
userId
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_-]+$/
id
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_-]+$/
type
required
string
Allowed value: plannedWorkOperation
meta
required
object
requestId
required
string
Example
{
"data": {
"attributes": {
"state": "failed"
},
"type": "plannedWorkOperation"
}
}
Idempotency-Replayed
string
Allowed values: false true

Whether this response replays the operation created for this key.

Location
string format: uri-reference

Relative credential-owned polling URL for this operation.

The request is invalid.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

The bearer credential is missing, invalid, expired, or revoked.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

The credential has insufficient scope.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

The tenant-scoped resource does not exist.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

The request conflicts with the current resource state.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

The resource changed since the supplied revision.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

A strong If-Match revision is required.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

The credential or source exceeded its rate limit.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}
Retry-After
integer
>= 1

Minimum delay in seconds before retrying.

X-RateLimit-Limit
integer

Maximum requests in the current window.

X-RateLimit-Remaining
integer

Requests remaining in the current window.

X-RateLimit-Reset
integer

Unix time in milliseconds when the current window resets.

X-Request-Id
string

Request correlation identifier.

The cell-local application returned an invalid response.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}

A required cell-local dependency is unavailable.

Media typeapplication/json
object
errors
required
Array<object>
object
code
required
string
detail
required
string
source
object
key
additional properties
string
status
required
string
/^[1-5][0-9]{2}$/
title
required
string
meta
required
object
requestId
required
string
Examplegenerated
{
"errors": [
{
"code": "example",
"detail": "example",
"source": {
"additionalProperty": "example"
},
"status": "example",
"title": "example"
}
],
"meta": {
"requestId": "example"
}
}