changedInput schema / properties / ops / items / oneOf
Previous value: -[
- {
- "properties": {
- "activityTypeId": {
- "type": "string"
- },
- "activityTypeName": {
- "description": "Activity type by name instead of id.",
- "type": "string"
- },
- "areaId": {
- "type": "string"
- },
- "areaName": {
- "description": "Area by name instead of id (case/accent-insensitive).",
- "type": "string"
- },
- "durationHours": {
- "description": "Estimated length in hours (e.g. 1.5). Sizes the block when placed.",
- "exclusiveMinimum": 0,
- "maximum": 24,
- "type": "number"
- },
- "enrich": {
- "description": "Let AI clean this capture up before it is saved: propose a better name, estimate durationHours, 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"
- },
- "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": "Optional inclusive window end after plannedDate — a flexible \"sometime in this range\" window.",
- "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"
- },
- "steps": {
- "description": "The block's microtask steps, in order — REPLACES the whole list (send every step you want kept, not just new ones; an empty array clears them). An Inbox block has no occurrence, so steps here are template-only — there is nothing to tick off until it is scheduled onto the dial.",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 50,
- "type": "array"
- }
- },
- "required": [
- "op",
- "name"
- ],
- "type": "object"
- },
- {
- "properties": {
- "activityTypeId": {
- "type": "string"
- },
- "activityTypeName": {
- "description": "Activity type by name instead of id.",
- "type": "string"
- },
- "areaId": {
- "type": "string"
- },
- "areaName": {
- "description": "Area by name instead of id.",
- "type": "string"
- },
- "durationHours": {
- "description": "Estimated length in hours (e.g. 1.5). Sizes the block when placed.",
- "exclusiveMinimum": 0,
- "maximum": 24,
- "type": "number"
- },
- "id": {
- "description": "The Inbox block id (from get_schedule's `backlog`).",
- "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). Refused on a task-app-linked block — its date is owned by the provider (change it there)."
- },
- "plannedUntil": {
- "anyOf": [
- {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Set the inclusive window end (must fall after the planned day); null collapses the window to the single 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."
- },
- "steps": {
- "description": "The block's microtask steps, in order — REPLACES the whole list (send every step you want kept, not just new ones; an empty array clears them). An Inbox block has no occurrence, so steps here are template-only — there is nothing to tick off until it is scheduled onto the dial.",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 50,
- "type": "array"
- }
- },
- "required": [
- "op",
- "id"
- ],
- "type": "object"
- },
- {
- "properties": {
- "id": {
- "description": "The Inbox block id to delete from the Inbox.",
- "type": "string"
- },
- "op": {
- "const": "remove",
- "type": "string"
- }
- },
- "required": [
- "op",
- "id"
- ],
- "type": "object"
- },
- {
- "properties": {
- "date": {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "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: a preset (daily, weekdays, weekly, biweekly, monthly, yearly) or a raw RRULE (e.g. \"FREQ=WEEKLY;BYDAY=MO,WE,FR\"). Omit for a one-off.",
- "type": "string"
- },
- "start": {
- "description": "Start time HH:MM; duration comes from the block.",
- "pattern": "^([01]?\\d|2[0-3]):[0-5]\\d$",
- "type": "string"
- }
- },
- "required": [
- "op",
- "id",
- "date",
- "start"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventId": {
- "description": "The dial event id to move to the Inbox (from get_schedule/find_event). Must be a native or owned-calendar one-off that hasn't been reviewed.",
- "type": "string"
- },
- "op": {
- "const": "park",
- "type": "string"
- }
- },
- "required": [
- "op",
- "eventId"
- ],
- "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"
+ ]
+ },
+ "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 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"
+ }
+]