List project changes
well_list_project_changesRead one page of durable changes to one live project, newest first. Pass project_id from well_list_projects; pass next_before as before to read the next page. Each row gives occurred_at, timestamp_basis, actor identity, event_kind, source installation, field and new_value. new_value contains only fields changed in that row. A value with type: "null" and value: null means the field was cleared; a field absent from new_value did not change. timestamp_basis: "occurred" means the provider or Well supplied the event time; timestamp_basis: "detected_at_sync" means the change was detected at sync, not when the provider changed it. actor_is_current_user is true only when the authenticated member id matches the actor id, false when both ids are known and differ, and null when either identity is unknown. The actor id and name are null when no actor can be resolved; never guess who made a change. Coverage reports whether provider history is complete, partial, unavailable, at a sync baseline or pending, including when the page is empty. Optional at_utc returns the latest retained status, stage and probability at or before that instant; fields without retained evidence are listed as unknown. A related row is named by its public id, parent_project_id, stage_project_id, owner_person_id, counterparty_person_id or counterparty_company_id: its value is that id, or null when the row no longer exists. Read every page before stating a workspace total.
occurred_at is UTC. occurred_at_label writes the same instant in time_zone: the person's own time zone, the one the turn's clock and well_convert_time use, else the workspace's, else UTC. State the time with occurred_at_label; when timestamp_basis is detected_at_sync, say Well detected the difference then, not that the provider changed it then. A baseline coverage window starts at the first captured sync; history before window_from is unknown. On the last page of a provider-synced deal, the final row has event_kind created: when Well first stored the deal, with no project_change_id, timestamp_basis or actor. The provider's own history may start earlier.
When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass workspace_id on the call.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows to return, at most 100. Default 20. | |
| at_utc | No | Optional UTC instant for a stage, status and probability snapshot. Missing retained evidence stays unknown. | |
| before | No | The opaque next_before cursor from the previous page; pass it back unchanged. | |
| project_id | Yes | The project id from well_list_projects. | |
| workspace_id | No | Target workspace. Omit when the token authorizes one workspace. Required when it authorizes several: this read reports one workspace's own figures and will not choose which. | |
| conversation_id | No | The conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation. | |
| workspace_scope | No | Restrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | ||
| changes | No | ||
| success | Yes | ||
| coverage | No | ||
| snapshot | No | ||
| time_zone | No | ||
| next_before | No | ||
| conversation_id | No | The conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation. | |
| newly_connected | No | Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: "<name> is connected.". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later. | |
| resolved_workspace | No | The workspace that answered, when the caller named none and the token authorizes several. | |
| source_service_slug | No | ||
| conversation_id_note | No | Present only when the server opened a fresh lane, stating that no choice recorded earlier was read. | |
| conversation_id_source | No | Where the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened. | |
| source_installation_id | No |