Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.
In password mode, Blue uses invitation-only onboarding. Administrators choose an email and role; the recipient follows the invitation link and sets a password. In OIDC mode, invitations are disabled and the identity provider provisions users and groups through SCIM. See Identity provider provisioning.The reference implementation does not send email. Invitation links are built from HARNESS_AUTH_PUBLIC_URL and written to the Control API log; copy them from there, or connect that delivery boundary to SMTP or a transactional mail provider before relying on invitations in production.
A removed user keeps the same governance user ID when the email is invited again. This preserves ownership of configuration revisions, client reports, and captured sessions across removal and reactivation.
All routes require an admin role and are restricted to the caller’s organization. They accept either the HTTP-only dashboard session cookie or an audience-bound bearer token.
Method and path
Purpose
GET /admin/users
List users. Paginate with page and per_page; filter with q (email or subject), role, status, or provisioning_source. Returns {items,page,per_page,total,total_pages}.
GET /admin/users/{id}
Read one organization user.
PATCH /admin/users/{id}
Change role and/or set status to active or suspended.
POST /admin/users/{id}/sessions/revoke
Revoke all browser, OAuth, and device sessions.
DELETE /admin/users/{id}
Delete authentication access while retaining identifiable history.
Role changes and suspension invalidate existing browser and CLI credentials. Reactivation permits the existing password to be used again but does not restore old sessions. The deployment-managed bootstrap administrator is protected, and an organization must always retain at least one active administrator. Administrators cannot demote, suspend, or delete themselves.SCIM-managed users expose provisioning_source: "scim" and managed: true. Their role and lifecycle endpoints reject local changes; administrators retain session revocation as an emergency response.
List invitations, including accepted, canceled, and computed expired states. Paginate with page and per_page; filter with status=outstanding, q (email), or role. Returns {items,page,per_page,total,total_pages}.
GET /admin/invitations/{id}
Read one organization invitation.
POST /admin/invitations
Invite an email with an admin or member role.
POST /admin/invitations/{id}/resend
Renew a pending or expired invitation for 24 hours.
The reference deployment writes the acceptance URL to the Control API log. Configure HARNESS_AUTH_PUBLIC_URL to the public dashboard origin so the emitted link is usable outside the container network. A production deployment can replace the log delivery boundary with its mail adapter.
Suspension retains the Better Auth account and organization membership but prevents authentication. It revokes credentials, removes the local gateway selection, and attempts to revoke the server-held LiteLLM virtual key.Deletion removes the Better Auth account, password, memberships, sessions, OAuth grants, pending device codes, credentials, and gateway selection. It intentionally retains:
the governance user ID, subject, email, role, and removed state;
configuration revision authorship;
client status and captured-session metadata;
captured-session artifacts and their existing retention deadlines.
Remote gateway-key cleanup is best effort. Gateway auth sessions are revoked transactionally, so governed clients lose gateway access even if the upstream gateway is unavailable.
DELETE /admin/users/{id} is access removal, not a privacy-erasure API. Organizations that require anonymization or historical-data deletion need a separate retention workflow.
Open Members in the administrator sidebar. The page provides the same API operations for role changes, suspension and reactivation, session revocation, access deletion, and invitation resend or cancellation. Destructive actions require confirmation, and prohibited bootstrap, self, and last-administrator operations are disabled or rejected by the API.In managed OIDC mode, Members also shows an Identity & provisioning tab backed by GET /admin/identity/status. It summarizes OIDC and SCIM readiness without exposing secrets.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Blue","description":"Governance and dynamic extension distribution for coding-agent CLIs, with an optional bring-your-own inference gateway and session capture.","colors":{"primary":"#1D4ED8","light":"#3B82F6","dark":"#3B82F6"},"logo":{"light":"https://mintcdn.com/bluee/QAY5d_4-YqkTu0gf/images/blue.png?fit=max\u0026auto=format\u0026n=QAY5d_4-YqkTu0gf\u0026q=85\u0026s=73095e50e2a7be9c7acd6c3dfd6a585e","dark":"https://mintcdn.com/bluee/QAY5d_4-YqkTu0gf/images/blue.png?fit=max\u0026auto=format\u0026n=QAY5d_4-YqkTu0gf\u0026q=85\u0026s=73095e50e2a7be9c7acd6c3dfd6a585e"},"favicon":"https://mintcdn.com/bluee/QAY5d_4-YqkTu0gf/images/favicon.png?fit=max\u0026auto=format\u0026n=QAY5d_4-YqkTu0gf\u0026q=85\u0026s=00cbc87139a299e7453dbd931879fc7b","api":{"playground":{"display":"simple"},"examples":{"defaults":"required","languages":["curl","javascript","python"]}},"navbar":{"links":[{"href":"https://github.com/BlocksOrg/blue","label":"GitHub"},{"href":"https://bluee.sh/manifesto","label":"Why Blue"},{"href":"https://github.com/BlocksOrg/blue/blob/main/LICENSE","label":"MIT License"}],"primary":{"type":"button","label":"Get started","href":"/next/quickstart"}},"footer":{"socials":{"github":"https://github.com/BlocksOrg/blue"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bluee","hasAudioNarration":false,"actualSubdomain":"bluee","customDomains":["docs.bluee.sh"],"gitSource":{"type":"github","owner":"blocksorg","repo":"blue","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ab067269a4ee5cbd9510b51","collectionId":"0d0dce88-db6b-435b-9ba2-2ec550029d72","liveDeploymentHistoryId":"6ab067269a4ee5cbd9510b51","schemaVersion":"v3"},"entitlements":{},"buildId":"6ab067269a4ee5cbd9510b51","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API reference","count":233},{"language":"default","tag":"Administration","count":69},{"language":"default","tag":"Identity provisioning","count":45},{"language":"default","tag":"User management","count":41},{"language":"default","tag":"System","count":33},{"language":"default","tag":"Gateway","count":27},{"language":"default","tag":"Sessions","count":27},{"language":"default","tag":"Concepts","count":17},{"language":"default","tag":"CLI","count":12},{"language":"default","tag":"Deployment","count":12}]},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"next/admin/user-management","slug":"/next/admin/user-management","pageMetadata":{"title":"Manage users and invitations","description":"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.","icon":"users","href":"/next/admin/user-management"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Mermaid,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`In password mode, Blue uses invitation-only onboarding. Administrators choose an email and role; the recipient follows the invitation link and sets a password. In OIDC mode, invitations are disabled and the identity provider provisions users and groups through SCIM. See `,_jsx(_components.a,{href:`/next/admin/identity-provisioning`,children:`Identity provider provisioning`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The reference implementation does not send email. Invitation links are built from `,_jsx(_components.code,{children:`HARNESS_AUTH_PUBLIC_URL`}),` and written to the Control API log; copy them from there, or connect that delivery boundary to SMTP or a transactional mail provider before relying on invitations in production.`]}),`\n`,_jsx(Heading,{level:`2`,id:`account-lifecycle`,children:`Account lifecycle`}),`\n`,_jsx(Mermaid,{chart:`stateDiagram-v2\n [*] --> Pending: create invitation\n Pending --> Active: accept and set password\n Pending --> Pending: resend for 24 hours\n Pending --> Canceled: cancel invitation\n Active --> Suspended: suspend\n Suspended --> Active: reactivate\n Active --> Removed: delete access\n Suspended --> Removed: delete access\n Removed --> Pending: invite the same email\n Pending --> Active: accept with a new auth identity`}),`\n`,_jsx(_components.p,{children:`A removed user keeps the same governance user ID when the email is invited again. This preserves ownership of configuration revisions, client reports, and captured sessions across removal and reactivation.`}),`\n`,_jsx(Heading,{level:`2`,id:`user-apis`,children:`User APIs`}),`\n`,_jsxs(_components.p,{children:[`All routes require an `,_jsx(_components.code,{children:`admin`}),` role and are restricted to the caller’s organization. They accept either the HTTP-only dashboard session cookie or an audience-bound bearer token.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Method and path`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /admin/users`})}),_jsxs(_components.td,{children:[`List users. Paginate with `,_jsx(_components.code,{children:`page`}),` and `,_jsx(_components.code,{children:`per_page`}),`; filter with `,_jsx(_components.code,{children:`q`}),` (email or subject), `,_jsx(_components.code,{children:`role`}),`, `,_jsx(_components.code,{children:`status`}),`, or `,_jsx(_components.code,{children:`provisioning_source`}),`. Returns `,_jsx(_components.code,{children:`{items,page,per_page,total,total_pages}`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /admin/users/{id}`})}),_jsx(_components.td,{children:`Read one organization user.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PATCH /admin/users/{id}`})}),_jsxs(_components.td,{children:[`Change `,_jsx(_components.code,{children:`role`}),` and/or set `,_jsx(_components.code,{children:`status`}),` to `,_jsx(_components.code,{children:`active`}),` or `,_jsx(_components.code,{children:`suspended`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /admin/users/{id}/sessions/revoke`})}),_jsx(_components.td,{children:`Revoke all browser, OAuth, and device sessions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DELETE /admin/users/{id}`})}),_jsx(_components.td,{children:`Delete authentication access while retaining identifiable history.`})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` PATCH`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$CONTROL_API`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/admin/users/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$USER_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{\"role\":\"admin\"}'`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Role changes and suspension invalidate existing browser and CLI credentials. Reactivation permits the existing password to be used again but does not restore old sessions. The deployment-managed bootstrap administrator is protected, and an organization must always retain at least one active administrator. Administrators cannot demote, suspend, or delete themselves.`}),`\n`,_jsxs(_components.p,{children:[`SCIM-managed users expose `,_jsx(_components.code,{children:`provisioning_source: \"scim\"`}),` and `,_jsx(_components.code,{children:`managed: true`}),`. Their role and lifecycle endpoints reject local changes; administrators retain session revocation as an emergency response.`]}),`\n`,_jsx(Heading,{level:`2`,id:`invitation-apis`,children:`Invitation APIs`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Method and path`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /admin/invitations`})}),_jsxs(_components.td,{children:[`List invitations, including accepted, canceled, and computed expired states. Paginate with `,_jsx(_components.code,{children:`page`}),` and `,_jsx(_components.code,{children:`per_page`}),`; filter with `,_jsx(_components.code,{children:`status=outstanding`}),`, `,_jsx(_components.code,{children:`q`}),` (email), or `,_jsx(_components.code,{children:`role`}),`. Returns `,_jsx(_components.code,{children:`{items,page,per_page,total,total_pages}`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /admin/invitations/{id}`})}),_jsx(_components.td,{children:`Read one organization invitation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /admin/invitations`})}),_jsxs(_components.td,{children:[`Invite an email with an `,_jsx(_components.code,{children:`admin`}),` or `,_jsx(_components.code,{children:`member`}),` role.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /admin/invitations/{id}/resend`})}),_jsx(_components.td,{children:`Renew a pending or expired invitation for 24 hours.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DELETE /admin/invitations/{id}`})}),_jsx(_components.td,{children:`Cancel a pending invitation.`})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$CONTROL_API`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/admin/invitations\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{\"email\":\"developer@example.com\",\"role\":\"member\"}'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The reference deployment writes the acceptance URL to the Control API log. Configure `,_jsx(_components.code,{children:`HARNESS_AUTH_PUBLIC_URL`}),` to the public dashboard origin so the emitted link is usable outside the container network. A production deployment can replace the log delivery boundary with its mail adapter.`]}),`\n`,_jsx(Heading,{level:`2`,id:`suspension-and-deletion`,children:`Suspension and deletion`}),`\n`,_jsx(_components.p,{children:`Suspension retains the Better Auth account and organization membership but prevents authentication. It revokes credentials, removes the local gateway selection, and attempts to revoke the server-held LiteLLM virtual key.`}),`\n`,_jsx(_components.p,{children:`Deletion removes the Better Auth account, password, memberships, sessions, OAuth grants, pending device codes, credentials, and gateway selection. It intentionally retains:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the governance user ID, subject, email, role, and `,_jsx(_components.code,{children:`removed`}),` state;`]}),`\n`,_jsx(_components.li,{children:`configuration revision authorship;`}),`\n`,_jsx(_components.li,{children:`client status and captured-session metadata;`}),`\n`,_jsx(_components.li,{children:`captured-session artifacts and their existing retention deadlines.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Remote gateway-key cleanup is best effort. Gateway auth sessions are revoked transactionally, so governed clients lose gateway access even if the upstream gateway is unavailable.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`DELETE /admin/users/{id}`}),` is access removal, not a privacy-erasure API. Organizations that require anonymization or historical-data deletion need a separate retention workflow.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`dashboard-workflow`,children:`Dashboard workflow`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Members`}),` in the administrator sidebar. The page provides the same API operations for role changes, suspension and reactivation, session revocation, access deletion, and invitation resend or cancellation. Destructive actions require confirmation, and prohibited bootstrap, self, and last-administrator operations are disabled or rejected by the API.`]}),`\n`,_jsxs(_components.p,{children:[`In managed OIDC mode, `,_jsx(_components.strong,{children:`Members`}),` also shows an `,_jsx(_components.strong,{children:`Identity \u0026 provisioning`}),` tab backed by `,_jsx(_components.code,{children:`GET /admin/identity/status`}),`. It summarizes OIDC and SCIM readiness without exposing secrets.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{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":"Manage users and invitations","description":"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.","icon":"users","href":"/next/admin/user-management"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Account lifecycle","slug":"account-lifecycle","depth":2,"children":[]},{"title":"User APIs","slug":"user-apis","depth":2,"children":[]},{"title":"Invitation APIs","slug":"invitation-apis","depth":2,"children":[]},{"title":"Suspension and deletion","slug":"suspension-and-deletion","depth":2,"children":[]},{"title":"Dashboard workflow","slug":"dashboard-workflow","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"bluee","siteName":"Blue","title":"Manage users and invitations - Blue","navMaps":{"firstHrefInVersion":{"0.2.0":{"href":"/0.2.0/admin/user-management","matchLevel":1},"Next":{"href":"/next/admin/user-management","matchLevel":0},"0.1.0":{"href":"/0.1.0/admin/user-management","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-09-16T05:17:08.847Z","originalFileLocation":"next/admin/user-management.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=\"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Blue\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_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/bluee/3l8WFSZ874gogX_t/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Manage users and invitations - Blue\">\u003cmeta data-mint-head property=\"og:description\" content=\"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Blue\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.bluee.sh/next/admin/user-management\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bluee.mintlify.app/_mintlify/api/og/v2?division=Administration\u0026amp;title=Manage+users+and+invitations\u0026amp;description=Invite+accounts%2C+assign+roles%2C+suspend+access%2C+revoke+sessions%2C+and+remove+login+access+without+deleting+governance+history.\u0026amp;theme=9246b0c56022c4ff318736e8\u0026amp;signature=e7f81a82bc5bf42aa502a0f4f6bb96cc7b765e97e257f326fd083c596435ea0e\">\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=\"Manage users and invitations - Blue\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bluee.mintlify.app/_mintlify/api/og/v2?division=Administration\u0026amp;title=Manage+users+and+invitations\u0026amp;description=Invite+accounts%2C+assign+roles%2C+suspend+access%2C+revoke+sessions%2C+and+remove+login+access+without+deleting+governance+history.\u0026amp;theme=9246b0c56022c4ff318736e8\u0026amp;signature=e7f81a82bc5bf42aa502a0f4f6bb96cc7b765e97e257f326fd083c596435ea0e\">\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/bluee/3l8WFSZ874gogX_t/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Blue\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D4ED8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.bluee.sh/next/admin/user-management\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/next/admin/user-management.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.bluee.sh/#organization\",\"name\":\"Blue\",\"url\":\"https://docs.bluee.sh\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bluee/QAY5d_4-YqkTu0gf/images/blue.png?fit=max\u0026auto=format\u0026n=QAY5d_4-YqkTu0gf\u0026q=85\u0026s=73095e50e2a7be9c7acd6c3dfd6a585e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.bluee.sh#website\",\"name\":\"Blue\",\"url\":\"https://docs.bluee.sh\",\"publisher\":{\"@id\":\"https://docs.bluee.sh/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.bluee.sh/next/admin/user-management#webpage\",\"url\":\"https://docs.bluee.sh/next/admin/user-management\",\"name\":\"Manage users and invitations\",\"description\":\"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.\",\"dateModified\":\"2026-09-16T05:17:08.847Z\",\"isPartOf\":{\"@id\":\"https://docs.bluee.sh#website\"},\"breadcrumb\":{\"@id\":\"https://docs.bluee.sh/next/admin/user-management#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.bluee.sh/next/admin/user-management#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Administration\",\"item\":\"https://docs.bluee.sh/next/admin/dashboard\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Manage users and invitations\",\"item\":\"https://docs.bluee.sh/next/admin/user-management\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.bluee.sh/next/admin/user-management#article\",\"headline\":\"Manage users and invitations\",\"name\":\"Manage users and invitations\",\"description\":\"Invite accounts, assign roles, suspend access, revoke sessions, and remove login access without deleting governance history.\",\"url\":\"https://docs.bluee.sh/next/admin/user-management\",\"mainEntityOfPage\":{\"@id\":\"https://docs.bluee.sh/next/admin/user-management#webpage\"},\"dateModified\":\"2026-09-16T05:17:08.847Z\",\"publisher\":{\"@id\":\"https://docs.bluee.sh/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.bluee.sh#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Blue\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Blue","nav":{"global":null,"versions":[{"version":"0.2.0","pages":[{"title":"0.2.0","href":"/0.2.0/admin/user-management"}]},{"version":"Next","groups":[{"group":"Start here","pages":[{"title":"Blue","icon":"shield-halved","href":"/next/introduction"},{"title":"Quickstart","icon":"rocket","href":"/next/quickstart"}]},{"group":"Deployment","pages":[{"title":"Deployment contract","icon":"list-check","href":"/next/deployment/runtime-contract"},{"title":"Kubernetes with Helm","icon":"server","href":"/next/deployment/production"},{"title":"Configure blue.yaml","icon":"file-code","href":"/next/deployment/blue-yaml"},{"title":"Managed repository connections","icon":"folder-tree","href":"/next/deployment/managed-repositories"}]},{"group":"Concepts","pages":[{"title":"Architecture","icon":"diagram-project","href":"/next/concepts/architecture"},{"title":"Configuration lifecycle","icon":"sliders","href":"/next/concepts/configuration"},{"title":"Managed configuration","icon":"layer-group","href":"/next/concepts/managed-configuration"},{"title":"Harness version compatibility","icon":"code-branch","href":"/next/concepts/harness-version-compatibility"},{"title":"Bring your own gateway","icon":"route","href":"/next/concepts/gateway-mode"},{"title":"Authentication and authorization","icon":"key","href":"/next/concepts/authentication"}]},{"group":"CLI","pages":[{"title":"CLI commands","icon":"terminal","href":"/next/cli/commands"},{"title":"Supported harnesses","icon":"code","href":"/next/cli/harnesses"},{"title":"Windows paths and migration","icon":"folder-tree","href":"/next/cli/windows-paths"},{"title":"Troubleshooting","icon":"wrench","href":"/next/cli/troubleshooting"}]},{"group":"Administration","pages":[{"title":"Dashboard administration","description":"Manage users, policy revisions, clients, and captured sessions in the dashboard.","icon":"gauge-high","href":"/next/admin/dashboard"},{"title":"Manage users and invitations","icon":"users","href":"/next/admin/user-management"},{"title":"Set up Okta SSO and SCIM","description":"Configure OIDC single sign-on and SCIM 2.0 user and group provisioning with Okta, then validate the complete identity lifecycle.","icon":"id-card","href":"/next/admin/identity-provisioning"},{"title":"Managed packages","icon":"box-open","href":"/next/admin/managed-packages"},{"title":"Manage organization policy","icon":"file-pen","href":"/next/admin/configuration"},{"title":"Gateway access","icon":"route","href":"/next/admin/gateway-access"},{"title":"Custom gateway provisioners","icon":"gears","href":"/next/admin/custom-gateway-provisioners"},{"title":"Session capture","icon":"file-shield","href":"/next/admin/session-capture"}]},{"group":"Development","pages":[{"title":"Local development with Docker Compose","icon":"docker","href":"/next/development/local-compose"},{"title":"Contributing","icon":"code-pull-request","href":"/next/development/contributing"},{"title":"Harness adapter architecture","icon":"code-branch","href":"/next/development/harness-adapter-architecture"},{"title":"Gateway adapter architecture","icon":"route","href":"/next/development/gateway-adapter-architecture"}]},{"group":"Reference","pages":[{"title":"Governance configuration","icon":"file-code","href":"/next/reference/governance-config"},{"title":"Authentication endpoints","icon":"fingerprint","href":"/next/reference/auth-endpoints"}]},{"group":"API reference","pages":[{"group":"System","pages":[{"title":"Discover Control API and OAuth device-flow settings","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /.well-known/metaharness","href":"/next/api-reference/system/discover-control-api-and-oauth-device-flow-settings"},{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /health","href":"/next/api-reference/system/liveness-probe"},{"title":"Readiness probe","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /ready","href":"/next/api-reference/system/readiness-probe"},{"title":"Check database schema compatibility","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /health/schema","href":"/next/api-reference/system/check-database-schema-compatibility"},{"title":"Check singleton background-worker freshness","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /health/worker","href":"/next/api-reference/system/check-singleton-background-worker-freshness"},{"title":"Check session and package object stores","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /health/object-storage","href":"/next/api-reference/system/check-session-and-package-object-stores"},{"title":"Check the gateway credential resolver store","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /health/credential-resolver","href":"/next/api-reference/system/check-the-gateway-credential-resolver-store"},{"title":"Prometheus metrics","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /metrics","href":"/next/api-reference/system/prometheus-metrics"},{"title":"Check Control API dependencies","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /health/dependencies","href":"/next/api-reference/system/check-control-api-dependencies"},{"title":"Fetch deployment-wide dashboard branding","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /branding","href":"/next/api-reference/system/fetch-deployment-wide-dashboard-branding"},{"title":"Resolve the current OAuth token or dashboard session","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /auth/me","href":"/next/api-reference/system/resolve-the-current-oauth-token-or-dashboard-session"}]},{"group":"Gateway","pages":[{"title":"Get inference JWT verification keys","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /gateway/jwks","href":"/next/api-reference/gateway/get-inference-jwt-verification-keys"},{"title":"Revoke the gateway session bound to the current OAuth session","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /gateway/session/revoke","href":"/next/api-reference/gateway/revoke-the-gateway-session-bound-to-the-current-oauth-session"},{"title":"Describe gateway policy and runtime readiness without contacting the gateway","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /gateway/status","href":"/next/api-reference/gateway/describe-gateway-policy-and-runtime-readiness-without-contacting-the-gateway"},{"title":"Ping the configured inference proxy","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /gateway/proxy/health","href":"/next/api-reference/gateway/ping-the-configured-inference-proxy"},{"title":"Get the authenticated user's managed gateway-key status","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /gateway/key","href":"/next/api-reference/gateway/get-the-authenticated-users-managed-gateway-key-status"},{"title":"Provision or reconcile the authenticated user's managed gateway key","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /gateway/key/ensure","href":"/next/api-reference/gateway/provision-or-reconcile-the-authenticated-users-managed-gateway-key"},{"title":"Validate the authenticated user's stored upstream gateway key","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /gateway/key/validate","href":"/next/api-reference/gateway/validate-the-authenticated-users-stored-upstream-gateway-key"},{"title":"List organization inference-proxy request metadata","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /gateway/request-logs","href":"/next/api-reference/gateway/list-organization-inference-proxy-request-metadata"},{"title":"List organization request-log filter values","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /gateway/request-logs/facets","href":"/next/api-reference/gateway/list-organization-request-log-filter-values"}]},{"group":"Configuration","pages":[{"title":"Fetch the governance config for the authenticated user/org","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /governance-config","href":"/next/api-reference/configuration/fetch-the-governance-config-for-the-authenticated-userorg"},{"title":"Return the trusted compiled harness registry","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /harness-metadata","href":"/next/api-reference/configuration/return-the-trusted-compiled-harness-registry"},{"title":"Watch organization governance revision changes","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /governance-config/events","href":"/next/api-reference/configuration/watch-organization-governance-revision-changes"},{"title":"Report a local client's applied revision and managed-file health","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /client-status","href":"/next/api-reference/configuration/report-a-local-clients-applied-revision-and-managed-file-health"}]},{"group":"Sessions","pages":[{"title":"Create a short-lived session artifact upload request","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /session-uploads/presign","href":"/next/api-reference/sessions/create-a-short-lived-session-artifact-upload-request"},{"title":"List captured sessions visible to the caller","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /session-uploads","href":"/next/api-reference/sessions/list-captured-sessions-visible-to-the-caller"},{"title":"List users and harnesses available as captured-session filters","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /session-uploads/facets","href":"/next/api-reference/sessions/list-users-and-harnesses-available-as-captured-session-filters"},{"title":"Search active organization members for session sharing","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /session-uploads/members","href":"/next/api-reference/sessions/search-active-organization-members-for-session-sharing"},{"title":"Get captured-session metadata and artifact history","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /session-uploads/{id}","href":"/next/api-reference/sessions/get-captured-session-metadata-and-artifact-history"},{"title":"Verify the uploaded object and commit its metadata","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /session-uploads/{id}/complete","href":"/next/api-reference/sessions/verify-the-uploaded-object-and-commit-its-metadata"},{"title":"Create a short-lived download request for the current artifact","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /session-uploads/{id}/download","href":"/next/api-reference/sessions/create-a-short-lived-download-request-for-the-current-artifact"},{"title":"Get the current sharing mode and active recipients","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /session-uploads/{id}/sharing","href":"/next/api-reference/sessions/get-the-current-sharing-mode-and-active-recipients"},{"title":"Replace owner-managed session sharing grants","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /session-uploads/{id}/sharing","href":"/next/api-reference/sessions/replace-owner-managed-session-sharing-grants"}]},{"group":"Administration","pages":[{"title":"Read the organization's current editable YAML configuration","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/governance-config","href":"/next/api-reference/administration/read-the-organizations-current-editable-yaml-configuration"},{"title":"Validate and save a new governance configuration revision","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /admin/governance-config","href":"/next/api-reference/administration/validate-and-save-a-new-governance-configuration-revision"},{"title":"List recent governance configuration revisions","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/governance-config/revisions","href":"/next/api-reference/administration/list-recent-governance-configuration-revisions"},{"title":"Export the mounted deployment configuration with current governance","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/blue-config/export","href":"/next/api-reference/administration/export-the-mounted-deployment-configuration-with-current-governance"},{"title":"Replace deployment-wide dashboard branding","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /admin/branding","href":"/next/api-reference/administration/replace-deployment-wide-dashboard-branding"},{"title":"List curated extension packages available to the organization","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/package-catalog","href":"/next/api-reference/administration/list-curated-extension-packages-available-to-the-organization"},{"title":"Resolve, hash, and optionally mirror a managed repository source","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /admin/package-source/inspect","href":"/next/api-reference/administration/resolve-hash-and-optionally-mirror-a-managed-repository-source"},{"title":"List repository connections allowed for the administrator's organization","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/package-source/connections","href":"/next/api-reference/administration/list-repository-connections-allowed-for-the-administrators-organization"},{"title":"Save packages, per-harness overrides, and MCP servers as a new revision","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /admin/governance-extensions","href":"/next/api-reference/administration/save-packages-per-harness-overrides-and-mcp-servers-as-a-new-revision"},{"title":"Read one coding agent's managed configuration as YAML","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/harnesses/{harness}/managed-config","href":"/next/api-reference/administration/read-one-coding-agents-managed-configuration-as-yaml"},{"title":"Save one coding agent's managed configuration as a new revision","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /admin/harnesses/{harness}/managed-config","href":"/next/api-reference/administration/save-one-coding-agents-managed-configuration-as-a-new-revision"},{"title":"Read every supported coding agent's managed configuration as YAML","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/harnesses/managed-configs","href":"/next/api-reference/administration/read-every-supported-coding-agents-managed-configuration-as-yaml"},{"title":"List and filter local client status reports for the organization","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/client-status","href":"/next/api-reference/administration/list-and-filter-local-client-status-reports-for-the-organization"},{"title":"List users and harnesses available as client-status filters","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/client-status/facets","href":"/next/api-reference/administration/list-users-and-harnesses-available-as-client-status-filters"},{"title":"Remove an organization client inventory record","deprecated":null,"version":null,"openapi":"/openapi/next.yaml delete /admin/client-status/{id}","href":"/next/api-reference/administration/remove-an-organization-client-inventory-record"}]},{"group":"Governance","pages":[{"title":"Create a short-lived download request for an organization-scoped package artifact","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /package-artifacts/{id}/download","href":"/next/api-reference/governance/create-a-short-lived-download-request-for-an-organization-scoped-package-artifact"}]},{"group":"User management","pages":[{"title":"Get the deployment-managed identity and provisioning status","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/identity/status","href":"/next/api-reference/user-management/get-the-deployment-managed-identity-and-provisioning-status"},{"title":"List users in the administrator's organization","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/users","href":"/next/api-reference/user-management/list-users-in-the-administrators-organization"},{"title":"List non-removed organization users for selection controls","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/users/options","href":"/next/api-reference/user-management/list-non-removed-organization-users-for-selection-controls"},{"title":"Search active and already-selected organization users","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /admin/users/options","href":"/next/api-reference/user-management/search-active-and-already-selected-organization-users"},{"title":"Get an organization user","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/users/{id}","href":"/next/api-reference/user-management/get-an-organization-user"},{"title":"Delete a user's account access while retaining governance history","deprecated":null,"version":null,"openapi":"/openapi/next.yaml delete /admin/users/{id}","href":"/next/api-reference/user-management/delete-a-users-account-access-while-retaining-governance-history"},{"title":"Change a user's role or active/suspended state","deprecated":null,"version":null,"openapi":"/openapi/next.yaml patch /admin/users/{id}","href":"/next/api-reference/user-management/change-a-users-role-or-activesuspended-state"},{"title":"Revoke all browser, OAuth, and device sessions for a user","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /admin/users/{id}/sessions/revoke","href":"/next/api-reference/user-management/revoke-all-browser-oauth-and-device-sessions-for-a-user"},{"title":"List organization invitations","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/invitations","href":"/next/api-reference/user-management/list-organization-invitations"},{"title":"Invite an email address to create an organization account","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /admin/invitations","href":"/next/api-reference/user-management/invite-an-email-address-to-create-an-organization-account"},{"title":"Get an organization invitation","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /admin/invitations/{id}","href":"/next/api-reference/user-management/get-an-organization-invitation"},{"title":"Cancel a pending invitation","deprecated":null,"version":null,"openapi":"/openapi/next.yaml delete /admin/invitations/{id}","href":"/next/api-reference/user-management/cancel-a-pending-invitation"},{"title":"Resend and renew a pending or expired invitation for 24 hours","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /admin/invitations/{id}/resend","href":"/next/api-reference/user-management/resend-and-renew-a-pending-or-expired-invitation-for-24-hours"},{"title":"Replace an outstanding invitation with a new invitation link","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /admin/invitations/{id}/regenerate","href":"/next/api-reference/user-management/replace-an-outstanding-invitation-with-a-new-invitation-link"}]},{"group":"Identity provisioning","pages":[{"title":"List or equality-filter provisioned users","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/Users","href":"/next/api-reference/identity-provisioning/list-or-equality-filter-provisioned-users"},{"title":"Provision a passwordless user","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /scim/v2/Users","href":"/next/api-reference/identity-provisioning/provision-a-passwordless-user"},{"title":"Get scimv2users","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/Users/{id}","href":"/next/api-reference/identity-provisioning/get-scimv2users"},{"title":"Put scimv2users","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /scim/v2/Users/{id}","href":"/next/api-reference/identity-provisioning/put-scimv2users"},{"title":"Delete scimv2users","deprecated":null,"version":null,"openapi":"/openapi/next.yaml delete /scim/v2/Users/{id}","href":"/next/api-reference/identity-provisioning/delete-scimv2users"},{"title":"Patch scimv2users","deprecated":null,"version":null,"openapi":"/openapi/next.yaml patch /scim/v2/Users/{id}","href":"/next/api-reference/identity-provisioning/patch-scimv2users"},{"title":"Get scimv2groups","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/Groups","href":"/next/api-reference/identity-provisioning/get-scimv2groups"},{"title":"Post scimv2groups","deprecated":null,"version":null,"openapi":"/openapi/next.yaml post /scim/v2/Groups","href":"/next/api-reference/identity-provisioning/post-scimv2groups"},{"title":"Get scimv2groups 1","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/Groups/{id}","href":"/next/api-reference/identity-provisioning/get-scimv2groups-1"},{"title":"Put scimv2groups","deprecated":null,"version":null,"openapi":"/openapi/next.yaml put /scim/v2/Groups/{id}","href":"/next/api-reference/identity-provisioning/put-scimv2groups"},{"title":"Delete scimv2groups","deprecated":null,"version":null,"openapi":"/openapi/next.yaml delete /scim/v2/Groups/{id}","href":"/next/api-reference/identity-provisioning/delete-scimv2groups"},{"title":"Patch scimv2groups","deprecated":null,"version":null,"openapi":"/openapi/next.yaml patch /scim/v2/Groups/{id}","href":"/next/api-reference/identity-provisioning/patch-scimv2groups"},{"title":"Get scimv2serviceproviderconfig","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/ServiceProviderConfig","href":"/next/api-reference/identity-provisioning/get-scimv2serviceproviderconfig"},{"title":"Get scimv2resourcetypes","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/ResourceTypes","href":"/next/api-reference/identity-provisioning/get-scimv2resourcetypes"},{"title":"Get scimv2schemas","deprecated":null,"version":null,"openapi":"/openapi/next.yaml get /scim/v2/Schemas","href":"/next/api-reference/identity-provisioning/get-scimv2schemas"}]}]}]},{"version":"0.1.0","pages":[{"title":"0.1.0","href":"/0.1.0/admin/user-management"}]}]},"title":"Manage users and invitations - Blue","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}