RoadOpsDeveloper

Tasks

Ask

List my tasks

GET/v1/teams/{teamId}/tasks

Lists Tasks assigned to the current user across visible days, including older overdue Tasks. Completion is checked against the current task projection, not stale assignment-index state. A filtered result may be empty with a continuation cursor. Continue with page.nextCursor until it is null, keeping the same filters.

Required scopes: task:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

query.limitinteger

Maximum number of records to return. Defaults to 50 and is capped at 200.

query.cursorstring

Cursor returned by page.nextCursor from the previous list response.

query.includeCompletedboolean

Include completed tasks. Defaults to false.

Response 200

dataobject[]
data[].idstring:uuid

Task identifier.

data[].orgIdstring:uuid

Organization identifier.

data[].dayIdstring:uuid

Immutable associated RoadOps Day identifier.

data[].titlestring

Task title.

data[].descriptionstring

Optional Task description.

data[].colorstring

Optional Task display color token.

data[].priority"highest" | "high" | "medium" | "low" | "lowest"

Task priority from highest to lowest.

data[].sortOrderinteger

Shared custom order within a Day, ascending. Unordered tasks follow ordered tasks; ties use title then ID. Completed tasks remain last. Requires tasks:manage-all to change.

data[].categoryIdstring:uuid

Optional organization Task category identifier.

data[].statusId"todo" | "doing" | "waiting" | "done" | string:uuid

Built-in Task status ID or custom Task status UUID.

data[].canonicalState"todo" | "doing" | "waiting" | "done"

Normalized Task workflow state used for filtering and completion behavior.

data[].assigneeIdsstring:uuid[]

RoadOps user IDs assigned to the Task.

data[].dueDatestring:date

Optional due date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone. Independent of the associated Day.

data[].reminderobject

Optional reminder resolved in an IANA timezone.

data[].reminder.datestring:date

Local reminder date in YYYY-MM-DD format, such as 2026-09-12.

data[].reminder.timestring

Local reminder time in 24-hour HH:mm format, such as 09:00.

data[].reminder.timezonestring

IANA timezone used to resolve the reminder.

data[].reminder.reminderAtstring:date-time

Derived UTC reminder timestamp.

data[].createdBystring:uuid

RoadOps user ID that created the Task.

data[].createdAtstring:date-time

UTC Task creation timestamp.

data[].updatedAtstring:date-time

UTC timestamp of the latest Task change.

data[].completedAtstring:date-time

UTC completion timestamp when the Task is done.

data[].completedBystring:uuid

RoadOps user ID that completed the Task.

data[].isDeletedboolean

Soft-delete flag.

data[].versioninteger

Current Task aggregate version.

data[].cursorinteger

Latest cursor projected into this Task.

pageobject
page.limitinteger

Maximum number of records returned in this page.

page.nextCursorstring | null

Cursor to pass as the next request's cursor query parameter, or null when there are no more results.

metaobject
meta.cursornumber | null

List tasks

GET/v1/teams/{teamId}/days/{dayId}/tasks

Lists visible Tasks associated with a RoadOps Day. Callers without Task Manage All receive only Tasks assigned to them.

Required scopes: task:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

query.limitinteger

Maximum number of records to return. Defaults to 50 and is capped at 200.

query.cursorstring

Cursor returned by page.nextCursor from the previous list response.

Response 200

dataobject[]
data[].idstring:uuid

Task identifier.

data[].orgIdstring:uuid

Organization identifier.

data[].dayIdstring:uuid

Immutable associated RoadOps Day identifier.

data[].titlestring

Task title.

data[].descriptionstring

Optional Task description.

data[].colorstring

Optional Task display color token.

data[].priority"highest" | "high" | "medium" | "low" | "lowest"

Task priority from highest to lowest.

data[].sortOrderinteger

Shared custom order within a Day, ascending. Unordered tasks follow ordered tasks; ties use title then ID. Completed tasks remain last. Requires tasks:manage-all to change.

data[].categoryIdstring:uuid

Optional organization Task category identifier.

data[].statusId"todo" | "doing" | "waiting" | "done" | string:uuid

Built-in Task status ID or custom Task status UUID.

data[].canonicalState"todo" | "doing" | "waiting" | "done"

Normalized Task workflow state used for filtering and completion behavior.

data[].assigneeIdsstring:uuid[]

RoadOps user IDs assigned to the Task.

