removedOutput schema / properties / hand_over / items / properties / given_by / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / hand_over / items / properties / given_by / type
Added value: +[
+ "string",
+ "null"
+]
changedOutput schema / properties / last_session / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "at": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "When the person last read this digest, or their previous sign-in."
- },
- "label": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The same moment written like `since_at_label`, such as \"Monday 28 September at 14:32\" or \"lundi 28 septembre à 14 h 32\". Quote it as written."
- },
- "source": {
- "anyOf": [
- {
- "enum": [
- "recap",
- "login"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "`recap` when it is the last read of this digest, `login` when it is the previous sign-in."
- },
- "surface": {
- "anyOf": [
- {
- "enum": [
- "web",
- "mcp"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Where that session ran: `web` for the Well app, `mcp` for an AI app such as Claude."
- }
- },
- "required": [
- "at",
- "surface",
- "source",
- "label"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "at": {
+ "description": "When the person last read this digest, or their previous sign-in.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "label": {
+ "description": "The same moment written like `since_at_label`, such as \"Monday 28 September at 14:32\" or \"lundi 28 septembre à 14 h 32\". Quote it as written.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "source": {
+ "anyOf": [
+ {
+ "enum": [
+ "recap",
+ "login"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "`recap` when it is the last read of this digest, `login` when it is the previous sign-in."
+ },
+ "surface": {
+ "anyOf": [
+ {
+ "enum": [
+ "web",
+ "mcp"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Where that session ran: `web` for the Well app, `mcp` for an AI app such as Claude."
+ }
+ },
+ "required": [
+ "at",
+ "surface",
+ "source",
+ "label"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / other_workspaces / items / properties / missing_invoices / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "calendar_month": {
- "type": "number"
- },
- "calendar_year": {
- "type": "number"
- },
- "currency": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The workspace's base currency, or null."
- },
- "hints": {
- "description": "The bounds the missing-invoice read states on its rows, as returned: only categorized expense spend is counted, so a row_count of 0 means no categorized expense lacks an invoice, never that every transaction has one. Keep that bound when you tell the person this month owes nothing.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "period_label": {
- "description": "The workspace's open month, the one Well opens its close on.",
- "type": "string"
- },
- "row_count": {
- "description": "Counterparties with settled spend and no invoice, in that month.",
- "type": "number"
- },
- "total_amount": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Their settled spend with no invoice, in `currency`. Null when a counterparty's sum lacked an FX rate."
- },
- "transaction_count": {
- "description": "The booked transactions the period read counted for that month. At 0 no settled spend was checked, so a `row_count` of 0 then means nothing was checked, never that nothing is missing.",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "period_label",
- "calendar_year",
- "calendar_month",
- "transaction_count",
- "row_count",
- "total_amount",
- "currency",
- "hints"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "calendar_month": {
+ "type": "number"
+ },
+ "calendar_year": {
+ "type": "number"
+ },
+ "currency": {
+ "description": "The workspace's base currency, or null.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "hints": {
+ "description": "The bounds the missing-invoice read states on its rows, as returned: only categorized expense spend is counted, so a row_count of 0 means no categorized expense lacks an invoice, never that every transaction has one. Keep that bound when you tell the person this month owes nothing.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "period_label": {
+ "description": "The workspace's open month, the one Well opens its close on.",
+ "type": "string"
+ },
+ "row_count": {
+ "description": "Counterparties with settled spend and no invoice, in that month.",
+ "type": "number"
+ },
+ "total_amount": {
+ "description": "Their settled spend with no invoice, in `currency`. Null when a counterparty's sum lacked an FX rate.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "transaction_count": {
+ "description": "The booked transactions the period read counted for that month. At 0 no settled spend was checked, so a `row_count` of 0 then means nothing was checked, never that nothing is missing.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "period_label",
+ "calendar_year",
+ "calendar_month",
+ "transaction_count",
+ "row_count",
+ "total_amount",
+ "currency",
+ "hints"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / other_workspaces / items / properties / open_tasks / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "count": {
- "description": "The tasks still open in Well's task list, the list the chat's tasks read returns.",
- "type": "number"
- },
- "top": {
- "description": "The first 3 open tasks, in the order the task list ranks them: importance first.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "assigned_to": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "name": {
- "description": "The assignee's display name. An agent shows as its job, never as a seat name.",
- "type": "string"
- },
- "person_id": {
- "description": "The assignee's stable person id.",
- "type": "string"
- }
- },
- "required": [
- "person_id",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "The person currently assigned to the task, or null when it has no assignee."
- },
- "due_date": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The due date, ISO 8601, or null when the task has none."
- },
- "linked_record": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "label": {
- "description": "The record's name, as the task stores it.",
- "type": "string"
- },
- "type": {
- "description": "The kind of record: an invoice, a company, a person, a document or a transaction.",
- "type": "string"
- }
- },
- "required": [
- "type",
- "label"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "The first record the task is linked to, or null when it is linked to none."
- },
- "priority": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The task's priority, as the task list carries it, or null when it has none."
- },
- "task_id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "task_id",
- "title",
- "priority",
- "due_date",
- "linked_record",
- "assigned_to"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "count",
- "top"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "count": {
+ "description": "The tasks still open in Well's task list, the list the chat's tasks read returns.",
+ "type": "number"
+ },
+ "top": {
+ "description": "The first 3 open tasks, in the order the task list ranks them: importance first.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "assigned_to": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "description": "The assignee's display name. An agent shows as its job, never as a seat name.",
+ "type": "string"
+ },
+ "person_id": {
+ "description": "The assignee's stable person id.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "person_id",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The person currently assigned to the task, or null when it has no assignee."
+ },
+ "due_date": {
+ "description": "The due date, ISO 8601, or null when the task has none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "linked_record": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "description": "The record's name, as the task stores it.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The kind of record: an invoice, a company, a person, a document or a transaction.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "label"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The first record the task is linked to, or null when it is linked to none."
+ },
+ "priority": {
+ "description": "The task's priority, as the task list carries it, or null when it has none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "task_id": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "task_id",
+ "title",
+ "priority",
+ "due_date",
+ "linked_record",
+ "assigned_to"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "count",
+ "top"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
removedOutput schema / properties / other_workspaces / items / properties / own_company_name / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / other_workspaces / items / properties / own_company_name / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / person_id / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / person_id / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / records / items / properties / highlights / items / properties / currency / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / records / items / properties / highlights / items / properties / currency / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / records / items / properties / highlights / items / properties / date / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / records / items / properties / highlights / items / properties / date / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / resolved_workspace / properties / name / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / resolved_workspace / properties / name / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / schedule_runs / items / properties / scheduled_for_label / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / schedule_runs / items / properties / scheduled_for_label / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / schedule_runs / items / properties / thread_id / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / schedule_runs / items / properties / thread_id / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / schedule_runs / items / properties / warning_message / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / schedule_runs / items / properties / warning_message / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / since_at / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / since_at / type
Added value: +[
+ "string",
+ "null"
+]
removedOutput schema / properties / since_at_label / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / since_at_label / type
Added value: +[
+ "string",
+ "null"
+]
changedOutput schema / properties / situation / properties / connectors / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "connected": {
- "description": "The tools this workspace has connected, read from its own connection rows. A row still waiting on its handshake, and one torn down, are not carried.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "connection_status": {
- "anyOf": [
- {
- "enum": [
- "enabled",
- "processing",
- "error",
- "need_reconnect",
- "to_configure",
- "disabled"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "is_connected": {
- "type": "boolean"
- },
- "kinds": {
- "description": "The data domains this tool serves (bank, accounting, invoicing), as the connect card classifies it.",
- "items": {
- "enum": [
- "bank",
- "accounting",
- "invoicing"
- ],
- "type": "string"
- },
- "type": "array"
- },
- "last_successful_sync_at": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "name": {
- "type": "string"
- },
- "needs_attention": {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ],
- "description": "True when `connection_status` asks the person to act (the connection is in error or waits on a new grant). Null when the status could not be read."
- },
- "reads_live": {
- "description": "True when Well reads this tool live through its own tools and keeps no synced copy of its data: it has no sync to wait for, refresh or repair, and `last_successful_sync_at` says nothing about how current its answers are. Absent reads as false.",
- "type": "boolean"
- },
- "stalled_sync_started_at": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The instant a sync run that stopped reporting started, when this tool has one open past the platform's stranded bound. That run is stalled, not running; `sync_in_progress` reports any other run of this tool that is live, and `connection_status` says what the tool calls for. Its presence never means the tool was never synced."
- },
- "sync_health": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "reading": {
- "enum": [
- "data_incomplete",
- "runs_failing",
- "no_recent_sync"
- ],
- "type": "string"
- },
- "summary": {
- "type": "string"
- }
- },
- "required": [
- "reading",
- "summary"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Null unless the connection is flagged degraded. `connection_status` says whether the connection works; this says whether recent sync runs delivered everything. It never sets `needs_attention`, and a reconnect is advised only when `connection_status` asks for one."
- },
- "sync_in_progress": {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "const": "unknown",
- "type": "string"
- }
- ],
- "description": "True while a data sync of this tool is running. `unknown` when the open-run read could not hold this tool's rows, which is not a claim that no sync is running: report the sync state as unknown, never as never synced. A running sync is not a failure: it needs no reconnect, and `last_successful_sync_at` stays null until the first one lands."
- }
- },
- "required": [
- "name",
- "kinds",
- "is_connected",
- "connection_status",
- "needs_attention",
- "sync_health",
- "last_successful_sync_at",
- "sync_in_progress",
- "stalled_sync_started_at"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "connected_count": {
- "description": "Connected tools, which is the length of `connected`.",
- "type": "number"
- },
- "has_ai_client": {
- "description": "Whether at least one AI app (Claude, Codex, the Well CLI and the like) is connected to Well over MCP. AI apps are not listed in `connected`.",
- "type": "boolean"
- },
- "has_mailbox": {
- "description": "Whether at least one tool in `connected` is a mailbox, such as Gmail or Outlook.",
- "type": "boolean"
- },
- "has_whatsapp": {
- "description": "Whether the WhatsApp connector is in `connected`.",
- "type": "boolean"
- },
- "syncing_count": {
- "description": "Connected tools with a data sync running right now. A sync in flight is progress, not a failure: it calls for no reconnect.",
- "type": "number"
- }
- },
- "required": [
- "connected",
- "connected_count",
- "syncing_count",
- "has_ai_client",
- "has_mailbox",
- "has_whatsapp"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "connected": {
+ "description": "The tools this workspace has connected, read from its own connection rows. A row still waiting on its handshake, and one torn down, are not carried.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "connection_status": {
+ "anyOf": [
+ {
+ "enum": [
+ "enabled",
+ "processing",
+ "error",
+ "need_reconnect",
+ "to_configure",
+ "disabled"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "is_connected": {
+ "type": "boolean"
+ },
+ "kinds": {
+ "description": "The data domains this tool serves (bank, accounting, invoicing), as the connect card classifies it.",
+ "items": {
+ "enum": [
+ "bank",
+ "accounting",
+ "invoicing"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "last_successful_sync_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "needs_attention": {
+ "description": "True when `connection_status` asks the person to act (the connection is in error or waits on a new grant). Null when the status could not be read.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "reads_live": {
+ "description": "True when Well reads this tool live through its own tools and keeps no synced copy of its data: it has no sync to wait for, refresh or repair, and `last_successful_sync_at` says nothing about how current its answers are. Absent reads as false.",
+ "type": "boolean"
+ },
+ "stalled_sync_started_at": {
+ "description": "The instant a sync run that stopped reporting started, when this tool has one open past the platform's stranded bound. That run is stalled, not running; `sync_in_progress` reports any other run of this tool that is live, and `connection_status` says what the tool calls for. Its presence never means the tool was never synced.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sync_health": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "reading": {
+ "enum": [
+ "data_incomplete",
+ "runs_failing",
+ "no_recent_sync"
+ ],
+ "type": "string"
+ },
+ "summary": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "reading",
+ "summary"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Null unless the connection is flagged degraded. `connection_status` says whether the connection works; this says whether recent sync runs delivered everything. It never sets `needs_attention`, and a reconnect is advised only when `connection_status` asks for one."
+ },
+ "sync_in_progress": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "const": "unknown",
+ "type": "string"
+ }
+ ],
+ "description": "True while a data sync of this tool is running. `unknown` when the open-run read could not hold this tool's rows, which is not a claim that no sync is running: report the sync state as unknown, never as never synced. A running sync is not a failure: it needs no reconnect, and `last_successful_sync_at` stays null until the first one lands."
+ }
+ },
+ "required": [
+ "name",
+ "kinds",
+ "is_connected",
+ "connection_status",
+ "needs_attention",
+ "sync_health",
+ "last_successful_sync_at",
+ "sync_in_progress",
+ "stalled_sync_started_at"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "connected_count": {
+ "description": "Connected tools, which is the length of `connected`.",
+ "type": "number"
+ },
+ "has_ai_client": {
+ "description": "Whether at least one AI app (Claude, Codex, the Well CLI and the like) is connected to Well over MCP. AI apps are not listed in `connected`.",
+ "type": "boolean"
+ },
+ "has_mailbox": {
+ "description": "Whether at least one tool in `connected` is a mailbox, such as Gmail or Outlook.",
+ "type": "boolean"
+ },
+ "has_whatsapp": {
+ "description": "Whether the WhatsApp connector is in `connected`.",
+ "type": "boolean"
+ },
+ "syncing_count": {
+ "description": "Connected tools with a data sync running right now. A sync in flight is progress, not a failure: it calls for no reconnect.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "connected",
+ "connected_count",
+ "syncing_count",
+ "has_ai_client",
+ "has_mailbox",
+ "has_whatsapp"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / situation / properties / detected_banks / anyOf
Previous value: -[
- {
- "items": {
- "additionalProperties": false,
- "properties": {
- "connector_service_id": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The connector that installs the bank today. Null when only a bank search can reach it."
- },
- "connector_slug": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The catalog slug of that connector: `well_list_connectors({ slug })` returns the one row of the bank. Null when there is none, and the bank's name searches it then."
- },
- "found_in": {
- "description": "Where Well found the bank: `email` (the person's mail), `transaction` (bank lines), `invoice` (an invoice).",
- "items": {
- "enum": [
- "email",
- "bank",
- "tool",
- "accounting",
- "transaction",
- "scoring",
- "invoice",
- "crm",
- "enrichment",
- "user"
- ],
- "type": "string"
- },
- "type": "array"
- },
- "provider_name": {
- "description": "The bank's name, as Well shows it.",
- "type": "string"
- },
- "task_id": {
- "description": "The open connect task Well created for this bank.",
- "type": "string"
- }
- },
- "required": [
- "task_id",
- "provider_name",
- "connector_service_id",
- "connector_slug",
- "found_in"
- ],
- "type": "object"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "connector_service_id": {
+ "description": "The connector that installs the bank today. Null when only a bank search can reach it.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "connector_slug": {
+ "description": "The catalog slug of that connector: `well_list_connectors({ slug })` returns the one row of the bank. Null when there is none, and the bank's name searches it then.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "found_in": {
+ "description": "Where Well found the bank: `email` (the person's mail), `transaction` (bank lines), `invoice` (an invoice).",
+ "items": {
+ "enum": [
+ "email",
+ "bank",
+ "tool",
+ "accounting",
+ "transaction",
+ "scoring",
+ "invoice",
+ "crm",
+ "enrichment",
+ "user"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provider_name": {
+ "description": "The bank's name, as Well shows it.",
+ "type": "string"
+ },
+ "task_id": {
+ "description": "The open connect task Well created for this bank.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "task_id",
+ "provider_name",
+ "connector_service_id",
+ "connector_slug",
+ "found_in"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / situation / properties / missing_invoices / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "currency": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The workspace's base currency the amounts are in, or null."
- },
- "fetchable_count": {
- "description": "Counterparties whose matched provider carries a blueprint, so Well can fetch the invoice itself.",
- "type": "number"
- },
- "hints": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "row_count": {
- "description": "Counterparties with settled spend and no invoice, in the open period. Read it with `open_period.transaction_count`: 0 over 0 transactions is a month with nothing to check, never a month owing nothing.",
- "type": "number"
- },
- "top": {
- "description": "The 3 counterparties with the largest settled spend and no invoice, largest first.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "amount": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Their sum in `currency`, or null when an FX rate was missing."
- },
- "currency": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "fetchable": {
- "description": "Well can fetch this counterparty's invoice itself.",
- "type": "boolean"
- },
- "name": {
- "type": "string"
- },
- "tx_count": {
- "description": "Transactions missing an invoice from this counterparty.",
- "type": "number"
- }
- },
- "required": [
- "name",
- "tx_count",
- "amount",
- "currency",
- "fetchable"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "total_amount": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "The settled spend with no invoice over every counterparty, in `currency`. Null when any counterparty's sum lacked an FX rate."
- }
- },
- "required": [
- "row_count",
- "hints",
- "total_amount",
- "currency",
- "fetchable_count",
- "top"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "currency": {
+ "description": "The workspace's base currency the amounts are in, or null.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fetchable_count": {
+ "description": "Counterparties whose matched provider carries a blueprint, so Well can fetch the invoice itself.",
+ "type": "number"
+ },
+ "hints": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "row_count": {
+ "description": "Counterparties with settled spend and no invoice, in the open period. Read it with `open_period.transaction_count`: 0 over 0 transactions is a month with nothing to check, never a month owing nothing.",
+ "type": "number"
+ },
+ "top": {
+ "description": "The 3 counterparties with the largest settled spend and no invoice, largest first.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "amount": {
+ "description": "Their sum in `currency`, or null when an FX rate was missing.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "currency": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fetchable": {
+ "description": "Well can fetch this counterparty's invoice itself.",
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "tx_count": {
+ "description": "Transactions missing an invoice from this counterparty.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "name",
+ "tx_count",
+ "amount",
+ "currency",
+ "fetchable"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "total_amount": {
+ "description": "The settled spend with no invoice over every counterparty, in `currency`. Null when any counterparty's sum lacked an FX rate.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "row_count",
+ "hints",
+ "total_amount",
+ "currency",
+ "fetchable_count",
+ "top"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / situation / properties / open_period / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "calendar_month": {
- "type": "number"
- },
- "calendar_year": {
- "type": "number"
- },
- "close_reason": {
- "anyOf": [
- {
- "enum": [
- "own_company_unconfirmed",
- "period_not_ended",
- "adjustment_period",
- "year_end_unsupported",
- "period_precedes_incorporation",
- "prior_period_not_closed",
- "coverage_gaps",
- "no_transactions_to_reconcile",
- "no_journal_entries",
- "draft_entries",
- "header_derived_requires_review",
- "non_postable_journal_entries",
- "missing_invoice_proofs",
- "off_rail_entries_pending",
- "off_rail_entries_require_review"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The reason behind that verdict, as returned, or null when it names none this build knows."
- },
- "close_status": {
- "anyOf": [
- {
- "enum": [
- "closeable",
- "closed",
- "not_ready",
- "nothing_to_close"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The month's close verdict as the period read returned it. Null when no verdict was read, and always null on WhatsApp, where no close state is shown."
- },
- "is_complete": {
- "type": "boolean"
- },
- "label": {
- "type": "string"
- },
- "selectable": {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ]
- },
- "transaction_count": {
- "description": "The booked transactions the period read counted for the month. At 0 no settled spend was checked, so a `missing_invoices.row_count` of 0 then means nothing was checked, never that nothing is missing.",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "calendar_year",
- "calendar_month",
- "label",
- "is_complete",
- "selectable",
- "transaction_count",
- "close_status",
- "close_reason"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "calendar_month": {
+ "type": "number"
+ },
+ "calendar_year": {
+ "type": "number"
+ },
+ "close_reason": {
+ "anyOf": [
+ {
+ "enum": [
+ "own_company_unconfirmed",
+ "period_not_ended",
+ "adjustment_period",
+ "year_end_unsupported",
+ "period_precedes_incorporation",
+ "prior_period_not_closed",
+ "coverage_gaps",
+ "no_transactions_to_reconcile",
+ "no_journal_entries",
+ "draft_entries",
+ "header_derived_requires_review",
+ "non_postable_journal_entries",
+ "missing_invoice_proofs",
+ "off_rail_entries_pending",
+ "off_rail_entries_require_review"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The reason behind that verdict, as returned, or null when it names none this build knows."
+ },
+ "close_status": {
+ "anyOf": [
+ {
+ "enum": [
+ "closeable",
+ "closed",
+ "not_ready",
+ "nothing_to_close"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The month's close verdict as the period read returned it. Null when no verdict was read, and always null on WhatsApp, where no close state is shown."
+ },
+ "is_complete": {
+ "type": "boolean"
+ },
+ "label": {
+ "type": "string"
+ },
+ "selectable": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "transaction_count": {
+ "description": "The booked transactions the period read counted for the month. At 0 no settled spend was checked, so a `missing_invoices.row_count` of 0 then means nothing was checked, never that nothing is missing.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "calendar_year",
+ "calendar_month",
+ "label",
+ "is_complete",
+ "selectable",
+ "transaction_count",
+ "close_status",
+ "close_reason"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / situation / properties / open_tasks / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "count": {
- "description": "The tasks still open in Well's task list, the list the chat's tasks read returns.",
- "type": "number"
- },
- "top": {
- "description": "The first 3 open tasks, in the order the task list ranks them: importance first.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "assigned_to": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "name": {
- "description": "The assignee's display name. An agent shows as its job, never as a seat name.",
- "type": "string"
- },
- "person_id": {
- "description": "The assignee's stable person id.",
- "type": "string"
- }
- },
- "required": [
- "person_id",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "The person currently assigned to the task, or null when it has no assignee."
- },
- "due_date": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The due date, ISO 8601, or null when the task has none."
- },
- "linked_record": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "label": {
- "description": "The record's name, as the task stores it.",
- "type": "string"
- },
- "type": {
- "description": "The kind of record: an invoice, a company, a person, a document or a transaction.",
- "type": "string"
- }
- },
- "required": [
- "type",
- "label"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "The first record the task is linked to, or null when it is linked to none."
- },
- "priority": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The task's priority, as the task list carries it, or null when it has none."
- },
- "task_id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "task_id",
- "title",
- "priority",
- "due_date",
- "linked_record",
- "assigned_to"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "count",
- "top"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "count": {
+ "description": "The tasks still open in Well's task list, the list the chat's tasks read returns.",
+ "type": "number"
+ },
+ "top": {
+ "description": "The first 3 open tasks, in the order the task list ranks them: importance first.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "assigned_to": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "description": "The assignee's display name. An agent shows as its job, never as a seat name.",
+ "type": "string"
+ },
+ "person_id": {
+ "description": "The assignee's stable person id.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "person_id",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The person currently assigned to the task, or null when it has no assignee."
+ },
+ "due_date": {
+ "description": "The due date, ISO 8601, or null when the task has none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "linked_record": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "description": "The record's name, as the task stores it.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The kind of record: an invoice, a company, a person, a document or a transaction.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "label"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The first record the task is linked to, or null when it is linked to none."
+ },
+ "priority": {
+ "description": "The task's priority, as the task list carries it, or null when it has none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "task_id": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "task_id",
+ "title",
+ "priority",
+ "due_date",
+ "linked_record",
+ "assigned_to"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "count",
+ "top"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / suggested_steps / items / properties / why / properties / subject / anyOf
Previous value: -[
- {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "missing_invoices",
- "type": "string"
- },
- "period_label": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "row_count": {
- "type": "number"
- }
- },
- "required": [
- "kind",
- "row_count",
- "period_label"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "connector_name": {
- "type": "string"
- },
- "kind": {
- "const": "stale_connector",
- "type": "string"
- },
- "last_successful_sync_at": {
- "type": "string"
- },
- "last_successful_sync_label": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The same instant written like `since_at_label`. Quote it as written; null when it does not parse."
- }
- },
- "required": [
- "kind",
- "connector_name",
- "last_successful_sync_at",
- "last_successful_sync_label"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "open_period",
- "type": "string"
- },
- "period_label": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "period_label"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "connector_name": {
- "description": "The tool this step connects. Name it in the step's prompt.",
- "type": "string"
- },
- "connector_slug": {
- "description": "Its catalog slug: `well_list_connectors({ slug })` returns its install link.",
- "type": "string"
- },
- "kind": {
- "const": "connector_to_connect",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "connector_name",
- "connector_slug"
- ],
- "type": "object"
- }
- ]
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "missing_invoices",
+ "type": "string"
+ },
+ "period_label": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "row_count": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "row_count",
+ "period_label"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "connector_name": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "stale_connector",
+ "type": "string"
+ },
+ "last_successful_sync_at": {
+ "type": "string"
+ },
+ "last_successful_sync_label": {
+ "description": "The same instant written like `since_at_label`. Quote it as written; null when it does not parse.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "connector_name",
+ "last_successful_sync_at",
+ "last_successful_sync_label"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "open_period",
+ "type": "string"
+ },
+ "period_label": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "period_label"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "connector_name": {
+ "description": "The tool this step connects. Name it in the step's prompt.",
+ "type": "string"
+ },
+ "connector_slug": {
+ "description": "Its catalog slug: `well_list_connectors({ slug })` returns its install link.",
+ "type": "string"
+ },
+ "kind": {
+ "const": "connector_to_connect",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "connector_name",
+ "connector_slug"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+]
removedOutput schema / properties / time_zone / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / time_zone / type
Added value: +[
+ "string",
+ "null"
+]
changedOutput schema / properties / welcome / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "demo_workspace_name": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The demo workspace's name, used only to switch to it when the person picks sample data. Null unless `offer_demo_choice`."
- },
- "featured_blocked_by": {
- "anyOf": [
- {
- "enum": [
- "sync_in_progress",
- "no_rows_yet",
- "no_data_source"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Why no figure can be read yet: `sync_in_progress` (a bank's sync still runs, so its rows are partial), `no_rows_yet` (a bank is connected and settled but has sent no transaction), `no_data_source` (no bank is connected). Null when a figure can be read, or when the parts it needs were not read."
- },
- "featured_skill": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The starter the welcome runs inside its first turn, so the first answer carries a real figure. When set, it is left off `suggested_steps`, so the card does not offer it twice. Null when none runs."
- },
- "offer_demo_choice": {
- "description": "True when nothing is connected and a demo workspace with sample data is ready: offer it and real data as two equal options.",
- "type": "boolean"
- },
- "own_company_set": {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ],
- "description": "Whether the workspace has a confirmed own company. Null when the read refused."
- },
- "role": {
- "anyOf": [
- {
- "enum": [
- "owner",
- "admin",
- "member",
- "guest"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The person's role in this workspace. Only an `owner` or an `admin` confirms the company, so the welcome asks a `member` nothing about it. Null when the role could not be read: the welcome still asks, and the company writes check the role themselves."
- }
- },
- "required": [
- "featured_skill",
- "featured_blocked_by",
- "own_company_set",
- "offer_demo_choice",
- "demo_workspace_name",
- "role"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "demo_workspace_name": {
+ "description": "The demo workspace's name, used only to switch to it when the person picks sample data. Null unless `offer_demo_choice`.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "featured_blocked_by": {
+ "anyOf": [
+ {
+ "enum": [
+ "sync_in_progress",
+ "no_rows_yet",
+ "no_data_source"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why no figure can be read yet: `sync_in_progress` (a bank's sync still runs, so its rows are partial), `no_rows_yet` (a bank is connected and settled but has sent no transaction), `no_data_source` (no bank is connected). Null when a figure can be read, or when the parts it needs were not read."
+ },
+ "featured_skill": {
+ "description": "The starter the welcome runs inside its first turn, so the first answer carries a real figure. When set, it is left off `suggested_steps`, so the card does not offer it twice. Null when none runs.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "offer_demo_choice": {
+ "description": "True when nothing is connected and a demo workspace with sample data is ready: offer it and real data as two equal options.",
+ "type": "boolean"
+ },
+ "own_company_set": {
+ "description": "Whether the workspace has a confirmed own company. Null when the read refused.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "role": {
+ "anyOf": [
+ {
+ "enum": [
+ "owner",
+ "admin",
+ "member",
+ "guest"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The person's role in this workspace. Only an `owner` or an `admin` confirms the company, so the welcome asks a `member` nothing about it. Null when the role could not be read: the welcome still asks, and the company writes check the role themselves."
+ }
+ },
+ "required": [
+ "featured_skill",
+ "featured_blocked_by",
+ "own_company_set",
+ "offer_demo_choice",
+ "demo_workspace_name",
+ "role"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
removedOutput schema / properties / workspace_time_zone / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]
addedOutput schema / properties / workspace_time_zone / type
Added value: +[
+ "string",
+ "null"
+]