Skip to content
SHAMPOO

Tool catalogue

inbound_approve

Write · Conductor only · Inbox

inbound_approve

  • Category: inbox
  • Access: write
  • Audience: administrative (ordinary users do not normally call this directly)

Purpose

Approves staged inbound items into agreed state. Tasks insert as fresh entries through real creation; knowledge merges additively with type conflicts skipped and relations gated on both endpoints.

Arguments

Required: kind, item_ids.

Optional: reason.

  • kind. Note: tasks or knowledge.
  • item_ids. Note: JSON array string of namespaced ids (t:N tasks, e:N entities, r:N relations); must match kind. Every id must exist and be pending or the whole call fails with nothing applied.
  • reason. Note: Recorded as the decide reason on each item.

Result

Object with approved array (id plus task_id for tasks) and skipped array (id plus reason).

Boundaries

Conductor role required. Approved content is created under the approver identity within the selected profile boundary, so approver scope and validation apply exactly as for direct creation.

Lifecycle / side effects

Strict eligibility pre-check first, then entities before relations: tasks are created fresh through the real creation path; entities merge additively (type conflicts skip, only new observations merge); relations need both endpoints pre-existing or approved in the same batch. Each item is marked decided with a decision history event.

Errors

Non-conductor callers get a requires-conductor error payload. Invalid kind, malformed ids, kind/id mismatch, or any ineligible item fails the whole call with nothing applied. Type conflicts and missing relation endpoints land in skipped, not errors.

Example

{
  "item_ids": "[\"t:1\"]",
  "kind": "tasks"
}

Result shape:

{
  "approved": [
    {
      "id": "t:1",
      "task_id": "<uuid>"
    }
  ],
  "skipped": []
}

See also

inbound_list, inbound_reject, create_task_or_note, create_entities.

On this page