data[].dueDatestring:date

Optional due date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone. Independent of the associated Day.

data[].reminderobject

Optional reminder resolved in an IANA timezone.

data[].reminder.datestring:date

Local reminder date in YYYY-MM-DD format, such as 2026-09-12.

data[].reminder.timestring

Local reminder time in 24-hour HH:mm format, such as 09:00.

data[].reminder.timezonestring

IANA timezone used to resolve the reminder.

data[].reminder.reminderAtstring:date-time

Derived UTC reminder timestamp.

data[].createdBystring:uuid

RoadOps user ID that created the Task.

data[].createdAtstring:date-time

UTC Task creation timestamp.

data[].updatedAtstring:date-time

UTC timestamp of the latest Task change.

data[].completedAtstring:date-time

UTC completion timestamp when the Task is done.

data[].completedBystring:uuid

RoadOps user ID that completed the Task.

data[].isDeletedboolean

Soft-delete flag.

data[].versioninteger

Current Task aggregate version.

data[].cursorinteger

Latest cursor projected into this Task.

pageobject
page.limitinteger

Maximum number of records returned in this page.

page.nextCursorstring | null

Cursor to pass as the next request's cursor query parameter, or null when there are no more results.

metaobject
meta.cursornumber | null

Create a task

POST/v1/teams/{teamId}/days/{dayId}/tasks

Creates a Task. Callers without Task Manage All may assign only themselves.

Required scopes: task:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

idstring:uuid

Optional caller-supplied Task ID.

titlerequiredstring

Task title.

descriptionstring

Optional Task description.

colorstring

Optional Task display color token.

priorityrequired"highest" | "high" | "medium" | "low" | "lowest"

Task priority from highest to lowest.

sortOrderinteger

Shared custom order within a Day, ascending. Unordered tasks follow ordered tasks; ties use title then ID. Completed tasks remain last. Requires tasks:manage-all to change.

categoryIdstring:uuid

Optional organization Task category identifier.

statusIdrequired"todo" | "doing" | "waiting" | "done" | string:uuid

Built-in Task status ID or custom Task status UUID.

assigneeIdsrequiredstring:uuid[]

RoadOps user IDs assigned to the Task.

dueDatestring:date

Optional due date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone. Independent of the associated Day.

reminderobject

Optional reminder. When supplied, date, time, and timezone are all required.

reminder.daterequiredstring:date

Local calendar date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone.

reminder.timerequiredstring

Local time in 24-hour HH:mm format.

reminder.timezonerequiredstring

IANA timezone identifier, such as America/New_York or UTC.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Retrieve a task

GET/v1/teams/{teamId}/days/{dayId}/tasks/{taskId}

Returns one visible Task.

Required scopes: task:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

path.taskIdrequiredstring:uuid

Task identifier.

Response 200

dataobject
data.idstring:uuid

Task identifier.

data.orgIdstring:uuid

Organization identifier.

data.dayIdstring:uuid

Immutable associated RoadOps Day identifier.

data.titlestring

Task title.

data.descriptionstring

Optional Task description.

data.colorstring

Optional Task display color token.

data.priority"highest" | "high" | "medium" | "low" | "lowest"

Task priority from highest to lowest.

data.sortOrderinteger

Shared custom order within a Day, ascending. Unordered tasks follow ordered tasks; ties use title then ID. Completed tasks remain last. Requires tasks:manage-all to change.

data.categoryIdstring:uuid

Optional organization Task category identifier.

data.statusId"todo" | "doing" | "waiting" | "done" | string:uuid

Built-in Task status ID or custom Task status UUID.

data.canonicalState"todo" | "doing" | "waiting" | "done"

Normalized Task workflow state used for filtering and completion behavior.

data.assigneeIdsstring:uuid[]

RoadOps user IDs assigned to the Task.

data.dueDatestring:date

Optional due date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone. Independent of the associated Day.

data.reminderobject

Optional reminder resolved in an IANA timezone.

data.reminder.datestring:date

Local reminder date in YYYY-MM-DD format, such as 2026-09-12.

data.reminder.timestring

Local reminder time in 24-hour HH:mm format, such as 09:00.

data.reminder.timezonestring

IANA timezone used to resolve the reminder.

data.reminder.reminderAtstring:date-time

Derived UTC reminder timestamp.

data.createdBystring:uuid

