Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests.
Overview
When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to PENDING status. All groups must be approved before the session can be executed.
The approval status updates affect each approver group based on the caller’s context. Once all groups are APPROVED, or if any group becomes REJECTED or REVOKED, the overall resource status updates accordingly.
Approver Groups
Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group.
Initial State
When an approval request is created, each group entry is populated with the following structure:
APPROVED - The resource has been approved by the approver
REJECTED - The resource is rejected and cannot be updated further
REVOKED - The resource is revoked and cannot be updated further
System-Controlled States
These states are managed automatically by the gateway:
PENDING - Initial state when the approval request is created
PROCESSING - Session is being executed; approval request cannot be updated
EXECUTED - Session completed successfully; approval request cannot be updated
UNKNOWN - Session executed but outcome is indeterminate
EXPIRED - A sidecar approval request passed its expires_at before it was decided or used; nothing was released. Only a control plane sets it
General Rules
Approval Permissions
An approval request the user cannot get with GET /reviews/{id} answers 404, the same as an approval request that does not exist
Approvals can only be decided when the resource status is PENDING or APPROVED
Resource owners cannot self-approve - approval requires another member of the same group
Users are only eligible to approve if they are not the resource owner or are administrators
Multi-Group Approvals
If a user belongs to multiple groups, separate approval entries are updated for each group
All group approvals must be completed before session execution
Status Transitions
Setting any approval to REJECTED immediately changes the overall resource status and prevents further updates
APPROVED approval requests can still be changed to REJECTED at any time by the resource owner or administrators
REVOKED applies only to an APPROVED approval request of type jit, or to an APPROVED approval request a sidecar filed (it has a listener_name). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is EXECUTED and the request answers 400. A revoke of any other approval request answers 400
Once an approval request reaches REJECTED or REVOKED the resource is considered as immutable and it cannot be updated again
A decision on a sidecar approval request past its expires_at answers 400 (approval request expired), and the approval request is EXPIRED
Final States
Approval requests in PROCESSING, EXECUTED, UNKNOWN, or EXPIRED states are immutable and cannot be modified.
PUT
/
sessions
/
{session_id}
/
review
Update Approval Status By Sid
curl --request PUT \ --url https://use.hoop.dev/api/sessions/{session_id}/review \ --header 'Content-Type: application/json' \ --data '{ "status": "APPROVED", "force_review": false, "rejection_reason": "This command is not allowed in production."}'
The connection the approval request was filed against. On a sidecar approval request, the resource that mirrors the listener; absent while the organization has no mirror for it
The deadline of a sidecar approval request: to decide while PENDING, to use the
approval once APPROVED. Absent with no limit or on an approval request from a connection
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hoop.dev - Automated Access and Data Protection","colors":{"primary":"#3E63DD","light":"#8DA2EF","dark":"#3E63DD"},"logo":{"light":"https://mintcdn.com/hoopdev/ndV-rRL4ZXZJLXJY/logo/light.svg?fit=max\u0026auto=format\u0026n=ndV-rRL4ZXZJLXJY\u0026q=85\u0026s=0091927110c2d4309aac8b7862009f98","dark":"https://mintcdn.com/hoopdev/ndV-rRL4ZXZJLXJY/logo/dark.svg?fit=max\u0026auto=format\u0026n=ndV-rRL4ZXZJLXJY\u0026q=85\u0026s=97a884bf002c59bb6af3ddd2b6f3c39f","href":"https://hoop.dev"},"favicon":"https://mintcdn.com/hoopdev/sPLs9WFJMpxuZaYG/favicon.svg?fit=max\u0026auto=format\u0026n=sPLs9WFJMpxuZaYG\u0026q=85\u0026s=de046db57ba72a7e5d7c005a63e5a0c8","appearance":{"default":"light"},"navbar":{"links":[{"href":"https://use.hoop.dev","label":"Sign In"}],"primary":{"type":"button","label":"Get started","href":"https://hoop.dev/start"}},"footer":{"socials":{"x":"https://x.com/hoopdotdev","github":"https://github.com/hoophq","linkedin":"https://www.linkedin.com/company/hoopdev"},"links":[{"header":"Legacy","items":[{"label":"Hoop Gateway","href":"https://hoop.dev/docs/gateway/overview"}]}]},"fonts":{"heading":{"family":"Inter","weight":700},"body":{"family":"Inter"}},"styling":{"codeblocks":"dark","latex":false},"integrations":{"clarity":{"projectId":"h9osgp95be"}},"errors":{"404":{"redirect":true}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hoopdev","hasAudioNarration":false,"actualSubdomain":"hoopdev","customDomains":["mintlify.hoop.dev"],"gitSource":{"type":"github","owner":"hoophq","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec699b8c2847cc731f3dec","collectionId":"7f06427c-9403-4c97-a639-19e197a05c1d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec699b8c2847cc731f3dec"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aecc98ba8609c249458b1e3","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API Reference","count":262},{"language":"default","tag":"Documentation","count":58},{"language":"default","tag":"Sidecar","count":44},{"language":"default","tag":"Reference","count":40},{"language":"default","tag":"Sidecars","count":30},{"language":"default","tag":"Connections","count":25},{"language":"default","tag":"Server Management","count":21},{"language":"default","tag":"Protocols","count":19},{"language":"default","tag":"Runbooks","count":16},{"language":"default","tag":"Sessions","count":15}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"vite-origin","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--hoop-heading: #0F1631;--hoop-body: #1A1A1A;--hoop-muted: #6E6E6E;--hoop-indigo: #3E63DD;--hoop-indigo-text: #3A5BC7;--hoop-indigo-soft: #E6EDFE;--hoop-indigo-dark: #9EB1FF;--hoop-gray-100: #F7F7F7;--hoop-gray-200: #EBEBEB;--hoop-gray-300: #DEDEDE;--hoop-gray-400: #C4C4C4;--hoop-sans: 'Inter', system-ui, -apple-system, sans-serif;--hoop-mono: 'JetBrains Mono', 'SF Mono', monospace;--sand-100: #F7F7F7;--sand-100-rgb: 247, 247, 247;--sand-200: #EBEBEB;--sand-300: #DEDEDE;--sand-400: #C4C4C4;--sand-500: #8E8E8E;--sand-500-rgb: 142, 142, 142;--warm-gold: #8DA2EF;--warm-gold-rgb: 141, 162, 239;--bronze: #5A5A5A;--bronze-rgb: 90, 90, 90;--bronze-dark: #333333;--bronze-dark-rgb: 51, 51, 51;--espresso: #0F1631;--espresso-rgb: 15, 22, 49;--error: #6E6E6E;--error-rgb: 110, 110, 110;--success: #30A46C;--success-rgb: 48, 164, 108;--prompt: #8DA2EF;--gradient-dark-start: #0F1631;--gradient-dark-start-rgb: 15, 22, 49;--gradient-dark-mid: #141B38;--gradient-dark-end: #1A2142;--mono: 'JetBrains Mono', 'SF Mono', monospace;--sans: 'Inter', system-ui, -apple-system, sans-serif;--display: 'Inter', system-ui, sans-serif}:root:not(.dark) #body-content,:root:not(.dark) #body-content p,:root:not(.dark) #body-content li,:root:not(.dark) #body-content dd,:root:not(.dark) #body-content blockquote,:root:not(.dark) #body-content span,:root:not(.dark) #body-content td{color:var(--hoop-body)!important}:root:not(.dark) #body-content h1,:root:not(.dark) #body-content h2,:root:not(.dark) #body-content h3,:root:not(.dark) #body-content h4,:root:not(.dark) #body-content h5,:root:not(.dark) #body-content h6,:root:not(.dark) #body-content strong{color:var(--hoop-heading)!important;letter-spacing:-0.03em}.prose strong{font-weight:600}:root:not(.dark) #header #page-title,:root:not(.dark) #header h1{color:var(--hoop-heading)!important;font-weight:700!important;font-size:2.75rem!important;line-height:1.04!important;letter-spacing:-0.04em!important}:root.dark #header #page-title,:root.dark #header h1{font-weight:700!important;font-size:2.75rem!important;line-height:1.04!important;letter-spacing:-0.04em!important}#header #page-title~p,#header p:first-of-type{font-size:1.2rem!important;line-height:1.5!important;color:#5A6178!important}:root.dark #header #page-title~p,:root.dark #header p:first-of-type{color:#9BA1B8!important}#page-title{margin-bottom:0.75rem!important}#header{padding-bottom:0.5rem}:root:not(.dark) #body-content h2,:root.dark #body-content h2{margin-top:2.75rem!important;margin-bottom:1rem!important}:root:not(.dark) #body-content h3,:root.dark #body-content h3{margin-top:2rem!important}html[data-current-path=\"/introduction/getting-started\"] #header #page-title{font-size:3.25rem!important;line-height:1.0!important;letter-spacing:-0.045em!important}html[data-current-path=\"/introduction/getting-started\"] #header #page-title~p,html[data-current-path=\"/introduction/getting-started\"] #header p:first-of-type{font-size:1.35rem!important;max-width:40ch}html[data-current-path=\"/introduction/getting-started\"] #header{padding-bottom:1rem}:root:not(.dark) #body-content a{color:var(--hoop-indigo-text)!important;text-decoration-color:transparent;text-underline-offset:2px;transition:text-decoration-color 0.15s ease}:root:not(.dark) #body-content a:hover{text-decoration-color:var(--hoop-indigo-text)}:root:not(.dark) #body-content :not(pre)>code{background:var(--hoop-indigo-soft);color:var(--hoop-indigo-text)!important;border-radius:4px;padding:2px 6px;font-size:0.875em}:root:not(.dark) #body-content table thead th{color:var(--hoop-heading)!important;font-weight:600}:root:not(.dark) #sidebar a{color:#333333;transition:color 0.15s ease}#sidebar a{border-radius:0!important}:root:not(.dark) #sidebar a:hover{color:var(--hoop-heading)}:root:not(.dark) #sidebar a[data-active=\"true\"]{color:var(--hoop-indigo-text);font-weight:500}:root:not(.dark) #navbar{border-bottom:1px solid var(--hoop-gray-200)}:root:not(.dark) .card{border:1px solid var(--hoop-gray-200);transition:border-color 0.15s ease}:root:not(.dark) .card:hover{border-color:var(--hoop-indigo)}:root:not(.dark) .code-block{border-radius:8px;border:1px solid var(--hoop-gray-200)}:root:not(.dark) #footer{border-top:1px solid var(--hoop-gray-200)}:root:not(.dark) .tabs [data-active=\"true\"]{color:var(--hoop-indigo-text);border-color:var(--hoop-indigo)}:root.dark #body-content a{color:var(--hoop-indigo-dark)!important}:root.dark #sidebar a[data-active=\"true\"]{color:var(--hoop-indigo-dark);font-weight:500}:root.dark .card:hover{border-color:var(--hoop-indigo)}.card{border-radius:0!important}[class*=\"rounded-\"]:not([class*=\"rounded-full\"]){border-radius:0!important}#navbar [class~=\"group/search\"],#body-content input:not([type=\"checkbox\"]):not([type=\"radio\"]),input[type=\"text\"],input[type=\"search\"],input[type=\"email\"],input[type=\"url\"],input[type=\"password\"]{border-radius:9999px!important}#navbar button,#navbar a[class*=\"rounded-\"],#navbar a [class*=\"rounded-\"],#navbar button [class*=\"rounded-\"],button[class][class*=\"rounded-\"]{border-radius:9999px!important}.feedback-toolbar a[class*=\"rounded-\"]{border-radius:9999px!important}#sidebar a div[class~=\"rounded-md\"]{border-radius:9999px!important}[class*=\"chat-assistant\"] div[class*=\"rounded-\"]{border-radius:9999px!important}[data-badge]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em}::selection{background:rgba(62, 99, 221, 0.15)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--hoop-gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--hoop-gray-400)}"}],"page":{"pagePath":"api-reference/approvals/update-approval-status-by-sid-1","slug":"/api-reference/approvals/update-approval-status-by-sid-1","pageMetadata":{"title":"Update Approval Status By Sid","description":"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests.\n\n## Overview\n\nWhen a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to `PENDING` status. **All groups must be approved before the session can be executed.**\n\nThe approval status updates affect each approver group based on the caller's context. Once all groups are `APPROVED`, or if any group becomes `REJECTED` or `REVOKED`, the overall resource status updates accordingly.\n\n## Approver Groups\n\nApprover groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group.\n\n### Initial State\n\nWhen an approval request is created, each group entry is populated with the following structure:\n\n```json\n{\n \"id\": \"aaa257be-5cc9-401d-ae7e-18ae806d366a\",\n \"group\": \"banking\",\n \"status\": \"PENDING\",\n \"reviewed_by\": null,\n \"review_date\": null\n}\n```\n\n### Completed Approval State\n\nAfter an approval entry is completed, it includes the status, decision timestamp, and approver information:\n\n```json\n{\n \"id\": \"a546dfba-d917-4c2b-bc38-7852a7932573\",\n \"group\": \"banking\",\n \"status\": \"REJECTED\",\n \"reviewed_by\": {\n \"id\": \"17e4ff1a-104c-482c-be68-3c01bfc7028e\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@domain.tld\",\n \"slack_id\": \"\"\n },\n \"review_date\": \"2025-05-27T16:40:05.519754143Z\"\n}\n```\n\n## Approval States\n\n### User-Controlled States\n\nThese states are set directly by approvers:\n\n- **`APPROVED`** - The resource has been approved by the approver\n- **`REJECTED`** - The resource is rejected and cannot be updated further\n- **`REVOKED`** - The resource is revoked and cannot be updated further\n\n### System-Controlled States\n\nThese states are managed automatically by the gateway:\n\n- **`PENDING`** - Initial state when the approval request is created\n- **`PROCESSING`** - Session is being executed; approval request cannot be updated\n- **`EXECUTED`** - Session completed successfully; approval request cannot be updated\n- **`UNKNOWN`** - Session executed but outcome is indeterminate\n- **`EXPIRED`** - A sidecar approval request passed its `expires_at` before it was decided or used; nothing was released. Only a control plane sets it\n\n## General Rules\n\n### Approval Permissions\n\n- An approval request the user cannot get with `GET /reviews/{id}` answers `404`, the same as an approval request that does not exist\n- Approvals can only be decided when the resource status is `PENDING` or `APPROVED`\n- **Resource owners cannot self-approve** - approval requires another member of the same group\n- Users are only eligible to approve if they are **not the resource owner** or are **administrators**\n\n### Multi-Group Approvals\n\n- If a user belongs to multiple groups, separate approval entries are updated for each group\n- All group approvals must be completed before session execution\n\n### Status Transitions\n\n- Setting any approval to `REJECTED` immediately changes the overall resource status and prevents further updates\n- `APPROVED` approval requests can still be changed to `REJECTED` at any time by the resource owner or administrators\n- `REVOKED` applies only to an `APPROVED` approval request of type `jit`, or to an `APPROVED` approval request a sidecar filed (it has a `listener_name`). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is `EXECUTED` and the request answers `400`. A revoke of any other approval request answers `400`\n- Once an approval request reaches `REJECTED` or `REVOKED` the resource is considered as immutable and it cannot be updated again\n- A decision on a sidecar approval request past its `expires_at` answers `400` (`approval request expired`), and the approval request is `EXPIRED`\n\n### Final States\n\nApproval requests in `PROCESSING`, `EXECUTED`, `UNKNOWN`, or `EXPIRED` states are immutable and cannot be modified.","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sessions/{session_id}/review","href":"/api-reference/approvals/update-approval-status-by-sid-1","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h2: \"h2\",\n h3: \"h3\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests.\"\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Overview\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to \", _jsx(_components.code, {\n children: \"PENDING\"\n }), \" status. \", _jsx(_components.strong, {\n children: \"All groups must be approved before the session can be executed.\"\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The approval status updates affect each approver group based on the caller’s context. Once all groups are \", _jsx(_components.code, {\n children: \"APPROVED\"\n }), \", or if any group becomes \", _jsx(_components.code, {\n children: \"REJECTED\"\n }), \" or \", _jsx(_components.code, {\n children: \"REVOKED\"\n }), \", the overall resource status updates accordingly.\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Approver Groups\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group.\"\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Initial State\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"When an approval request is created, each group entry is populated with the following structure:\"\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"7\",\n language: \"json\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"json\",\n children: _jsxs(_components.code, {\n language: \"json\",\n numberOfLines: \"7\",\n children: [_jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"id\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"aaa257be-5cc9-401d-ae7e-18ae806d366a\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"group\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"banking\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"status\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"PENDING\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"reviewed_by\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"null\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"review_date\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \"null\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Completed Approval State\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"After an approval entry is completed, it includes the status, decision timestamp, and approver information:\"\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"12\",\n language: \"json\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"json\",\n children: _jsxs(_components.code, {\n language: \"json\",\n numberOfLines: \"12\",\n children: [_jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"id\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"a546dfba-d917-4c2b-bc38-7852a7932573\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"group\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"banking\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"status\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"REJECTED\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"reviewed_by\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": {\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"id\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"17e4ff1a-104c-482c-be68-3c01bfc7028e\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"name\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"John Doe\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"email\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"john.doe@domain.tld\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"slack_id\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"\\\"\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" },\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"review_date\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"2025-05-27T16:40:05.519754143Z\\\"\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Approval States\"\n }), \"\\n\", _jsx(_components.h3, {\n children: \"User-Controlled States\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"These states are set directly by approvers:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"APPROVED\"\n })\n }), \" - The resource has been approved by the approver\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"REJECTED\"\n })\n }), \" - The resource is rejected and cannot be updated further\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"REVOKED\"\n })\n }), \" - The resource is revoked and cannot be updated further\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"System-Controlled States\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"These states are managed automatically by the gateway:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"PENDING\"\n })\n }), \" - Initial state when the approval request is created\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"PROCESSING\"\n })\n }), \" - Session is being executed; approval request cannot be updated\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"EXECUTED\"\n })\n }), \" - Session completed successfully; approval request cannot be updated\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"UNKNOWN\"\n })\n }), \" - Session executed but outcome is indeterminate\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"EXPIRED\"\n })\n }), \" - A sidecar approval request passed its \", _jsx(_components.code, {\n children: \"expires_at\"\n }), \" before it was decided or used; nothing was released. Only a control plane sets it\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"General Rules\"\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Approval Permissions\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"An approval request the user cannot get with \", _jsx(_components.code, {\n children: \"GET /reviews/{id}\"\n }), \" answers \", _jsx(_components.code, {\n children: \"404\"\n }), \", the same as an approval request that does not exist\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Approvals can only be decided when the resource status is \", _jsx(_components.code, {\n children: \"PENDING\"\n }), \" or \", _jsx(_components.code, {\n children: \"APPROVED\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Resource owners cannot self-approve\"\n }), \" - approval requires another member of the same group\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Users are only eligible to approve if they are \", _jsx(_components.strong, {\n children: \"not the resource owner\"\n }), \" or are \", _jsx(_components.strong, {\n children: \"administrators\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Multi-Group Approvals\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"If a user belongs to multiple groups, separate approval entries are updated for each group\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"All group approvals must be completed before session execution\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Status Transitions\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Setting any approval to \", _jsx(_components.code, {\n children: \"REJECTED\"\n }), \" immediately changes the overall resource status and prevents further updates\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"APPROVED\"\n }), \" approval requests can still be changed to \", _jsx(_components.code, {\n children: \"REJECTED\"\n }), \" at any time by the resource owner or administrators\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"REVOKED\"\n }), \" applies only to an \", _jsx(_components.code, {\n children: \"APPROVED\"\n }), \" approval request of type \", _jsx(_components.code, {\n children: \"jit\"\n }), \", or to an \", _jsx(_components.code, {\n children: \"APPROVED\"\n }), \" approval request a sidecar filed (it has a \", _jsx(_components.code, {\n children: \"listener_name\"\n }), \"). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is \", _jsx(_components.code, {\n children: \"EXECUTED\"\n }), \" and the request answers \", _jsx(_components.code, {\n children: \"400\"\n }), \". A revoke of any other approval request answers \", _jsx(_components.code, {\n children: \"400\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Once an approval request reaches \", _jsx(_components.code, {\n children: \"REJECTED\"\n }), \" or \", _jsx(_components.code, {\n children: \"REVOKED\"\n }), \" the resource is considered as immutable and it cannot be updated again\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"A decision on a sidecar approval request past its \", _jsx(_components.code, {\n children: \"expires_at\"\n }), \" answers \", _jsx(_components.code, {\n children: \"400\"\n }), \" (\", _jsx(_components.code, {\n children: \"approval request expired\"\n }), \"), and the approval request is \", _jsx(_components.code, {\n children: \"EXPIRED\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Final States\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Approval requests in \", _jsx(_components.code, {\n children: \"PROCESSING\"\n }), \", \", _jsx(_components.code, {\n children: \"EXECUTED\"\n }), \", \", _jsx(_components.code, {\n children: \"UNKNOWN\"\n }), \", or \", _jsx(_components.code, {\n children: \"EXPIRED\"\n }), \" states are immutable and cannot be modified.\"]\n })]\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Update Approval Status By Sid","description":"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests.\n\n## Overview\n\nWhen a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to `PENDING` status. **All groups must be approved before the session can be executed.**\n\nThe approval status updates affect each approver group based on the caller's context. Once all groups are `APPROVED`, or if any group becomes `REJECTED` or `REVOKED`, the overall resource status updates accordingly.\n\n## Approver Groups\n\nApprover groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group.\n\n### Initial State\n\nWhen an approval request is created, each group entry is populated with the following structure:\n\n```json\n{\n \"id\": \"aaa257be-5cc9-401d-ae7e-18ae806d366a\",\n \"group\": \"banking\",\n \"status\": \"PENDING\",\n \"reviewed_by\": null,\n \"review_date\": null\n}\n```\n\n### Completed Approval State\n\nAfter an approval entry is completed, it includes the status, decision timestamp, and approver information:\n\n```json\n{\n \"id\": \"a546dfba-d917-4c2b-bc38-7852a7932573\",\n \"group\": \"banking\",\n \"status\": \"REJECTED\",\n \"reviewed_by\": {\n \"id\": \"17e4ff1a-104c-482c-be68-3c01bfc7028e\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@domain.tld\",\n \"slack_id\": \"\"\n },\n \"review_date\": \"2025-05-27T16:40:05.519754143Z\"\n}\n```\n\n## Approval States\n\n### User-Controlled States\n\nThese states are set directly by approvers:\n\n- **`APPROVED`** - The resource has been approved by the approver\n- **`REJECTED`** - The resource is rejected and cannot be updated further\n- **`REVOKED`** - The resource is revoked and cannot be updated further\n\n### System-Controlled States\n\nThese states are managed automatically by the gateway:\n\n- **`PENDING`** - Initial state when the approval request is created\n- **`PROCESSING`** - Session is being executed; approval request cannot be updated\n- **`EXECUTED`** - Session completed successfully; approval request cannot be updated\n- **`UNKNOWN`** - Session executed but outcome is indeterminate\n- **`EXPIRED`** - A sidecar approval request passed its `expires_at` before it was decided or used; nothing was released. Only a control plane sets it\n\n## General Rules\n\n### Approval Permissions\n\n- An approval request the user cannot get with `GET /reviews/{id}` answers `404`, the same as an approval request that does not exist\n- Approvals can only be decided when the resource status is `PENDING` or `APPROVED`\n- **Resource owners cannot self-approve** - approval requires another member of the same group\n- Users are only eligible to approve if they are **not the resource owner** or are **administrators**\n\n### Multi-Group Approvals\n\n- If a user belongs to multiple groups, separate approval entries are updated for each group\n- All group approvals must be completed before session execution\n\n### Status Transitions\n\n- Setting any approval to `REJECTED` immediately changes the overall resource status and prevents further updates\n- `APPROVED` approval requests can still be changed to `REJECTED` at any time by the resource owner or administrators\n- `REVOKED` applies only to an `APPROVED` approval request of type `jit`, or to an `APPROVED` approval request a sidecar filed (it has a `listener_name`). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is `EXECUTED` and the request answers `400`. A revoke of any other approval request answers `400`\n- Once an approval request reaches `REJECTED` or `REVOKED` the resource is considered as immutable and it cannot be updated again\n- A decision on a sidecar approval request past its `expires_at` answers `400` (`approval request expired`), and the approval request is `EXPIRED`\n\n### Final States\n\nApproval requests in `PROCESSING`, `EXECUTED`, `UNKNOWN`, or `EXPIRED` states are immutable and cannot be modified.","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sessions/{session_id}/review","href":"/api-reference/approvals/update-approval-status-by-sid-1","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/hoopdev/0abad469b68aca32/scripts.js","/docs/_mintlify/custom/hoopdev/8b86904971d4ca88/scripts/process-connections.js"],"openApiReferenceData":{"operation":{"description":"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests.\n\n## Overview\n\nWhen a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to `PENDING` status. **All groups must be approved before the session can be executed.**\n\nThe approval status updates affect each approver group based on the caller's context. Once all groups are `APPROVED`, or if any group becomes `REJECTED` or `REVOKED`, the overall resource status updates accordingly.\n\n## Approver Groups\n\nApprover groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group.\n\n### Initial State\n\nWhen an approval request is created, each group entry is populated with the following structure:\n\n```json\n{\n \"id\": \"aaa257be-5cc9-401d-ae7e-18ae806d366a\",\n \"group\": \"banking\",\n \"status\": \"PENDING\",\n \"reviewed_by\": null,\n \"review_date\": null\n}\n```\n\n### Completed Approval State\n\nAfter an approval entry is completed, it includes the status, decision timestamp, and approver information:\n\n```json\n{\n \"id\": \"a546dfba-d917-4c2b-bc38-7852a7932573\",\n \"group\": \"banking\",\n \"status\": \"REJECTED\",\n \"reviewed_by\": {\n \"id\": \"17e4ff1a-104c-482c-be68-3c01bfc7028e\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@domain.tld\",\n \"slack_id\": \"\"\n },\n \"review_date\": \"2025-05-27T16:40:05.519754143Z\"\n}\n```\n\n## Approval States\n\n### User-Controlled States\n\nThese states are set directly by approvers:\n\n- **`APPROVED`** - The resource has been approved by the approver\n- **`REJECTED`** - The resource is rejected and cannot be updated further\n- **`REVOKED`** - The resource is revoked and cannot be updated further\n\n### System-Controlled States\n\nThese states are managed automatically by the gateway:\n\n- **`PENDING`** - Initial state when the approval request is created\n- **`PROCESSING`** - Session is being executed; approval request cannot be updated\n- **`EXECUTED`** - Session completed successfully; approval request cannot be updated\n- **`UNKNOWN`** - Session executed but outcome is indeterminate\n- **`EXPIRED`** - A sidecar approval request passed its `expires_at` before it was decided or used; nothing was released. Only a control plane sets it\n\n## General Rules\n\n### Approval Permissions\n\n- An approval request the user cannot get with `GET /reviews/{id}` answers `404`, the same as an approval request that does not exist\n- Approvals can only be decided when the resource status is `PENDING` or `APPROVED`\n- **Resource owners cannot self-approve** - approval requires another member of the same group\n- Users are only eligible to approve if they are **not the resource owner** or are **administrators**\n\n### Multi-Group Approvals\n\n- If a user belongs to multiple groups, separate approval entries are updated for each group\n- All group approvals must be completed before session execution\n\n### Status Transitions\n\n- Setting any approval to `REJECTED` immediately changes the overall resource status and prevents further updates\n- `APPROVED` approval requests can still be changed to `REJECTED` at any time by the resource owner or administrators\n- `REVOKED` applies only to an `APPROVED` approval request of type `jit`, or to an `APPROVED` approval request a sidecar filed (it has a `listener_name`). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is `EXECUTED` and the request answers `400`. A revoke of any other approval request answers `400`\n- Once an approval request reaches `REJECTED` or `REVOKED` the resource is considered as immutable and it cannot be updated again\n- A decision on a sidecar approval request past its `expires_at` answers `400` (`approval request expired`), and the approval request is `EXPIRED`\n\n### Final States\n\nApproval requests in `PROCESSING`, `EXECUTED`, `UNKNOWN`, or `EXPIRED` states are immutable and cannot be modified.","parameters":["4685c597-0585-46a9-91ae-de70477a62db"],"requestBody":"9728ad01-6cde-4f5a-8d4d-27951be68128","responses":{"200":"88c50ac9-b7e6-4724-8c51-6a538b6306a6","400":"11d2d4c5-82ed-45df-99a0-735be1fd1a10","403":"c631abd9-f3f0-4d70-b746-c05c6e8af389","404":"03ad3ec5-2bb8-4139-b8e8-ff632156a347","500":"0b61830a-9215-4b47-a097-bf3c48bc3b72"},"summary":"Update Approval Status By Sid","tags":["Approvals"],"method":"put","type":"path","servers":["03731f9c-e591-4ed8-8601-1a9b7db53d4c"],"security":[],"path":"/sessions/{session_id}/review","baseUrlOptions":["https://use.hoop.dev/api"],"title":"Update Approval Status By Sid","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"4685c597-0585-46a9-91ae-de70477a62db":{"description":"Resource identifier of the session","in":"path","name":"session_id","required":true,"schema":{"type":"string","isRequired":true,"description":"Resource identifier of the session","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"status":{"type":"string","description":"The approval status\n* APPROVED - Approve the approval request\n* REJECTED - Reject the approval request\n* REVOKED - Revoke an approved request","enum":["APPROVED","REJECTED","REVOKED"],"x-enum-varnames":["ReviewStatusRequestApprovedType","ReviewStatusRequestRejectedType","ReviewStatusRequestRevokedType"],"example":"APPROVED","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"force_review":{"example":false,"type":"boolean","uniqueKey":"force_review","typeLabel":"boolean"},"rejection_reason":{"example":"This command is not allowed in production.","type":"string","uniqueKey":"rejection_reason","typeLabel":"string"},"time_window":{"properties":{"configuration":{"additionalProperties":{"type":"string","uniqueKey":"time_window.configuration.additionalProperties","typeLabel":"string"},"example":{"end_time":"18:00","start_time":"09:00"},"type":"object","isRequired":true,"uniqueKey":"time_window.configuration","typeLabel":"object"},"type":{"type":"string","enum":["time_range"],"x-enum-varnames":["ReviewTimeWindowTypeTimeRange"],"isRequired":true,"uniqueKey":"time_window.type","typeLabel":"enum\u003cstring>"}},"required":["configuration","type"],"type":"object","uniqueKey":"time_window","typeLabel":"object"}},"required":["status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"APPROVED","force_review":false,"rejection_reason":"This command is not allowed in production."}}},"exampleType":"generated"}},"description":"The request body resource","required":true,"x-originalParamName":"request","exampleType":"generated"},"responses":{"88c50ac9-b7e6-4724-8c51-6a538b6306a6":{"content":{"application/json":{"schema":{"properties":{"access_duration":{"default":1800000000000,"description":"The amount of time (nanoseconds) to allow access to the connection. It's valid only for `jit` type approval requests","example":0,"readOnly":true,"type":"integer","uniqueKey":"access_duration","typeLabel":"integer"},"access_request_rule_name":{"description":"The name of the access request rule that triggered this approval request, if null means it was triggered by the review plugin","example":"default-access-request-rule","readOnly":true,"type":"string","uniqueKey":"access_request_rule_name","typeLabel":"string"},"approval_ttl_sec":{"description":"The time a sidecar approval lasts, in seconds, copied from the rule at\nfiling. Absent with no limit or on an approval request from a connection","example":600,"readOnly":true,"type":"integer","uniqueKey":"approval_ttl_sec","typeLabel":"integer"},"connection":{"type":"object","description":"The connection the approval request was filed against. On a sidecar approval request, the resource that mirrors the listener; absent while the organization has no mirror for it","properties":{"id":{"description":"The resource identifier","example":"20A5AABE-C35D-4F04-A5A7-C856EE6C7703","readOnly":true,"type":"string","uniqueKey":"connection.id","typeLabel":"string"},"name":{"description":"The name of the connection","example":"pgdemo","readOnly":true,"type":"string","uniqueKey":"connection.name","typeLabel":"string"}},"uniqueKey":"connection","typeLabel":"object"},"created_at":{"description":"The time the resource was created","example":"2024-07-25T15:56:35.317601Z","readOnly":true,"type":"string","uniqueKey":"created_at","typeLabel":"string"},"expires_at":{"description":"The deadline of a sidecar approval request: to decide while PENDING, to use the\napproval once APPROVED. Absent with no limit or on an approval request from a connection","example":"2024-07-25T16:11:35.000Z","readOnly":true,"type":"string","uniqueKey":"expires_at","typeLabel":"string"},"force_approval_groups":{"description":"Groups that can force approve sessions for this approval request","example":["sre-team"],"items":{"type":"string","uniqueKey":"force_approval_groups.items.[INDEX]","typeLabel":"string"},"readOnly":true,"type":"array","uniqueKey":"force_approval_groups","typeLabel":"string[]"},"id":{"description":"Resource identifier","example":"9F9745B4-C77B-4D52-84D3-E24F67E3623C","format":"uuid","readOnly":true,"type":"string","uniqueKey":"id","typeLabel":"string\u003cuuid>"},"listener_name":{"description":"The sidecar listener this approval request is bound to. Absent on an approval request that came from a connection","example":"appdb","readOnly":true,"type":"string","uniqueKey":"listener_name","typeLabel":"string"},"min_approvals":{"description":"The minimum number of approvals required for this approval request","example":2,"readOnly":true,"type":"integer","uniqueKey":"min_approvals","typeLabel":"integer"},"rejection_reason":{"description":"The reason provided by the approver when rejecting this approval request","example":"This command is not allowed in production.","readOnly":true,"type":"string","uniqueKey":"rejection_reason","typeLabel":"string"},"requester":{"type":"object","description":"Who filed the approval request. On a sidecar approval request, the sidecar","properties":{"email":{"description":"The email of the owner","example":"john.wick@bad.org","readOnly":true,"type":"string","uniqueKey":"requester.email","typeLabel":"string"},"id":{"description":"The resource identifier","example":"D5BFA2DD-7A09-40AE-AFEB-C95787BA9E90","format":"uuid","readOnly":true,"type":"string","uniqueKey":"requester.id","typeLabel":"string\u003cuuid>"},"name":{"description":"The display name of the owner","example":"John Wick","readOnly":true,"type":"string","uniqueKey":"requester.name","typeLabel":"string"},"slack_id":{"description":"The Slack ID of the owner","example":"U053ELZHB53","readOnly":true,"type":"string","uniqueKey":"requester.slack_id","typeLabel":"string"}},"uniqueKey":"requester","typeLabel":"object"},"review_groups_data":{"description":"Contains the groups that must approve this request","items":{"properties":{"forced_review":{"description":"Indicates if this group forced the approval","example":false,"readOnly":true,"type":"boolean","uniqueKey":"review_groups_data.items.[INDEX].forced_review","typeLabel":"boolean"},"group":{"description":"The group to approve this request","example":"sre","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].group","typeLabel":"string"},"id":{"description":"The resource identifier","example":"20A5AABE-C35D-4F04-A5A7-C856EE6C7703","format":"uuid","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"review_date":{"description":"The date of this decision","example":"2024-07-25T19:36:41Z","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].review_date","typeLabel":"string"},"reviewed_by":{"type":"object","description":"The approver","properties":{"email":{"description":"The email of the owner","example":"john.wick@bad.org","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].reviewed_by.email","typeLabel":"string"},"id":{"description":"The resource identifier","example":"D5BFA2DD-7A09-40AE-AFEB-C95787BA9E90","format":"uuid","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].reviewed_by.id","typeLabel":"string\u003cuuid>"},"name":{"description":"The display name of the owner","example":"John Wick","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].reviewed_by.name","typeLabel":"string"},"slack_id":{"description":"The Slack ID of the owner","example":"U053ELZHB53","readOnly":true,"type":"string","uniqueKey":"review_groups_data.items.[INDEX].reviewed_by.slack_id","typeLabel":"string"}},"uniqueKey":"review_groups_data.items.[INDEX].reviewed_by","typeLabel":"object"},"status":{"type":"string","description":"The approval status\n* APPROVED - Approve the approval request\n* REJECTED - Reject the approval request\n* REVOKED - Revoke an approved request","enum":["APPROVED","REJECTED","REVOKED"],"x-enum-varnames":["ReviewStatusRequestApprovedType","ReviewStatusRequestRejectedType","ReviewStatusRequestRevokedType"],"example":"APPROVED","uniqueKey":"review_groups_data.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"type":"object","uniqueKey":"review_groups_data.items.[INDEX]","typeLabel":"object"},"readOnly":true,"type":"array","uniqueKey":"review_groups_data","typeLabel":"object[]"},"revoke_at":{"description":"The time when this approval request was revoked","example":"","readOnly":true,"type":"string","uniqueKey":"revoke_at","typeLabel":"string"},"session":{"description":"The id of session","example":"35DB0A2F-E5CE-4AD8-A308-55C3108956E5","format":"uuid","readOnly":true,"type":"string","uniqueKey":"session","typeLabel":"string\u003cuuid>"},"sidecar_id":{"description":"The sidecar that filed this approval request. Absent on an approval request that came from a connection","example":"5F5E5C6E-6C3A-4E9A-9E8B-2D6A7F1B0C4D","format":"uuid","readOnly":true,"type":"string","uniqueKey":"sidecar_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","description":"The status of the approval request\n* PENDING - The resource is waiting for approval\n* APPROVED - The resource is fully approved\n* REJECTED - The resource is fully rejected\n* REVOKED - The resource was revoked after being approved\n* PROCESSING - The approval request is being executed\n* EXECUTED - The approval request was executed\n* UNKNOWN - Unable to know the status of the approval request\n* EXPIRED - A sidecar approval request passed its deadline; it never releases the statement","enum":["PENDING","APPROVED","REJECTED","REVOKED","PROCESSING","EXECUTED","UNKNOWN","EXPIRED"],"x-enum-varnames":["ReviewStatusPending","ReviewStatusApproved","ReviewStatusRejected","ReviewStatusRevoked","ReviewStatusProcessing","ReviewStatusExecuted","ReviewStatusUnknown","ReviewStatusExpired"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"time_window":{"type":"object","description":"The time window configuration that can execute the session","required":["configuration","type"],"properties":{"configuration":{"additionalProperties":{"type":"string","uniqueKey":"time_window.configuration.additionalProperties","typeLabel":"string"},"example":{"end_time":"18:00","start_time":"09:00"},"type":"object","isRequired":true,"uniqueKey":"time_window.configuration","typeLabel":"object"},"type":{"type":"string","enum":["time_range"],"x-enum-varnames":["ReviewTimeWindowTypeTimeRange"],"isRequired":true,"uniqueKey":"time_window.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"time_window","typeLabel":"object"},"type":{"type":"string","description":"The type of the approval request\n* onetime - Represents a one time execution\n* jit - Represents a time based approval","enum":["onetime","jit"],"x-enum-varnames":["ReviewTypeJit","ReviewTypeOneTime"],"uniqueKey":"type","typeLabel":"enum\u003cstring>"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"access_duration":0,"access_request_rule_name":"default-access-request-rule","approval_ttl_sec":600,"connection":{"id":"20A5AABE-C35D-4F04-A5A7-C856EE6C7703","name":"pgdemo"},"created_at":"2024-07-25T15:56:35.317601Z","expires_at":"2024-07-25T16:11:35.000Z","force_approval_groups":["sre-team"],"id":"9F9745B4-C77B-4D52-84D3-E24F67E3623C","listener_name":"appdb","min_approvals":2,"rejection_reason":"This command is not allowed in production.","requester":{"email":"john.wick@bad.org","id":"D5BFA2DD-7A09-40AE-AFEB-C95787BA9E90","name":"John Wick","slack_id":"U053ELZHB53"},"review_groups_data":[{"forced_review":false,"group":"sre","id":"20A5AABE-C35D-4F04-A5A7-C856EE6C7703","review_date":"2024-07-25T19:36:41Z","reviewed_by":{"email":"john.wick@bad.org","id":"D5BFA2DD-7A09-40AE-AFEB-C95787BA9E90","name":"John Wick","slack_id":"U053ELZHB53"},"status":"APPROVED"}],"revoke_at":"","session":"35DB0A2F-E5CE-4AD8-A308-55C3108956E5","sidecar_id":"5F5E5C6E-6C3A-4E9A-9E8B-2D6A7F1B0C4D","status":"PENDING","time_window":{"configuration":{"end_time":"18:00","start_time":"09:00"},"type":"time_range"},"type":"onetime"}}},"exampleType":"generated"}},"description":"OK","exampleType":"generated"},"11d2d4c5-82ed-45df-99a0-735be1fd1a10":{"content":{"application/json":{"schema":{"properties":{"message":{"example":"the error description","type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"the error description"}}},"exampleType":"generated"}},"description":"Bad Request","exampleType":"generated"},"c631abd9-f3f0-4d70-b746-c05c6e8af389":{"content":{"application/json":{"schema":{"properties":{"message":{"example":"the error description","type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"the error description"}}},"exampleType":"generated"}},"description":"Forbidden","exampleType":"generated"},"03ad3ec5-2bb8-4139-b8e8-ff632156a347":{"content":{"application/json":{"schema":{"properties":{"message":{"example":"the error description","type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"the error description"}}},"exampleType":"generated"}},"description":"Not Found","exampleType":"generated"},"0b61830a-9215-4b47-a097-bf3c48bc3b72":{"content":{"application/json":{"schema":{"properties":{"message":{"example":"the error description","type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"the error description"}}},"exampleType":"generated"}},"description":"Internal Server Error","exampleType":"generated"}},"security":{},"servers":{"03731f9c-e591-4ed8-8601-1a9b7db53d4c":{"url":"https://use.hoop.dev/api"}}},"originalFileLocation":"https://use.hoop.dev/api/openapiv3.json"},"subdomain":"hoopdev","siteName":"Hoop.dev - Automated Access and Data Protection","title":"Update Approval Status By Sid - Hoop.dev - Automated Access and Data Protection","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T11:33:57.830Z","originalFileLocation":"api-reference/approvals/update-approval-status-by-sid-1.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests. ## Overview When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to PENDING status. All groups must be approved before the session can be executed. The approval status updates affect each approver group based on the caller\u0026#x27;s context. Once all groups are APPROVED, or if any group becomes REJECTED or REVOKED, the overall resource status updates accordingly. ## Approver Groups Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group. ### Initial State When an approval request is created, each group entry is populated with the following structure: json { \u0026quot;id\u0026quot;: \u0026quot;aaa257be-5cc9-401d-ae7e-18ae806d366a\u0026quot;, \u0026quot;group\u0026quot;: \u0026quot;banking\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;PENDING\u0026quot;, \u0026quot;reviewed_by\u0026quot;: null, \u0026quot;review_date\u0026quot;: null } ### Completed Approval State After an approval entry is completed, it includes the status, decision timestamp, and approver information: json { \u0026quot;id\u0026quot;: \u0026quot;a546dfba-d917-4c2b-bc38-7852a7932573\u0026quot;, \u0026quot;group\u0026quot;: \u0026quot;banking\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;REJECTED\u0026quot;, \u0026quot;reviewed_by\u0026quot;: { \u0026quot;id\u0026quot;: \u0026quot;17e4ff1a-104c-482c-be68-3c01bfc7028e\u0026quot;, \u0026quot;name\u0026quot;: \u0026quot;John Doe\u0026quot;, \u0026quot;email\u0026quot;: \u0026quot;john.doe@domain.tld\u0026quot;, \u0026quot;slack_id\u0026quot;: \u0026quot;\u0026quot; }, \u0026quot;review_date\u0026quot;: \u0026quot;2025-05-27T16:40:05.519754143Z\u0026quot; } ## Approval States ### User-Controlled States These states are set directly by approvers: - APPROVED - The resource has been approved by the approver - REJECTED - The resource is rejected and cannot be updated further - REVOKED - The resource is revoked and cannot be updated further ### System-Controlled States These states are managed automatically by the gateway: - PENDING - Initial state when the approval request is created - PROCESSING - Session is being executed; approval request cannot be updated - EXECUTED - Session completed successfully; approval request cannot be updated - UNKNOWN - Session executed but outcome is indeterminate - EXPIRED - A sidecar approval request passed its expires_at before it was decided or used; nothing was released. Only a control plane sets it ## General Rules ### Approval Permissions - An approval request the user cannot get with GET /reviews/{id} answers 404, the same as an approval request that does not exist - Approvals can only be decided when the resource status is PENDING or APPROVED - Resource owners cannot self-approve - approval requires another member of the same group - Users are only eligible to approve if they are not the resource owner or are administrators ### Multi-Group Approvals - If a user belongs to multiple groups, separate approval entries are updated for each group - All group approvals must be completed before session execution ### Status Transitions - Setting any approval to REJECTED immediately changes the overall resource status and prevents further updates - APPROVED approval requests can still be changed to REJECTED at any time by the resource owner or administrators - REVOKED applies only to an APPROVED approval request of type jit, or to an APPROVED approval request a sidecar filed (it has a listener_name). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is EXECUTED and the request answers 400. A revoke of any other approval request answers 400 - Once an approval request reaches REJECTED or REVOKED the resource is considered as immutable and it cannot be updated again - A decision on a sidecar approval request past its expires_at answers 400 (approval request expired), and the approval request is EXPIRED ### Final States Approval requests in PROCESSING, EXECUTED, UNKNOWN, or EXPIRED states are immutable and cannot be modified.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_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=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update Approval Status By Sid - Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head property=\"og:description\" content=\"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests. ## Overview When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to PENDING status. All groups must be approved before the session can be executed. The approval status updates affect each approver group based on the caller\u0026#x27;s context. Once all groups are APPROVED, or if any group becomes REJECTED or REVOKED, the overall resource status updates accordingly. ## Approver Groups Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group. ### Initial State When an approval request is created, each group entry is populated with the following structure: json { \u0026quot;id\u0026quot;: \u0026quot;aaa257be-5cc9-401d-ae7e-18ae806d366a\u0026quot;, \u0026quot;group\u0026quot;: \u0026quot;banking\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;PENDING\u0026quot;, \u0026quot;reviewed_by\u0026quot;: null, \u0026quot;review_date\u0026quot;: null } ### Completed Approval State After an approval entry is completed, it includes the status, decision timestamp, and approver information: json { \u0026quot;id\u0026quot;: \u0026quot;a546dfba-d917-4c2b-bc38-7852a7932573\u0026quot;, \u0026quot;group\u0026quot;: \u0026quot;banking\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;REJECTED\u0026quot;, \u0026quot;reviewed_by\u0026quot;: { \u0026quot;id\u0026quot;: \u0026quot;17e4ff1a-104c-482c-be68-3c01bfc7028e\u0026quot;, \u0026quot;name\u0026quot;: \u0026quot;John Doe\u0026quot;, \u0026quot;email\u0026quot;: \u0026quot;john.doe@domain.tld\u0026quot;, \u0026quot;slack_id\u0026quot;: \u0026quot;\u0026quot; }, \u0026quot;review_date\u0026quot;: \u0026quot;2025-05-27T16:40:05.519754143Z\u0026quot; } ## Approval States ### User-Controlled States These states are set directly by approvers: - APPROVED - The resource has been approved by the approver - REJECTED - The resource is rejected and cannot be updated further - REVOKED - The resource is revoked and cannot be updated further ### System-Controlled States These states are managed automatically by the gateway: - PENDING - Initial state when the approval request is created - PROCESSING - Session is being executed; approval request cannot be updated - EXECUTED - Session completed successfully; approval request cannot be updated - UNKNOWN - Session executed but outcome is indeterminate - EXPIRED - A sidecar approval request passed its expires_at before it was decided or used; nothing was released. Only a control plane sets it ## General Rules ### Approval Permissions - An approval request the user cannot get with GET /reviews/{id} answers 404, the same as an approval request that does not exist - Approvals can only be decided when the resource status is PENDING or APPROVED - Resource owners cannot self-approve - approval requires another member of the same group - Users are only eligible to approve if they are not the resource owner or are administrators ### Multi-Group Approvals - If a user belongs to multiple groups, separate approval entries are updated for each group - All group approvals must be completed before session execution ### Status Transitions - Setting any approval to REJECTED immediately changes the overall resource status and prevents further updates - APPROVED approval requests can still be changed to REJECTED at any time by the resource owner or administrators - REVOKED applies only to an APPROVED approval request of type jit, or to an APPROVED approval request a sidecar filed (it has a listener_name). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is EXECUTED and the request answers 400. A revoke of any other approval request answers 400 - Once an approval request reaches REJECTED or REVOKED the resource is considered as immutable and it cannot be updated again - A decision on a sidecar approval request past its expires_at answers 400 (approval request expired), and the approval request is EXPIRED ### Final States Approval requests in PROCESSING, EXECUTED, UNKNOWN, or EXPIRED states are immutable and cannot be modified.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hoopdev.mintlify.app/_mintlify/api/og/v2?division=Approvals\u0026amp;title=Update+Approval+Status+By+Sid\u0026amp;description=Update+the+status+of+an+approval+request+resource+by+its+resource+ID+or+session+ID.+This+endpoint+is+used+to+approve%2C+reject%2C+or+revoke+approval+requests+for+se\u0026amp;theme=cd9e830ca75131fdfc692d5c\u0026amp;signature=cff565e59065e41021e2bfc08e46749d210d7c1509e44b338498968aa1d25348\">\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=\"Update Approval Status By Sid - Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests. ## Overview When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to PENDING status. All groups must be approved before the session can be executed. The approval status updates affect each approver group based on the caller\u0026#x27;s context. Once all groups are APPROVED, or if any group becomes REJECTED or REVOKED, the overall resource status updates accordingly. ## Approver Groups Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group. ### Initial State When an approval request is created, each group entry is populated with the following structure: json { \u0026quot;id\u0026quot;: \u0026quot;aaa257be-5cc9-401d-ae7e-18ae806d366a\u0026quot;, \u0026quot;group\u0026quot;: \u0026quot;banking\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;PENDING\u0026quot;, \u0026quot;reviewed_by\u0026quot;: null, \u0026quot;review_date\u0026quot;: null } ### Completed Approval State After an approval entry is completed, it includes the status, decision timestamp, and approver information: json { \u0026quot;id\u0026quot;: \u0026quot;a546dfba-d917-4c2b-bc38-7852a7932573\u0026quot;, \u0026quot;group\u0026quot;: \u0026quot;banking\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;REJECTED\u0026quot;, \u0026quot;reviewed_by\u0026quot;: { \u0026quot;id\u0026quot;: \u0026quot;17e4ff1a-104c-482c-be68-3c01bfc7028e\u0026quot;, \u0026quot;name\u0026quot;: \u0026quot;John Doe\u0026quot;, \u0026quot;email\u0026quot;: \u0026quot;john.doe@domain.tld\u0026quot;, \u0026quot;slack_id\u0026quot;: \u0026quot;\u0026quot; }, \u0026quot;review_date\u0026quot;: \u0026quot;2025-05-27T16:40:05.519754143Z\u0026quot; } ## Approval States ### User-Controlled States These states are set directly by approvers: - APPROVED - The resource has been approved by the approver - REJECTED - The resource is rejected and cannot be updated further - REVOKED - The resource is revoked and cannot be updated further ### System-Controlled States These states are managed automatically by the gateway: - PENDING - Initial state when the approval request is created - PROCESSING - Session is being executed; approval request cannot be updated - EXECUTED - Session completed successfully; approval request cannot be updated - UNKNOWN - Session executed but outcome is indeterminate - EXPIRED - A sidecar approval request passed its expires_at before it was decided or used; nothing was released. Only a control plane sets it ## General Rules ### Approval Permissions - An approval request the user cannot get with GET /reviews/{id} answers 404, the same as an approval request that does not exist - Approvals can only be decided when the resource status is PENDING or APPROVED - Resource owners cannot self-approve - approval requires another member of the same group - Users are only eligible to approve if they are not the resource owner or are administrators ### Multi-Group Approvals - If a user belongs to multiple groups, separate approval entries are updated for each group - All group approvals must be completed before session execution ### Status Transitions - Setting any approval to REJECTED immediately changes the overall resource status and prevents further updates - APPROVED approval requests can still be changed to REJECTED at any time by the resource owner or administrators - REVOKED applies only to an APPROVED approval request of type jit, or to an APPROVED approval request a sidecar filed (it has a listener_name). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is EXECUTED and the request answers 400. A revoke of any other approval request answers 400 - Once an approval request reaches REJECTED or REVOKED the resource is considered as immutable and it cannot be updated again - A decision on a sidecar approval request past its expires_at answers 400 (approval request expired), and the approval request is EXPIRED ### Final States Approval requests in PROCESSING, EXECUTED, UNKNOWN, or EXPIRED states are immutable and cannot be modified.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hoopdev.mintlify.app/_mintlify/api/og/v2?division=Approvals\u0026amp;title=Update+Approval+Status+By+Sid\u0026amp;description=Update+the+status+of+an+approval+request+resource+by+its+resource+ID+or+session+ID.+This+endpoint+is+used+to+approve%2C+reject%2C+or+revoke+approval+requests+for+se\u0026amp;theme=cd9e830ca75131fdfc692d5c\u0026amp;signature=cff565e59065e41021e2bfc08e46749d210d7c1509e44b338498968aa1d25348\">\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=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3E63DD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/approvals/update-approval-status-by-sid-1.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://mintlify.hoop.dev/#organization\",\"name\":\"Hoop.dev - Automated Access and Data Protection\",\"url\":\"https://mintlify.hoop.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hoopdev/ndV-rRL4ZXZJLXJY/logo/light.svg?fit=max\u0026auto=format\u0026n=ndV-rRL4ZXZJLXJY\u0026q=85\u0026s=0091927110c2d4309aac8b7862009f98\"}},{\"@type\":\"WebSite\",\"@id\":\"https://mintlify.hoop.dev/docs#website\",\"name\":\"Hoop.dev - Automated Access and Data Protection\",\"url\":\"https://mintlify.hoop.dev/docs\",\"publisher\":{\"@id\":\"https://mintlify.hoop.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1#webpage\",\"url\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1\",\"name\":\"Update Approval Status By Sid\",\"description\":\"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests. ## Overview When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to PENDING status. All groups must be approved before the session can be executed. The approval status updates affect each approver group based on the caller's context. Once all groups are APPROVED, or if any group becomes REJECTED or REVOKED, the overall resource status updates accordingly. ## Approver Groups Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group. ### Initial State When an approval request is created, each group entry is populated with the following structure: json { \\\"id\\\": \\\"aaa257be-5cc9-401d-ae7e-18ae806d366a\\\", \\\"group\\\": \\\"banking\\\", \\\"status\\\": \\\"PENDING\\\", \\\"reviewed_by\\\": null, \\\"review_date\\\": null } ### Completed Approval State After an approval entry is completed, it includes the status, decision timestamp, and approver information: json { \\\"id\\\": \\\"a546dfba-d917-4c2b-bc38-7852a7932573\\\", \\\"group\\\": \\\"banking\\\", \\\"status\\\": \\\"REJECTED\\\", \\\"reviewed_by\\\": { \\\"id\\\": \\\"17e4ff1a-104c-482c-be68-3c01bfc7028e\\\", \\\"name\\\": \\\"John Doe\\\", \\\"email\\\": \\\"john.doe@domain.tld\\\", \\\"slack_id\\\": \\\"\\\" }, \\\"review_date\\\": \\\"2025-05-27T16:40:05.519754143Z\\\" } ## Approval States ### User-Controlled States These states are set directly by approvers: - APPROVED - The resource has been approved by the approver - REJECTED - The resource is rejected and cannot be updated further - REVOKED - The resource is revoked and cannot be updated further ### System-Controlled States These states are managed automatically by the gateway: - PENDING - Initial state when the approval request is created - PROCESSING - Session is being executed; approval request cannot be updated - EXECUTED - Session completed successfully; approval request cannot be updated - UNKNOWN - Session executed but outcome is indeterminate - EXPIRED - A sidecar approval request passed its expires_at before it was decided or used; nothing was released. Only a control plane sets it ## General Rules ### Approval Permissions - An approval request the user cannot get with GET /reviews/{id} answers 404, the same as an approval request that does not exist - Approvals can only be decided when the resource status is PENDING or APPROVED - Resource owners cannot self-approve - approval requires another member of the same group - Users are only eligible to approve if they are not the resource owner or are administrators ### Multi-Group Approvals - If a user belongs to multiple groups, separate approval entries are updated for each group - All group approvals must be completed before session execution ### Status Transitions - Setting any approval to REJECTED immediately changes the overall resource status and prevents further updates - APPROVED approval requests can still be changed to REJECTED at any time by the resource owner or administrators - REVOKED applies only to an APPROVED approval request of type jit, or to an APPROVED approval request a sidecar filed (it has a listener_name). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is EXECUTED and the request answers 400. A revoke of any other approval request answers 400 - Once an approval request reaches REJECTED or REVOKED the resource is considered as immutable and it cannot be updated again - A decision on a sidecar approval request past its expires_at answers 400 (approval request expired), and the approval request is EXPIRED ### Final States Approval requests in PROCESSING, EXECUTED, UNKNOWN, or EXPIRED states are immutable and cannot be modified.\",\"dateModified\":\"2026-11-05T11:33:57.830Z\",\"isPartOf\":{\"@id\":\"https://mintlify.hoop.dev/docs#website\"},\"breadcrumb\":{\"@id\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Approvals\",\"item\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/get-approval-list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update Approval Status By Sid\",\"item\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1#apireference\",\"headline\":\"Update Approval Status By Sid\",\"name\":\"Update Approval Status By Sid\",\"description\":\"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests. ## Overview When a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to PENDING status. All groups must be approved before the session can be executed. The approval status updates affect each approver group based on the caller's context. Once all groups are APPROVED, or if any group becomes REJECTED or REVOKED, the overall resource status updates accordingly. ## Approver Groups Approver groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group. ### Initial State When an approval request is created, each group entry is populated with the following structure: json { \\\"id\\\": \\\"aaa257be-5cc9-401d-ae7e-18ae806d366a\\\", \\\"group\\\": \\\"banking\\\", \\\"status\\\": \\\"PENDING\\\", \\\"reviewed_by\\\": null, \\\"review_date\\\": null } ### Completed Approval State After an approval entry is completed, it includes the status, decision timestamp, and approver information: json { \\\"id\\\": \\\"a546dfba-d917-4c2b-bc38-7852a7932573\\\", \\\"group\\\": \\\"banking\\\", \\\"status\\\": \\\"REJECTED\\\", \\\"reviewed_by\\\": { \\\"id\\\": \\\"17e4ff1a-104c-482c-be68-3c01bfc7028e\\\", \\\"name\\\": \\\"John Doe\\\", \\\"email\\\": \\\"john.doe@domain.tld\\\", \\\"slack_id\\\": \\\"\\\" }, \\\"review_date\\\": \\\"2025-05-27T16:40:05.519754143Z\\\" } ## Approval States ### User-Controlled States These states are set directly by approvers: - APPROVED - The resource has been approved by the approver - REJECTED - The resource is rejected and cannot be updated further - REVOKED - The resource is revoked and cannot be updated further ### System-Controlled States These states are managed automatically by the gateway: - PENDING - Initial state when the approval request is created - PROCESSING - Session is being executed; approval request cannot be updated - EXECUTED - Session completed successfully; approval request cannot be updated - UNKNOWN - Session executed but outcome is indeterminate - EXPIRED - A sidecar approval request passed its expires_at before it was decided or used; nothing was released. Only a control plane sets it ## General Rules ### Approval Permissions - An approval request the user cannot get with GET /reviews/{id} answers 404, the same as an approval request that does not exist - Approvals can only be decided when the resource status is PENDING or APPROVED - Resource owners cannot self-approve - approval requires another member of the same group - Users are only eligible to approve if they are not the resource owner or are administrators ### Multi-Group Approvals - If a user belongs to multiple groups, separate approval entries are updated for each group - All group approvals must be completed before session execution ### Status Transitions - Setting any approval to REJECTED immediately changes the overall resource status and prevents further updates - APPROVED approval requests can still be changed to REJECTED at any time by the resource owner or administrators - REVOKED applies only to an APPROVED approval request of type jit, or to an APPROVED approval request a sidecar filed (it has a listener_name). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is EXECUTED and the request answers 400. A revoke of any other approval request answers 400 - Once an approval request reaches REJECTED or REVOKED the resource is considered as immutable and it cannot be updated again - A decision on a sidecar approval request past its expires_at answers 400 (approval request expired), and the approval request is EXPIRED ### Final States Approval requests in PROCESSING, EXECUTED, UNKNOWN, or EXPIRED states are immutable and cannot be modified.\",\"url\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1\",\"mainEntityOfPage\":{\"@id\":\"https://mintlify.hoop.dev/docs/api-reference/approvals/update-approval-status-by-sid-1#webpage\"},\"dateModified\":\"2026-11-05T11:33:57.830Z\",\"publisher\":{\"@id\":\"https://mintlify.hoop.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://mintlify.hoop.dev/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hoop.dev - Automated Access and Data Protection\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hoop.dev - Automated Access and Data Protection","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/introduction/getting-started"}]},{"anchor":"Hoop Gateway","icon":"server","hidden":true,"pages":[{"title":"Hoop Gateway","href":"/gateway/overview"}]},{"anchor":"Community","icon":"github","href":"https://github.com/hoophq/hoop/discussions"},{"anchor":"Blog","icon":"newspaper","href":"https://hoop.dev/blog"},{"anchor":"API Reference","icon":"square-terminal","groups":[{"group":"Server Management","pages":[{"title":"Get MCP OAuth Authorization Server Metadata","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /.well-known/oauth-authorization-server","href":"/api-reference/server-management/get-mcp-oauth-authorization-server-metadata"},{"title":"HealthCheck","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /healthz","href":"/api-reference/server-management/healthcheck"},{"title":"Register MCP OAuth Client","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /mcp/oauth/register","href":"/api-reference/server-management/register-mcp-oauth-client"},{"title":"Get Organization Analytics Mode","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /orgs/analytics-mode","href":"/api-reference/server-management/get-organization-analytics-mode"},{"title":"Update Organization Analytics Mode","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /orgs/analytics-mode","href":"/api-reference/server-management/update-organization-analytics-mode"},{"title":"Get Organization Hide Role Info","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /orgs/hide-role-info","href":"/api-reference/server-management/get-organization-hide-role-info"},{"title":"Update Organization Hide Role Info","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /orgs/hide-role-info","href":"/api-reference/server-management/update-organization-hide-role-info"},{"title":"Update Org License","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /orgs/license","href":"/api-reference/server-management/update-org-license"},{"title":"Sign License","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /orgs/license/sign","href":"/api-reference/server-management/sign-license"},{"title":"Get Organization Onboarding Status","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /orgs/onboarding","href":"/api-reference/server-management/get-organization-onboarding-status"},{"title":"Get Organization Protection Profile","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /orgs/protection-profile","href":"/api-reference/server-management/get-organization-protection-profile"},{"title":"Update Organization Protection Profile","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /orgs/protection-profile","href":"/api-reference/server-management/update-organization-protection-profile"},{"title":"Get Public Server Info","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /publicserverinfo","href":"/api-reference/server-management/get-public-server-info"},{"title":"Get Authentication Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /serverconfig/auth","href":"/api-reference/server-management/get-authentication-configuration"},{"title":"Update Authentication Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /serverconfig/auth","href":"/api-reference/server-management/update-authentication-configuration"},{"title":"Generate API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /serverconfig/auth/apikey","href":"/api-reference/server-management/generate-api-key"},{"title":"Get MCP OAuth 2.1 Resource Server Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /serverconfig/mcp-auth","href":"/api-reference/server-management/get-mcp-oauth-21-resource-server-configuration"},{"title":"Update MCP OAuth 2.1 Resource Server Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /serverconfig/mcp-auth","href":"/api-reference/server-management/update-mcp-oauth-21-resource-server-configuration"},{"title":"Get Server Miscellaneous Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /serverconfig/misc","href":"/api-reference/server-management/get-server-miscellaneous-configuration"},{"title":"Update Server Miscellaneous Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /serverconfig/misc","href":"/api-reference/server-management/update-server-miscellaneous-configuration"},{"title":"Get Server Info","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /serverinfo","href":"/api-reference/server-management/get-server-info"}]},{"group":"Access Request Rules","pages":[{"title":"List Access Request Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /access-requests/rules","href":"/api-reference/access-request-rules/list-access-request-rules"},{"title":"Create Access Request Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /access-requests/rules","href":"/api-reference/access-request-rules/create-access-request-rule"},{"title":"Get Access Request Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /access-requests/rules/{name}","href":"/api-reference/access-request-rules/get-access-request-rule"},{"title":"Update Access Request Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /access-requests/rules/{name}","href":"/api-reference/access-request-rules/update-access-request-rule"},{"title":"Delete Access Request Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /access-requests/rules/{name}","href":"/api-reference/access-request-rules/delete-access-request-rule"}]},{"group":"Agents","pages":[{"title":"List Agent Tags","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /agent-tags","href":"/api-reference/agents/list-agent-tags"},{"title":"List Agent Keys","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /agents","href":"/api-reference/agents/list-agent-keys"},{"title":"Create Agent Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /agents","href":"/api-reference/agents/create-agent-key"},{"title":"Get Agent Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /agents/{nameOrID}","href":"/api-reference/agents/get-agent-key"},{"title":"Delete Agent Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /agents/{nameOrID}","href":"/api-reference/agents/delete-agent-key"},{"title":"Update Agent Tags","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /agents/{nameOrID}/tags","href":"/api-reference/agents/update-agent-tags"}]},{"group":"AI Agents","pages":[{"title":"List AI Agents","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /ai-agents","href":"/api-reference/ai-agents/list-ai-agents"},{"title":"Create AI Agent","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /ai-agents","href":"/api-reference/ai-agents/create-ai-agent"},{"title":"Get AI Agent","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /ai-agents/{nameOrID}","href":"/api-reference/ai-agents/get-ai-agent"},{"title":"Update AI Agent","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /ai-agents/{nameOrID}","href":"/api-reference/ai-agents/update-ai-agent"},{"title":"Revoke AI Agent","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /ai-agents/{nameOrID}","href":"/api-reference/ai-agents/revoke-ai-agent"},{"title":"Reactivate AI Agent","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /ai-agents/{nameOrID}/reactivate","href":"/api-reference/ai-agents/reactivate-ai-agent"}]},{"group":"AI","pages":[{"title":"Get AI Session Analyzer Provider","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /ai/session-analyzer/providers","href":"/api-reference/ai/get-ai-session-analyzer-provider"},{"title":"Upsert AI Session Analyzer Provider","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /ai/session-analyzer/providers","href":"/api-reference/ai/upsert-ai-session-analyzer-provider"},{"title":"Delete AI Session Analyzer Provider","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /ai/session-analyzer/providers","href":"/api-reference/ai/delete-ai-session-analyzer-provider"},{"title":"List AI Session Analyzer Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /ai/session-analyzer/rules","href":"/api-reference/ai/list-ai-session-analyzer-rules"},{"title":"Create AI Session Analyzer Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /ai/session-analyzer/rules","href":"/api-reference/ai/create-ai-session-analyzer-rule"},{"title":"Get AI Session Analyzer Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /ai/session-analyzer/rules/{name}","href":"/api-reference/ai/get-ai-session-analyzer-rule"},{"title":"Update AI Session Analyzer Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /ai/session-analyzer/rules/{name}","href":"/api-reference/ai/update-ai-session-analyzer-rule"},{"title":"Delete AI Session Analyzer Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /ai/session-analyzer/rules/{name}","href":"/api-reference/ai/delete-ai-session-analyzer-rule"},{"title":"Get AI Session Analyzer System Prompt","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /ai/session-analyzer/system-prompt","href":"/api-reference/ai/get-ai-session-analyzer-system-prompt"},{"title":"Get AI Session Analyzer Rule by Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrId}/ai-session-analyzer-rule","href":"/api-reference/ai/get-ai-session-analyzer-rule-by-connection"}]},{"group":"API Keys","pages":[{"title":"List API Keys","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /api-keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /api-keys","href":"/api-reference/api-keys/create-api-key"},{"title":"Get API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /api-keys/{nameOrID}","href":"/api-reference/api-keys/get-api-key"},{"title":"Update API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /api-keys/{nameOrID}","href":"/api-reference/api-keys/update-api-key"},{"title":"Revoke API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /api-keys/{nameOrID}","href":"/api-reference/api-keys/revoke-api-key"},{"title":"Reactivate API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /api-keys/{nameOrID}/reactivate","href":"/api-reference/api-keys/reactivate-api-key"}]},{"group":"Approvals","pages":[{"title":"Get Approval List","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /approvals","href":"/api-reference/approvals/get-approval-list"},{"title":"Count Approvals","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /approvals/count","href":"/api-reference/approvals/count-approvals"},{"title":"Get Approval","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /approvals/{id}","href":"/api-reference/approvals/get-approval"},{"title":"Update Approval Status","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /approvals/{id}","href":"/api-reference/approvals/update-approval-status"},{"title":"Get Approval List","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /reviews","href":"/api-reference/approvals/get-approval-list-1"},{"title":"Get Approval","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /reviews/{id}","href":"/api-reference/approvals/get-approval-1"},{"title":"Update Approval Status","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /reviews/{id}","href":"/api-reference/approvals/update-approval-status-1"},{"title":"Update Approval Status By Sid","description":"Update the status of an approval request resource by its resource ID or session ID. This endpoint is used to approve, reject, or revoke approval requests for session execution requests.\n\n## Overview\n\nWhen a user interacts with a session, an approval request resource is automatically created containing the configured approver groups, each initially set to `PENDING` status. **All groups must be approved before the session can be executed.**\n\nThe approval status updates affect each approver group based on the caller's context. Once all groups are `APPROVED`, or if any group becomes `REJECTED` or `REVOKED`, the overall resource status updates accordingly.\n\n## Approver Groups\n\nApprover groups contain individual approval entries that must be completed by authorized users from specific groups. Each entry represents a required approval from a designated approver group.\n\n### Initial State\n\nWhen an approval request is created, each group entry is populated with the following structure:\n\n```json\n{\n \"id\": \"aaa257be-5cc9-401d-ae7e-18ae806d366a\",\n \"group\": \"banking\",\n \"status\": \"PENDING\",\n \"reviewed_by\": null,\n \"review_date\": null\n}\n```\n\n### Completed Approval State\n\nAfter an approval entry is completed, it includes the status, decision timestamp, and approver information:\n\n```json\n{\n \"id\": \"a546dfba-d917-4c2b-bc38-7852a7932573\",\n \"group\": \"banking\",\n \"status\": \"REJECTED\",\n \"reviewed_by\": {\n \"id\": \"17e4ff1a-104c-482c-be68-3c01bfc7028e\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@domain.tld\",\n \"slack_id\": \"\"\n },\n \"review_date\": \"2025-05-27T16:40:05.519754143Z\"\n}\n```\n\n## Approval States\n\n### User-Controlled States\n\nThese states are set directly by approvers:\n\n- **`APPROVED`** - The resource has been approved by the approver\n- **`REJECTED`** - The resource is rejected and cannot be updated further\n- **`REVOKED`** - The resource is revoked and cannot be updated further\n\n### System-Controlled States\n\nThese states are managed automatically by the gateway:\n\n- **`PENDING`** - Initial state when the approval request is created\n- **`PROCESSING`** - Session is being executed; approval request cannot be updated\n- **`EXECUTED`** - Session completed successfully; approval request cannot be updated\n- **`UNKNOWN`** - Session executed but outcome is indeterminate\n- **`EXPIRED`** - A sidecar approval request passed its `expires_at` before it was decided or used; nothing was released. Only a control plane sets it\n\n## General Rules\n\n### Approval Permissions\n\n- An approval request the user cannot get with `GET /reviews/{id}` answers `404`, the same as an approval request that does not exist\n- Approvals can only be decided when the resource status is `PENDING` or `APPROVED`\n- **Resource owners cannot self-approve** - approval requires another member of the same group\n- Users are only eligible to approve if they are **not the resource owner** or are **administrators**\n\n### Multi-Group Approvals\n\n- If a user belongs to multiple groups, separate approval entries are updated for each group\n- All group approvals must be completed before session execution\n\n### Status Transitions\n\n- Setting any approval to `REJECTED` immediately changes the overall resource status and prevents further updates\n- `APPROVED` approval requests can still be changed to `REJECTED` at any time by the resource owner or administrators\n- `REVOKED` applies only to an `APPROVED` approval request of type `jit`, or to an `APPROVED` approval request a sidecar filed (it has a `listener_name`). A sidecar approval request can be revoked until the sidecar uses the approval; after that it is `EXECUTED` and the request answers `400`. A revoke of any other approval request answers `400`\n- Once an approval request reaches `REJECTED` or `REVOKED` the resource is considered as immutable and it cannot be updated again\n- A decision on a sidecar approval request past its `expires_at` answers `400` (`approval request expired`), and the approval request is `EXPIRED`\n\n### Final States\n\nApproval requests in `PROCESSING`, `EXECUTED`, `UNKNOWN`, or `EXPIRED` states are immutable and cannot be modified.","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sessions/{session_id}/approval","href":"/api-reference/approvals/update-approval-status-by-sid"},{"title":"Update Approval Status By Sid","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sessions/{session_id}/review","href":"/api-reference/approvals/update-approval-status-by-sid-1"}]},{"group":"Attributes","pages":[{"title":"List Attributes","description":"List attributes for the organization with optional pagination and search.","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /attributes","href":"/api-reference/attributes/list-attributes"},{"title":"Create Attribute","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /attributes","href":"/api-reference/attributes/create-attribute"},{"title":"Get Attribute","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /attributes/{name}","href":"/api-reference/attributes/get-attribute"},{"title":"Update Attribute","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /attributes/{name}","href":"/api-reference/attributes/update-attribute"},{"title":"Delete Attribute","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /attributes/{name}","href":"/api-reference/attributes/delete-attribute"}]},{"group":"Audit Logs","pages":[{"title":"List security audit logs","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /audit/logs","href":"/api-reference/audit-logs/list-security-audit-logs"}]},{"group":"Authentication","pages":[{"title":"OIDC | Login Callback","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /callback","href":"/api-reference/authentication/oidc-|-login-callback"},{"title":"Local | Login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /localauth/login","href":"/api-reference/authentication/local-|-login"},{"title":"Local | Register User","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /localauth/register","href":"/api-reference/authentication/local-|-register-user"},{"title":"OIDC | Login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /login","href":"/api-reference/authentication/oidc-|-login"},{"title":"SAML | Login Callback","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /saml/callback","href":"/api-reference/authentication/saml-|-login-callback"},{"title":"SAML | Login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /saml/login","href":"/api-reference/authentication/saml-|-login"},{"title":"OIDC | Signup","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /signup","href":"/api-reference/authentication/oidc-|-signup"}]},{"group":"Connections","pages":[{"title":"List Active Connection Credentials","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connection-credentials","href":"/api-reference/connections/list-active-connection-credentials"},{"title":"List Connections","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections","href":"/api-reference/connections/list-connections"},{"title":"Create Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /connections","href":"/api-reference/connections/create-connection"},{"title":"List Connection Tags","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections-tags","href":"/api-reference/connections/list-connection-tags"},{"title":"Get Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}","href":"/api-reference/connections/get-connection"},{"title":"Update Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /connections/{nameOrID}","href":"/api-reference/connections/update-connection"},{"title":"Delete Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /connections/{nameOrID}","href":"/api-reference/connections/delete-connection"},{"title":"Patch Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json patch /connections/{nameOrID}","href":"/api-reference/connections/patch-connection"},{"title":"Get Table Columns","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/columns","href":"/api-reference/connections/get-table-columns"},{"title":"Get Active Connection Credentials","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/credentials","href":"/api-reference/connections/get-active-connection-credentials"},{"title":"Create Connection Credentials","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /connections/{nameOrID}/credentials","href":"/api-reference/connections/create-connection-credentials"},{"title":"Close Connection Credentials Session","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /connections/{nameOrID}/credentials/{credentialID}/close","href":"/api-reference/connections/close-connection-credentials-session"},{"title":"Revoke Connection Credentials","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /connections/{nameOrID}/credentials/{credentialID}/revoke","href":"/api-reference/connections/revoke-connection-credentials"},{"title":"Resume Connection Credentials Request","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /connections/{nameOrID}/credentials/{sessionID}","href":"/api-reference/connections/resume-connection-credentials-request"},{"title":"List Databases","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/databases","href":"/api-reference/connections/list-databases"},{"title":"Update Data Masking Rule Connections","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /connections/{nameOrID}/datamasking-rules","href":"/api-reference/connections/update-data-masking-rule-connections"},{"title":"Get Federation Configuration for a Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/federation","href":"/api-reference/connections/get-federation-configuration-for-a-connection"},{"title":"Upsert Federation Configuration for a Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /connections/{nameOrID}/federation","href":"/api-reference/connections/upsert-federation-configuration-for-a-connection"},{"title":"Delete Federation Configuration for a Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /connections/{nameOrID}/federation","href":"/api-reference/connections/delete-federation-configuration-for-a-connection"},{"title":"List Database Tables","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/tables","href":"/api-reference/connections/list-database-tables"},{"title":"Test Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/test","href":"/api-reference/connections/test-connection"},{"title":"List MCP Server Catalog","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /mcp-catalog","href":"/api-reference/connections/list-mcp-server-catalog"},{"title":"Start the OAuth login flow for an MCP connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /mcp-oauth/authorize","href":"/api-reference/connections/start-the-oauth-login-flow-for-an-mcp-connection"},{"title":"OAuth callback for MCP connection login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /mcp-oauth/callback","href":"/api-reference/connections/oauth-callback-for-mcp-connection-login"},{"title":"Retrieve the token obtained by an MCP OAuth login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /mcp-oauth/token/{flowID}","href":"/api-reference/connections/retrieve-the-token-obtained-by-an-mcp-oauth-login"}]},{"group":"Federation","pages":[{"title":"Report the user's per-user federation connection status","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/federation/oauth","href":"/api-reference/federation/report-the-users-per-user-federation-connection-status"},{"title":"Disconnect a user's Google account from a connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /connections/{nameOrID}/federation/oauth","href":"/api-reference/federation/disconnect-a-users-google-account-from-a-connection"},{"title":"Start the Google OAuth consent flow for a connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /connections/{nameOrID}/federation/oauth/authorize","href":"/api-reference/federation/start-the-google-oauth-consent-flow-for-a-connection"},{"title":"Google OAuth callback for connection federation","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /federation/oauth/callback","href":"/api-reference/federation/google-oauth-callback-for-connection-federation"},{"title":"Test a Federation Configuration End-to-End","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /federation/test","href":"/api-reference/federation/test-a-federation-configuration-end-to-end"}]},{"group":"Data Masking Rules","pages":[{"title":"List Data Masking Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /datamasking-rules","href":"/api-reference/data-masking-rules/list-data-masking-rules"},{"title":"Create Data Masking Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /datamasking-rules","href":"/api-reference/data-masking-rules/create-data-masking-rule"},{"title":"Get Data Masking Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /datamasking-rules/{id}","href":"/api-reference/data-masking-rules/get-data-masking-rule"},{"title":"Update Data Masking Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /datamasking-rules/{id}","href":"/api-reference/data-masking-rules/update-data-masking-rule"},{"title":"Delete Data Masking Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /datamasking-rules/{id}","href":"/api-reference/data-masking-rules/delete-data-masking-rule"}]},{"group":"AWS","pages":[{"title":"List DB Role Jobs","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /dbroles/jobs","href":"/api-reference/aws/list-db-role-jobs"},{"title":"Create Database Role Job","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /dbroles/jobs","href":"/api-reference/aws/create-database-role-job"},{"title":"Get DB Role Job","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /dbroles/jobs/{id}","href":"/api-reference/aws/get-db-role-job"},{"title":"Update IAM Access Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /integrations/aws/iam/accesskeys","href":"/api-reference/aws/update-iam-access-key"},{"title":"Delete IAM Access Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /integrations/aws/iam/accesskeys","href":"/api-reference/aws/delete-iam-access-key"},{"title":"Get Caller Identity","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/aws/iam/userinfo","href":"/api-reference/aws/get-caller-identity"},{"title":"List AWS Accounts","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/aws/organizations","href":"/api-reference/aws/list-aws-accounts"},{"title":"Create RDS Root Password","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /integrations/aws/rds/credentials","href":"/api-reference/aws/create-rds-root-password"},{"title":"List Database Instances","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /integrations/aws/rds/describe-db-instances","href":"/api-reference/aws/list-database-instances"}]},{"group":"Live Events","pages":[{"title":"Stream Live Events","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /events/stream","href":"/api-reference/live-events/stream-live-events"}]},{"group":"Feature Flags","pages":[{"title":"List Feature Flags","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /feature-flags","href":"/api-reference/feature-flags/list-feature-flags"},{"title":"Update Feature Flag","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /feature-flags/{name}","href":"/api-reference/feature-flags/update-feature-flag"}]},{"group":"Features","pages":[{"title":"OpenAI Chat Completions","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /features/ask-ai/v1/chat/completions","href":"/api-reference/features/openai-chat-completions"},{"title":"Feature Update","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /orgs/features","href":"/api-reference/features/feature-update"},{"title":"Get Webhooks Dashboard","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /webhooks-dashboard","href":"/api-reference/features/get-webhooks-dashboard"}]},{"group":"Guard Rails","pages":[{"title":"List Guard Rail Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /guardrails","href":"/api-reference/guard-rails/list-guard-rail-rules"},{"title":"Create Guard Rail Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /guardrails","href":"/api-reference/guard-rails/create-guard-rail-rules"},{"title":"Get Guard Rail Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /guardrails/{id}","href":"/api-reference/guard-rails/get-guard-rail-rules"},{"title":"Update Guard Rail Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /guardrails/{id}","href":"/api-reference/guard-rails/update-guard-rail-rules"},{"title":"Delete a Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /guardrails/{id}","href":"/api-reference/guard-rails/delete-a-rule"}]},{"group":"Jira","pages":[{"title":"Get Jira Integration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/jira","href":"/api-reference/jira/get-jira-integration"},{"title":"Update Jira Integration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /integrations/jira","href":"/api-reference/jira/update-jira-integration"},{"title":"Create Jira Integration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /integrations/jira","href":"/api-reference/jira/create-jira-integration"},{"title":"Get Asset Field Configurations","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/jira/assets/fieldconfigs","href":"/api-reference/jira/get-asset-field-configurations"},{"title":"Get Asset Objects","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/jira/assets/objects","href":"/api-reference/jira/get-asset-objects"},{"title":"List Issue Templates","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/jira/issuetemplates","href":"/api-reference/jira/list-issue-templates"},{"title":"Create Issue Templates","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /integrations/jira/issuetemplates","href":"/api-reference/jira/create-issue-templates"},{"title":"Get Issue Templates","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /integrations/jira/issuetemplates/{id}","href":"/api-reference/jira/get-issue-templates"},{"title":"Update Issue Templates","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /integrations/jira/issuetemplates/{id}","href":"/api-reference/jira/update-issue-templates"},{"title":"Delete Issue Templates","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /integrations/jira/issuetemplates/{id}","href":"/api-reference/jira/delete-issue-templates"}]},{"group":"Machine Identities","pages":[{"title":"List Machine Identities","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /machineidentities","href":"/api-reference/machine-identities/list-machine-identities"},{"title":"Create Machine Identity","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /machineidentities","href":"/api-reference/machine-identities/create-machine-identity"},{"title":"Get Machine Identity","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /machineidentities/{name}","href":"/api-reference/machine-identities/get-machine-identity"},{"title":"Update Machine Identity","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /machineidentities/{name}","href":"/api-reference/machine-identities/update-machine-identity"},{"title":"Delete Machine Identity","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /machineidentities/{name}","href":"/api-reference/machine-identities/delete-machine-identity"},{"title":"List Machine Identity Credentials","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /machineidentities/{name}/credentials","href":"/api-reference/machine-identities/list-machine-identity-credentials"},{"title":"Rotate Machine Identity Credential","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /machineidentities/{name}/credentials/{connectionName}/rotate","href":"/api-reference/machine-identities/rotate-machine-identity-credential"}]},{"group":"Session Metrics","pages":[{"title":"Get Session Metrics","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /metrics/sessions","href":"/api-reference/session-metrics/get-session-metrics"}]},{"group":"User Management","pages":[{"title":"Handle Organization Invitation","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /orgs/invitations","href":"/api-reference/user-management/handle-organization-invitation"},{"title":"List Service Accounts","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /serviceaccounts","href":"/api-reference/user-management/list-service-accounts"},{"title":"Create Service Account","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /serviceaccounts","href":"/api-reference/user-management/create-service-account"},{"title":"Update Service Account","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /serviceaccounts/{subject}","href":"/api-reference/user-management/update-service-account"},{"title":"Get UserInfo","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /userinfo","href":"/api-reference/user-management/get-userinfo"},{"title":"List Users","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /users","href":"/api-reference/user-management/list-users"},{"title":"Create User","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /users","href":"/api-reference/user-management/create-user"},{"title":"List User Groups","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /users/groups","href":"/api-reference/user-management/list-user-groups"},{"title":"Create User Group","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /users/groups","href":"/api-reference/user-management/create-user-group"},{"title":"Delete User Group","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /users/groups/{name}","href":"/api-reference/user-management/delete-user-group"},{"title":"Answer Signup Origin Survey","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /users/self/signup-origin","href":"/api-reference/user-management/answer-signup-origin-survey"},{"title":"Patch User Slack ID","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json patch /users/self/slack","href":"/api-reference/user-management/patch-user-slack-id"},{"title":"Get User","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /users/{emailOrID}","href":"/api-reference/user-management/get-user"},{"title":"Update User","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /users/{emailOrID}","href":"/api-reference/user-management/update-user"},{"title":"Delete User","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /users/{emailOrID}","href":"/api-reference/user-management/delete-user"}]},{"group":"Organization Management","pages":[{"title":"Get Org Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /orgs/keys","href":"/api-reference/organization-management/get-org-key"},{"title":"Create Org Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /orgs/keys","href":"/api-reference/organization-management/create-org-key"},{"title":"Revoke Org Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /orgs/keys","href":"/api-reference/organization-management/revoke-org-key"}]},{"group":"Plugins","pages":[{"title":"List Plugins","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /plugins","href":"/api-reference/plugins/list-plugins"},{"title":"Create Plugin","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /plugins","href":"/api-reference/plugins/create-plugin"},{"title":"Get Plugin","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /plugins/{name}","href":"/api-reference/plugins/get-plugin"},{"title":"Update Plugin","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /plugins/{name}","href":"/api-reference/plugins/update-plugin"},{"title":"Update Plugin Config","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /plugins/{name}/config","href":"/api-reference/plugins/update-plugin-config"},{"title":"Get Plugin Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /plugins/{name}/conn/{id}","href":"/api-reference/plugins/get-plugin-connection"},{"title":"Upsert Plugin Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /plugins/{name}/conn/{id}","href":"/api-reference/plugins/upsert-plugin-connection"},{"title":"Delete Plugin Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /plugins/{name}/conn/{id}","href":"/api-reference/plugins/delete-plugin-connection"}]},{"group":"Runbooks","pages":[{"title":"Runbook Exec","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /plugins/runbooks/connections/{name}/exec","href":"/api-reference/runbooks/runbook-exec"},{"title":"List Runbooks By Connection","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /plugins/runbooks/connections/{name}/templates","href":"/api-reference/runbooks/list-runbooks-by-connection"},{"title":"List Runbooks","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /plugins/runbooks/templates","href":"/api-reference/runbooks/list-runbooks"},{"title":"List Runbooks","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /runbooks","href":"/api-reference/runbooks/list-runbooks-1"},{"title":"Get Runbook Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /runbooks/configurations","href":"/api-reference/runbooks/get-runbook-configuration"},{"title":"Update Runbook Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /runbooks/configurations","href":"/api-reference/runbooks/update-runbook-configuration"},{"title":"Create Runbook Configuration Entry","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /runbooks/configurations","href":"/api-reference/runbooks/create-runbook-configuration-entry"},{"title":"Update Runbook Configuration Entry","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /runbooks/configurations/{id}","href":"/api-reference/runbooks/update-runbook-configuration-entry"},{"title":"Delete Runbook Configuration Entry","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /runbooks/configurations/{id}","href":"/api-reference/runbooks/delete-runbook-configuration-entry"},{"title":"Create Runbook File","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /runbooks/configurations/{id}/files","href":"/api-reference/runbooks/create-runbook-file"},{"title":"Runbook Exec","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /runbooks/exec","href":"/api-reference/runbooks/runbook-exec-1"},{"title":"List Runbook Rules","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /runbooks/rules","href":"/api-reference/runbooks/list-runbook-rules"},{"title":"Create Runbook Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /runbooks/rules","href":"/api-reference/runbooks/create-runbook-rule"},{"title":"Get Runbook Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /runbooks/rules/{id}","href":"/api-reference/runbooks/get-runbook-rule"},{"title":"Update Runbook Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /runbooks/rules/{id}","href":"/api-reference/runbooks/update-runbook-rule"},{"title":"Delete Runbook Rule","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /runbooks/rules/{id}","href":"/api-reference/runbooks/delete-runbook-rule"}]},{"group":"Proxy Manager","pages":[{"title":"ProxyManager Connect","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /proxymanager/connect","href":"/api-reference/proxy-manager/proxymanager-connect"},{"title":"ProxyManager Disconnect","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /proxymanager/disconnect","href":"/api-reference/proxy-manager/proxymanager-disconnect"},{"title":"ProxyManager Status","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /proxymanager/status","href":"/api-reference/proxy-manager/proxymanager-status"}]},{"group":"Reports","pages":[{"title":"Get Compliance Report","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /reports/compliance","href":"/api-reference/reports/get-compliance-report"},{"title":"Session Reports","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /reports/sessions","href":"/api-reference/reports/session-reports"}]},{"group":"Resources","pages":[{"title":"Lists resources","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /resources","href":"/api-reference/resources/lists-resources"},{"title":"Creates a resource","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /resources","href":"/api-reference/resources/creates-a-resource"},{"title":"Applies a batch of resource plans","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /resources/apply","href":"/api-reference/resources/applies-a-batch-of-resource-plans"},{"title":"Tests connectivity for multiple resources","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /resources/health","href":"/api-reference/resources/tests-connectivity-for-multiple-resources"},{"title":"Creates a batch of resource plans","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /resources/plan","href":"/api-reference/resources/creates-a-batch-of-resource-plans"},{"title":"Gets a resource","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /resources/{name}","href":"/api-reference/resources/gets-a-resource"},{"title":"Updates a resource","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /resources/{name}","href":"/api-reference/resources/updates-a-resource"},{"title":"Deletes a resource","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /resources/{name}","href":"/api-reference/resources/deletes-a-resource"},{"title":"Applies a resource plan","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /resources/{name}/apply","href":"/api-reference/resources/applies-a-resource-plan"},{"title":"Tests connectivity for a resource","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /resources/{name}/health","href":"/api-reference/resources/tests-connectivity-for-a-resource"},{"title":"Creates a resource plan","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /resources/{name}/plan","href":"/api-reference/resources/creates-a-resource-plan"}]},{"group":"Rulepacks","pages":[{"title":"List Rulepacks","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /rulepacks","href":"/api-reference/rulepacks/list-rulepacks"},{"title":"Get Rulepack","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /rulepacks/{id}","href":"/api-reference/rulepacks/get-rulepack"},{"title":"Apply Rulepack to Connections","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /rulepacks/{id}/apply","href":"/api-reference/rulepacks/apply-rulepack-to-connections"}]},{"group":"Search","pages":[{"title":"Search","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /search","href":"/api-reference/search/search"}]},{"group":"Server Logs","pages":[{"title":"List Server Logs","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /server-logs","href":"/api-reference/server-logs/list-server-logs"},{"title":"Stream Server Logs","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /server-logs/stream","href":"/api-reference/server-logs/stream-server-logs"}]},{"group":"Sessions","pages":[{"title":"List Sessions","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions","href":"/api-reference/sessions/list-sessions"},{"title":"Exec","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sessions","href":"/api-reference/sessions/exec"},{"title":"Analyze an exec before the run forms","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sessions/analyze","href":"/api-reference/sessions/analyze-an-exec-before-the-run-forms"},{"title":"Create a provisioned session using API Key","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sessions/provision","href":"/api-reference/sessions/create-a-provisioned-session-using-api-key"},{"title":"Retry RDP PII analysis","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sessions/{id}/rdp-detections/retry","href":"/api-reference/sessions/retry-rdp-pii-analysis"},{"title":"Get Session","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}","href":"/api-reference/sessions/get-session"},{"title":"Download Session","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}/download","href":"/api-reference/sessions/download-session"},{"title":"Download Session Input Command","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}/download/input","href":"/api-reference/sessions/download-session-input-command"},{"title":"Approved Exec","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sessions/{session_id}/exec","href":"/api-reference/sessions/approved-exec"},{"title":"Kill Session","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sessions/{session_id}/kill","href":"/api-reference/sessions/kill-session"},{"title":"Update Session Metadata","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json patch /sessions/{session_id}/metadata","href":"/api-reference/sessions/update-session-metadata"},{"title":"Get RDP session PII detections","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}/rdp-detections","href":"/api-reference/sessions/get-rdp-session-pii-detections"},{"title":"Get RDP session frames","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}/rdp-frames","href":"/api-reference/sessions/get-rdp-session-frames"},{"title":"Stream Session Result","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}/result/stream","href":"/api-reference/sessions/stream-session-result"},{"title":"Stream Session Events","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sessions/{session_id}/stream","href":"/api-reference/sessions/stream-session-events"}]},{"group":"Sidecars","pages":[{"title":"List Sidecar Deleted Names","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecar-deleted-names","href":"/api-reference/sidecars/list-sidecar-deleted-names"},{"title":"Clear Sidecar Deleted Name","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /sidecar-deleted-names/{name}","href":"/api-reference/sidecars/clear-sidecar-deleted-name"},{"title":"List Sidecar Service Accounts","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecar-service-accounts","href":"/api-reference/sidecars/list-sidecar-service-accounts"},{"title":"Create Sidecar Service Account","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecar-service-accounts","href":"/api-reference/sidecars/create-sidecar-service-account"},{"title":"Get Sidecar Service Account","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecar-service-accounts/{id}","href":"/api-reference/sidecars/get-sidecar-service-account"},{"title":"Update Sidecar Service Account","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sidecar-service-accounts/{id}","href":"/api-reference/sidecars/update-sidecar-service-account"},{"title":"Delete Sidecar Service Account","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /sidecar-service-accounts/{id}","href":"/api-reference/sidecars/delete-sidecar-service-account"},{"title":"List Sidecars","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars","href":"/api-reference/sidecars/list-sidecars"},{"title":"Create Sidecar","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars","href":"/api-reference/sidecars/create-sidecar"},{"title":"Sidecar Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars/configuration","href":"/api-reference/sidecars/sidecar-configuration"},{"title":"Import Sidecar Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sidecars/configuration","href":"/api-reference/sidecars/import-sidecar-configuration"},{"title":"Record Sidecar Session Events","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/events","href":"/api-reference/sidecars/record-sidecar-session-events"},{"title":"Sidecar Handshake","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/handshake","href":"/api-reference/sidecars/sidecar-handshake"},{"title":"Start a sidecar login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/login","href":"/api-reference/sidecars/start-a-sidecar-login"},{"title":"Poll a sidecar login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/login/poll","href":"/api-reference/sidecars/poll-a-sidecar-login"},{"title":"Get a sidecar login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars/login/{code}","href":"/api-reference/sidecars/get-a-sidecar-login"},{"title":"Approve a sidecar login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/login/{code}/approve","href":"/api-reference/sidecars/approve-a-sidecar-login"},{"title":"Deny a sidecar login","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/login/{code}/deny","href":"/api-reference/sidecars/deny-a-sidecar-login"},{"title":"List Sidecar Approval Requests","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars/reviews","href":"/api-reference/sidecars/list-sidecar-approval-requests"},{"title":"Create Sidecar Approval Request","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/reviews","href":"/api-reference/sidecars/create-sidecar-approval-request"},{"title":"Get Sidecar Approval Status","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars/reviews/{id}","href":"/api-reference/sidecars/get-sidecar-approval-status"},{"title":"Claim Sidecar Approval Request","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/reviews/{id}/claim","href":"/api-reference/sidecars/claim-sidecar-approval-request"},{"title":"Settle Sidecar Approval Request","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /sidecars/reviews/{id}/settle","href":"/api-reference/sidecars/settle-sidecar-approval-request"},{"title":"Get Sidecar","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars/{nameOrID}","href":"/api-reference/sidecars/get-sidecar"},{"title":"Update Sidecar","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sidecars/{nameOrID}","href":"/api-reference/sidecars/update-sidecar"},{"title":"Delete Sidecar","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /sidecars/{nameOrID}","href":"/api-reference/sidecars/delete-sidecar"},{"title":"Patch Sidecar Configuration","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json patch /sidecars/{nameOrID}","href":"/api-reference/sidecars/patch-sidecar-configuration"},{"title":"Clear Sidecar Identity","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /sidecars/{nameOrID}/identity","href":"/api-reference/sidecars/clear-sidecar-identity"},{"title":"Get Sidecar Slack Channels","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /sidecars/{nameOrID}/slack-channels","href":"/api-reference/sidecars/get-sidecar-slack-channels"},{"title":"Set Sidecar Slack Channels","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /sidecars/{nameOrID}/slack-channels","href":"/api-reference/sidecars/set-sidecar-slack-channels"}]},{"group":"SPIFFE","pages":[{"title":"List SPIFFE Mappings","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json get /spiffe-mappings","href":"/api-reference/spiffe/list-spiffe-mappings"},{"title":"Create SPIFFE Mapping","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json post /spiffe-mappings","href":"/api-reference/spiffe/create-spiffe-mapping"},{"title":"Update SPIFFE Mapping","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json put /spiffe-mappings/{id}","href":"/api-reference/spiffe/update-spiffe-mapping"},{"title":"Delete SPIFFE Mapping","deprecated":null,"version":null,"openapi":"https://use.hoop.dev/api/openapiv3.json delete /spiffe-mappings/{id}","href":"/api-reference/spiffe/delete-spiffe-mapping"}]}]}]},"basePath":"","title":"Update Approval Status By Sid - Hoop.dev - Automated Access and Data Protection","buildId":"dpl_DQCMP4mismmBj3AFK7YZqNhrtLNq","deploymentId":"dpl_DQCMP4mismmBj3AFK7YZqNhrtLNq","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Dub5uFbX.js","utils-BAOmmv1r.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-Cfvfuq3w.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Chp3aFWD.js","snippetPresets-mdHEOVGp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BRlO2pcM.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CrgNI3V9.js","shallow-Dl286uHn.js","getApiPlaygroundDisplay-YPKheyKd.js","CodeSnippet-BdD-lURy.js","CodeSnippets-BSggiSf7.js","Page-DZmn3mFl.js","getPastedJson-bQHv51S7.js","icon-SCSCTtsH.js","MethodPill-GnU2wo5s.js","DuplicateIcon-BM7jzGa_.js","createIcon-atdRs-Wh.js","DynamicMarkdown-B95U9rYS.js","SectionHeading-CvCxtB39.js","axios-vUo_bRtp.js","Markdown-CBJtw_nx.js","clsx-C_advUgl.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Dpla8_R7.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BoWSGi0C.js"]}