Grant or revoke this agent’s access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — claudia_projects and eddie_workspaces — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own manageable ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (outside_ceiling, field names the offending dimension). The target’s CloudChat role must be administrator or cx_engineer, or the whole request is refused with 422 (ineligible_role, field agent). An all-empty request (revoking everything) is accepted regardless of the target’s role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent’s next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.
The id_token from POST /auth/v1/signin, sent as Authorization: Bearer <id_token>. Not the access_token — that one does not carry the identity Cloud Chat authorizes on.
Your Cloud Chat instance ID — an integer, fixed for your company, told at onboarding. The API overview explains how instances work, how to find yours, and the errors a wrong or missing value produces.
Your Cloud Chat account. It has to be an account your token grants membership on, and it has to live on the instance in the cloudchat-instance header — the two travel together. Account numbers are only unique within an instance, so the same number is a different company on another instance. Usually a mismatched pair fails closed with a 401, because your user does not exist on the other instance — but if your identity happens to exist on both, the call succeeds against the other company's data, silently. Read it and you are looking at the wrong help center; write it and you have stored into the wrong account. Send the two values that were given to you together, and never try a number to see what answers.
The two dimensions of hub access to change. Each is optional and independent — present it to declare that dimension's full desired state (grants and revokes, within your own ceiling), or leave it out to leave that dimension untouched. At least one of the two must be present.
Show child attributes
Response
The agent's hub access as stored — agent_access reflects every dimension you sent, unchanged for any dimension you omitted; manageable is unchanged, it is your own ceiling and this operation never alters it.
An agent's hub access, alongside the caller's own ceiling for granting or revoking it.
The caller's own ceiling — the exact set this credential can grant or revoke.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cloud Chat","colors":{"primary":"#EF7221","light":"#FF9D5C","dark":"#D65E10"},"logo":{"light":"https://mintcdn.com/cloud-humans/GHbxWTY81Qa4762I/logo/light.svg?fit=max\u0026auto=format\u0026n=GHbxWTY81Qa4762I\u0026q=85\u0026s=2899d32cd5c5f8adff5bb4390125f626","dark":"https://mintcdn.com/cloud-humans/GHbxWTY81Qa4762I/logo/dark.svg?fit=max\u0026auto=format\u0026n=GHbxWTY81Qa4762I\u0026q=85\u0026s=95d8350f3dade95801b6c310d5ba597f"},"favicon":"https://mintcdn.com/cloud-humans/T7XxBi09ex74abIC/favicon.svg?fit=max\u0026auto=format\u0026n=T7XxBi09ex74abIC\u0026q=85\u0026s=6b1379d1ea0f266d6ca12eb1f8ccbf77","fonts":{"family":"Inter"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloud-humans","hasAudioNarration":false,"actualSubdomain":"cloud-humans","customDomains":["docs.cloudhumans.com"],"gitSource":{"type":"github","owner":"cloudhumans","repo":"dev-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeb98e7c89be31069aa9e0d","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":122},{"language":"default","tag":"Cloud Chat","count":80},{"language":"default","tag":"Claudia","count":61},{"language":"default","tag":"Guides","count":31},{"language":"default","tag":"Data Export","count":27},{"language":"default","tag":"Table Catalog","count":19},{"language":"default","tag":"Agents","count":18},{"language":"default","tag":"Help Center","count":15},{"language":"default","tag":"Knowledge Base Content","count":9},{"language":"default","tag":"Conversations","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/cloudchat/endpoints/set-agent-access","slug":"/api-reference/cloudchat/endpoints/set-agent-access","pageMetadata":{"title":"Set agent access","openapi":"api-reference/specs/cloudchat/v1.json PUT /v1/accounts/{accountId}/agents/{agentId}/access","description":"Grant or revoke this agent's access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — `claudia_projects` and `eddie_workspaces` — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own `manageable` ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (`outside_ceiling`, field names the offending dimension). The target's CloudChat role must be `administrator` or `cx_engineer`, or the whole request is refused with 422 (`ineligible_role`, field `agent`). An all-empty request (revoking everything) is accepted regardless of the target's role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent's next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.","href":"/api-reference/cloudchat/endpoints/set-agent-access"},"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: [\"Grant or revoke this agent’s access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — \", _jsx(_components.code, {\n children: \"claudia_projects\"\n }), \" and \", _jsx(_components.code, {\n children: \"eddie_workspaces\"\n }), \" — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own \", _jsx(_components.code, {\n children: \"manageable\"\n }), \" ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (\", _jsx(_components.code, {\n children: \"outside_ceiling\"\n }), \", field names the offending dimension). The target’s CloudChat role must be \", _jsx(_components.code, {\n children: \"administrator\"\n }), \" or \", _jsx(_components.code, {\n children: \"cx_engineer\"\n }), \", or the whole request is refused with 422 (\", _jsx(_components.code, {\n children: \"ineligible_role\"\n }), \", field \", _jsx(_components.code, {\n children: \"agent\"\n }), \"). An all-empty request (revoking everything) is accepted regardless of the target’s role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent’s next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.\"]\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{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const CloudChatYourValues=()=>{const _components={a:`a`,..._provideComponents()};const STORAGE_KEY=`cloudchat-api-selected-account`;const CREDENTIALS_HREF=`/api-reference/cloudchat/credentials`;const[saved,setSaved]=useState(null);const[ready,setReady]=useState(false);useEffect(()=>{let value=null;try{const raw=window.localStorage.getItem(STORAGE_KEY);if(raw){const parsed=JSON.parse(raw);if(parsed\u0026\u0026parsed.instance\u0026\u0026parsed.account){value={instance:String(parsed.instance),account:String(parsed.account),name:typeof parsed.name===`string`\u0026\u0026parsed.name?parsed.name:null}}}}catch(error){value=null}setSaved(value);setReady(true)},[]);const shell=`not-prose rounded-xl border border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-white/5 px-4 py-3 mb-6`;if(!ready||!saved){return _jsx(`div`,{className:`not-prose mint-rounded-xl mint-border mint-border-gray-200 dark:mint-border-white/10 mint-bg-gray-50 dark:mint-bg-white/5 mint-px-4 mint-py-3 mint-mb-6`,children:_jsxs(`p`,{className:`mint-text-sm mint-text-gray-600 dark:mint-text-gray-400`,children:[`Every request below needs your `,_jsx(`code`,{children:`cloudchat-instance`}),` header and your account id.`,` `,_jsx(_components.a,{href:CREDENTIALS_HREF,className:`mint-underline mint-underline-offset-2`,children:`Paste your token`}),` `,`and they will show up here, ready to copy.`]})})}return _jsx(`div`,{className:`not-prose mint-rounded-xl mint-border mint-border-gray-200 dark:mint-border-white/10 mint-bg-gray-50 dark:mint-bg-white/5 mint-px-4 mint-py-3 mint-mb-6`,children:_jsxs(`div`,{className:`mint-flex mint-flex-wrap mint-items-baseline mint-gap-x-6 mint-gap-y-2`,children:[_jsxs(`div`,{children:[_jsx(`span`,{className:`mint-text-xs mint-uppercase mint-tracking-wide mint-text-gray-500 dark:mint-text-gray-400`,children:`cloudchat-instance`}),_jsx(`span`,{className:`mint-ml-2 mint-font-mono mint-text-sm mint-text-gray-900 dark:mint-text-gray-100`,children:saved.instance})]}),_jsxs(`div`,{children:[_jsx(`span`,{className:`mint-text-xs mint-uppercase mint-tracking-wide mint-text-gray-500 dark:mint-text-gray-400`,children:`accountId`}),_jsx(`span`,{className:`mint-ml-2 mint-font-mono mint-text-sm mint-text-gray-900 dark:mint-text-gray-100`,children:saved.account})]}),saved.name\u0026\u0026_jsx(`span`,{className:`mint-text-sm mint-text-gray-600 dark:mint-text-gray-400`,children:saved.name}),_jsx(_components.a,{href:CREDENTIALS_HREF,className:`mint-text-sm mint-text-gray-500 dark:mint-text-gray-400 mint-underline mint-underline-offset-2`,children:`Change`})]})})};function _createMdxContent(props){const{_MdxComponentBoundary}={..._provideComponents(),...props.components};if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsx(_MdxComponentBoundary,{name:`CloudChatYourValues`,children:_jsx(CloudChatYourValues,{})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{CloudChatYourValues,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Set agent access","openapi":"api-reference/specs/cloudchat/v1.json PUT /v1/accounts/{accountId}/agents/{agentId}/access","description":"Grant or revoke this agent's access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — `claudia_projects` and `eddie_workspaces` — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own `manageable` ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (`outside_ceiling`, field names the offending dimension). The target's CloudChat role must be `administrator` or `cx_engineer`, or the whole request is refused with 422 (`ineligible_role`, field `agent`). An all-empty request (revoking everything) is accepted regardless of the target's role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent's next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.","href":"/api-reference/cloudchat/endpoints/set-agent-access"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[27,38,""],[139,2658,"null;function _creat"]]},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-mb-6 {\n margin-bottom: 1.5rem\n}\n.mint-ml-2 {\n margin-left: 0.5rem\n}\n.mint-flex {\n display: flex\n}\n.mint-flex-wrap {\n flex-wrap: wrap\n}\n.mint-items-baseline {\n align-items: baseline\n}\n.mint-gap-x-6 {\n column-gap: 1.5rem\n}\n.mint-gap-y-2 {\n row-gap: 0.5rem\n}\n.mint-rounded-xl {\n border-radius: 0.75rem\n}\n.mint-border {\n border-width: 1px\n}\n.mint-border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1))\n}\n.mint-bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1))\n}\n.mint-px-4 {\n padding-left: 1rem;\n padding-right: 1rem\n}\n.mint-py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem\n}\n.mint-font-mono {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace\n}\n.mint-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n.mint-text-xs {\n font-size: 0.75rem;\n line-height: 1rem\n}\n.mint-uppercase {\n text-transform: uppercase\n}\n.mint-tracking-wide {\n letter-spacing: 0.025em\n}\n.mint-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1))\n}\n.mint-text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity, 1))\n}\n.mint-text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity, 1))\n}\n.mint-underline {\n text-decoration-line: underline\n}\n.mint-underline-offset-2 {\n text-underline-offset: 2px\n}\n.dark\\:mint-border-white\\/10:is(.dark *) {\n border-color: rgb(255 255 255 / 0.1)\n}\n.dark\\:mint-bg-white\\/5:is(.dark *) {\n background-color: rgb(255 255 255 / 0.05)\n}\n.dark\\:mint-text-gray-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1))\n}\n.dark\\:mint-text-gray-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1))\n}","openApiReferenceData":{"operation":{"operationId":"setAgentAccess","summary":"Set an agent's hub access","description":"Grant or revoke this agent's access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — `claudia_projects` and `eddie_workspaces` — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own `manageable` ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (`outside_ceiling`, field names the offending dimension). The target's CloudChat role must be `administrator` or `cx_engineer`, or the whole request is refused with 422 (`ineligible_role`, field `agent`). An all-empty request (revoking everything) is accepted regardless of the target's role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent's next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.","tags":["Agents"],"requestBody":"8f6ea9a5-9d0d-4f1e-ab6b-d75df51e6d64","responses":{"200":"b64fbabb-5f51-4f72-b26e-984e8cd4b468","400":"67d3fd68-d8bf-4d01-9020-0d07a68bfd50","401":"6cdeaf70-a464-429b-942d-c8475af06c1f","403":"b1188238-43f4-45e0-838d-d2a5310cf424","404":"155055aa-3c31-484f-836f-d66072c28b21","422":"2497ad30-14a8-4701-a8cb-b1ae1832d65e","429":"7b3a2567-568e-44bd-adaf-b42ea03094e2","500":"8d3d90f0-31d2-427c-9cbb-7a8095db5f9c"},"method":"put","type":"path","servers":["873b436c-1531-4b93-b3df-9b8938360170"],"security":["1c4c2329-b49c-4ce1-8886-2bd7695cef55"],"path":"/v1/accounts/{accountId}/agents/{agentId}/access","baseUrlOptions":["https://api.cloudhumans.com/cloudchat"],"title":"Set an agent's hub access","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c98b3b46-094b-4f05-856a-b3b4c57529ea":{"name":"cloudchat-instance","in":"header","required":true,"description":"Your Cloud Chat instance ID — an integer, fixed for your company, told at onboarding. [The API overview](/api-reference/cloudchat/overview#two-headers-every-call) explains how instances work, how to find yours, and the errors a wrong or missing value produces.","schema":{"type":"integer","example":1,"isRequired":true,"description":"Your Cloud Chat instance ID — an integer, fixed for your company, told at onboarding. [The API overview](/api-reference/cloudchat/overview#two-headers-every-call) explains how instances work, how to find yours, and the errors a wrong or missing value produces.","uniqueKey":"","typeLabel":"integer"}},"d4b5341f-df61-4fb9-b414-b4b246675123":{"name":"accountId","in":"path","required":true,"description":"Your Cloud Chat account. It has to be an account your token grants membership on, and it has to live on the instance in the `cloudchat-instance` header — the two travel together. Account numbers are only unique **within** an instance, so the same number is a different company on another instance. Usually a mismatched pair fails closed with a 401, because your user does not exist on the other instance — but if your identity happens to exist on both, the call succeeds against the other company's data, silently. Read it and you are looking at the wrong help center; write it and you have stored into the wrong account. Send the two values that were given to you together, and never try a number to see what answers.","schema":{"type":"integer","example":1,"isRequired":true,"description":"Your Cloud Chat account. It has to be an account your token grants membership on, and it has to live on the instance in the `cloudchat-instance` header — the two travel together. Account numbers are only unique **within** an instance, so the same number is a different company on another instance. Usually a mismatched pair fails closed with a 401, because your user does not exist on the other instance — but if your identity happens to exist on both, the call succeeds against the other company's data, silently. Read it and you are looking at the wrong help center; write it and you have stored into the wrong account. Send the two values that were given to you together, and never try a number to see what answers.","uniqueKey":"","typeLabel":"integer"}},"6796f15e-6e3d-47c5-8d0c-39c55c8fab53":{"name":"agentId","in":"path","required":true,"description":"The agent's user id, as returned when the agent was listed. A hidden admin's id answers 404 here, the same as an id that does not exist.","schema":{"type":"integer","example":7,"isRequired":true,"description":"The agent's user id, as returned when the agent was listed. A hidden admin's id answers 404 here, the same as an id that does not exist.","uniqueKey":"","typeLabel":"integer"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["access"],"properties":{"access":{"type":"object","properties":{"claudia_projects":{"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"access.claudia_projects.items.[INDEX]","typeLabel":"string"},"description":"Declarative state of your manageable Claudia projects for this agent, drawn from your own `manageable.claudia_projects` (see getAgentAccess): every project you want it to hold. A project you can manage but leave out here is revoked; a project it already holds outside your ceiling is preserved untouched. Omit this property entirely to leave the agent's Claudia project access unchanged.","example":["acme_support"],"uniqueKey":"access.claudia_projects","typeLabel":"string[]"},"eddie_workspaces":{"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"access.eddie_workspaces.items.[INDEX]","typeLabel":"string"},"description":"Declarative state of your manageable Eddie workspaces for this agent, drawn from your own `manageable.eddie_workspaces` (see getAgentAccess): every workspace you want it to hold. A workspace you can manage but leave out here is revoked; a workspace it already holds outside your ceiling is preserved untouched. Omit this property entirely to leave the agent's Eddie workspace access unchanged.","example":["ws_42"],"uniqueKey":"access.eddie_workspaces","typeLabel":"string[]"}},"description":"The two dimensions of hub access to change. Each is optional and independent — present it to declare that dimension's full desired state (grants and revokes, within your own ceiling), or leave it out to leave that dimension untouched. At least one of the two must be present.","minProperties":1,"additionalProperties":false,"isRequired":true,"uniqueKey":"access","typeLabel":"object"}},"description":"Wrapper the endpoint expects — the dimensions to change go under `access`.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"access":{"claudia_projects":["acme_support"],"eddie_workspaces":["ws_42"]}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"b64fbabb-5f51-4f72-b26e-984e8cd4b468":{"description":"The agent's hub access as stored — `agent_access` reflects every dimension you sent, unchanged for any dimension you omitted; `manageable` is unchanged, it is your own ceiling and this operation never alters it.","content":{"application/json":{"schema":{"type":"object","required":["agent_access","manageable"],"properties":{"agent_access":{"type":"object","description":"What the agent in the path currently holds.","required":["claudia_projects","eddie_workspaces"],"properties":{"claudia_projects":{"type":"array","items":{"type":"string","uniqueKey":"agent_access.claudia_projects.items.[INDEX]","typeLabel":"string"},"description":"Claudia project names — globally unique across all of Claudia, not scoped to this account. Always present, even when empty — never `null`.","example":["acme_support"],"isRequired":true,"uniqueKey":"agent_access.claudia_projects","typeLabel":"string[]"},"eddie_workspaces":{"type":"array","items":{"type":"string","uniqueKey":"agent_access.eddie_workspaces.items.[INDEX]","typeLabel":"string"},"description":"Eddie workspace ids. Always present, even when empty — never `null`.","example":["ws_42"],"isRequired":true,"uniqueKey":"agent_access.eddie_workspaces","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"agent_access","typeLabel":"object"},"manageable":{"type":"object","description":"The caller's own ceiling — the exact set this credential can grant or revoke.","required":["claudia_projects","eddie_workspaces"],"properties":{"claudia_projects":{"type":"array","items":{"type":"string","uniqueKey":"manageable.claudia_projects.items.[INDEX]","typeLabel":"string"},"description":"Claudia project names — globally unique across all of Claudia, not scoped to this account. Always present, even when empty — never `null`.","example":["acme_support"],"isRequired":true,"uniqueKey":"manageable.claudia_projects","typeLabel":"string[]"},"eddie_workspaces":{"type":"array","items":{"type":"string","uniqueKey":"manageable.eddie_workspaces.items.[INDEX]","typeLabel":"string"},"description":"Eddie workspace ids. Always present, even when empty — never `null`.","example":["ws_42"],"isRequired":true,"uniqueKey":"manageable.eddie_workspaces","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"manageable","typeLabel":"object"}},"description":"An agent's hub access, alongside the caller's own ceiling for granting or revoking it.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"agent_access":{"claudia_projects":["acme_support"],"eddie_workspaces":["ws_42"]},"manageable":{"claudia_projects":["acme_support"],"eddie_workspaces":["ws_42"]}}}},"exampleType":"generated"}},"exampleType":"generated"},"67d3fd68-d8bf-4d01-9020-0d07a68bfd50":{"description":"The request could not be answered as written — the `access` wrapper is missing, both dimensions are absent from it, or a dimension present in it is not an array of non-empty strings.","content":{"application/json":{"schema":{"type":"object","description":"The error envelope every Cloud Chat API response uses.","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"The stable, machine-readable reason. Branch on this, never on `message`.","enum":["unauthorized","forbidden","not_found","validation_failed","bad_request","internal_error","rate_limited","service_unavailable"],"example":"not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"The reason in words, localized to your account's language (English, Spanish or Brazilian Portuguese; English when the account is set to anything else). Wording changes with the account and between releases, so never match on it.\n\nTwo cases stay in English whatever the account is set to: `unauthorized`, decided before any account is known, and the account-level `not_found`, which must not reveal the account's language.","example":"Resource could not be found.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","description":"Present on some rejections — a 400 for a refused query parameter or upload mode, for example. One entry per offending field, localized to the account's language like `message` — match on `code` and `field`, never on the text.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string","description":"Which request field the rule was about.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Stable, machine-readable reason.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"The rule in words.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"bad_request","message":"Provide `access` with at least one of: claudia_projects, eddie_workspaces."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"bad_request","message":"Provide `access` with at least one of: claudia_projects, eddie_workspaces."}}}},"exampleType":"examples"}},"exampleType":"examples"},"6cdeaf70-a464-429b-942d-c8475af06c1f":{"description":"No Bearer token, or one that is expired, malformed, or not a Cognito token. Sign in again for a fresh `id_token`.","content":{"application/json":{"schema":{"type":"object","description":"The error envelope every Cloud Chat API response uses.","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"The stable, machine-readable reason. Branch on this, never on `message`.","enum":["unauthorized","forbidden","not_found","validation_failed","bad_request","internal_error","rate_limited","service_unavailable"],"example":"not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"The reason in words, localized to your account's language (English, Spanish or Brazilian Portuguese; English when the account is set to anything else). Wording changes with the account and between releases, so never match on it.\n\nTwo cases stay in English whatever the account is set to: `unauthorized`, decided before any account is known, and the account-level `not_found`, which must not reveal the account's language.","example":"Resource could not be found.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","description":"Present on some rejections — a 400 for a refused query parameter or upload mode, for example. One entry per offending field, localized to the account's language like `message` — match on `code` and `field`, never on the text.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string","description":"Which request field the rule was about.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Stable, machine-readable reason.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"The rule in words.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"unauthorized","message":"Authentication is required. Send a valid Bearer token in the Authorization header."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthorized","message":"Authentication is required. Send a valid Bearer token in the Authorization header."}}}},"exampleType":"examples"}},"exampleType":"examples"},"b1188238-43f4-45e0-838d-d2a5310cf424":{"description":"The account is suspended, or the caller is not an administrator of the account.","content":{"application/json":{"schema":{"type":"object","description":"The error envelope every Cloud Chat API response uses.","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"The stable, machine-readable reason. Branch on this, never on `message`.","enum":["unauthorized","forbidden","not_found","validation_failed","bad_request","internal_error","rate_limited","service_unavailable"],"example":"not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"The reason in words, localized to your account's language (English, Spanish or Brazilian Portuguese; English when the account is set to anything else). Wording changes with the account and between releases, so never match on it.\n\nTwo cases stay in English whatever the account is set to: `unauthorized`, decided before any account is known, and the account-level `not_found`, which must not reveal the account's language.","example":"Resource could not be found.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","description":"Present on some rejections — a 400 for a refused query parameter or upload mode, for example. One entry per offending field, localized to the account's language like `message` — match on `code` and `field`, never on the text.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string","description":"Which request field the rule was about.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Stable, machine-readable reason.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"The rule in words.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"forbidden","message":"You are not allowed to perform this action."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"forbidden","message":"You are not allowed to perform this action."}}}},"exampleType":"examples"}},"exampleType":"examples"},"155055aa-3c31-484f-836f-d66072c28b21":{"description":"The resource is not there for you. Three situations answer with this code, and the first two apply to **every** endpoint — the account is resolved before anything else runs, so a list or a create fails this way too:\n\n- the account does not exist on this instance,\n- the account exists but your token has no membership on it,\n- on an endpoint that names one, the resource it names (a canned response, a portal, an article) does not exist where the path says it does.\n\nThe first two are deliberately indistinguishable — same status, same body, and the message stays in English in both, since translating it would reveal the account's configured language. So you cannot use this endpoint to find out which account ids exist. The third case is localized like every other error, which is safe because you only reach it once membership is established.\n\nEither way a 404 is not worth retrying. Check the `accountId`, the `cloudchat-instance` value, and that your user is a member of the account.","content":{"application/json":{"schema":{"type":"object","description":"The error envelope every Cloud Chat API response uses.","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"The stable, machine-readable reason. Branch on this, never on `message`.","enum":["unauthorized","forbidden","not_found","validation_failed","bad_request","internal_error","rate_limited","service_unavailable"],"example":"not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"The reason in words, localized to your account's language (English, Spanish or Brazilian Portuguese; English when the account is set to anything else). Wording changes with the account and between releases, so never match on it.\n\nTwo cases stay in English whatever the account is set to: `unauthorized`, decided before any account is known, and the account-level `not_found`, which must not reveal the account's language.","example":"Resource could not be found.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","description":"Present on some rejections — a 400 for a refused query parameter or upload mode, for example. One entry per offending field, localized to the account's language like `message` — match on `code` and `field`, never on the text.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string","description":"Which request field the rule was about.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Stable, machine-readable reason.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"The rule in words.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"not_found","message":"Resource could not be found."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"not_found","message":"Resource could not be found."}}}},"exampleType":"examples"}},"exampleType":"examples"},"2497ad30-14a8-4701-a8cb-b1ae1832d65e":{"description":"The change was refused. `details[].code` is `outside_ceiling` (field names the offending dimension, the message names the refused items) when an item falls outside your own `manageable` set, or `ineligible_role` (field `agent`) when the target's CloudChat role is not `administrator` or `cx_engineer`.","content":{"application/json":{"schema":{"type":"object","description":"A `validation_failed` error, which carries `details`.","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","enum":["validation_failed"],"example":"validation_failed","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Localized to the account's language, like every other envelope message.","example":"The request payload is invalid.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","description":"One entry per rejected field. Unlike the envelope message above, the texts come from the model layer and are in English in practice (the model layer ships no translations) — match on code and field, never on the text.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string","description":"Which request field the rule was about — `short_code` or `content`. A rule that is not tied to either is reported as `base`, so treat `base` as \"the payload as a whole\" rather than a field you can highlight.","enum":["short_code","content","base"],"example":"short_code","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Which rule it broke — `blank` for a missing or empty value, `taken` for a `short_code` already used on the account.","example":"taken","isRequired":true,"uniqueKey":"error.details.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","example":"has already been taken","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"validation_failed","message":"The request payload is invalid.","details":[{"field":"claudia_projects","code":"outside_ceiling","message":"acme_internal is outside your manageable Claudia projects."}]}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_failed","message":"The request payload is invalid.","details":[{"field":"claudia_projects","code":"outside_ceiling","message":"acme_internal is outside your manageable Claudia projects."}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"7b3a2567-568e-44bd-adaf-b42ea03094e2":{"description":"Rate limited per credential. Note the envelope: this one is `{ \"message\": ... }`, because the request never reached the API.\n\nDon't hardcode the limit — read it from the response. `Retry-After` says how many seconds to wait, and every response (not just this one) carries `ratelimit-limit`, `ratelimit-remaining` and `ratelimit-reset`, the last in seconds.","content":{"application/json":{"schema":{"type":"object","description":"Rejected by the gateway before Cloud Chat saw it, so it does not use the `error` envelope.","required":["message"],"properties":{"message":{"type":"string","example":"API rate limit exceeded","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","description":"Gateway request id. Quote it when reporting a problem.","example":"f3f7567638d4b65a8003057d0c77d275","uniqueKey":"request_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"message":"API rate limit exceeded"},"examples":{"Example":{"title":"Example","value":{"message":"API rate limit exceeded"}}},"exampleType":"examples"}},"exampleType":"examples"},"8d3d90f0-31d2-427c-9cbb-7a8095db5f9c":{"description":"Something failed on our side. The response never carries the underlying error, but it is reported to our monitoring automatically — no need to file anything for a one-off.\n\nRetrying is reasonable, with one caveat on `POST`: a 500 does not prove the write did not happen, so a retry can come back `422` with `short_code` already taken. That 422 means the first attempt succeeded — list the account and confirm before treating it as a failure.","content":{"application/json":{"schema":{"type":"object","description":"The error envelope every Cloud Chat API response uses.","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"The stable, machine-readable reason. Branch on this, never on `message`.","enum":["unauthorized","forbidden","not_found","validation_failed","bad_request","internal_error","rate_limited","service_unavailable"],"example":"not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"The reason in words, localized to your account's language (English, Spanish or Brazilian Portuguese; English when the account is set to anything else). Wording changes with the account and between releases, so never match on it.\n\nTwo cases stay in English whatever the account is set to: `unauthorized`, decided before any account is known, and the account-level `not_found`, which must not reveal the account's language.","example":"Resource could not be found.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","description":"Present on some rejections — a 400 for a refused query parameter or upload mode, for example. One entry per offending field, localized to the account's language like `message` — match on `code` and `field`, never on the text.","items":{"type":"object","required":["field","code","message"],"properties":{"field":{"type":"string","description":"Which request field the rule was about.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"code":{"type":"string","description":"Stable, machine-readable reason.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"The rule in words.","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"internal_error","message":"An unexpected error occurred. Please try again later."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"internal_error","message":"An unexpected error occurred. Please try again later."}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"1c4c2329-b49c-4ce1-8886-2bd7695cef55":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"The `id_token` from `POST /auth/v1/signin`, sent as `Authorization: Bearer \u003cid_token>`. Not the `access_token` — that one does not carry the identity Cloud Chat authorizes on.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"873b436c-1531-4b93-b3df-9b8938360170":{"url":"https://api.cloudhumans.com/cloudchat","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"The `id_token` from `POST /auth/v1/signin`, sent as `Authorization: Bearer \u003cid_token>`. Not the `access_token` — that one does not carry the identity Cloud Chat authorizes on.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The `id_token` from `POST /auth/v1/signin`, sent as `Authorization: Bearer \u003cid_token>`. Not the `access_token` — that one does not carry the identity Cloud Chat authorizes on.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/specs/cloudchat/v1.json"},"subdomain":"cloud-humans","siteName":"Cloud Chat","title":"Set agent access - Cloud Chat","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-31T19:51:37.852Z","originalFileLocation":"api-reference/cloudchat/endpoints/set-agent-access.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=\"system\"}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=\"Grant or revoke this agent\u0026#x27;s access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — claudia_projects and eddie_workspaces — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own manageable ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (outside_ceiling, field names the offending dimension). The target\u0026#x27;s CloudChat role must be administrator or cx_engineer, or the whole request is refused with 422 (ineligible_role, field agent). An all-empty request (revoking everything) is accepted regardless of the target\u0026#x27;s role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent\u0026#x27;s next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cloud Chat\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_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/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Set agent access - Cloud Chat\">\u003cmeta data-mint-head property=\"og:description\" content=\"Grant or revoke this agent\u0026#x27;s access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — claudia_projects and eddie_workspaces — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own manageable ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (outside_ceiling, field names the offending dimension). The target\u0026#x27;s CloudChat role must be administrator or cx_engineer, or the whole request is refused with 422 (ineligible_role, field agent). An all-empty request (revoking everything) is accepted regardless of the target\u0026#x27;s role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent\u0026#x27;s next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cloud Chat\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloud-humans.mintlify.site/_mintlify/api/og/v2?division=Agents\u0026amp;title=Set+agent+access\u0026amp;description=Grant+or+revoke+this+agent%27s+access+to+Claudia+projects+and+Eddie+workspaces.+Administrator+only.+Each+dimension+%E2%80%94+%60claudia_projects%60+and+%60eddie_workspaces%60+%E2%80%94+i\u0026amp;theme=392b44accc8c2ed667834476\u0026amp;signature=13a8407e703a129f095a72eadb94ad3b485338bbfcd79d0d4c14b8ff122d7e64\">\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=\"Set agent access - Cloud Chat\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Grant or revoke this agent\u0026#x27;s access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — claudia_projects and eddie_workspaces — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own manageable ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (outside_ceiling, field names the offending dimension). The target\u0026#x27;s CloudChat role must be administrator or cx_engineer, or the whole request is refused with 422 (ineligible_role, field agent). An all-empty request (revoking everything) is accepted regardless of the target\u0026#x27;s role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent\u0026#x27;s next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloud-humans.mintlify.site/_mintlify/api/og/v2?division=Agents\u0026amp;title=Set+agent+access\u0026amp;description=Grant+or+revoke+this+agent%27s+access+to+Claudia+projects+and+Eddie+workspaces.+Administrator+only.+Each+dimension+%E2%80%94+%60claudia_projects%60+and+%60eddie_workspaces%60+%E2%80%94+i\u0026amp;theme=392b44accc8c2ed667834476\u0026amp;signature=13a8407e703a129f095a72eadb94ad3b485338bbfcd79d0d4c14b8ff122d7e64\">\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/cloud-humans/Tjh_1uQRibuZjdTW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cloud Chat\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EF7221\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/cloudchat/endpoints/set-agent-access.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudhumans.com/#organization\",\"name\":\"Cloud Chat\",\"url\":\"https://docs.cloudhumans.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloud-humans/GHbxWTY81Qa4762I/logo/light.svg?fit=max\u0026auto=format\u0026n=GHbxWTY81Qa4762I\u0026q=85\u0026s=2899d32cd5c5f8adff5bb4390125f626\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudhumans.com#website\",\"name\":\"Cloud Chat\",\"url\":\"https://docs.cloudhumans.com\",\"publisher\":{\"@id\":\"https://docs.cloudhumans.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access#webpage\",\"url\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access\",\"name\":\"Set agent access\",\"description\":\"Grant or revoke this agent's access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — claudia_projects and eddie_workspaces — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own manageable ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (outside_ceiling, field names the offending dimension). The target's CloudChat role must be administrator or cx_engineer, or the whole request is refused with 422 (ineligible_role, field agent). An all-empty request (revoking everything) is accepted regardless of the target's role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent's next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.\",\"dateModified\":\"2026-08-31T19:51:37.852Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudhumans.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agents\",\"item\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/list-agents\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set agent access\",\"item\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access#apireference\",\"headline\":\"Set agent access\",\"name\":\"Set agent access\",\"description\":\"Grant or revoke this agent's access to Claudia projects and Eddie workspaces. Administrator only. Each dimension — claudia_projects and eddie_workspaces — is optional and independently declarative: send it as the full set you want that dimension to hold, drawn from your own manageable ceiling (see getAgentAccess) — items you leave out of a dimension you send are revoked, items you add are granted; a dimension you omit from the request entirely is left untouched. You can only grant or revoke within your own ceiling: items the target already holds outside it are preserved, never touched by your request. Naming an item outside your ceiling is refused with 422 (outside_ceiling, field names the offending dimension). The target's CloudChat role must be administrator or cx_engineer, or the whole request is refused with 422 (ineligible_role, field agent). An all-empty request (revoking everything) is accepted regardless of the target's role — it is the cleanup path for an agent demoted after receiving access. A target that has no hub user yet is provisioned automatically by this operation when the grant is non-empty. A grant only takes effect at the target agent's next login — that is when the new claims are provisioned — so an agent already signed in keeps its old access until it logs in again. This operation never removes the agent from the CloudChat account itself.\",\"url\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudhumans.com/api-reference/cloudchat/endpoints/set-agent-access#webpage\"},\"dateModified\":\"2026-08-31T19:51:37.852Z\",\"publisher\":{\"@id\":\"https://docs.cloudhumans.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudhumans.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cloud Chat\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Cloud Chat","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","products":[{"product":"Cloud Chat","icon":"messages","groups":[{"group":"Getting Started","pages":[{"title":"Cloud Chat API","href":"/api-reference/cloudchat/overview"},{"title":"Find your credentials","href":"/api-reference/cloudchat/credentials"}]},{"group":"Authentication","pages":[{"title":"Sign in and get a token","deprecated":null,"version":null,"openapi":"/api-reference/specs/auth/v1.json post /v1/signin","href":"/api-reference/cloudchat/v1/auth/authentication/sign-in-and-get-a-token"},{"title":"Answer a sign-in challenge","deprecated":null,"version":null,"openapi":"/api-reference/specs/auth/v1.json post /v1/signin/challenge","href":"/api-reference/cloudchat/v1/auth/authentication/answer-a-sign-in-challenge"}]},{"group":"Canned Responses","pages":[{"title":"List canned responses","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/canned-responses","href":"/api-reference/cloudchat/endpoints/list-canned-responses"},{"title":"Get a canned response","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/canned-responses/{cannedResponseId}","href":"/api-reference/cloudchat/endpoints/get-a-canned-response"},{"title":"Create a canned response","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/canned-responses","href":"/api-reference/cloudchat/endpoints/create-a-canned-response"},{"title":"Update a canned response","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/canned-responses/{cannedResponseId}","href":"/api-reference/cloudchat/endpoints/update-a-canned-response"},{"title":"Delete a canned response","openapi":"api-reference/specs/cloudchat/v1.json DELETE /v1/accounts/{accountId}/canned-responses/{cannedResponseId}","href":"/api-reference/cloudchat/endpoints/delete-a-canned-response"}]},{"group":"Conversations","pages":[{"title":"List conversations","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/conversations","href":"/api-reference/cloudchat/endpoints/list-conversations"},{"title":"Find a conversation by any identifier","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/conversations/find","href":"/api-reference/cloudchat/endpoints/find-a-conversation"},{"title":"Get a conversation","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/conversations/{conversationId}","href":"/api-reference/cloudchat/endpoints/get-a-conversation"},{"title":"List conversation messages","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/conversations/{conversationId}/messages","href":"/api-reference/cloudchat/endpoints/list-conversation-messages"}]},{"group":"Contacts","pages":[{"title":"List contacts","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/contacts","href":"/api-reference/cloudchat/endpoints/list-contacts"},{"title":"Get a contact","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/contacts/{contactId}","href":"/api-reference/cloudchat/endpoints/get-a-contact"}]},{"group":"Labels","pages":[{"title":"List labels","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/labels","href":"/api-reference/cloudchat/endpoints/list-labels"}]},{"group":"Inboxes","pages":[{"title":"List inboxes","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/inboxes","href":"/api-reference/cloudchat/endpoints/list-inboxes"},{"title":"Get an inbox","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/inboxes/{inboxId}","href":"/api-reference/cloudchat/endpoints/get-an-inbox"}]},{"group":"Campaigns","pages":[{"title":"Preview campaign recipients","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/campaigns/preview-recipients","href":"/api-reference/cloudchat/endpoints/preview-campaign-recipients"},{"title":"Create a campaign","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/campaigns","href":"/api-reference/cloudchat/endpoints/create-a-campaign"},{"title":"Get a campaign","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/campaigns/{campaignId}","href":"/api-reference/cloudchat/endpoints/get-a-campaign"},{"title":"List campaign variables","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/campaigns/variables","href":"/api-reference/cloudchat/endpoints/list-campaign-variables"},{"title":"List message templates","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/inboxes/{inboxId}/message-templates","href":"/api-reference/cloudchat/endpoints/list-message-templates"}]},{"group":"Reports","pages":[{"title":"List reports","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/reports","href":"/api-reference/cloudchat/endpoints/list-reports"},{"title":"Get a report","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/reports/{reportKey}","href":"/api-reference/cloudchat/endpoints/get-a-report"},{"title":"List report query fields","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/report-queries/fields","href":"/api-reference/cloudchat/endpoints/list-report-query-fields"},{"title":"Run a report query","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/report-queries","href":"/api-reference/cloudchat/endpoints/run-a-report-query"}]},{"group":"Agents","pages":[{"title":"List agents","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/agents","href":"/api-reference/cloudchat/endpoints/list-agents"},{"title":"Get an agent","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/agents/{agentId}","href":"/api-reference/cloudchat/endpoints/get-an-agent"},{"title":"Create an agent","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/agents","href":"/api-reference/cloudchat/endpoints/create-an-agent"},{"title":"Update an agent","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/agents/{agentId}","href":"/api-reference/cloudchat/endpoints/update-an-agent"},{"title":"Get agent access","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/agents/{agentId}/access","description":"Which Claudia projects and Eddie workspaces `agentId` can currently act as (`agent_access`), and your own ceiling for this account (`manageable`) — the exact set of projects and workspaces your credential is allowed to grant or revoke via setAgentAccess. Administrator only. Both objects always list `claudia_projects` and `eddie_workspaces`, even when a dimension is empty — never `null`.","href":"/api-reference/cloudchat/endpoints/get-agent-access"},{"title":"Set agent access","openapi":"api-reference/specs/cloudchat/v1.json PUT /v1/accounts/{accountId}/agents/{agentId}/access","href":"/api-reference/cloudchat/endpoints/set-agent-access"}]},{"group":"Teams","pages":[{"title":"List teams","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/teams","description":"Every team of the account, paginated. Add `search` to filter, `sort` to order. Open to any member.","href":"/api-reference/cloudchat/endpoints/list-teams"},{"title":"Get a team","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/teams/{teamId}","href":"/api-reference/cloudchat/endpoints/get-a-team"},{"title":"Create a team","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/teams","href":"/api-reference/cloudchat/endpoints/create-a-team"},{"title":"Update a team","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/teams/{teamId}","href":"/api-reference/cloudchat/endpoints/update-a-team"},{"title":"List team members","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/teams/{teamId}/members","href":"/api-reference/cloudchat/endpoints/list-team-members"},{"title":"Add team members","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/teams/{teamId}/members","href":"/api-reference/cloudchat/endpoints/add-team-members"}]},{"group":"Macros","pages":[{"title":"List macros","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/macros","href":"/api-reference/cloudchat/endpoints/list-macros"},{"title":"Get a macro","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/macros/{macroId}","href":"/api-reference/cloudchat/endpoints/get-a-macro"},{"title":"Create a macro","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/macros","href":"/api-reference/cloudchat/endpoints/create-a-macro"},{"title":"Update a macro","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/macros/{macroId}","href":"/api-reference/cloudchat/endpoints/update-a-macro"}]},{"group":"Automation Rules","pages":[{"title":"List automation rules","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/automation-rules","href":"/api-reference/cloudchat/endpoints/list-automation-rules"},{"title":"Get an automation rule","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/automation-rules/{automationRuleId}","href":"/api-reference/cloudchat/endpoints/get-an-automation-rule"}]},{"group":"Availability Reasons","pages":[{"title":"List availability reasons","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/availability-reasons","href":"/api-reference/cloudchat/endpoints/list-availability-reasons"},{"title":"Create an availability reason","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/availability-reasons","href":"/api-reference/cloudchat/endpoints/create-an-availability-reason"},{"title":"Update an availability reason","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/availability-reasons/{availabilityReasonId}","href":"/api-reference/cloudchat/endpoints/update-an-availability-reason"},{"title":"Delete an availability reason","openapi":"api-reference/specs/cloudchat/v1.json DELETE /v1/accounts/{accountId}/availability-reasons/{availabilityReasonId}","href":"/api-reference/cloudchat/endpoints/delete-an-availability-reason"}]},{"group":"Native Attribute Requirements","pages":[{"title":"List native attribute requirements","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/native-attribute-requirements","href":"/api-reference/cloudchat/endpoints/list-native-attribute-requirements"},{"title":"Require a native attribute","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/native-attribute-requirements","href":"/api-reference/cloudchat/endpoints/create-a-native-attribute-requirement"},{"title":"Stop requiring a native attribute","openapi":"api-reference/specs/cloudchat/v1.json DELETE /v1/accounts/{accountId}/native-attribute-requirements/{nativeAttributeRequirementId}","href":"/api-reference/cloudchat/endpoints/delete-a-native-attribute-requirement"}]},{"group":"Help Center","pages":[{"title":"List portals","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/portals","href":"/api-reference/cloudchat/endpoints/list-portals"},{"title":"Get a portal","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/portals/{portalSlug}","href":"/api-reference/cloudchat/endpoints/get-a-portal"},{"title":"Create a portal","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/portals","href":"/api-reference/cloudchat/endpoints/create-a-portal"},{"title":"Update a portal","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/portals/{portalSlug}","href":"/api-reference/cloudchat/endpoints/update-a-portal"},{"title":"List categories","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/portals/{portalSlug}/categories","href":"/api-reference/cloudchat/endpoints/list-categories"},{"title":"Get a category","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/portals/{portalSlug}/categories/{categoryId}","href":"/api-reference/cloudchat/endpoints/get-a-category"},{"title":"Create a category","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/portals/{portalSlug}/categories","href":"/api-reference/cloudchat/endpoints/create-a-category"},{"title":"Update a category","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/portals/{portalSlug}/categories/{categoryId}","href":"/api-reference/cloudchat/endpoints/update-a-category"},{"title":"Delete a category","openapi":"api-reference/specs/cloudchat/v1.json DELETE /v1/accounts/{accountId}/portals/{portalSlug}/categories/{categoryId}","href":"/api-reference/cloudchat/endpoints/delete-a-category"},{"title":"List articles","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/portals/{portalSlug}/articles","href":"/api-reference/cloudchat/endpoints/list-articles"},{"title":"Get an article","openapi":"api-reference/specs/cloudchat/v1.json GET /v1/accounts/{accountId}/portals/{portalSlug}/articles/{articleId}","href":"/api-reference/cloudchat/endpoints/get-an-article"},{"title":"Create an article","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/portals/{portalSlug}/articles","href":"/api-reference/cloudchat/endpoints/create-an-article"},{"title":"Update an article","openapi":"api-reference/specs/cloudchat/v1.json PATCH /v1/accounts/{accountId}/portals/{portalSlug}/articles/{articleId}","href":"/api-reference/cloudchat/endpoints/update-an-article"},{"title":"Translate an article","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/portals/{portalSlug}/articles/{articleId}/translate","href":"/api-reference/cloudchat/endpoints/translate-an-article"},{"title":"Delete an article","openapi":"api-reference/specs/cloudchat/v1.json DELETE /v1/accounts/{accountId}/portals/{portalSlug}/articles/{articleId}","href":"/api-reference/cloudchat/endpoints/delete-an-article"}]},{"group":"Uploads","pages":[{"title":"Upload an image","openapi":"api-reference/specs/cloudchat/v1.json POST /v1/accounts/{accountId}/uploads","href":"/api-reference/cloudchat/endpoints/upload-an-image"}]}]},{"product":"Claudia","icon":"robot","pages":[{"title":"Claudia","href":"/api-reference/claudia/sign-in"}]}]}]},"basePath":"","title":"Set agent access - Cloud Chat","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}