RoadOps user ID that created the Task.

data.createdAtstring:date-time

UTC Task creation timestamp.

data.updatedAtstring:date-time

UTC timestamp of the latest Task change.

data.completedAtstring:date-time

UTC completion timestamp when the Task is done.

data.completedBystring:uuid

RoadOps user ID that completed the Task.

data.isDeletedboolean

Soft-delete flag.

data.versioninteger

Current Task aggregate version.

data.cursorinteger

Latest cursor projected into this Task.

metaobject
meta.cursorinteger

Update a task

PATCH/v1/teams/{teamId}/days/{dayId}/tasks/{taskId}

Updates editable Task fields.

Required scopes: task:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

path.taskIdrequiredstring:uuid

Task identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

expectedVersioninteger

Optional aggregate version guard.

updatesrequiredobject
updates.titlestring

Task title.

updates.descriptionstring | null

Updated description, or null to clear it.

updates.colorstring | null

Updated color, or null to clear it.

updates.priority"highest" | "high" | "medium" | "low" | "lowest"

Task priority from highest to lowest.

updates.sortOrderinteger

Shared custom order within a Day, ascending. Unordered tasks follow ordered tasks; ties use title then ID. Completed tasks remain last. Requires tasks:manage-all to change.

updates.categoryIdstring:uuid

Updated category, or null to clear it.

updates.dueDatestring:date

Updated due date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone. Send null to clear it.

updates.reminderobject | null

Updated local reminder fields, or null to clear the reminder.

updates.reminder.daterequiredstring:date

Local calendar date in YYYY-MM-DD format, such as 2026-09-12; no time or timezone.

updates.reminder.timerequiredstring

Local time in 24-hour HH:mm format.

updates.reminder.timezonerequiredstring

IANA timezone identifier, such as America/New_York or UTC.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Delete a task

DELETE/v1/teams/{teamId}/days/{dayId}/tasks/{taskId}

Deletes a Task.

Required scopes: task:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

path.taskIdrequiredstring:uuid

Task identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Change task status

POST/v1/teams/{teamId}/days/{dayId}/tasks/{taskId}/status

Changes the core or custom status of a Task.

Required scopes: task:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

path.taskIdrequiredstring:uuid

Task identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

expectedVersioninteger
statusIdrequired"todo" | "doing" | "waiting" | "done" | string:uuid

Built-in Task status ID or custom Task status UUID.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Replace task assignees

POST/v1/teams/{teamId}/days/{dayId}/tasks/{taskId}/assignees

Replaces Task assignees. Team Task Manage All permission is required.

Required scopes: task:write

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

path.taskIdrequiredstring:uuid

Task identifier.

header.Idempotency-Keystring:uuid

Optional caller-generated UUID used to make mutation retries safe. Reuse the same UUID only when retrying the same request.

Request body (application/json)

expectedVersioninteger
assigneeIdsrequiredstring:uuid[]

RoadOps user IDs assigned to the Task.

Response 202

commandIdstring:uuid

Command identifier accepted into the RoadOps command ledger.

resourceIdstring:uuid

Identifier of the resource targeted by the command.

resourceTypestring

Resource type targeted by the command.

status"applied"

Command dispatch status.

aggregateVersioninteger

Aggregate version produced by the accepted command.

cursorinteger

Cursor for the accepted update. Refetch until returned records reach this cursor.

linksobject
links.refetchstring

Relative URL to refetch the affected resource.

Get task activity

GET/v1/teams/{teamId}/days/{dayId}/tasks/{taskId}/activity

Returns paginated EventLedger activity for a visible Task, including notes, subtasks, and attachments.

Required scopes: task:read

Parameters

path.teamIdrequiredstring:uuid

Team identifier.

path.dayIdrequiredstring:uuid

Day identifier.

path.taskIdrequiredstring:uuid

Task identifier.

query.limitinteger

Maximum number of records to return. Defaults to 50 and is capped at 200.

query.cursorstring

Cursor returned by page.nextCursor from the previous list response.

Response 200

dataobject[]
data[].typestring
data[].aggregateVersioninteger
data[].globalPositioninteger
data[].timestampstring:date-time
data[].createdBystring
data[].detailsobject
pageobject
page.limitinteger

Maximum number of records returned in this page.

page.nextCursorstring | null

Cursor to pass as the next request's cursor query parameter, or null when there are no more results.