changedInput schema / properties / ops / items / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "activityTypeId": {
- "description": "The activity type id. null or omitted leaves it unset.",
- "type": [
- "string",
- "null"
- ]
- },
- "areaId": {
- "description": "The area id. null or omitted leaves it unset.",
- "type": [
- "string",
- "null"
- ]
- },
- "calendarId": {
- "anyOf": [
- {
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The Source of each item: a writable task list to also create the item in, as an `id` from `get_schedule` `integrations.sources[].calendars[]` of a task source. null keeps the items in Reassign only. Omit it to use the account default (`defaultCalendarId`), which creates the task when it is a task list. On `capture_text`, an item goes to a list that the text explicitly names (\"add to Todoist Work: …\") instead."
- },
- "checklist": {
- "additionalProperties": false,
- "description": "The block's microtasks, in order — REPLACES the whole list (send every item you want kept; an empty `items` clears them). An Inbox block has no occurrence, so nothing is ticked off until it is scheduled.",
- "properties": {
- "items": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "id": {
- "description": "Keep an item id from a read; omit for a new item.",
- "type": "string"
- },
- "text": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "type": "array"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "durationMinutes": {
- "description": "Estimated length in whole minutes, 5 to 1440. Sizes the block when placed.",
- "maximum": 1440,
- "minimum": 5,
- "type": "integer"
- },
- "enrich": {
- "description": "Let AI clean this capture up before it is saved: propose a better name, estimate durationMinutes, and copy out any microtasks the captured text spells out. For RAW captures only — text grabbed off a web page, where the name is a paragraph rather than an intention. Do NOT set it for something the user typed or dictated: it may RENAME the block, and a name they chose must stand. Fields you send yourself always win; only the name can be replaced.",
- "type": "boolean"
- },
- "kind": {
- "description": "The kind the event takes when scheduled: \"blocking\" occupies time, \"non_blocking\" is an overlay that may overlap others, \"reference\" is something to see but not do. Omit for \"blocking\".",
- "enum": [
- "blocking",
- "non_blocking",
- "reference"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "notes": {
- "maxLength": 2000,
- "type": "string"
- },
- "op": {
- "const": "capture",
- "type": "string"
- },
- "plannedDate": {
- "description": "The day this intention is planned for (still untimed — placing it on the dial is a separate `schedule`). Groups it under that day in the tray.",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "plannedUntil": {
- "description": "Inclusive end of a planned window; it must fall after plannedDate.",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "sourceUrl": {
- "description": "Where this was captured from — the http(s) page address. Shown as a source chip; never parsed. Set it only for something grabbed off a real page, not for an intention the user typed.",
- "maxLength": 2048,
- "type": "string"
- }
- },
- "required": [
- "op",
- "name"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "activityTypeId": {
- "description": "The activity type id. null or omitted leaves it unset.",
- "type": [
- "string",
- "null"
- ]
- },
- "areaId": {
- "description": "The area id. null or omitted leaves it unset.",
- "type": [
- "string",
- "null"
- ]
- },
- "calendarId": {
- "anyOf": [
- {
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The Source of each item: a writable task list to also create the item in, as an `id` from `get_schedule` `integrations.sources[].calendars[]` of a task source. null keeps the items in Reassign only. Omit it to use the account default (`defaultCalendarId`), which creates the task when it is a task list. On `capture_text`, an item goes to a list that the text explicitly names (\"add to Todoist Work: …\") instead."
- },
- "durationMinutes": {
- "description": "A length for every item. Omit it to keep the AI estimate; send it only when the user chose one.",
- "maximum": 1440,
- "minimum": 5,
- "type": "integer"
- },
- "kind": {
- "description": "The kind the event takes when scheduled: \"blocking\" occupies time, \"non_blocking\" is an overlay that may overlap others, \"reference\" is something to see but not do. Omit for \"blocking\".",
- "enum": [
- "blocking",
- "non_blocking",
- "reference"
- ],
- "type": "string"
- },
- "notes": {
- "description": "Notes added to every item.",
- "maxLength": 2000,
- "type": "string"
- },
- "op": {
- "const": "capture_text",
- "type": "string"
- },
- "plannedDate": {
- "description": "A planned day for every item. Omit it to keep the AI day.",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "plannedUntil": {
- "description": "Inclusive end of a planned window; it must fall after plannedDate.",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "sourceUrl": {
- "description": "Where this was captured from — the http(s) page address. Shown as a source chip; never parsed. Set it only for something grabbed off a real page, not for an intention the user typed.",
- "maxLength": 2048,
- "type": "string"
- },
- "text": {
- "description": "What the user typed, dictated or selected, as is. AI splits it into 1 to 10 Inbox items, each with a short name, notes, a length and a day when the text names one. Without the AI the first line is the name and the rest are notes.",
- "maxLength": 2000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "op",
- "text"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "activityTypeId": {
- "description": "The activity type id. null clears the link; omit to keep it.",
- "type": [
- "string",
- "null"
- ]
- },
- "areaId": {
- "description": "The area id. null clears the link; omit to keep it.",
- "type": [
- "string",
- "null"
- ]
- },
- "checklist": {
- "additionalProperties": false,
- "description": "The block's microtasks, in order — REPLACES the whole list (send every item you want kept; an empty `items` clears them). An Inbox block has no occurrence, so nothing is ticked off until it is scheduled.",
- "properties": {
- "items": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "id": {
- "description": "Keep an item id from a read; omit for a new item.",
- "type": "string"
- },
- "text": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "type": "array"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "durationMinutes": {
- "description": "Estimated length in whole minutes, 5 to 1440. Sizes the block when placed.",
- "maximum": 1440,
- "minimum": 5,
- "type": "integer"
- },
- "id": {
- "description": "The Inbox block id (from the schedule read's `backlog`).",
- "type": "string"
- },
- "kind": {
- "description": "The kind the event takes when scheduled: \"blocking\" occupies time, \"non_blocking\" is an overlay that may overlap others, \"reference\" is something to see but not do. Omit to keep it.",
- "enum": [
- "blocking",
- "non_blocking",
- "reference"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "notes": {
- "maxLength": 2000,
- "type": "string"
- },
- "op": {
- "const": "update",
- "type": "string"
- },
- "plannedDate": {
- "anyOf": [
- {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Set/move the block's planned day; null clears it back to Someday (also clears any window end). Google Tasks, Microsoft To Do and Linear sync this date both ways. Todoist dates must be changed in Todoist."
- },
- "plannedUntil": {
- "anyOf": [
- {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Inclusive end of a planned window; it must fall after plannedDate. null collapses the window to one day."
- },
- "sourceUrl": {
- "anyOf": [
- {
- "description": "Where this was captured from — the http(s) page address. Shown as a source chip; never parsed. Set it only for something grabbed off a real page, not for an intention the user typed.",
- "maxLength": 2048,
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Replace where this block was captured from (http(s)); null clears the source chip."
- }
- },
- "required": [
- "op",
- "id"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "id": {
- "description": "The Inbox block id to delete from the Inbox.",
- "type": "string"
- },
- "op": {
- "const": "remove",
- "type": "string"
- }
- },
- "required": [
- "op",
- "id"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "id": {
- "description": "The Inbox block id to place on the dial.",
- "type": "string"
- },
- "op": {
- "const": "schedule",
- "type": "string"
- },
- "recurrence": {
- "description": "Optionally make the placed block repeat, as an RRULE (e.g. \"FREQ=WEEKLY;BYDAY=MO,WE,FR\"). Omit for a one-off.",
- "type": "string"
- },
- "start": {
- "description": "Local start \"YYYY-MM-DDTHH:MM\"; the block's duration sizes it.",
- "pattern": "^(\\d{4}-\\d{2}-\\d{2})T([01]\\d|2[0-3]):([0-5]\\d)$",
- "type": "string"
- }
- },
- "required": [
- "op",
- "id",
- "start"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "id": {
- "description": "The dial event id to move to the Inbox (from a schedule or search read). Must be a native or owned-calendar one-off that hasn't been reviewed.",
- "type": "string"
- },
- "op": {
- "const": "park",
- "type": "string"
- }
- },
- "required": [
- "op",
- "id"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "activityTypeId": {
+ "description": "The activity type id. null or omitted leaves it unset.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "areaId": {
+ "description": "The area id. null or omitted leaves it unset.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "calendarId": {
+ "anyOf": [
+ {
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The Source of each item: a writable task list to also create the item in, as an `id` from `get_schedule` `integrations.sources[].calendars[]` of a task source. null keeps the items in Reassign only. Omit it to use the default list of the item's project, else the account default (`defaultCalendarId`), which creates the task when it is a task list. On `capture_text`, an item goes to a list that the text explicitly names (\"add to Todoist Work: …\") instead."
+ },
+ "checklist": {
+ "additionalProperties": false,
+ "description": "The block's microtasks, in order — REPLACES the whole list (send every item you want kept; an empty `items` clears them). An Inbox block has no occurrence, so nothing is ticked off until it is scheduled.",
+ "properties": {
+ "items": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "description": "Keep an item id from a read; omit for a new item.",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "type": "array"
+ }
+ },
+ "required": [
+ "items"
+ ],
+ "type": "object"
+ },
+ "durationMinutes": {
+ "description": "Estimated length in whole minutes, 5 to 1440. Sizes the block when placed.",
+ "maximum": 1440,
+ "minimum": 5,
+ "type": "integer"
+ },
+ "enrich": {
+ "description": "Let AI clean this capture up before it is saved: propose a better name, estimate durationMinutes, and copy out any microtasks the captured text spells out. For RAW captures only — text grabbed off a web page, where the name is a paragraph rather than an intention. Do NOT set it for something the user typed or dictated: it may RENAME the block, and a name they chose must stand. Fields you send yourself always win; only the name can be replaced.",
+ "type": "boolean"
+ },
+ "kind": {
+ "description": "The kind the event takes when scheduled: \"blocking\" occupies time, \"non_blocking\" is an overlay that may overlap others, \"reference\" is something to see but not do. Omit for \"blocking\".",
+ "enum": [
+ "blocking",
+ "non_blocking",
+ "reference"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "notes": {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ "op": {
+ "const": "capture",
+ "type": "string"
+ },
+ "plannedDate": {
+ "description": "The day this intention is planned for (still untimed — placing it on the dial is a separate `schedule`). Groups it under that day in the tray.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "plannedUntil": {
+ "description": "Inclusive end of a planned window; it must fall after plannedDate.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "priority": {
+ "description": "0 none, 1 low, 2 medium, 3 high, 4 urgent. Omit for 0.",
+ "maximum": 4,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "projectId": {
+ "anyOf": [
+ {
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "A live project id from get_schedule `projects`. When the project changes and the op sets no areaId, the item takes the area of the project, also over an area the user set by hand. On an item linked to a task, the task stays when its list (or Linear project) feeds the new project; else it moves to the one target of that project in the same account (for Linear: open, in the issue team). With 2 or more lists it goes to the \"New tasks go to\" list of the project. Any other case, and a move of a scheduled task, is refused with read_only. A clear is never refused. null or omitted leaves it unset."
+ },
+ "sourceUrl": {
+ "description": "Where this was captured from — the http(s) page address. Shown as a source chip; never parsed. Set it only for something grabbed off a real page, not for an intention the user typed.",
+ "maxLength": 2048,
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "activityTypeId": {
+ "description": "The activity type id. null or omitted leaves it unset.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "areaId": {
+ "description": "The area id. null or omitted leaves it unset.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "calendarId": {
+ "anyOf": [
+ {
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The Source of each item: a writable task list to also create the item in, as an `id` from `get_schedule` `integrations.sources[].calendars[]` of a task source. null keeps the items in Reassign only. Omit it to use the default list of the item's project, else the account default (`defaultCalendarId`), which creates the task when it is a task list. On `capture_text`, an item goes to a list that the text explicitly names (\"add to Todoist Work: …\") instead."
+ },
+ "durationMinutes": {
+ "description": "A length for every item. Omit it to keep the AI estimate; send it only when the user chose one.",
+ "maximum": 1440,
+ "minimum": 5,
+ "type": "integer"
+ },
+ "kind": {
+ "description": "The kind the event takes when scheduled: \"blocking\" occupies time, \"non_blocking\" is an overlay that may overlap others, \"reference\" is something to see but not do. Omit for \"blocking\".",
+ "enum": [
+ "blocking",
+ "non_blocking",
+ "reference"
+ ],
+ "type": "string"
+ },
+ "notes": {
+ "description": "Notes added to every item.",
+ "maxLength": 2000,
+ "type": "string"
+ },
+ "op": {
+ "const": "capture_text",
+ "type": "string"
+ },
+ "plannedDate": {
+ "description": "A planned day for every item. Omit it to keep the AI day.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "plannedUntil": {
+ "description": "Inclusive end of a planned window; it must fall after plannedDate.",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "priority": {
+ "description": "A priority for every item: 0 none, 1 low, 2 medium, 3 high, 4 urgent.",
+ "maximum": 4,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "projectId": {
+ "anyOf": [
+ {
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "A live project id for every item. When the op sets no areaId, each item takes the area of the project. null or omitted leaves it unset."
+ },
+ "sourceUrl": {
+ "description": "Where this was captured from — the http(s) page address. Shown as a source chip; never parsed. Set it only for something grabbed off a real page, not for an intention the user typed.",
+ "maxLength": 2048,
+ "type": "string"
+ },
+ "text": {
+ "description": "What the user typed, dictated or selected, as is. AI splits it into 1 to 10 Inbox items, each with a short name, notes, a length and a day when the text names one. Without the AI the first line is the name and the rest are notes.",
+ "maxLength": 2000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "activityTypeId": {
+ "description": "The activity type id. null clears the link; omit to keep it.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "areaId": {
+ "description": "The area id. null clears the link; omit to keep it.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "checklist": {
+ "additionalProperties": false,
+ "description": "The block's microtasks, in order — REPLACES the whole list (send every item you want kept; an empty `items` clears them). An Inbox block has no occurrence, so nothing is ticked off until it is scheduled.",
+ "properties": {
+ "items": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "description": "Keep an item id from a read; omit for a new item.",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "type": "array"
+ }
+ },
+ "required": [
+ "items"
+ ],
+ "type": "object"
+ },
+ "durationMinutes": {
+ "description": "Estimated length in whole minutes, 5 to 1440. Sizes the block when placed.",
+ "maximum": 1440,
+ "minimum": 5,
+ "type": "integer"
+ },
+ "id": {
+ "description": "The Inbox block id (from the schedule read's `backlog`).",
+ "type": "string"
+ },
+ "kind": {
+ "description": "The kind the event takes when scheduled: \"blocking\" occupies time, \"non_blocking\" is an overlay that may overlap others, \"reference\" is something to see but not do. Omit to keep it.",
+ "enum": [
+ "blocking",
+ "non_blocking",
+ "reference"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "notes": {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ "op": {
+ "const": "update",
+ "type": "string"
+ },
+ "plannedDate": {
+ "anyOf": [
+ {
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Set/move the block's planned day; null clears it back to Someday (also clears any window end). Google Tasks, Microsoft To Do and Linear sync this date both ways. Todoist dates must be changed in Todoist."
+ },
+ "plannedUntil": {
+ "anyOf": [
+ {
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Inclusive end of a planned window; it must fall after plannedDate. null collapses the window to one day."
+ },
+ "priority": {
+ "description": "0 none, 1 low, 2 medium, 3 high, 4 urgent. Omit to keep it.",
+ "maximum": 4,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "projectId": {
+ "anyOf": [
+ {
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "A live project id from get_schedule `projects`. When the project changes and the op sets no areaId, the item takes the area of the project, also over an area the user set by hand. On an item linked to a task, the task stays when its list (or Linear project) feeds the new project; else it moves to the one target of that project in the same account (for Linear: open, in the issue team). With 2 or more lists it goes to the \"New tasks go to\" list of the project. Any other case, and a move of a scheduled task, is refused with read_only. A clear is never refused. null clears the project and keeps the area; omit to keep it."
+ },
+ "sourceUrl": {
+ "anyOf": [
+ {
+ "description": "Where this was captured from — the http(s) page address. Shown as a source chip; never parsed. Set it only for something grabbed off a real page, not for an intention the user typed.",
+ "maxLength": 2048,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Replace where this block was captured from (http(s)); null clears the source chip."
+ }
+ },
+ "required": [
+ "op",
+ "id"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "description": "The Inbox block id to delete from the Inbox.",
+ "type": "string"
+ },
+ "op": {
+ "const": "remove",
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "id"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "description": "The Inbox block id to place on the dial.",
+ "type": "string"
+ },
+ "op": {
+ "const": "schedule",
+ "type": "string"
+ },
+ "recurrence": {
+ "description": "Optionally make the placed block repeat, as an RRULE (e.g. \"FREQ=WEEKLY;BYDAY=MO,WE,FR\"). Omit for a one-off.",
+ "type": "string"
+ },
+ "start": {
+ "description": "Local start \"YYYY-MM-DDTHH:MM\"; the block's duration sizes it.",
+ "pattern": "^(\\d{4}-\\d{2}-\\d{2})T([01]\\d|2[0-3]):([0-5]\\d)$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "id",
+ "start"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "description": "The dial event id to move to the Inbox (from a schedule or search read). Must be a native or owned-calendar one-off that hasn't been reviewed.",
+ "type": "string"
+ },
+ "op": {
+ "const": "park",
+ "type": "string"
+ }
+ },
+ "required": [
+ "op",
+ "id"
+ ],
+ "type": "object"
+ }
+]