An admin’s hand edit of one widget’s own code, what Edit in the page’s View code saves: a function widget’s whole def widget_<id>(ctx): (function, nothing else: shared helpers and collect(ctx) change through PUT /dashboards/<id>), a described widget’s query, an html widget’s html. Stored as a new definition under the checks a PUT makes (422 validation_error with details.errors, every problem); the widget then carries hand_edited_at and hand_edited_by until its code changes another way. A query or html edit keeps the stored rows (refresh_started null); a function edit refreshes the dashboard. 409 dashboard_update_conflict when definition_id is no longer the one in use or the widget is gone (details.definition_id: read it again); 403 unless an admin.
Authorization: Bearer <token> where <token> is either a neo_sk_<env>_<secret> API key (service account) or a Microsoft Entra ID access token (dashboard user).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Neo Agent","colors":{"primary":"#2563EB","light":"#60A5FA","dark":"#1D4ED8"},"logo":{"light":"https://mintcdn.com/neoagent/G1PkeWrWjzTWVbma/images/neo_agent_bright_logo.png?fit=max\u0026auto=format\u0026n=G1PkeWrWjzTWVbma\u0026q=85\u0026s=090e8010cda28a9adb16dfaf022b8382","dark":"https://mintcdn.com/neoagent/G1PkeWrWjzTWVbma/images/neo_agent_bright_logo.png?fit=max\u0026auto=format\u0026n=G1PkeWrWjzTWVbma\u0026q=85\u0026s=090e8010cda28a9adb16dfaf022b8382"},"favicon":"https://mintcdn.com/neoagent/5W3oClPQBV6lFR1g/favicon.png?fit=max\u0026auto=format\u0026n=5W3oClPQBV6lFR1g\u0026q=85\u0026s=5164157b0a6bf030ec592e23c172440a","appearance":{"default":"light"},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.neoagent.io"}},"footer":{"socials":{"x":"https://x.com/NeoAgent_AI","linkedin":"https://www.linkedin.com/company/neoagent"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://neoagent.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"neoagent","hasAudioNarration":false,"actualSubdomain":"neoagent","customDomains":["docs.neoagent.io"],"gitSource":{"type":"github","owner":"chatmsp","repo":"neo-agent","deployBranch":"development","contentDirectory":"mintlify_docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af3958f343f209299359029","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Guides","count":751},{"language":"default","tag":"Integrations","count":464},{"language":"default","tag":"API reference","count":328},{"language":"default","tag":"Endpoints","count":323},{"language":"default","tag":"Triggered \u0026 Scheduled Agents","count":221},{"language":"default","tag":"Tools","count":215},{"language":"default","tag":"Security","count":95},{"language":"default","tag":"Business","count":92},{"language":"default","tag":"Service Desk","count":92},{"language":"default","tag":"Infrastructure","count":72}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".perm-list{display:flex;flex-direction:column;gap:0;margin:0.25rem 0 0.5rem}.perm-row{display:grid;grid-template-columns:minmax(9rem, 13rem) 1fr;gap:0.5rem 1rem;align-items:start;padding:0.7rem 0;border-bottom:1px solid rgb(229 231 235)}.perm-row:last-child{border-bottom:none;padding-bottom:0}.perm-row:first-child{padding-top:0}.perm-label{font-weight:600;font-size:0.875rem;line-height:1.4;color:rgb(17 24 39);padding-top:0.15rem}.perm-list{display:flex;flex-direction:column;gap:0;margin:0.25rem 0 0.5rem;width:100%}.perm-chips{display:grid;grid-template-columns:repeat(auto-fill, minmax(14rem, 1fr));gap:0.4rem;margin:0.15rem 0 0.25rem;width:100%}.perm-list .perm-chips{display:flex;flex-wrap:wrap;margin:0;grid-template-columns:none}.perm-chip{display:inline-flex;align-items:center;justify-content:flex-start;padding:0.15rem 0.55rem;border-radius:9999px;font-size:0.8125rem;line-height:1.25rem;background:rgb(243 244 246);border:1px solid rgb(229 231 235);color:rgb(55 65 81);white-space:nowrap}html.dark .perm-row{border-bottom-color:rgb(55 65 81)}html.dark .perm-label{color:rgb(243 244 246)}html.dark .perm-chip{background:rgb(31 41 55);border-color:rgb(75 85 99);color:rgb(229 231 235)}#content table{width:100%!important;min-width:100%!important;max-width:100%!important;table-layout:fixed!important;border-collapse:separate!important;border-spacing:0!important;border:1px solid rgb(229 231 235);border-radius:0.75rem;overflow:hidden}#content thead th{background:rgb(249 250 251);font-size:0.75rem;letter-spacing:0.03em;text-transform:uppercase}#content th,#content td{padding:0.7rem 1rem!important;vertical-align:top;overflow-wrap:break-word}#content th:first-child,#content td:first-child{width:24%;font-weight:600;white-space:normal}#content tbody tr:nth-child(even) td{background:rgb(249 250 251)}html.dark #content table{border-color:rgb(55 65 81)}html.dark #content thead th,html.dark #content tbody tr:nth-child(even) td{background:rgb(31 41 55)}"}],"page":{"pagePath":"api-reference/dashboards/edit-one-widgets-code","slug":"/api-reference/dashboards/edit-one-widgets-code","pageMetadata":{"title":"Edit one widget's code","description":"An admin's hand edit of one widget's own code, what Edit in the page's View code saves: a function widget's whole `def widget_\u003cid>(ctx):` (`function`, nothing else: shared helpers and `collect(ctx)` change through `PUT /dashboards/\u003cid>`), a described widget's `query`, an html widget's `html`. Stored as a new definition under the checks a `PUT` makes (422 `validation_error` with `details.errors`, every problem); the widget then carries `hand_edited_at` and `hand_edited_by` until its code changes another way. A `query` or `html` edit keeps the stored rows (`refresh_started` null); a `function` edit refreshes the dashboard. 409 `dashboard_update_conflict` when `definition_id` is no longer the one in use or the widget is gone (`details.definition_id`: read it again); 403 unless an admin.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/code","href":"/api-reference/dashboards/edit-one-widgets-code","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"An admin’s hand edit of one widget’s own code, what Edit in the page’s View code saves: a function widget’s whole \", _jsx(_components.code, {\n children: \"def widget_\u003cid>(ctx):\"\n }), \" (\", _jsx(_components.code, {\n children: \"function\"\n }), \", nothing else: shared helpers and \", _jsx(_components.code, {\n children: \"collect(ctx)\"\n }), \" change through \", _jsx(_components.code, {\n children: \"PUT /dashboards/\u003cid>\"\n }), \"), a described widget’s \", _jsx(_components.code, {\n children: \"query\"\n }), \", an html widget’s \", _jsx(_components.code, {\n children: \"html\"\n }), \". Stored as a new definition under the checks a \", _jsx(_components.code, {\n children: \"PUT\"\n }), \" makes (422 \", _jsx(_components.code, {\n children: \"validation_error\"\n }), \" with \", _jsx(_components.code, {\n children: \"details.errors\"\n }), \", every problem); the widget then carries \", _jsx(_components.code, {\n children: \"hand_edited_at\"\n }), \" and \", _jsx(_components.code, {\n children: \"hand_edited_by\"\n }), \" until its code changes another way. A \", _jsx(_components.code, {\n children: \"query\"\n }), \" or \", _jsx(_components.code, {\n children: \"html\"\n }), \" edit keeps the stored rows (\", _jsx(_components.code, {\n children: \"refresh_started\"\n }), \" null); a \", _jsx(_components.code, {\n children: \"function\"\n }), \" edit refreshes the dashboard. 409 \", _jsx(_components.code, {\n children: \"dashboard_update_conflict\"\n }), \" when \", _jsx(_components.code, {\n children: \"definition_id\"\n }), \" is no longer the one in use or the widget is gone (\", _jsx(_components.code, {\n children: \"details.definition_id\"\n }), \": read it again); 403 unless an admin.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Edit one widget's code","description":"An admin's hand edit of one widget's own code, what Edit in the page's View code saves: a function widget's whole `def widget_\u003cid>(ctx):` (`function`, nothing else: shared helpers and `collect(ctx)` change through `PUT /dashboards/\u003cid>`), a described widget's `query`, an html widget's `html`. Stored as a new definition under the checks a `PUT` makes (422 `validation_error` with `details.errors`, every problem); the widget then carries `hand_edited_at` and `hand_edited_by` until its code changes another way. A `query` or `html` edit keeps the stored rows (`refresh_started` null); a `function` edit refreshes the dashboard. 409 `dashboard_update_conflict` when `definition_id` is no longer the one in use or the widget is gone (`details.definition_id`: read it again); 403 unless an admin.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/code","href":"/api-reference/dashboards/edit-one-widgets-code","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"An admin's hand edit of one widget's own code, what Edit in the page's View code saves: a function widget's whole `def widget_\u003cid>(ctx):` (`function`, nothing else: shared helpers and `collect(ctx)` change through `PUT /dashboards/\u003cid>`), a described widget's `query`, an html widget's `html`. Stored as a new definition under the checks a `PUT` makes (422 `validation_error` with `details.errors`, every problem); the widget then carries `hand_edited_at` and `hand_edited_by` until its code changes another way. A `query` or `html` edit keeps the stored rows (`refresh_started` null); a `function` edit refreshes the dashboard. 409 `dashboard_update_conflict` when `definition_id` is no longer the one in use or the widget is gone (`details.definition_id`: read it again); 403 unless an admin.","operationId":"public_api.dashboards_widget_code_put","parameters":["ba7ede55-3f68-4fe9-9ce5-6319dd17104d","414a025b-9ac4-457b-bcb9-67210e70c133"],"requestBody":"26ecc948-8a37-443e-854f-3311d1b68b67","responses":{"200":"e8f2a51d-89e4-4acf-8a03-d225be70dc47","400":"9423938c-53ab-4156-9393-54dfac7f1fcb","401":"7cc9323f-ce68-4c10-a9d0-d2074e8edc8e","403":"295a7d6b-a1fb-4da6-bf50-163502099229","404":"d8909028-b1c4-4a01-a4cb-f983529e53cb","409":"db5fa5a2-50fd-4d37-a8bd-473c1ddfcb48","422":"f50e0d3e-7588-485d-9d2c-a5fa9844f2ea","429":"98510f95-48e0-4536-8a52-7c5c847867fc","500":"a465d180-9ce8-4ae1-89f4-5375ecb77797"},"security":["0042f06f-6ef1-42bc-9c48-227d4ef8d495"],"summary":"Edit one widget's code","tags":["Dashboards"],"method":"put","type":"path","servers":["50f7e835-57ed-42d5-906e-13ab4bdbb509"],"path":"/public-api/dashboards/{dashboard_id}/widgets/{widget_id}/code","baseUrlOptions":["https://api.neoagent.io"],"title":"Edit one widget's code","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ba7ede55-3f68-4fe9-9ce5-6319dd17104d":{"in":"path","name":"dashboard_id","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"414a025b-9ac4-457b-bcb9-67210e70c133":{"in":"path","name":"widget_id","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"description":"A hand edit of one widget's code: the field of its kind, one or more.","properties":{"definition_id":{"description":"The definition the edit was made on (`definition_id` of the dashboard as read): a 409 when it is no longer the one in use.","format":"uuid","title":"Definition Id","type":"string","isRequired":true,"uniqueKey":"definition_id","typeLabel":"string\u003cuuid>"},"function":{"oneOf":[{"type":"string","title":"Function","description":"A function widget: its whole `def widget_\u003cid>(ctx):`, decorators included, nothing else. Shared helpers and `collect(ctx)` are changed through a full `PUT`.","maxLength":200000,"uniqueKey":"function.oneOf.0","typeLabel":"string"},{"type":"null","title":"Function","description":"A function widget: its whole `def widget_\u003cid>(ctx):`, decorators included, nothing else. Shared helpers and `collect(ctx)` are changed through a full `PUT`.","uniqueKey":"function.oneOf.1","typeLabel":"null"}],"uniqueKey":"function","typeLabel":"string | null"},"html":{"oneOf":[{"type":"string","title":"Html","description":"An html widget: its new `html`, under the same rules as on a `PUT`.","maxLength":64000,"uniqueKey":"html.oneOf.0","typeLabel":"string"},{"type":"null","title":"Html","description":"An html widget: its new `html`, under the same rules as on a `PUT`.","uniqueKey":"html.oneOf.1","typeLabel":"null"}],"uniqueKey":"html","typeLabel":"string | null"},"query":{"oneOf":[{"type":"object","title":"PublicWidgetQuery","description":"A described widget: its new `query`, checked against the dataset's columns.","properties":{"columns":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"query.oneOf.0.columns.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Columns","description":"Component `table` only: 1 to 12 dataset column keys, in order. A ticket column draws as its PSA link.","uniqueKey":"query.oneOf.0.columns.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Columns","description":"Component `table` only: 1 to 12 dataset column keys, in order. A ticket column draws as its PSA link.","uniqueKey":"query.oneOf.0.columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.columns","typeLabel":"string[] | null"},"filter":{"items":{"properties":{"column":{"title":"Column","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.filter.items.[INDEX].column","typeLabel":"string"},"op":{"enum":["eq","ne","in","not_in","gt","gte","lt","lte","contains","is_null","not_null"],"title":"Op","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.filter.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"default":null,"description":"A list for in/not_in; none for is_null/not_null; the column's type otherwise.","title":"Value","uniqueKey":"query.oneOf.0.filter.items.[INDEX].value","typeLabel":"any"}},"required":["column","op"],"title":"PublicFilter","type":"object","uniqueKey":"query.oneOf.0.filter.items.[INDEX]","typeLabel":"PublicFilter · object"},"maxItems":20,"title":"Filter","type":"array","uniqueKey":"query.oneOf.0.filter","typeLabel":"PublicFilter · object[]"},"group_by":{"items":{"properties":{"column":{"title":"Column","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.group_by.items.[INDEX].column","typeLabel":"string"},"bucket":{"oneOf":[{"type":"string","title":"Bucket","description":"Required on a date column, refused on any other.","enum":["day","week","month"],"uniqueKey":"query.oneOf.0.group_by.items.[INDEX].bucket.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Bucket","description":"Required on a date column, refused on any other.","uniqueKey":"query.oneOf.0.group_by.items.[INDEX].bucket.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.group_by.items.[INDEX].bucket","typeLabel":"enum\u003cstring> | null"}},"required":["column"],"title":"PublicGroupBy","type":"object","uniqueKey":"query.oneOf.0.group_by.items.[INDEX]","typeLabel":"PublicGroupBy · object"},"maxItems":2,"title":"Group By","type":"array","uniqueKey":"query.oneOf.0.group_by","typeLabel":"PublicGroupBy · object[]"},"history":{"oneOf":[{"type":"object","title":"PublicHistory","description":"Read the measure per scheduled refresh from the stored snapshots, oldest first; the dashboard needs a `schedule`.","required":["last"],"properties":{"last":{"description":"How many points, 1 to 52, e.g. 12 for the last 12 weeks.","title":"Last","type":"integer","isRequired":true,"uniqueKey":"query.oneOf.0.history.oneOf.0.last","typeLabel":"integer"},"bucket":{"default":"day","description":"One point per day, ISO week (from Monday) or month of snapshot dates.","enum":["day","week","month"],"title":"Bucket","type":"string","uniqueKey":"query.oneOf.0.history.oneOf.0.bucket","typeLabel":"enum\u003cstring>"}},"uniqueKey":"query.oneOf.0.history.oneOf.0","typeLabel":"PublicHistory · object"},{"type":"null","description":"Read the measure per scheduled refresh from the stored snapshots, oldest first; the dashboard needs a `schedule`.","uniqueKey":"query.oneOf.0.history.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.history","typeLabel":"PublicHistory · object | null"},"limit":{"oneOf":[{"type":"integer","title":"Limit","maximum":2000,"minimum":1,"uniqueKey":"query.oneOf.0.limit.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Limit","uniqueKey":"query.oneOf.0.limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.limit","typeLabel":"integer | null"},"measure":{"description":"At least one on a chart; none on a table.","items":{"properties":{"fn":{"enum":["count","distinct","sum","avg","median","min","max"],"title":"Fn","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.measure.items.[INDEX].fn","typeLabel":"enum\u003cstring>"},"column":{"oneOf":[{"type":"string","title":"Column","description":"Required except for count; a number column for sum, avg and median.","uniqueKey":"query.oneOf.0.measure.items.[INDEX].column.oneOf.0","typeLabel":"string"},{"type":"null","title":"Column","description":"Required except for count; a number column for sum, avg and median.","uniqueKey":"query.oneOf.0.measure.items.[INDEX].column.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.measure.items.[INDEX].column","typeLabel":"string | null"},"label":{"oneOf":[{"type":"string","title":"Label","description":"The series key; `\u003cfn>` or `\u003cfn>_\u003ccolumn>` when left out.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,39}$","uniqueKey":"query.oneOf.0.measure.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","title":"Label","description":"The series key; `\u003cfn>` or `\u003cfn>_\u003ccolumn>` when left out.","uniqueKey":"query.oneOf.0.measure.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.measure.items.[INDEX].label","typeLabel":"string | null"},"where":{"description":"Filters on this measure alone, ANDed with the query's `filter`: three counts with three `where`s make one row of headline numbers. Name each such measure with `label`.","items":{"properties":{"column":{"title":"Column","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.measure.items.[INDEX].where.items.[INDEX].column","typeLabel":"string"},"op":{"enum":["eq","ne","in","not_in","gt","gte","lt","lte","contains","is_null","not_null"],"title":"Op","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.measure.items.[INDEX].where.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"default":null,"description":"A list for in/not_in; none for is_null/not_null; the column's type otherwise.","title":"Value","uniqueKey":"query.oneOf.0.measure.items.[INDEX].where.items.[INDEX].value","typeLabel":"any"}},"required":["column","op"],"title":"PublicFilter","type":"object","uniqueKey":"query.oneOf.0.measure.items.[INDEX].where.items.[INDEX]","typeLabel":"PublicFilter · object"},"maxItems":20,"title":"Where","type":"array","uniqueKey":"query.oneOf.0.measure.items.[INDEX].where","typeLabel":"PublicFilter · object[]"}},"required":["fn"],"title":"PublicMeasure","type":"object","uniqueKey":"query.oneOf.0.measure.items.[INDEX]","typeLabel":"PublicMeasure · object"},"maxItems":20,"title":"Measure","type":"array","uniqueKey":"query.oneOf.0.measure","typeLabel":"PublicMeasure · object[]"},"sort":{"oneOf":[{"type":"object","title":"PublicSort","required":["by"],"properties":{"by":{"description":"`label` (the group) or a measure's key; on a table, a dataset column.","title":"By","type":"string","isRequired":true,"uniqueKey":"query.oneOf.0.sort.oneOf.0.by","typeLabel":"string"},"dir":{"default":"desc","enum":["asc","desc"],"title":"Dir","type":"string","uniqueKey":"query.oneOf.0.sort.oneOf.0.dir","typeLabel":"enum\u003cstring>"}},"uniqueKey":"query.oneOf.0.sort.oneOf.0","typeLabel":"PublicSort · object"},{"type":"null","uniqueKey":"query.oneOf.0.sort.oneOf.1","typeLabel":"null"}],"uniqueKey":"query.oneOf.0.sort","typeLabel":"PublicSort · object | null"}},"uniqueKey":"query.oneOf.0","typeLabel":"PublicWidgetQuery · object"},{"type":"null","description":"A described widget: its new `query`, checked against the dataset's columns.","uniqueKey":"query.oneOf.1","typeLabel":"null"}],"uniqueKey":"query","typeLabel":"PublicWidgetQuery · object | null"}},"required":["definition_id"],"title":"WidgetCodeRequest","type":"object","uniqueKey":"","typeLabel":"WidgetCodeRequest · object"},"examples":{"Example":{"title":"Example","value":{"definition_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","function":"\u003cstring>","html":"\u003cstring>","query":{"columns":["\u003cstring>"],"filter":[{"column":"\u003cstring>","value":null}],"group_by":[{"column":"\u003cstring>"}],"history":{"last":123,"bucket":"day"},"limit":1000,"measure":[{"column":"\u003cstring>","label":"\u003cstring>","where":[{"column":"\u003cstring>","value":null}]}],"sort":{"by":"\u003cstring>","dir":"desc"}}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"e8f2a51d-89e4-4acf-8a03-d225be70dc47":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"What a write answers: enough for the chat to open the dashboard beside it.","properties":{"dashboard_id":{"title":"Dashboard Id","type":"string","isRequired":true,"uniqueKey":"data.dashboard_id","typeLabel":"string"},"definition_id":{"title":"Definition Id","type":"string","isRequired":true,"uniqueKey":"data.definition_id","typeLabel":"string"},"name":{"title":"Name","type":"string","isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"refresh_started":{"oneOf":[{"type":"boolean","title":"Refresh Started","isRequired":true,"uniqueKey":"data.refresh_started.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Refresh Started","isRequired":true,"uniqueKey":"data.refresh_started.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.refresh_started","typeLabel":"boolean | null"},"widget_count":{"title":"Widget Count","type":"integer","isRequired":true,"uniqueKey":"data.widget_count","typeLabel":"integer"},"widget_ids":{"items":{"type":"string","uniqueKey":"data.widget_ids.items.[INDEX]","typeLabel":"string"},"title":"Widget Ids","type":"array","isRequired":true,"uniqueKey":"data.widget_ids","typeLabel":"string[]"}},"required":["dashboard_id","name","definition_id","widget_ids","widget_count","refresh_started"],"title":"PublicDashboardCard","type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"PublicDashboardCard · object"},"meta":{"properties":{"request_id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid>"},"timings_ms":{"additionalProperties":{"type":"number","uniqueKey":"meta.timings_ms.additionalProperties","typeLabel":"number"},"type":"object","isRequired":true,"uniqueKey":"meta.timings_ms","typeLabel":"object"},"pagination":{"properties":{"has_more":{"type":"boolean","isRequired":true,"uniqueKey":"meta.pagination.has_more","typeLabel":"boolean"},"next_cursor":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"meta.pagination.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"meta.pagination.next_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.pagination.next_cursor","typeLabel":"string | null"}},"required":["next_cursor","has_more"],"type":"object","uniqueKey":"meta.pagination","typeLabel":"object"},"warnings":{"description":"Non-fatal warnings about the created/updated resource (e.g. an unhealthy PSA callback).","items":{"type":"string","uniqueKey":"meta.warnings.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"meta.warnings","typeLabel":"string[]"}},"required":["request_id","timings_ms"],"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["data","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"dashboard_id":"\u003cstring>","definition_id":"\u003cstring>","name":"\u003cstring>","refresh_started":true,"widget_count":123,"widget_ids":["\u003cstring>"]},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","timings_ms":{},"pagination":{"has_more":true,"next_cursor":"\u003cstring>"},"warnings":["\u003cstring>"]}}}},"exampleType":"generated"}},"description":"Success.","exampleType":"generated"},"9423938c-53ab-4156-9393-54dfac7f1fcb":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Bad request — malformed input.","exampleType":"generated"},"7cc9323f-ce68-4c10-a9d0-d2074e8edc8e":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Unauthenticated — missing or invalid credentials.","exampleType":"generated"},"295a7d6b-a1fb-4da6-bf50-163502099229":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Forbidden — authenticated but not allowed.","exampleType":"generated"},"d8909028-b1c4-4a01-a4cb-f983529e53cb":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Not found.","exampleType":"generated"},"db5fa5a2-50fd-4d37-a8bd-473c1ddfcb48":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Conflict — the resource is in a state that blocks this operation.","exampleType":"generated"},"f50e0d3e-7588-485d-9d2c-a5fa9844f2ea":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Request validation failed.","exampleType":"generated"},"98510f95-48e0-4536-8a52-7c5c847867fc":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Rate limited — see Retry-After.","exampleType":"generated"},"a465d180-9ce8-4ae1-89f4-5375ecb77797":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Internal server error.","exampleType":"generated"}},"security":{"0042f06f-6ef1-42bc-9c48-227d4ef8d495":{"bearerAuth":{"description":"`Authorization: Bearer \u003ctoken>` where `\u003ctoken>` is either a `neo_sk_\u003cenv>_\u003csecret>` API key (service account) or a Microsoft Entra ID access token (dashboard user).","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"50f7e835-57ed-42d5-906e-13ab4bdbb509":{"url":"https://api.neoagent.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"`Authorization: Bearer \u003ctoken>` where `\u003ctoken>` is either a `neo_sk_\u003cenv>_\u003csecret>` API key (service account) or a Microsoft Entra ID access token (dashboard user).","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"`Authorization: Bearer \u003ctoken>` where `\u003ctoken>` is either a `neo_sk_\u003cenv>_\u003csecret>` API key (service account) or a Microsoft Entra ID access token (dashboard user).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://api.neoagent.io/public-api/openapi.json"},"subdomain":"neoagent","siteName":"Neo Agent","title":"Edit one widget's code - Neo Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T22:07:20.889Z","originalFileLocation":"api-reference/dashboards/edit-one-widgets-code.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"An admin\u0026#x27;s hand edit of one widget\u0026#x27;s own code, what Edit in the page\u0026#x27;s View code saves: a function widget\u0026#x27;s whole def widget_(ctx): (function, nothing else: shared helpers and collect(ctx) change through PUT /dashboards/), a described widget\u0026#x27;s query, an html widget\u0026#x27;s html. Stored as a new definition under the checks a PUT makes (422 validation_error with details.errors, every problem); the widget then carries hand_edited_at and hand_edited_by until its code changes another way. A query or html edit keeps the stored rows (refresh_started null); a function edit refreshes the dashboard. 409 dashboard_update_conflict when definition_id is no longer the one in use or the widget is gone (details.definition_id: read it again); 403 unless an admin.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Neo Agent\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Edit one widget\u0026#x27;s code - Neo Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"An admin\u0026#x27;s hand edit of one widget\u0026#x27;s own code, what Edit in the page\u0026#x27;s View code saves: a function widget\u0026#x27;s whole def widget_(ctx): (function, nothing else: shared helpers and collect(ctx) change through PUT /dashboards/), a described widget\u0026#x27;s query, an html widget\u0026#x27;s html. Stored as a new definition under the checks a PUT makes (422 validation_error with details.errors, every problem); the widget then carries hand_edited_at and hand_edited_by until its code changes another way. A query or html edit keeps the stored rows (refresh_started null); a function edit refreshes the dashboard. 409 dashboard_update_conflict when definition_id is no longer the one in use or the widget is gone (details.definition_id: read it again); 403 unless an admin.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Neo Agent\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://neoagent.mintlify.site/_mintlify/api/og/v2?division=Dashboards\u0026amp;title=Edit+one+widget%27s+code\u0026amp;description=An+admin%27s+hand+edit+of+one+widget%27s+own+code%2C+what+Edit+in+the+page%27s+View+code+saves%3A+a+function+widget%27s+whole+%60def+widget_%3Cid%3E%28ctx%29%3A%60+%28%60function%60%2C+nothing+e\u0026amp;theme=4ae218e53f7e9d2bedb5912e\u0026amp;signature=8f17c8c9ccab09995c57703547587d157979260346c5777224699ee062f467dc\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Edit one widget\u0026#x27;s code - Neo Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"An admin\u0026#x27;s hand edit of one widget\u0026#x27;s own code, what Edit in the page\u0026#x27;s View code saves: a function widget\u0026#x27;s whole def widget_(ctx): (function, nothing else: shared helpers and collect(ctx) change through PUT /dashboards/), a described widget\u0026#x27;s query, an html widget\u0026#x27;s html. Stored as a new definition under the checks a PUT makes (422 validation_error with details.errors, every problem); the widget then carries hand_edited_at and hand_edited_by until its code changes another way. A query or html edit keeps the stored rows (refresh_started null); a function edit refreshes the dashboard. 409 dashboard_update_conflict when definition_id is no longer the one in use or the widget is gone (details.definition_id: read it again); 403 unless an admin.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://neoagent.mintlify.site/_mintlify/api/og/v2?division=Dashboards\u0026amp;title=Edit+one+widget%27s+code\u0026amp;description=An+admin%27s+hand+edit+of+one+widget%27s+own+code%2C+what+Edit+in+the+page%27s+View+code+saves%3A+a+function+widget%27s+whole+%60def+widget_%3Cid%3E%28ctx%29%3A%60+%28%60function%60%2C+nothing+e\u0026amp;theme=4ae218e53f7e9d2bedb5912e\u0026amp;signature=8f17c8c9ccab09995c57703547587d157979260346c5777224699ee062f467dc\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Neo Agent\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/dashboards/edit-one-widgets-code.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.neoagent.io/#organization\",\"name\":\"Neo Agent\",\"url\":\"https://docs.neoagent.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/neoagent/G1PkeWrWjzTWVbma/images/neo_agent_bright_logo.png?fit=max\u0026auto=format\u0026n=G1PkeWrWjzTWVbma\u0026q=85\u0026s=090e8010cda28a9adb16dfaf022b8382\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.neoagent.io#website\",\"name\":\"Neo Agent\",\"url\":\"https://docs.neoagent.io\",\"publisher\":{\"@id\":\"https://docs.neoagent.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code#webpage\",\"url\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code\",\"name\":\"Edit one widget's code\",\"description\":\"An admin's hand edit of one widget's own code, what Edit in the page's View code saves: a function widget's whole def widget_(ctx): (function, nothing else: shared helpers and collect(ctx) change through PUT /dashboards/), a described widget's query, an html widget's html. Stored as a new definition under the checks a PUT makes (422 validation_error with details.errors, every problem); the widget then carries hand_edited_at and hand_edited_by until its code changes another way. A query or html edit keeps the stored rows (refresh_started null); a function edit refreshes the dashboard. 409 dashboard_update_conflict when definition_id is no longer the one in use or the widget is gone (details.definition_id: read it again); 403 unless an admin.\",\"dateModified\":\"2026-11-10T22:07:20.889Z\",\"isPartOf\":{\"@id\":\"https://docs.neoagent.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.neoagent.io/api-reference/agents/list-agents\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dashboards\",\"item\":\"https://docs.neoagent.io/api-reference/dashboards/list-the-workspaces-dashboards\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Edit one widget's code\",\"item\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code#apireference\",\"headline\":\"Edit one widget's code\",\"name\":\"Edit one widget's code\",\"description\":\"An admin's hand edit of one widget's own code, what Edit in the page's View code saves: a function widget's whole def widget_(ctx): (function, nothing else: shared helpers and collect(ctx) change through PUT /dashboards/), a described widget's query, an html widget's html. Stored as a new definition under the checks a PUT makes (422 validation_error with details.errors, every problem); the widget then carries hand_edited_at and hand_edited_by until its code changes another way. A query or html edit keeps the stored rows (refresh_started null); a function edit refreshes the dashboard. 409 dashboard_update_conflict when definition_id is no longer the one in use or the widget is gone (details.definition_id: read it again); 403 unless an admin.\",\"url\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code\",\"mainEntityOfPage\":{\"@id\":\"https://docs.neoagent.io/api-reference/dashboards/edit-one-widgets-code#webpage\"},\"dateModified\":\"2026-11-10T22:07:20.889Z\",\"publisher\":{\"@id\":\"https://docs.neoagent.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.neoagent.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Neo Agent\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Neo Agent\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/dashboards/edit-one-widgets-code.md","siteName":"Neo Agent","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://neoagent.io"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/getting-started/welcome"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/assign-technician-basic"}]},{"tab":"API reference","groups":[{"group":"Get started","pages":[{"title":"Neo public API","href":"/developers/introduction"},{"title":"Authentication","href":"/developers/authentication"},{"title":"Quickstart","href":"/developers/quickstart"},{"title":"Errors","href":"/developers/errors"},{"title":"Rate limits","href":"/developers/rate-limits"}]},{"group":"Endpoints","pages":[{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents","href":"/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/agents","href":"/api-reference/agents/create-an-agent"},{"title":"Estimate a schedule's credit cost before creating the agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/cost-estimate","href":"/api-reference/agents/estimate-a-schedules-credit-cost-before-creating-the-agent"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}","href":"/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/agents/{agent_id}","href":"/api-reference/agents/update-an-agent"},{"title":"Delete an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/agents/{agent_id}","href":"/api-reference/agents/delete-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/agents/{agent_id}","href":"/api-reference/agents/update-an-agent-1"},{"title":"Estimate a scheduled agent's credit cost","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/cost-estimate","href":"/api-reference/agents/estimate-a-scheduled-agents-credit-cost"},{"title":"List what this agent could still be given","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/improvement-options","href":"/api-reference/agents/list-what-this-agent-could-still-be-given"},{"title":"List the pinned memories this agent reads","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/pinned-memories","href":"/api-reference/agents/list-the-pinned-memories-this-agent-reads"},{"title":"Get an agent's sequential queue","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/queue","href":"/api-reference/agents/get-an-agents-sequential-queue"},{"title":"Run an agent now","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/agents/{agent_id}/run-now","href":"/api-reference/agents/run-an-agent-now"},{"title":"Get agent execution stats","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/stats","href":"/api-reference/agents/get-agent-execution-stats"},{"title":"Get the agent version at a point in time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/version-at","href":"/api-reference/agents/get-the-agent-version-at-a-point-in-time"},{"title":"List agent versions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/versions","href":"/api-reference/agents/list-agent-versions"}]},{"group":"Credit alert rules","pages":[{"title":"Get an agent's credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/credit-alert-rule","href":"/api-reference/credit-alert-rules/get-an-agents-credit-alert-rule"},{"title":"Create or replace an agent's credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/agents/{agent_id}/credit-alert-rule","href":"/api-reference/credit-alert-rules/create-or-replace-an-agents-credit-alert-rule"},{"title":"Delete an agent's credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/agents/{agent_id}/credit-alert-rule","href":"/api-reference/credit-alert-rules/delete-an-agents-credit-alert-rule"},{"title":"Preview a credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/agents/{agent_id}/credit-alert-rule/preview","href":"/api-reference/credit-alert-rules/preview-a-credit-alert-rule"},{"title":"List credit alert rules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/credit-alert-rules","href":"/api-reference/credit-alert-rules/list-credit-alert-rules"}]},{"group":"Inbox \u0026 Comms","pages":[{"title":"List active announcements","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/announcements","href":"/api-reference/inbox-\u0026-comms/list-active-announcements"},{"title":"List inbox messages","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/inbox","href":"/api-reference/inbox-\u0026-comms/list-inbox-messages"},{"title":"Mark an inbox message as read","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/inbox/{deduplication_message_id}/read","href":"/api-reference/inbox-\u0026-comms/mark-an-inbox-message-as-read"}]},{"group":"API keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/api-keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/api-keys","href":"/api-reference/api-keys/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/api-keys/{key_id}","href":"/api-reference/api-keys/revoke-an-api-key"},{"title":"Rotate an API key","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/api-keys/{key_id}/rotate","href":"/api-reference/api-keys/rotate-an-api-key"}]},{"group":"Audit Log","pages":[{"title":"Audit Log summary — call counts per tool and per agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/audit-log/facets","href":"/api-reference/audit-log/audit-log-summary-—-call-counts-per-tool-and-per-agent"},{"title":"List agent tool calls (Audit Log)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/audit-log/tool-calls","href":"/api-reference/audit-log/list-agent-tool-calls-audit-log"}]},{"group":"Backfills","pages":[{"title":"List backfills","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/backfills","href":"/api-reference/backfills/list-backfills"},{"title":"Create a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills","href":"/api-reference/backfills/create-a-backfill"},{"title":"Preflight a backfill filter","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/verify","href":"/api-reference/backfills/preflight-a-backfill-filter"},{"title":"Get a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/backfills/{backfill_id}","href":"/api-reference/backfills/get-a-backfill"},{"title":"Cancel a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/cancel","href":"/api-reference/backfills/cancel-a-backfill"},{"title":"List a backfill's failed tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/backfills/{backfill_id}/failures","href":"/api-reference/backfills/list-a-backfills-failed-tickets"},{"title":"Pause a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/pause","href":"/api-reference/backfills/pause-a-backfill"},{"title":"Rerun a backfill against its failed tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/rerun-failed","href":"/api-reference/backfills/rerun-a-backfill-against-its-failed-tickets"},{"title":"Resume a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/resume","href":"/api-reference/backfills/resume-a-backfill"}]},{"group":"Billing","pages":[{"title":"Get end-user bot (MAU) usage and charge for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/end-user-teams-usage","href":"/api-reference/billing/get-end-user-bot-mau-usage-and-charge-for-a-month"},{"title":"Detailed end-user bot (MAU) breakdown for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/end-user-teams/detail","href":"/api-reference/billing/detailed-end-user-bot-mau-breakdown-for-a-month"},{"title":"Get the tenant's metered billing month so far","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/metered","href":"/api-reference/billing/get-the-tenants-metered-billing-month-so-far"},{"title":"Get this workspace's organization billing","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/organization","href":"/api-reference/billing/get-this-workspaces-organization-billing"},{"title":"Get the tenant's referral program state","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/referrals","href":"/api-reference/billing/get-the-tenants-referral-program-state"},{"title":"Get the tenant's subscription / plan state","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/subscription","href":"/api-reference/billing/get-the-tenants-subscription-plan-state"},{"title":"Get credit usage for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/usage","href":"/api-reference/billing/get-credit-usage-for-a-month"},{"title":"Get per-agent credit usage for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/usage-by-agent","href":"/api-reference/billing/get-per-agent-credit-usage-for-a-month"},{"title":"Get credit usage per ticket for a period","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/usage-by-ticket","href":"/api-reference/billing/get-credit-usage-per-ticket-for-a-period"}]},{"group":"Callbacks","pages":[{"title":"List callbacks","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/callbacks","href":"/api-reference/callbacks/list-callbacks"},{"title":"Get a callback","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/callbacks/{callback_id}","href":"/api-reference/callbacks/get-a-callback"}]},{"group":"Channels","pages":[{"title":"List channels","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels","href":"/api-reference/channels/list-channels"},{"title":"Create a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels","href":"/api-reference/channels/create-a-channel"},{"title":"Resolve install greeting branding","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/install-events","href":"/api-reference/channels/resolve-install-greeting-branding"},{"title":"Get a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}","href":"/api-reference/channels/get-a-channel"},{"title":"Delete a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/channels/{channel_id}","href":"/api-reference/channels/delete-a-channel"},{"title":"Update a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/channels/{channel_id}","href":"/api-reference/channels/update-a-channel"},{"title":"Get a channel's Slack app","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}/slack-app","href":"/api-reference/channels/get-a-channels-slack-app"},{"title":"Request a channel's Slack app","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/{channel_id}/slack-app","href":"/api-reference/channels/request-a-channels-slack-app"},{"title":"Upload a Slack channel's icon","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/{channel_id}/slack-app/icon","href":"/api-reference/channels/upload-a-slack-channels-icon"},{"title":"Create a Slack install link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/{channel_id}/slack-install-link","href":"/api-reference/channels/create-a-slack-install-link"},{"title":"List a channel's Slack workspaces","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}/slack-installs","href":"/api-reference/channels/list-a-channels-slack-workspaces"},{"title":"Remove a Slack workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/channels/{channel_id}/slack-installs/{install_id}","href":"/api-reference/channels/remove-a-slack-workspace"},{"title":"List a Teams channel's client tenants","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}/teams-installs","href":"/api-reference/channels/list-a-teams-channels-client-tenants"},{"title":"Send a technician's Live chat in Teams \u0026 Slack thread reply to the end user (relays only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-inbox/replies","href":"/api-reference/channels/send-a-technicians-live-chat-in-teams-\u0026-slack-thread-reply-to-the-end-user-relays-only"},{"title":"Is this channel thread a Live chat in Teams \u0026 Slack post? (relays only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-inbox/threads/lookup","href":"/api-reference/channels/is-this-channel-thread-a-live-chat-in-teams-\u0026-slack-post?-relays-only"}]},{"group":"Chat","pages":[{"title":"Create a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions","href":"/api-reference/chat/create-a-chat-session"},{"title":"Get a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/chat/sessions/{session_id}","href":"/api-reference/chat/get-a-chat-session"},{"title":"Get a signed URL to upload a chat image or document","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/attachments/upload-url","href":"/api-reference/chat/get-a-signed-url-to-upload-a-chat-image-or-document"},{"title":"Tail chat-session events (SSE)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/chat/sessions/{session_id}/events","href":"/api-reference/chat/tail-chat-session-events-sse"},{"title":"List messages in a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/chat/sessions/{session_id}/messages","href":"/api-reference/chat/list-messages-in-a-chat-session"},{"title":"Append a user message + enqueue a chat turn","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/messages","href":"/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn"},{"title":"Reset a chat session (archive + start fresh)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/reset","href":"/api-reference/chat/reset-a-chat-session-archive-+-start-fresh"},{"title":"Stop the turn running on a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/stop","href":"/api-reference/chat/stop-the-turn-running-on-a-chat-session"},{"title":"Mint an end-user session token","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/sessions","href":"/api-reference/chat/mint-an-end-user-session-token"},{"title":"Revoke an end-user session token by jti","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/sessions/{jti}","href":"/api-reference/chat/revoke-an-end-user-session-token-by-jti"}]},{"group":"Tenant","pages":[{"title":"Get the caller's tenant","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/clients/me","href":"/api-reference/tenant/get-the-callers-tenant"}]},{"group":"Integrations","pages":[{"title":"Get company filters","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-filters","href":"/api-reference/integrations/get-company-filters"},{"title":"Update company filters","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/company-filters","href":"/api-reference/integrations/update-company-filters"},{"title":"Get company-filter options","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-filters/options","href":"/api-reference/integrations/get-company-filter-options"},{"title":"Remove companies that no longer match","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-filters/remove-unmatched","href":"/api-reference/integrations/remove-companies-that-no-longer-match"},{"title":"Get documentation storage usage against the plan allowance","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/documentation/quota","href":"/api-reference/integrations/get-documentation-storage-usage-against-the-plan-allowance"},{"title":"List integrations","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations","href":"/api-reference/integrations/list-integrations"},{"title":"Get the Neo panel in Autotask tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/autotask-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-in-autotask-tickets"},{"title":"Turn the Neo panel in Autotask tickets on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/autotask-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-in-autotask-tickets-on-or-off"},{"title":"Give the Neo panel in Autotask a new signing secret","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/autotask-neo-panel/rotate-secret","href":"/api-reference/integrations/give-the-neo-panel-in-autotask-a-new-signing-secret"},{"title":"Get the Neo panel in ConnectWise tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/connectwise-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-in-connectwise-tickets"},{"title":"Turn the Neo panel in ConnectWise tickets on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/connectwise-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-in-connectwise-tickets-on-or-off"},{"title":"Get the ConnectWise schedule types that count as time off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/connectwise-time-off-schedule-types","href":"/api-reference/integrations/get-the-connectwise-schedule-types-that-count-as-time-off"},{"title":"Set the ConnectWise schedule types that count as time off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/connectwise-time-off-schedule-types","href":"/api-reference/integrations/set-the-connectwise-schedule-types-that-count-as-time-off"},{"title":"Get the tenant's ConnectWise customer-reply policy","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/customer-reply-policy","href":"/api-reference/integrations/get-the-tenants-connectwise-customer-reply-policy"},{"title":"Update the tenant's ConnectWise customer-reply policy","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/customer-reply-policy","href":"/api-reference/integrations/update-the-tenants-connectwise-customer-reply-policy"},{"title":"Get the tenant's Datto EDR settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/datto-edr-config","href":"/api-reference/integrations/get-the-tenants-datto-edr-settings"},{"title":"Turn Datto EDR location mapping on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/datto-edr-config","href":"/api-reference/integrations/turn-datto-edr-location-mapping-on-or-off"},{"title":"Get the Neo panel in HaloPSA tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/halo-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-in-halopsa-tickets"},{"title":"Turn the Neo panel in HaloPSA tickets on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/halo-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-in-halopsa-tickets-on-or-off"},{"title":"Give the Neo panel in HaloPSA a new signing secret","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/halo-neo-panel/rotate-secret","href":"/api-reference/integrations/give-the-neo-panel-in-halopsa-a-new-signing-secret"},{"title":"Get the tenant's ticket-relay policy","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/relay-policy","href":"/api-reference/integrations/get-the-tenants-ticket-relay-policy"},{"title":"Ask Neo to build an integration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/requests","href":"/api-reference/integrations/ask-neo-to-build-an-integration"},{"title":"Get the Neo panel on ServiceNow ticket forms","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/servicenow-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-on-servicenow-ticket-forms"},{"title":"Turn the Neo panel on ServiceNow ticket forms on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/servicenow-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-on-servicenow-ticket-forms-on-or-off"},{"title":"Give the Neo panel on ServiceNow a new signing secret","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/servicenow-neo-panel/rotate-secret","href":"/api-reference/integrations/give-the-neo-panel-on-servicenow-a-new-signing-secret"},{"title":"Get the Neo AI Agent Slack app status","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/slack-neo-app","href":"/api-reference/integrations/get-the-neo-ai-agent-slack-app-status"},{"title":"Disconnect the Neo AI Agent Slack app","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/integrations/slack-neo-app","href":"/api-reference/integrations/disconnect-the-neo-ai-agent-slack-app"},{"title":"List the Slack channels the Neo AI Agent app is in","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/slack-neo-app/channels","href":"/api-reference/integrations/list-the-slack-channels-the-neo-ai-agent-app-is-in"},{"title":"Create the Neo AI Agent Slack install link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/slack-neo-app/install-link","href":"/api-reference/integrations/create-the-neo-ai-agent-slack-install-link"},{"title":"List the people of the connected Slack workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/slack-neo-app/users","href":"/api-reference/integrations/list-the-people-of-the-connected-slack-workspace"},{"title":"List the channels Live chat in Teams \u0026 Slack can post in","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/technician-inbox-channels","href":"/api-reference/integrations/list-the-channels-live-chat-in-teams-\u0026-slack-can-post-in"},{"title":"Get the tenant's Live chat in Teams \u0026 Slack channels","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/technician-inbox-config","href":"/api-reference/integrations/get-the-tenants-live-chat-in-teams-\u0026-slack-channels"},{"title":"Set the tenant's Live chat in Teams \u0026 Slack channels","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/technician-inbox-config","href":"/api-reference/integrations/set-the-tenants-live-chat-in-teams-\u0026-slack-channels"},{"title":"Get the tenant's ticket board/queue sync filter","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/ticket-sync-filter","href":"/api-reference/integrations/get-the-tenants-ticket-boardqueue-sync-filter"},{"title":"Get an integration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/{name}","href":"/api-reference/integrations/get-an-integration"},{"title":"Get an integration's connect instructions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/{name}/connect-url","href":"/api-reference/integrations/get-an-integrations-connect-instructions"},{"title":"Disconnect an integration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/{name}/disconnect","href":"/api-reference/integrations/disconnect-an-integration"},{"title":"List integration sync runs","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/{name}/sync-runs","href":"/api-reference/integrations/list-integration-sync-runs"},{"title":"Auto-map technicians to their Microsoft user","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/teams-availability/auto-map","href":"/api-reference/integrations/auto-map-technicians-to-their-microsoft-user"},{"title":"Get the Teams availability admin-consent URL","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/teams-availability/consent-url","href":"/api-reference/integrations/get-the-teams-availability-admin-consent-url"},{"title":"List the MSP tenant's Teams","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/teams-availability/teams","href":"/api-reference/integrations/list-the-msp-tenants-teams"}]},{"group":"End companies","pages":[{"title":"List an integration's company links","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-links","href":"/api-reference/end-companies/list-an-integrations-company-links"},{"title":"Map an integration's entity to a PSA company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-links/assign","href":"/api-reference/end-companies/map-an-integrations-entity-to-a-psa-company"},{"title":"List the companies whose CIPP tenant a person can confirm","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-links/cipp-matches","href":"/api-reference/end-companies/list-the-companies-whose-cipp-tenant-a-person-can-confirm"},{"title":"Confirm CIPP tenants as the companies' Microsoft tenants","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-links/cipp-matches/confirm","href":"/api-reference/end-companies/confirm-cipp-tenants-as-the-companies-microsoft-tenants"},{"title":"Clear a manual company link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-links/clear","href":"/api-reference/end-companies/clear-a-manual-company-link"},{"title":"List end-companies","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies","href":"/api-reference/end-companies/list-end-companies"},{"title":"Create an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-companies","href":"/api-reference/end-companies/create-an-end-company"},{"title":"Bulk-update end-companies","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-companies/bulk-update","href":"/api-reference/end-companies/bulk-update-end-companies"},{"title":"Get the default for companies with no identity provider","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/identity-provider-default","href":"/api-reference/end-companies/get-the-default-for-companies-with-no-identity-provider"},{"title":"Set the default for companies with no identity provider","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/end-companies/identity-provider-default","href":"/api-reference/end-companies/set-the-default-for-companies-with-no-identity-provider"},{"title":"Get an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/{psa_company_id}","href":"/api-reference/end-companies/get-an-end-company"},{"title":"Delete an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/end-companies/{psa_company_id}","href":"/api-reference/end-companies/delete-an-end-company"},{"title":"Update an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/end-companies/{psa_company_id}","href":"/api-reference/end-companies/update-an-end-company"},{"title":"List an end-company's contacts","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/{psa_company_id}/contacts","href":"/api-reference/end-companies/list-an-end-companys-contacts"},{"title":"Exclude or include an end-company's tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/end-companies/{psa_company_id}/ticket-exclusion","href":"/api-reference/end-companies/exclude-or-include-an-end-companys-tickets"}]},{"group":"Dashboards","pages":[{"title":"List the workspace's dashboards","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards","href":"/api-reference/dashboards/list-the-workspaces-dashboards"},{"title":"Create a dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards","href":"/api-reference/dashboards/create-a-dashboard"},{"title":"See which dashboards one member sees, and why","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/access","href":"/api-reference/dashboards/see-which-dashboards-one-member-sees-and-why"},{"title":"List the dashboard folders","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/folders","href":"/api-reference/dashboards/list-the-dashboard-folders"},{"title":"Create a dashboard folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/folders","href":"/api-reference/dashboards/create-a-dashboard-folder"},{"title":"Rename a dashboard folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/folders/{folder_id}","href":"/api-reference/dashboards/rename-a-dashboard-folder"},{"title":"Delete a dashboard folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/dashboards/folders/{folder_id}","href":"/api-reference/dashboards/delete-a-dashboard-folder"},{"title":"List dashboard templates","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/templates","href":"/api-reference/dashboards/list-dashboard-templates"},{"title":"Get a dashboard template","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/templates/{template_id}","href":"/api-reference/dashboards/get-a-dashboard-template"},{"title":"Start a dashboard from a template","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/templates/{template_id}/instantiate","href":"/api-reference/dashboards/start-a-dashboard-from-a-template"},{"title":"Get a dashboard with its latest widget data","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}","href":"/api-reference/dashboards/get-a-dashboard-with-its-latest-widget-data"},{"title":"Update a dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}","href":"/api-reference/dashboards/update-a-dashboard"},{"title":"Delete a dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/dashboards/{dashboard_id}","href":"/api-reference/dashboards/delete-a-dashboard"},{"title":"Read a dashboard's dataset rows","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/dataset","href":"/api-reference/dashboards/read-a-dashboards-dataset-rows"},{"title":"List a dashboard's versions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/definitions","href":"/api-reference/dashboards/list-a-dashboards-versions"},{"title":"Share a dashboard publicly by link, or revoke the link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/dashboards/{dashboard_id}/public","href":"/api-reference/dashboards/share-a-dashboard-publicly-by-link-or-revoke-the-link"},{"title":"Refresh every widget","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/{dashboard_id}/refresh","href":"/api-reference/dashboards/refresh-every-widget"},{"title":"See who a dashboard is shared with","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/sharing","href":"/api-reference/dashboards/see-who-a-dashboard-is-shared-with"},{"title":"Share a dashboard with named members, make it private, or open it to the workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}/sharing","href":"/api-reference/dashboards/share-a-dashboard-with-named-members-make-it-private-or-open-it-to-the-workspace"},{"title":"Copy a widget onto this dashboard","description":"Copies `widget_id` of `source_dashboard_id` onto the dashboard in the path, in a new row at its bottom, as a new definition (the version history keeps the one before). A described widget (`query`) is checked as any write is, against this dashboard's dataset columns (422 when it does not fit, a measure named `label` or `values`, a `history` query on a dashboard with no `schedule`); a dashboard with no dataset gets the source's `dataset` and `collect(ctx)` too. A function widget brings `widget_\u003cid>` and every module-level helper, constant and import it reads; a name this dashboard's module already binds to other code is a 409 `dashboard_widget_copy_conflict` naming it, and nothing is stored. Code copied over runs under the source's permission groups and Custom API connections too, so those are added to this dashboard's. A widget that reads other widgets (`inputs`) is a 422. An `html` widget brings its `html` and `libs`, checked as any write is: a 422 past 6 html widgets on this dashboard, or for `html` the rules refuse now (64 KB, `\u003cscript src>`). The copy keeps the source's id, or takes `\u003cid>_copy` when this dashboard has one: `widget_id` in the answer. A described widget copied onto a dashboard that already has the dataset refreshes nothing (`refresh_started` null); any other copy refreshes the dashboard. 409 `dashboard_update_conflict` when this dashboard changed while saving. **An acting user must be an admin** (403 `insufficient_scope`); 404 `dashboard_not_found` when either dashboard is not the workspace's.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/{dashboard_id}/widgets/copy","href":"/api-reference/dashboards/copy-a-widget-onto-this-dashboard"},{"title":"Edit one widget's code","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/code","href":"/api-reference/dashboards/edit-one-widgets-code"},{"title":"Refresh one widget","description":"Starts a refresh of one widget (its inputs run too unless stored data covers them). 409 `dashboard_refresh_too_soon` when the pass that last wrote it (data or an error) started less than 15 seconds ago, the time its data is as of; 422 for a widget the dashboard does not have. Read the result with `GET /dashboards/\u003cid>`.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/refresh","href":"/api-reference/dashboards/refresh-one-widget"},{"title":"Compute a described widget under a view","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/result","href":"/api-reference/dashboards/compute-a-described-widget-under-a-view"}]},{"group":"End users","pages":[{"title":"List an end user's tickets (Teams Tickets tab)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-user/tickets","href":"/api-reference/end-users/list-an-end-users-tickets-teams-tickets-tab"},{"title":"Continue a ticket in the bot chat (Teams Tickets tab)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-user/tickets/chat-request","href":"/api-reference/end-users/continue-a-ticket-in-the-bot-chat-teams-tickets-tab"},{"title":"Ask the bot for a new ticket (Teams Tickets tab)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-user/tickets/new-request","href":"/api-reference/end-users/ask-the-bot-for-a-new-ticket-teams-tickets-tab"}]},{"group":"Escalation","pages":[{"title":"Escalate to the Neo team","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/escalate-to-neo-team","href":"/api-reference/escalation/escalate-to-the-neo-team"}]},{"group":"Executions","pages":[{"title":"List executions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions","href":"/api-reference/executions/list-executions"},{"title":"Get an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}","href":"/api-reference/executions/get-an-execution"},{"title":"Get the per-run custom instructions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/additional-custom-instructions","href":"/api-reference/executions/get-the-per-run-custom-instructions"},{"title":"List artifacts an execution produced","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/artifacts","href":"/api-reference/executions/list-artifacts-an-execution-produced"},{"title":"Get an artifact's full body inline","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/artifacts/{artifact_id}/content","href":"/api-reference/executions/get-an-artifacts-full-body-inline"},{"title":"Get a download URL for a sandbox-file artifact","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/artifacts/{artifact_id}/download-url","href":"/api-reference/executions/get-a-download-url-for-a-sandbox-file-artifact"},{"title":"Get the callback that triggered an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/callback","href":"/api-reference/executions/get-the-callback-that-triggered-an-execution"},{"title":"Cancel an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/executions/{execution_id}/cancel","href":"/api-reference/executions/cancel-an-execution"},{"title":"Get the field-update audit for an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/field-update-audit","href":"/api-reference/executions/get-the-field-update-audit-for-an-execution"},{"title":"Retry an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/executions/{execution_id}/retry","href":"/api-reference/executions/retry-an-execution"},{"title":"List the RMM script runs in an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/rmm-script-executions","href":"/api-reference/executions/list-the-rmm-script-runs-in-an-execution"},{"title":"List execution steps","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/steps","href":"/api-reference/executions/list-execution-steps"},{"title":"List the TIL requests raised in an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/til-requests","href":"/api-reference/executions/list-the-til-requests-raised-in-an-execution"}]},{"group":"Feedback","pages":[{"title":"Submit feedback","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/feedback","href":"/api-reference/feedback/submit-feedback"},{"title":"Update feedback","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/feedback/{feedback_id}","href":"/api-reference/feedback/update-feedback"},{"title":"Set support-chat contact","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/support-chat-contact","href":"/api-reference/feedback/set-support-chat-contact"}]},{"group":"Handover","pages":[{"title":"Accept a Neo Pulse handover request","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/handover-requests/{request_id}/accept","href":"/api-reference/handover/accept-a-neo-pulse-handover-request"}]},{"group":"Meta","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/health","href":"/api-reference/meta/liveness-probe"},{"title":"OpenAPI 3.1 document","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/openapi.json","href":"/api-reference/meta/openapi-31-document"}]},{"group":"Insights","pages":[{"title":"Start an Insights analysis","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/insights/analyze","href":"/api-reference/insights/start-an-insights-analysis"},{"title":"Insights presets — suggested region, period options, trial state","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/defaults","href":"/api-reference/insights/insights-presets-—-suggested-region-period-options-trial-state"},{"title":"Build a problem map","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/insights/problems/analyze","href":"/api-reference/insights/build-a-problem-map"},{"title":"Automation coverage per recurring problem, with Neo's plan for each","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/coverage","href":"/api-reference/insights/automation-coverage-per-recurring-problem-with-neos-plan-for-each"},{"title":"List the stored problem maps","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/reports","href":"/api-reference/insights/list-the-stored-problem-maps"},{"title":"A completed problem map","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/result","href":"/api-reference/insights/a-completed-problem-map"},{"title":"Problem map status","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/status","href":"/api-reference/insights/problem-map-status"},{"title":"The newest tickets of one recurring problem, with Neo's coverage on each","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/{problem_id}/tickets","href":"/api-reference/insights/the-newest-tickets-of-one-recurring-problem-with-neos-coverage-on-each"},{"title":"List the stored Insights category reports","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/reports","href":"/api-reference/insights/list-the-stored-insights-category-reports"},{"title":"Latest completed analysis","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/result","href":"/api-reference/insights/latest-completed-analysis"},{"title":"Set the minutes per ticket of report categories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/insights/result/category-minutes","href":"/api-reference/insights/set-the-minutes-per-ticket-of-report-categories"},{"title":"Set the hourly rate of a category report","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/insights/result/hourly-rate","href":"/api-reference/insights/set-the-hourly-rate-of-a-category-report"},{"title":"Latest analysis status","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/status","href":"/api-reference/insights/latest-analysis-status"}]},{"group":"Intents","pages":[{"title":"List intents","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/intents","href":"/api-reference/intents/list-intents"},{"title":"Create an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/intents","href":"/api-reference/intents/create-an-intent"},{"title":"Get an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/intents/{intent_id}","href":"/api-reference/intents/get-an-intent"},{"title":"Update an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/intents/{intent_id}","href":"/api-reference/intents/update-an-intent"},{"title":"Delete an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/intents/{intent_id}","href":"/api-reference/intents/delete-an-intent"}]},{"group":"Memberships","pages":[{"title":"Accept an email invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/invitations/accept","href":"/api-reference/memberships/accept-an-email-invitation"},{"title":"Preview an email invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/invitations/preview","href":"/api-reference/memberships/preview-an-email-invitation"},{"title":"List my workspaces","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/me/workspaces","href":"/api-reference/memberships/list-my-workspaces"},{"title":"List workspace members","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memberships","href":"/api-reference/memberships/list-workspace-members"},{"title":"Invite a workspace member","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memberships","href":"/api-reference/memberships/invite-a-workspace-member"},{"title":"Cancel a pending invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/memberships/invitations","href":"/api-reference/memberships/cancel-a-pending-invitation"},{"title":"Resend a pending email invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memberships/invitations/resend","href":"/api-reference/memberships/resend-a-pending-email-invitation"},{"title":"Revoke a workspace membership","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/memberships/{user_id}","href":"/api-reference/memberships/revoke-a-workspace-membership"}]},{"group":"Memories","pages":[{"title":"List agent memories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories","href":"/api-reference/memories/list-agent-memories"},{"title":"Create an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories","href":"/api-reference/memories/create-an-agent-memory"},{"title":"Read how full the memory budgets are","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories/budget","href":"/api-reference/memories/read-how-full-the-memory-budgets-are"},{"title":"Soft-delete several agent memories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/bulk-delete","href":"/api-reference/memories/soft-delete-several-agent-memories"},{"title":"Get an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories/{memory_id}","href":"/api-reference/memories/get-an-agent-memory"},{"title":"Soft-delete an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/memories/{memory_id}","href":"/api-reference/memories/soft-delete-an-agent-memory"},{"title":"Pin an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/pin","href":"/api-reference/memories/pin-an-agent-memory"},{"title":"Restore an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/restore","href":"/api-reference/memories/restore-an-agent-memory"},{"title":"Supersede an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/supersede","href":"/api-reference/memories/supersede-an-agent-memory"},{"title":"Unpin an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/unpin","href":"/api-reference/memories/unpin-an-agent-memory"},{"title":"List a memory's earlier versions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories/{memory_id}/versions","href":"/api-reference/memories/list-a-memorys-earlier-versions"}]},{"group":"Observability","pages":[{"title":"Callback-processing funnel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/observability/callback-funnel","href":"/api-reference/observability/callback-processing-funnel"},{"title":"Per-agent performance breakdown","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/observability/workflow-performance","href":"/api-reference/observability/per-agent-performance-breakdown"}]},{"group":"Organizations","pages":[{"title":"Get this workspace's organization","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/organizations/current","href":"/api-reference/organizations/get-this-workspaces-organization"},{"title":"Get organization administration details","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/organizations/{organization_id}","href":"/api-reference/organizations/get-organization-administration-details"},{"title":"Rename an organization","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/organizations/{organization_id}","href":"/api-reference/organizations/rename-an-organization"},{"title":"Get the organization's billing","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/organizations/{organization_id}/billing","href":"/api-reference/organizations/get-the-organizations-billing"},{"title":"Set an organization-billed workspace's monthly credit limit","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/organizations/{organization_id}/billing/workspaces/{client_id}/limit","href":"/api-reference/organizations/set-an-organization-billed-workspaces-monthly-credit-limit"},{"title":"Assign an organization administrator","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/organizations/{organization_id}/members","href":"/api-reference/organizations/assign-an-organization-administrator"},{"title":"Revoke organization administration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/organizations/{organization_id}/members","href":"/api-reference/organizations/revoke-organization-administration"},{"title":"Create a subsidiary workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/organizations/{organization_id}/workspaces","href":"/api-reference/organizations/create-a-subsidiary-workspace"},{"title":"Grant explicit workspace access","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/organizations/{organization_id}/workspaces/{client_id}/access","href":"/api-reference/organizations/grant-explicit-workspace-access"},{"title":"Get workspace Microsoft directory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/workspace-directory","href":"/api-reference/organizations/get-workspace-microsoft-directory"},{"title":"Connect my Microsoft directory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/workspace-directory","href":"/api-reference/organizations/connect-my-microsoft-directory"}]},{"group":"Performance","pages":[{"title":"Per-category execution stats","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/categories","href":"/api-reference/performance/per-category-execution-stats"},{"title":"Per-agent chat cost + usage for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/by-agent","href":"/api-reference/performance/per-agent-chat-cost-+-usage-for-a-date-window"},{"title":"Per-user chat cost + usage for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/by-user","href":"/api-reference/performance/per-user-chat-cost-+-usage-for-a-date-window"},{"title":"Aggregate chat-agent cost + usage for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/summary","href":"/api-reference/performance/aggregate-chat-agent-cost-+-usage-for-a-date-window"},{"title":"Chat credits / turns over time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/timeline","href":"/api-reference/performance/chat-credits-turns-over-time"},{"title":"Per-tool chat usage + cost for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/tools","href":"/api-reference/performance/per-tool-chat-usage-+-cost-for-a-date-window"},{"title":"Phone agent billed minutes and credits for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/phone","href":"/api-reference/performance/phone-agent-billed-minutes-and-credits-for-a-date-window"},{"title":"Aggregate execution stats for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/summary","href":"/api-reference/performance/aggregate-execution-stats-for-a-date-window"},{"title":"Tickets received vs. handled by Neo over time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/ticket-coverage","href":"/api-reference/performance/tickets-received-vs-handled-by-neo-over-time"},{"title":"Tickets one agent ran on, each counted once, by how it ended","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/ticket-outcomes","href":"/api-reference/performance/tickets-one-agent-ran-on-each-counted-once-by-how-it-ended"},{"title":"Execution volume / hours saved over time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/timeline","href":"/api-reference/performance/execution-volume-hours-saved-over-time"},{"title":"Per-agent execution stats for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/workflows","href":"/api-reference/performance/per-agent-execution-stats-for-a-date-window"}]},{"group":"Phone Agent","pages":[{"title":"List Phone Agent calls","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/calls","href":"/api-reference/phone-agent/list-phone-agent-calls"},{"title":"Get one Phone Agent call","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/calls/{call_id}","href":"/api-reference/phone-agent/get-one-phone-agent-call"},{"title":"List notetaker calls: calls routed to the help desk while Neo takes notes","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/notetaker-calls","href":"/api-reference/phone-agent/list-notetaker-calls:-calls-routed-to-the-help-desk-while-neo-takes-notes"},{"title":"Add a notetaker call's notes to a ticket","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/phone/notetaker-calls/{call_id}/ticket","href":"/api-reference/phone-agent/add-a-notetaker-calls-notes-to-a-ticket"},{"title":"List Phone Agent numbers","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/numbers","href":"/api-reference/phone-agent/list-phone-agent-numbers"},{"title":"Change a number's greetings, after-hours instructions, business hours, notetaker note visibility, transfer, end-call and caller-tickets settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/phone/numbers/{number}","href":"/api-reference/phone-agent/change-a-numbers-greetings-after-hours-instructions-business-hours-notetaker-note-visibility-transfer-end-call-and-caller-tickets-settings"},{"title":"Choose who takes a number's calls","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/phone/numbers/{number}/call-mode","href":"/api-reference/phone-agent/choose-who-takes-a-numbers-calls"},{"title":"List outbound calls: calls agents had Neo place to a ticket's contact","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/outbound-calls","href":"/api-reference/phone-agent/list-outbound-calls:-calls-agents-had-neo-place-to-a-tickets-contact"},{"title":"List notetaker calls (old path)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/passive-calls","href":"/api-reference/phone-agent/list-notetaker-calls-old-path"},{"title":"Add a notetaker call's notes to a ticket (old path)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/phone/passive-calls/{call_id}/ticket","href":"/api-reference/phone-agent/add-a-notetaker-calls-notes-to-a-ticket-old-path"}]},{"group":"RMM scripts","pages":[{"title":"List RMM script executions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/rmm-script-executions","href":"/api-reference/rmm-scripts/list-rmm-script-executions"},{"title":"Get an RMM script execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/rmm-script-executions/{execution_id}","href":"/api-reference/rmm-scripts/get-an-rmm-script-execution"}]},{"group":"Scheduled work","pages":[{"title":"List scheduled work","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/scheduled-work","href":"/api-reference/scheduled-work/list-scheduled-work"},{"title":"Schedule work","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/scheduled-work","href":"/api-reference/scheduled-work/schedule-work"},{"title":"Get a scheduled-work entry","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/scheduled-work/{scheduled_work_id}","href":"/api-reference/scheduled-work/get-a-scheduled-work-entry"},{"title":"Update a scheduled-work entry","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/scheduled-work/{scheduled_work_id}","href":"/api-reference/scheduled-work/update-a-scheduled-work-entry"},{"title":"Cancel a scheduled-work entry","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/scheduled-work/{scheduled_work_id}/cancel","href":"/api-reference/scheduled-work/cancel-a-scheduled-work-entry"}]},{"group":"Schemas","pages":[{"title":"Action-type schema catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/actions","href":"/api-reference/schemas/action-type-schema-catalog"},{"title":"Agent-integration schema catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/agent-integrations","href":"/api-reference/schemas/agent-integration-schema-catalog"},{"title":"Agent structural schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/agents","href":"/api-reference/schemas/agent-structural-schema"},{"title":"Callback change-option catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/callback-change-options","href":"/api-reference/schemas/callback-change-option-catalog"},{"title":"Custom-field-condition schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/custom-field-condition","href":"/api-reference/schemas/custom-field-condition-schema"},{"title":"Queryable-entity options","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/entity-options","href":"/api-reference/schemas/queryable-entity-options"},{"title":"Integrations schema catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/integrations","href":"/api-reference/schemas/integrations-schema-catalog"},{"title":"Opportunity-field schema (ConnectWise only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/opportunity","href":"/api-reference/schemas/opportunity-field-schema-connectwise-only"},{"title":"Project-ticket-field schema (ConnectWise only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/project_ticket","href":"/api-reference/schemas/project-ticket-field-schema-connectwise-only"},{"title":"Ticket-field schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/ticket","href":"/api-reference/schemas/ticket-field-schema"},{"title":"Time-entry-field schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/time_entry","href":"/api-reference/schemas/time-entry-field-schema"},{"title":"Tool catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/tools","href":"/api-reference/schemas/tool-catalog"}]},{"group":"Settings","pages":[{"title":"Get tenant settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings","href":"/api-reference/settings/get-tenant-settings"},{"title":"Update tenant settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/settings","href":"/api-reference/settings/update-tenant-settings"},{"title":"Get who receives the inbox emails","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/inbox-alerts","href":"/api-reference/settings/get-who-receives-the-inbox-emails"},{"title":"Set who receives the inbox emails","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/settings/inbox-alerts","href":"/api-reference/settings/set-who-receives-the-inbox-emails"},{"title":"Tenant-settings JSON schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/schema","href":"/api-reference/settings/tenant-settings-json-schema"},{"title":"Get the agent credit spend notice settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/spend-alerts","href":"/api-reference/settings/get-the-agent-credit-spend-notice-settings"},{"title":"Get the cost of technician time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/value","href":"/api-reference/settings/get-the-cost-of-technician-time"},{"title":"Set the cost of technician time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/settings/value","href":"/api-reference/settings/set-the-cost-of-technician-time"}]},{"group":"Sharing","pages":[{"title":"Get a publicly shared agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/shared-agents/{share_token}","href":"/api-reference/sharing/get-a-publicly-shared-agent"}]},{"group":"Skills","pages":[{"title":"List the tenant's skills","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills","href":"/api-reference/skills/list-the-tenants-skills"},{"title":"Create a skill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/skills","href":"/api-reference/skills/create-a-skill"},{"title":"Get a skill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}","href":"/api-reference/skills/get-a-skill"},{"title":"Replace whole files / update skill metadata","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/skills/{skill_id}","href":"/api-reference/skills/replace-whole-files-update-skill-metadata"},{"title":"Delete a skill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/skills/{skill_id}","href":"/api-reference/skills/delete-a-skill"},{"title":"Edit part of a skill's file","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/skills/{skill_id}","href":"/api-reference/skills/edit-part-of-a-skills-file"},{"title":"List the versions of a skill file","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/files/{file_path}/versions","href":"/api-reference/skills/list-the-versions-of-a-skill-file"},{"title":"Get one version of a skill file","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/files/{file_path}/versions/{version}","href":"/api-reference/skills/get-one-version-of-a-skill-file"},{"title":"List a skill's recent test runs","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/test-runs","href":"/api-reference/skills/list-a-skills-recent-test-runs"},{"title":"Run a skill script in the sandbox (SSE)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/skills/{skill_id}/test-runs","href":"/api-reference/skills/run-a-skill-script-in-the-sandbox-sse"},{"title":"Get a test run","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/test-runs/{run_id}","href":"/api-reference/skills/get-a-test-run"}]},{"group":"Technicians","pages":[{"title":"List removed Teams users","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/teams-users/removed","href":"/api-reference/technicians/list-removed-teams-users"},{"title":"Remove a Teams user","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/teams-users/{user_id}","href":"/api-reference/technicians/remove-a-teams-user"},{"title":"Restore a removed Teams user","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/teams-users/{user_id}/restore","href":"/api-reference/technicians/restore-a-removed-teams-user"},{"title":"List technician groups","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technician-groups","href":"/api-reference/technicians/list-technician-groups"},{"title":"Create a technician group","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-groups","href":"/api-reference/technicians/create-a-technician-group"},{"title":"Set a technician's groups","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-groups/memberships","href":"/api-reference/technicians/set-a-technicians-groups"},{"title":"Replace a technician group","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-groups/{group_id}","href":"/api-reference/technicians/replace-a-technician-group"},{"title":"Delete a technician group","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/technician-groups/{group_id}","href":"/api-reference/technicians/delete-a-technician-group"},{"title":"List technician working-hours schedules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technician-schedules","href":"/api-reference/technicians/list-technician-working-hours-schedules"},{"title":"Create a technician working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-schedules","href":"/api-reference/technicians/create-a-technician-working-hours-schedule"},{"title":"Put technicians on a working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-schedules/assignments","href":"/api-reference/technicians/put-technicians-on-a-working-hours-schedule"},{"title":"List each technician's PSA working hours","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technician-schedules/psa-hours","href":"/api-reference/technicians/list-each-technicians-psa-working-hours"},{"title":"Replace a technician working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-schedules/{schedule_id}","href":"/api-reference/technicians/replace-a-technician-working-hours-schedule"},{"title":"Delete a technician working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/technician-schedules/{schedule_id}","href":"/api-reference/technicians/delete-a-technician-working-hours-schedule"},{"title":"List technicians","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians","href":"/api-reference/technicians/list-technicians"},{"title":"Create a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technicians","href":"/api-reference/technicians/create-a-technician"},{"title":"List the companies with technician rules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/companies","href":"/api-reference/technicians/list-the-companies-with-technician-rules"},{"title":"Set a company's technician rules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technicians/companies/{psa_company_id}","href":"/api-reference/technicians/set-a-companys-technician-rules"},{"title":"List the Microsoft accounts Neo knows","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/microsoft-accounts","href":"/api-reference/technicians/list-the-microsoft-accounts-neo-knows"},{"title":"List the technicians' Slack links","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/slack-links","href":"/api-reference/technicians/list-the-technicians-slack-links"},{"title":"Match technicians to Slack users again","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technicians/slack-links/refresh","href":"/api-reference/technicians/match-technicians-to-slack-users-again"},{"title":"Get a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/{profile_id}","href":"/api-reference/technicians/get-a-technician"},{"title":"Soft-delete a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/technicians/{profile_id}","href":"/api-reference/technicians/soft-delete-a-technician"},{"title":"Update a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/technicians/{profile_id}","href":"/api-reference/technicians/update-a-technician"}]},{"group":"Templates","pages":[{"title":"List agent/workflow templates","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates","href":"/api-reference/templates/list-agentworkflow-templates"},{"title":"List template categories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates/categories","href":"/api-reference/templates/list-template-categories"},{"title":"Get a template","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates/{template_id}","href":"/api-reference/templates/get-a-template"},{"title":"Instantiate a template for this tenant","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates/{template_id}/instantiate","href":"/api-reference/templates/instantiate-a-template-for-this-tenant"}]},{"group":"TIL requests","pages":[{"title":"List technician-in-the-loop requests","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests","href":"/api-reference/til-requests/list-technician-in-the-loop-requests"},{"title":"List the tenant's distinct TIL approvers","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests/approvers","href":"/api-reference/til-requests/list-the-tenants-distinct-til-approvers"},{"title":"Approve or reject multiple TIL requests","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/til-requests/bulk-decision","href":"/api-reference/til-requests/approve-or-reject-multiple-til-requests"},{"title":"Dismiss pending TIL requests without a decision","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/til-requests/dismiss","href":"/api-reference/til-requests/dismiss-pending-til-requests-without-a-decision"},{"title":"Approval-queue stats","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests/stats","href":"/api-reference/til-requests/approval-queue-stats"},{"title":"Get a TIL request","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests/{request_id}","href":"/api-reference/til-requests/get-a-til-request"},{"title":"Approve, reject, or request changes on a TIL request","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/til-requests/{request_id}/decision","href":"/api-reference/til-requests/approve-reject-or-request-changes-on-a-til-request"}]}]}]},{"tab":"Changelog","href":"https://feedback.neoagent.io/changelog"}]},"basePath":"","title":"Edit one widget's code - Neo Agent","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}