[{"data":1,"prerenderedAt":80},["ShallowReactive",2],{"$fd0aiwrrgzdxv":3},{"href":4,"title":5,"description":6,"kind":7,"mark":7,"planned":8,"contributors":9,"provenance":7,"html":10,"headings":11},"\u002Fdocs\u002Fapi\u002Fendpoints","Endpoints","Every route an API token can call, by resource, with the scope it needs; and the few that only the portal can.",null,false,[],"\u003Ch2 id=\"reading-this-page\">Reading this page\u003C\u002Fh2>\n\u003Cp>A route's scope is its resource, the first part of its path after \u003Ccode>\u002Fv1\u003C\u002Fcode>, and its level: \u003Ccode>read\u003C\u002Fcode> for a \u003Ccode>GET\u003C\u002Fcode>, \u003Ccode>write\u003C\u002Fcode>\nfor anything else. So a route nested under a task is a task route: starting a run, \u003Ccode>POST \u002Fv1\u002Ftasks\u002F{id}\u002Fruns\u003C\u002Fcode>, needs\n\u003Ccode>tasks:write\u003C\u002Fcode>, not \u003Ccode>runs:write\u003C\u002Fcode>. See \u003Ca href=\"\u002Fdocs\u002Fapi\u002Fauthentication\">Authentication\u003C\u002Fa> for tokens and scopes, and\n\u003Ca href=\"\u002Fdocs\u002Fapi\u002Fconventions\">Conventions\u003C\u002Fa> for errors, pagination and retries.\u003C\u002Fp>\n\u003Cp>Every \u003Ccode>{id}\u003C\u002Fcode> is an id, never a slug. Apart from the catalogue, every route below answers only for your own\nenterprise: an id from another enterprise is a \u003Ccode>404\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"tasks\">Tasks\u003C\u002Fh2>\n\u003Cp>A task's definition, its versions and schedule, and the runs, memory and recommendations that belong to it. See\n\u003Ca href=\"\u002Fdocs\u002Fwork\u002Ftasks\">Tasks\u003C\u002Fa>, and \u003Ca href=\"\u002Fdocs\u002Fapi\u002Ftasks\">Tasks over the API\u003C\u002Fa> for the task as JSON.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Tasks, a page at a time, with search and filters.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftasks\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Create a task, with its first version.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The task, its current version and skill, its version list, its webhook, and its definition warnings.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Ftasks\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Delete the task and every version of it. Its runs are kept. A \u003Ccode>409\u003C\u002Fcode> while it has a run under way.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftasks\u002F{id}\u002Fcopy\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Copy it as a new task of your own: send \u003Ccode>teamId\u003C\u002Fcode>, \u003Ccode>name\u003C\u002Fcode> and \u003Ccode>slug\u003C\u002Fcode>, and optionally \u003Ccode>assigneeRole\u003C\u002Fcode>, which is the original's unless you send one.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u002Fversions\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every version, newest first.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u002Fversions\u002F{versionId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One version as it was, with its skill, how many runs used it, and whether it is current.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftasks\u002F{id}\u002Fversions\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Publish a new version. Send \u003Ccode>baseVersionId\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u002Fworkflow\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The current version and its skill, on their own.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PUT \u002Fv1\u002Ftasks\u002F{id}\u002Fschedule\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Set its schedule. See \u003Ca href=\"\u002Fdocs\u002Fwork\u002Fschedules\">Schedules and webhooks\u003C\u002Fa>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Ftasks\u002F{id}\u002Fschedule\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Remove its schedule.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftasks\u002F{id}\u002Fruns\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Start a run, with the body as its input.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u002Fmemory\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The notes trained on this task, and its training grants.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftasks\u002F{id}\u002Fmemory\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Train a note on this task: \u003Ccode>{ &quot;text&quot;: &quot;…&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u002Fmemory\u002Fask\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Ask memory as this task would. See \u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fmemory\">Memory\u003C\u002Fa>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftasks\u002F{id}\u002Fmemory\u002Ftrain\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Train a note, or a correction, at a layer this task may write. A person may train this task's team, or the enterprise, here.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftasks\u002F{id}\u002Frecommendations\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tasks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Self-improvement recommendations for this task.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>A task is given to a role, never to one member. A body that creates, changes, copies or clones a task and still\nnames a member in \u003Ccode>assigneeMemberId\u003C\u002Fcode> is refused with a \u003Ccode>400\u003C\u002Fcode> (\u003Ccode>assignee_member_removed\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch2 id=\"runs\">Runs\u003C\u002Fh2>\n\u003Cp>One run of one task: its status, events, log and cost. See \u003Ca href=\"\u002Fdocs\u002Fwork\u002Fruns\">Runs\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fruns\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Runs, a page at a time, filtered by task, version or status.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fruns\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One run, its events and gates, its task, what came before and after it, and its cost. \u003Ccode>afterEventId\u003C\u002Fcode> sends only the events since that one.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fruns\u002F{id}\u002Flog\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Its full log, once stored. A \u003Ccode>404\u003C\u002Fcode> (\u003Ccode>log_not_found\u003C\u002Fcode>) until then.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fruns\u002F{id}\u002Fos-tool\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A short read: its status, task, input and last eight events.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fruns\u002F{id}\u002Fcancel\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Cancel it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fruns\u002F{id}\u002Fretry\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Retry it as a new run, on the task's current version.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fruns\u002F{id}\u002Fclear\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>runs:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Take a failed run, or a pipeline that stopped, off Blockers.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"blockers\">Blockers\u003C\u002Fh2>\n\u003Cp>What cannot move without someone. See \u003Ca href=\"\u002Fdocs\u002Fwork\u002Fruns#blockers\">Runs\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fblockers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>blockers:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Everything on Blockers, section by section. \u003Ccode>failedPage\u003C\u002Fcode> and \u003Ccode>pageSize\u003C\u002Fcode> page the failed runs.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fblockers\u002Fclear\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>blockers:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Clear every failed run at once: \u003Ccode>{ &quot;section&quot;: &quot;failed&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"executions\">Executions\u003C\u002Fh2>\n\u003Cp>The connected runs of more than one task. See \u003Ca href=\"\u002Fdocs\u002Fwork\u002Fexecutions\">Executions\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fexecutions\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Executions, a page at a time. Closed ones only with \u003Ccode>closed=true\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fexecutions\u002Fboard\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every lane of the board in one read.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fexecutions\u002Fcounts\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>How many executions and runs are running, queued and waiting.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fexecutions\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One execution: its runs, links and task graph. Any of its run ids works.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fexecutions\u002F{id}\u002Fcancel\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Stop every open run in it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fexecutions\u002F{id}\u002Fclose\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Take a finished execution off the board.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fexecutions\u002F{id}\u002Freopen\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Put a closed execution back.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fexecutions\u002Fclose-completed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>executions:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Close every execution in the Complete lane under the given filters.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"gates\">Gates\u003C\u002Fh2>\n\u003Cp>The calls and questions waiting for your decision. See \u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fgates\">Gates and tool scopes\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fgates\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>gates:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every gate waiting on you.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fgates\u002F{id}\u002Fdecision\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>gates:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Decide one: \u003Ccode>decision\u003C\u002Fcode> is \u003Ccode>approve\u003C\u002Fcode>, \u003Ccode>reject\u003C\u002Fcode> or \u003Ccode>request_changes\u003C\u002Fcode>, with an optional \u003Ccode>note\u003C\u002Fcode>, \u003Ccode>answers\u003C\u002Fcode> for questions, and \u003Ccode>choice\u003C\u002Fcode> (the key of one of the gate's \u003Ccode>choices\u003C\u002Fcode>) on a gate that offers its own.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fgates\u002Fchat\u002F{chatId}\u002Fdecision\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>gates:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Answer the question a chat is waiting on. Name it with \u003Ccode>gateId\u003C\u002Fcode>, or the newest is answered.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>gates:write\u003C\u002Fcode> decides gates, including merges that go live. Grant it deliberately.\u003C\u002Fp>\n\u003Ch2 id=\"chats\">Chats\u003C\u002Fh2>\n\u003Cp>Talking to a member. See \u003Ca href=\"\u002Fdocs\u002Fwork\u002Fchat\">Chat and plans\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fchats\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Chats, the most recently active first. \u003Ccode>memberId\u003C\u002Fcode> narrows them to one member. A chat opened for a purpose is not listed.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fchats\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Start a chat with a member: \u003Ccode>{ &quot;memberId&quot;: &quot;…&quot; }\u003C\u002Fcode>. Or open one for a single job, \u003Ccode>{ &quot;purpose&quot;: &quot;create_task&quot; }\u003C\u002Fcode>: a new chat with the COO (the member who has held the role longest), or with \u003Ccode>memberId\u003C\u002Fcode> when you send one, whose greeting is already in it. It closes once the task it proposes is applied or rejected. Refused with \u003Ccode>unknown_purpose\u003C\u002Fcode> for any other purpose, and \u003Ccode>no_coo\u003C\u002Fcode> when nobody holds the COO role.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fchats\u002Funread\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>How many replies nobody has read yet, in the chats \u003Ccode>GET \u002Fv1\u002Fchats\u003C\u002Fcode> lists.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fchats\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One chat and its messages, oldest first. \u003Ccode>limit\u003C\u002Fcode> (1 to 200) returns only the newest. Reading it marks it read.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fchats\u002F{id}\u002Fmessages\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Send a message: \u003Ccode>{ &quot;content&quot;: &quot;…&quot; }\u003C\u002Fcode>. The member's reply follows in the chat.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fchats\u002F{id}\u002Ftool-calls\u002F{callId}\u002Fdecision\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Answer a tool call the member is waiting on: \u003Ccode>allow\u003C\u002Fcode>, \u003Ccode>always\u003C\u002Fcode> or \u003Ccode>deny\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fchats\u002F{id}\u002Fclose\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Close the chat.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fchats\u002Ftool-grants\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The &quot;Always allow&quot; answers you have given for one member's tools. Send \u003Ccode>memberId\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fchats\u002Ftool-grants\u002F{grantId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>chats:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Withdraw one.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>A token's &quot;Always allow&quot; answers are its own, not a person's, and a person's are not the token's.\u003C\u002Fp>\n\u003Cdiv class=\"prose__planned\">\n\u003Cp class=\"prose__flag\">Planned\u003C\u002Fp>\n\u003Ch2 id=\"plans\">Plans\u003C\u002Fh2>\n\u003Cp>When a member can propose a change to the company as a plan (\u003Ca href=\"\u002Fdocs\u002Fwork\u002Fchat\">Chat and plans\u003C\u002Fa>), you will read it\nhere and decide it as a gate:\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fplans\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>plans:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Plans, newest first, filtered by \u003Ccode>status\u003C\u002Fcode>, \u003Ccode>kind\u003C\u002Fcode>, \u003Ccode>chatSessionId\u003C\u002Fcode> or \u003Ccode>producedByRunId\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fplans\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>plans:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One plan, its items, and the run and gates behind it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"memory\">Memory\u003C\u002Fh2>\n\u003Cp>What the company has learned. See \u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fmemory\">Memory\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmemory\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The notes, with search and filters, a page at a time.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmemory\u002Ftrain\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Train a team or enterprise note. No task is required. \u003Ccode>layer\u003C\u002Fcode> is \u003Ccode>team\u003C\u002Fcode> or \u003Ccode>enterprise\u003C\u002Fcode>; a team train sends \u003Ccode>teamId\u003C\u002Fcode>, and that team must belong to your enterprise.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmemory\u002Frecall-health\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>How often memory could be read over the last 24 hours, by runs and by chat messages.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmemory\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One note and its evidence.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmemory\u002F{id}\u002Ftombstone\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Exclude a note from every future answer.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmemory\u002F{id}\u002Frate\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Rate a note \u003Ccode>up\u003C\u002Fcode> or \u003Ccode>down\u003C\u002Fcode>, with an optional \u003Ccode>reason\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmemory\u002Freview\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The review queue: conflicts, and notes rated down.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmemory\u002Freview\u002Fhistory\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every review decision made.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmemory\u002Freview\u002F{id}\u002Fresolve\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Resolve a conflict by applying a correction: \u003Ccode>correctionId\u003C\u002Fcode> and a \u003Ccode>reason\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmemory\u002Freview\u002F{id}\u002Fdismiss\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>memory:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Dismiss an item, with a \u003Ccode>reason\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"recommendations\">Recommendations\u003C\u002Fh2>\n\u003Cp>Self-improvement's proposed changes to a task. See \u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fself-improvement\">Self-improvement\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Frecommendations\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>recommendations:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The recommendations waiting for a decision; \u003Ccode>taskId\u003C\u002Fcode> narrows them. With \u003Ccode>view=decided\u003C\u002Fcode>, those decided in the last 60 days.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Frecommendations\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>recommendations:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One recommendation, in full.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Frecommendations\u002F{id}\u002Fdecision\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>recommendations:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>approve\u003C\u002Fcode> or \u003Ccode>decline\u003C\u002Fcode>, with a \u003Ccode>reason\u003C\u002Fcode> to decline. Takes an \u003Ccode>idempotencyKey\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"spend\">Spend\u003C\u002Fh2>\n\u003Cp>Caps on what runs may cost, and today's spend. See \u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fspend\">Spend and models\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fspend\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>spend:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Today's spend and runs, and every cap.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fspend\u002Fcaps\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>spend:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Set the cap on one \u003Ccode>layer\u003C\u002Fcode> and \u003Ccode>layerId\u003C\u002Fcode>. Raising a cap queues paused runs again.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fspend\u002Fenabled\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>spend:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Turn spend limits on or off: \u003Ccode>{ &quot;enabled&quot;: false }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"models\">Models\u003C\u002Fh2>\n\u003Cp>Your model connections and the tiers they resolve to. See \u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fspend\">Spend and models\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fllm\u002Fconnections\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Your model connections, without their keys.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fllm\u002Fconnections\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Rename a connection, describe it, or set a Claude login's plan.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fllm\u002Fconnections\u002F{id}\u002Fusage\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A connection's usage.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fllm\u002Fbindings\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Whether a model key is connected, for the enterprise or, with \u003Ccode>layer=member\u003C\u002Fcode> and \u003Ccode>layerId\u003C\u002Fcode>, one member.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fllm\u002Fbindings\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Connect a key: \u003Ccode>apiKey\u003C\u002Fcode>, and \u003Ccode>provider\u003C\u002Fcode> (\u003Ccode>openrouter\u003C\u002Fcode>, the default, or \u003Ccode>claude\u003C\u002Fcode>). \u003Ccode>layer\u003C\u002Fcode> and \u003Ccode>layerId\u003C\u002Fcode> connect it for one member.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fllm\u002Fbindings\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Remove a key, named by \u003Ccode>provider\u003C\u002Fcode>, \u003Ccode>layer\u003C\u002Fcode> and \u003Ccode>layerId\u003C\u002Fcode> in the query.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fllm\u002Fclaude\u002Foauth\u002Fstart\u003C\u002Fcode>, \u003Ccode>…\u002Fcomplete\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Connect a Claude login: start returns the address to sign in at, and complete takes the \u003Ccode>code\u003C\u002Fcode> and \u003Ccode>state\u003C\u002Fcode> it gives back.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fllm\u002Ftiers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Which model each tier runs, per provider.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fllm\u002Ftiers\u002Foverride\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Point a tier at another model the provider offers: \u003Ccode>provider\u003C\u002Fcode>, \u003Ccode>tier\u003C\u002Fcode>, \u003Ccode>model\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fllm\u002Fmodels\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>llm:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The models your connections offer, for a task's exact model.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"tools\">Tools\u003C\u002Fh2>\n\u003Cp>The systems your members reach, and the connections that let them. See \u003Ca href=\"\u002Fdocs\u002Ftools\">Tools\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftools\u002Fbindings\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Your tool connections, without their secrets. \u003Ccode>layer\u003C\u002Fcode> and \u003Ccode>layerId\u003C\u002Fcode> narrow them.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftools\u002Fbindings\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Connect a tool: an MCP server's address and token, or for a system a member operates in a browser, its sites and start page.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Ftools\u002Fbindings\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Change a connection, or move it to another layer. Only the CEO may change its \u003Ccode>mustGate\u003C\u002Fcode> list (the tools a task must gate by name).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Ftools\u002Fbindings\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Remove it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftools\u002Fbindings\u002F{id}\u002Fsign-ins\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The sign-ins members have saved on a browser connection's sites.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Ftools\u002Fbindings\u002F{id}\u002Fsign-ins\u002F{memberId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Forget a member's saved sign-in, on one \u003Ccode>site\u003C\u002Fcode> or all of them.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Ftools\u002Foauth\u002Fredirect-uri\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The redirect address to register with a provider for OAuth.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Ftools\u002Foauth\u002Fstart\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>tools:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Start connecting a tool by OAuth. It finishes in the browser of the person who started it, signed in to the portal, so start it there.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>A token connects tools on a team, member, role or task. It cannot connect, change or remove a connection on the\nenterprise itself (\u003Ccode>403\u003C\u002Fcode> \u003Ccode>ceo_bind_only\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch2 id=\"teams\">Teams\u003C\u002Fh2>\n\u003Cp>A charter, a lead, and the members on it. See \u003Ca href=\"\u002Fdocs\u002Fcompany\u002Fteams\">Teams and charters\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fteams\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every team.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fteams\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Create one: \u003Ccode>name\u003C\u002Fcode>, and optionally \u003Ccode>slug\u003C\u002Fcode>, \u003Ccode>charter\u003C\u002Fcode>, \u003Ccode>leadMemberId\u003C\u002Fcode> and \u003Ccode>concurrentRunLimit\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fteams\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One team.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fteams\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Change its name, charter, lead or concurrent-run limit.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fteams\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Delete it. Your last team cannot be deleted.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fteams\u002F{id}\u002Fmembers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Put a member on the team: \u003Ccode>memberId\u003C\u002Fcode>, and optionally \u003Ccode>roleId\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fteams\u002F{id}\u002Fmembers\u002F{memberId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>teams:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Take a member off it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"members\">Members\u003C\u002Fh2>\n\u003Cp>The AI team members, and their inboxes. See \u003Ca href=\"\u002Fdocs\u002Fcompany\u002Fmembers\">Members and inboxes\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmembers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every member.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmembers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Create one: \u003Ccode>name\u003C\u002Fcode>, and optionally \u003Ccode>email\u003C\u002Fcode> and \u003Ccode>persona\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmembers\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One member.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fmembers\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Change their name, email or persona.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmembers\u002F{id}\u002Favatar\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Their picture, as an image.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PUT \u002Fv1\u002Fmembers\u002F{id}\u002Favatar\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Set it: \u003Ccode>{ &quot;dataUrl&quot;: &quot;data:image\u002Fpng;base64,…&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fmembers\u002F{id}\u002Favatar\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Remove it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fmembers\u002F{id}\u002Froles\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Give them a role: \u003Ccode>{ &quot;roleId&quot;: &quot;…&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fmembers\u002F{id}\u002Froles\u002F{roleId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Take a role away.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmembers\u002F{id}\u002Femails\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Their inbox, a page at a time. \u003Ccode>unreadOnly=true\u003C\u002Fcode> for unread mail only.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmembers\u002F{id}\u002Femails\u002F{emailId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One email. Reading it marks it read.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fmembers\u002F{id}\u002Femails\u002F{emailId}\u002Fattachments\u002F{attachmentId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>members:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>An attachment, as the file.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"roles\">Roles\u003C\u002Fh2>\n\u003Cp>A job: who holds it, and the tasks it runs. See \u003Ca href=\"\u002Fdocs\u002Fcompany\u002Froles\">Roles\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Froles\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Every role.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Froles\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Create one: \u003Ccode>name\u003C\u002Fcode>, and optionally \u003Ccode>slug\u003C\u002Fcode> and \u003Ccode>teamId\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Froles\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One role, its holders and its tasks.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Froles\u002F{id}\u002Fmembers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Give the role to a member: \u003Ccode>{ &quot;memberId&quot;: &quot;…&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Froles\u002F{id}\u002Fmembers\u002F{memberId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Take it from them.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Froles\u002F{id}\u002Ftasks\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Point a task at the role: \u003Ccode>{ &quot;taskId&quot;: &quot;…&quot; }\u003C\u002Fcode>. Its runs then go to the role's holders on the task's team. This publishes no new version.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Froles\u002F{id}\u002Ftasks\u002F{taskId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>roles:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Stop the role running it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"the-org\">The org\u003C\u002Fh2>\n\u003Cp>Everything at once: the shape the portal's map draws. See \u003Ca href=\"\u002Fdocs\u002Fcompany\u002Fenterprise\">Enterprise\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Forgs\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>orgs:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Your whole organisation as one tree: teams, their members, the roles they hold, and the tasks of each.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"enterprise-settings\">Enterprise settings\u003C\u002Fh2>\n\u003Cp>Settings that belong to the whole enterprise. See \u003Ca href=\"\u002Fdocs\u002Fcompany\u002Fenterprise\">Enterprise\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fenterprise\u002Fwebhook-secret\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Which webhook secret is in use and since when: its last characters, never the secret.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fenterprise\u002Fwebhook-secret\u002Frotate\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A new \u003Ca href=\"\u002Fdocs\u002Fapi\u002Fwebhooks\">webhook\u003C\u002Fa> secret, in this response only. The old one stops working at once.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PUT \u002Fv1\u002Fenterprise\u002Favatar\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Set the enterprise's picture: \u003Ccode>{ &quot;dataUrl&quot;: &quot;…&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DELETE \u002Fv1\u002Fenterprise\u002Favatar\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Remove it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fenterprise\u002Fconcurrency\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>How many runs may run at once.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fenterprise\u002Fconcurrency\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Change it: \u003Ccode>{ &quot;concurrentRunLimit&quot;: 3 }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fenterprise\u002Fchat-model-tier\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The model tier chats run on.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fenterprise\u002Fchat-model-tier\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Change it: \u003Ccode>{ &quot;chatModelTier&quot;: &quot;mid&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fenterprise\u002Fchat-memory-depth\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>How much of memory a chat reply reads, and the depths to choose from.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fenterprise\u002Fchat-memory-depth\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Change it: \u003Ccode>{ &quot;chatMemoryDepth&quot;: &quot;large&quot; }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fenterprise\u002Fmetrics\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The company's own metrics, the ones that belong to no single team.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>PATCH \u002Fv1\u002Fenterprise\u002Fmetrics\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>enterprise:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Set them: \u003Ccode>{ &quot;metrics&quot;: [&quot;…&quot;] }\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>No token can manage API tokens, whatever \u003Ccode>enterprise:write\u003C\u002Fcode> would otherwise reach: see \u003Ca href=\"#portal-only\">Portal only\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"catalogue\">Catalogue\u003C\u002Fh2>\n\u003Cp>The tasks and roles you can take into your enterprise. See \u003Ca href=\"\u002Fdocs\u002Fcommunity\u002Ftasks\">Task directory\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fcatalog\u002Ftasks\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The catalogue, a page at a time.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fcatalog\u002Ftasks\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One task in it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fcatalog\u002Ftasks\u002F{id}\u002Fclone\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Install it, linked to the original: \u003Ccode>{ &quot;teamId&quot;: &quot;…&quot; }\u003C\u002Fcode>. It keeps the original's role.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fcatalog\u002Ftasks\u002F{id}\u002Fcopy\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Copy it as your own task: \u003Ccode>teamId\u003C\u002Fcode>, \u003Ccode>name\u003C\u002Fcode> and \u003Ccode>slug\u003C\u002Fcode>, and optionally \u003Ccode>assigneeRole\u003C\u002Fcode>, which is the original's unless you send one.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fcatalog\u002Froles\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The catalogue's public roles, a page at a time, each with the public tasks on it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fcatalog\u002Froles\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One role and the public tasks on it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fcatalog\u002Froles\u002F{id}\u002Fclone\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>catalog:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Install the role and every task on it, linked to the originals, in one go: \u003Ccode>{ &quot;teamId&quot;: &quot;…&quot; }\u003C\u002Fcode>. A role you already have with that slug is reused. Deprecated tasks are skipped. If you already have a task with one of the slugs, nothing is installed and the \u003Ccode>409\u003C\u002Fcode> lists those slugs.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"webhooks\">Webhooks\u003C\u002Fh2>\n\u003Cp>What your enterprise's \u003Ca href=\"\u002Fdocs\u002Fapi\u002Fwebhooks\">webhooks\u003C\u002Fa> received, and replaying it.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>Scope\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fwebhooks\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>webhooks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Deliveries, a page at a time.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fwebhooks\u002F{id}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>webhooks:read\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>One delivery: its request, response, and what followed.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fwebhooks\u002F{id}\u002Freplay\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>webhooks:write\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Replay it. Send an \u003Ccode>idempotencyKey\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"without-a-token\">Without a token\u003C\u002Fh2>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Call\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET \u002Fv1\u002Fhealth\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Whether the API is up, and the version it runs.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fwebhooks\u002F{enterprise}\u002Ftasks\u002F{task}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Start a run of a task, named by its slug. Authenticated by your webhook secret. See \u003Ca href=\"\u002Fdocs\u002Fapi\u002Fwebhooks\">Webhooks\u003C\u002Fa>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>POST \u002Fv1\u002Fwebhooks\u002F{enterprise}\u002Fgates\u002F{gateId}\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Decide a gate. Authenticated by your webhook secret.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"portal-only\">Portal only\u003C\u002Fh2>\n\u003Cp>These belong to a person signed in to the portal, not to a credential. No API token can use them, whatever its\nscopes:\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Routes\u003C\u002Fth>\n\u003Cth>What they are\u003C\u002Fth>\n\u003Cth>A token is refused with\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>\u002Fv1\u002Fenterprise\u002Fapi-tokens\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Creating, rotating, changing and revoking API tokens.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>403\u003C\u002Fcode> \u003Ccode>api_token_cannot_manage_tokens\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>\u002Fv1\u002Fenterprise\u002Fconnections\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Apps connected to your enterprise, and revoking them.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>403\u003C\u002Fcode> \u003Ccode>api_token_cannot_manage_connections\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>\u002Fv1\u002Fusers\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The people in your enterprise and what each may reach. Owners only.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>403\u003C\u002Fcode> \u003Ccode>api_token_scope\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>\u002Fv1\u002Fenterprises\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Creating an enterprise, and the pictures of the enterprises a person belongs to.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>403\u003C\u002Fcode> \u003Ccode>api_token_scope\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>\u002Fv1\u002Fauth\u002Fme\u003C\u002Fcode>, \u003Ccode>\u002Fv1\u002Fauth\u002Fenterprise\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Who is signed in, and which enterprise their session is in.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>403\u003C\u002Fcode> \u003Ccode>api_token_scope\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>\u002Fv1\u002Fconsent\u002Fenterprises\u003C\u002Fcode>, \u003Ccode>…\u002Fmembers\u003C\u002Fcode>, \u003Ccode>…\u002Fapprove\u003C\u002Fcode>, \u003Ccode>…\u002Fdecline\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The screen where a person connects an app to an enterprise.\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>403\u003C\u002Fcode> \u003Ccode>api_token_scope\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>A token with no \u003Ccode>enterprise\u003C\u002Fcode> scope is refused \u003Ccode>api_token_scope\u003C\u002Fcode> on the first two, before it gets that far. Signing\nin and out (the rest of \u003Ccode>\u002Fv1\u002Fauth\u003C\u002Fcode>) happens in a browser, with a session a token does not have.\u003C\u002Fp>\n",[12,16,19,22,25,28,31,34,38,41,44,47,50,53,56,59,62,65,68,71,74,77],{"id":13,"text":14,"level":15,"planned":8},"reading-this-page","Reading this page",2,{"id":17,"text":18,"level":15,"planned":8},"tasks","Tasks",{"id":20,"text":21,"level":15,"planned":8},"runs","Runs",{"id":23,"text":24,"level":15,"planned":8},"blockers","Blockers",{"id":26,"text":27,"level":15,"planned":8},"executions","Executions",{"id":29,"text":30,"level":15,"planned":8},"gates","Gates",{"id":32,"text":33,"level":15,"planned":8},"chats","Chats",{"id":35,"text":36,"level":15,"planned":37},"plans","Plans",true,{"id":39,"text":40,"level":15,"planned":8},"memory","Memory",{"id":42,"text":43,"level":15,"planned":8},"recommendations","Recommendations",{"id":45,"text":46,"level":15,"planned":8},"spend","Spend",{"id":48,"text":49,"level":15,"planned":8},"models","Models",{"id":51,"text":52,"level":15,"planned":8},"tools","Tools",{"id":54,"text":55,"level":15,"planned":8},"teams","Teams",{"id":57,"text":58,"level":15,"planned":8},"members","Members",{"id":60,"text":61,"level":15,"planned":8},"roles","Roles",{"id":63,"text":64,"level":15,"planned":8},"the-org","The org",{"id":66,"text":67,"level":15,"planned":8},"enterprise-settings","Enterprise settings",{"id":69,"text":70,"level":15,"planned":8},"catalogue","Catalogue",{"id":72,"text":73,"level":15,"planned":8},"webhooks","Webhooks",{"id":75,"text":76,"level":15,"planned":8},"without-a-token","Without a token",{"id":78,"text":79,"level":15,"planned":8},"portal-only","Portal only",1791124519336]