archastro.platform.v1.resources.agent_installations
1# Copyright (c) 2026 ArchAstro Inc. Licensed under the MIT License. 2# This file is auto-generated by @archastro/sdk-generator. Do not edit. 3# Content hash: 318185ae3f1e 4 5from __future__ import annotations 6 7import builtins 8from typing import Any, TypedDict 9 10from ...runtime.http_client import HttpClient, SyncHttpClient 11from ...types.common import ( 12 Installation, 13 InstallationListResponse, 14 InstallationSource, 15 InstallationSourceListResponse, 16) 17 18 19class AgentInstallationInstallationSourceCreateInput(TypedDict): 20 "Add a source to an installation" 21 22 payload: dict[str, Any] 23 "Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422." 24 type: str 25 'Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`.' 26 27 28class AgentInstallationSuspendInput(TypedDict, total=False): 29 "Suspend an installation" 30 31 reason: str | None 32 "Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason." 33 34 35class AsyncAgentInstallationInstallationSourceResource: 36 def __init__(self, http: HttpClient): 37 self._http = http 38 39 async def list(self, installation: str) -> InstallationSourceListResponse: 40 """ 41 List sources for an installation 42 Returns all sources attached to the specified installation. Sources represent 43 the content units (documents, links, and other typed payloads) that the 44 installation's agent can access as context. 45 This endpoint requires an app-scoped token. Results include sources in all 46 states, including those still being ingested. Inspect each source's `state` 47 field to determine whether its content is ready. 48 49 Args: 50 installation: Installation ID (`cin_...`) whose sources to retrieve. 51 52 Returns: 53 Object containing the list of sources attached to the installation. 54 """ 55 return await self._http.request( 56 f"/api/v1/agent_installations/{installation}/installation_sources", 57 response_type=InstallationSourceListResponse, 58 ) 59 60 async def create( 61 self, installation: str, input: AgentInstallationInstallationSourceCreateInput 62 ) -> InstallationSource: 63 """ 64 Add a source to an installation 65 Attaches a new source to an existing installation, making its content available 66 to the installation's agent as context. The source type and payload must be valid 67 for the installation's kind; invalid combinations return 422. 68 This endpoint requires an app-scoped token. The installation must belong to an 69 agent accessible by the authenticated caller. Once created, the source begins 70 processing asynchronously its `state` will transition from `"pending"` as 71 ingestion progresses. 72 73 Args: 74 installation: Installation ID (`cin_...`) whose sources to retrieve. 75 input: Request body. 76 input.payload: Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422. 77 input.type: Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`. 78 79 Returns: 80 The newly created installation source. 81 """ 82 return await self._http.request( 83 f"/api/v1/agent_installations/{installation}/installation_sources", 84 method="POST", 85 body=input, 86 response_type=InstallationSource, 87 ) 88 89 90class AsyncAgentInstallationResource: 91 def __init__(self, http: HttpClient): 92 self._http = http 93 self.installation_sources = AsyncAgentInstallationInstallationSourceResource(http) 94 95 async def list(self, *, agent: builtins.list[str] | None = None) -> InstallationListResponse: 96 """ 97 List installations for an app 98 Returns all installations across every agent in the authenticated app. Use this 99 endpoint to get a global view of all external service and enablement channel 100 connections for the app. 101 Optionally narrow results to a single agent by passing the `agent` parameter. To 102 list installations scoped to a specific agent, you may also use the per-agent List 103 Installations endpoint. Results are returned as an unordered array with no 104 pagination. The caller must have app scope. 105 106 Args: 107 agent: Agent IDs (`agi_...`) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd. 108 109 Returns: 110 The list of installations for the app, optionally filtered by agent. 111 """ 112 query: dict[str, object] = {} 113 if agent is not None: 114 query["agent"] = agent 115 return await self._http.request( 116 "/api/v1/agent_installations", 117 query=query, 118 response_type=InstallationListResponse, 119 ) 120 121 async def delete(self, installation: str) -> None: 122 """ 123 Delete an installation 124 Permanently deletes an installation and severs the connection between the agent 125 and the external service or enablement channel. Any backing context sources 126 associated with the installation are also removed. 127 This action is irreversible. If you want to temporarily stop an installation from 128 processing events, use the Pause or Suspend endpoints instead. The caller must have 129 app scope for the app that owns the installation. 130 131 Args: 132 installation: Installation ID (`cin_...`) to delete. 133 134 Returns: 135 Empty response with HTTP 204 status on successful deletion. 136 """ 137 await self._http.request(f"/api/v1/agent_installations/{installation}", method="DELETE") 138 139 async def get(self, installation: str) -> Installation: 140 """ 141 Retrieve an installation 142 Returns a single installation by ID. Use this endpoint to check the current 143 `state`, `kind`, `config`, and bound integration of an installation. 144 The installation must belong to an agent that is accessible within the 145 authenticated app's scope. The caller must have app scope for the app that 146 owns the installation. 147 148 Args: 149 installation: Installation ID (`cin_...`) to retrieve. 150 151 Returns: 152 The requested installation. 153 """ 154 return await self._http.request( 155 f"/api/v1/agent_installations/{installation}", 156 response_type=Installation, 157 ) 158 159 async def activate(self, installation: str) -> Installation: 160 """ 161 Activate an installation 162 Transitions an installation from a pending or paused state to `active`, enabling 163 the agent to receive events and process work through the installed integration or 164 enablement channel. 165 Activation requires that the installation already has a bound integration (either 166 via `shared_integration` or an inline `integration` created at install time). If no 167 integration is bound, the request returns 422. The caller must have app scope for 168 the app that owns the installation. 169 170 Args: 171 installation: Installation ID (`cin_...`) to activate. 172 173 Returns: 174 The updated installation with `state` reflecting the new active status. 175 """ 176 return await self._http.request( 177 f"/api/v1/agent_installations/{installation}/activate", 178 method="POST", 179 response_type=Installation, 180 ) 181 182 async def pause(self, installation: str) -> Installation: 183 """ 184 Pause an installation 185 Transitions an active installation to the `paused` state, temporarily stopping 186 the agent from receiving events through this installation. The installation and 187 its integration binding are preserved and can be resumed by calling the Activate 188 endpoint. 189 Only installations in the `active` state can be paused. Attempting to pause an 190 installation in any other state returns 422. The caller must have app scope for 191 the app that owns the installation. 192 193 Args: 194 installation: Installation ID (`cin_...`) to pause. 195 196 Returns: 197 The updated installation with `state` set to `"paused"`. 198 """ 199 return await self._http.request( 200 f"/api/v1/agent_installations/{installation}/pause", 201 method="POST", 202 response_type=Installation, 203 ) 204 205 async def suspend( 206 self, installation: str, input: AgentInstallationSuspendInput 207 ) -> Installation: 208 """ 209 Suspend an installation 210 Transitions an installation to the `suspended` state, disabling event processing 211 and signaling that the installation requires administrative attention. Unlike 212 pausing, suspension typically indicates a policy or compliance hold rather than a 213 temporary operational stop. 214 An optional `reason` string can be supplied to record why the installation was 215 suspended; this is stored on the installation and visible when you retrieve it. 216 Only installations that are not already suspended can be suspended sending this 217 request for an already-suspended installation returns 422. The caller must have 218 app scope for the app that owns the installation. 219 220 Args: 221 installation: Installation ID (`cin_...`) to suspend. 222 input: Request body. 223 input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason. 224 225 Returns: 226 The updated installation with `state` set to `"suspended"`. 227 """ 228 return await self._http.request( 229 f"/api/v1/agent_installations/{installation}/suspend", 230 method="POST", 231 body=input, 232 response_type=Installation, 233 ) 234 235 236class AgentInstallationInstallationSourceResource: 237 def __init__(self, http: SyncHttpClient): 238 self._http = http 239 240 def list(self, installation: str) -> InstallationSourceListResponse: 241 """ 242 List sources for an installation 243 Returns all sources attached to the specified installation. Sources represent 244 the content units (documents, links, and other typed payloads) that the 245 installation's agent can access as context. 246 This endpoint requires an app-scoped token. Results include sources in all 247 states, including those still being ingested. Inspect each source's `state` 248 field to determine whether its content is ready. 249 250 Args: 251 installation: Installation ID (`cin_...`) whose sources to retrieve. 252 253 Returns: 254 Object containing the list of sources attached to the installation. 255 """ 256 return self._http.request( 257 f"/api/v1/agent_installations/{installation}/installation_sources", 258 response_type=InstallationSourceListResponse, 259 ) 260 261 def create( 262 self, installation: str, input: AgentInstallationInstallationSourceCreateInput 263 ) -> InstallationSource: 264 """ 265 Add a source to an installation 266 Attaches a new source to an existing installation, making its content available 267 to the installation's agent as context. The source type and payload must be valid 268 for the installation's kind; invalid combinations return 422. 269 This endpoint requires an app-scoped token. The installation must belong to an 270 agent accessible by the authenticated caller. Once created, the source begins 271 processing asynchronously its `state` will transition from `"pending"` as 272 ingestion progresses. 273 274 Args: 275 installation: Installation ID (`cin_...`) whose sources to retrieve. 276 input: Request body. 277 input.payload: Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422. 278 input.type: Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`. 279 280 Returns: 281 The newly created installation source. 282 """ 283 return self._http.request( 284 f"/api/v1/agent_installations/{installation}/installation_sources", 285 method="POST", 286 body=input, 287 response_type=InstallationSource, 288 ) 289 290 291class AgentInstallationResource: 292 def __init__(self, http: SyncHttpClient): 293 self._http = http 294 self.installation_sources = AgentInstallationInstallationSourceResource(http) 295 296 def list(self, *, agent: builtins.list[str] | None = None) -> InstallationListResponse: 297 """ 298 List installations for an app 299 Returns all installations across every agent in the authenticated app. Use this 300 endpoint to get a global view of all external service and enablement channel 301 connections for the app. 302 Optionally narrow results to a single agent by passing the `agent` parameter. To 303 list installations scoped to a specific agent, you may also use the per-agent List 304 Installations endpoint. Results are returned as an unordered array with no 305 pagination. The caller must have app scope. 306 307 Args: 308 agent: Agent IDs (`agi_...`) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd. 309 310 Returns: 311 The list of installations for the app, optionally filtered by agent. 312 """ 313 query: dict[str, object] = {} 314 if agent is not None: 315 query["agent"] = agent 316 return self._http.request( 317 "/api/v1/agent_installations", 318 query=query, 319 response_type=InstallationListResponse, 320 ) 321 322 def delete(self, installation: str) -> None: 323 """ 324 Delete an installation 325 Permanently deletes an installation and severs the connection between the agent 326 and the external service or enablement channel. Any backing context sources 327 associated with the installation are also removed. 328 This action is irreversible. If you want to temporarily stop an installation from 329 processing events, use the Pause or Suspend endpoints instead. The caller must have 330 app scope for the app that owns the installation. 331 332 Args: 333 installation: Installation ID (`cin_...`) to delete. 334 335 Returns: 336 Empty response with HTTP 204 status on successful deletion. 337 """ 338 self._http.request(f"/api/v1/agent_installations/{installation}", method="DELETE") 339 340 def get(self, installation: str) -> Installation: 341 """ 342 Retrieve an installation 343 Returns a single installation by ID. Use this endpoint to check the current 344 `state`, `kind`, `config`, and bound integration of an installation. 345 The installation must belong to an agent that is accessible within the 346 authenticated app's scope. The caller must have app scope for the app that 347 owns the installation. 348 349 Args: 350 installation: Installation ID (`cin_...`) to retrieve. 351 352 Returns: 353 The requested installation. 354 """ 355 return self._http.request( 356 f"/api/v1/agent_installations/{installation}", 357 response_type=Installation, 358 ) 359 360 def activate(self, installation: str) -> Installation: 361 """ 362 Activate an installation 363 Transitions an installation from a pending or paused state to `active`, enabling 364 the agent to receive events and process work through the installed integration or 365 enablement channel. 366 Activation requires that the installation already has a bound integration (either 367 via `shared_integration` or an inline `integration` created at install time). If no 368 integration is bound, the request returns 422. The caller must have app scope for 369 the app that owns the installation. 370 371 Args: 372 installation: Installation ID (`cin_...`) to activate. 373 374 Returns: 375 The updated installation with `state` reflecting the new active status. 376 """ 377 return self._http.request( 378 f"/api/v1/agent_installations/{installation}/activate", 379 method="POST", 380 response_type=Installation, 381 ) 382 383 def pause(self, installation: str) -> Installation: 384 """ 385 Pause an installation 386 Transitions an active installation to the `paused` state, temporarily stopping 387 the agent from receiving events through this installation. The installation and 388 its integration binding are preserved and can be resumed by calling the Activate 389 endpoint. 390 Only installations in the `active` state can be paused. Attempting to pause an 391 installation in any other state returns 422. The caller must have app scope for 392 the app that owns the installation. 393 394 Args: 395 installation: Installation ID (`cin_...`) to pause. 396 397 Returns: 398 The updated installation with `state` set to `"paused"`. 399 """ 400 return self._http.request( 401 f"/api/v1/agent_installations/{installation}/pause", 402 method="POST", 403 response_type=Installation, 404 ) 405 406 def suspend(self, installation: str, input: AgentInstallationSuspendInput) -> Installation: 407 """ 408 Suspend an installation 409 Transitions an installation to the `suspended` state, disabling event processing 410 and signaling that the installation requires administrative attention. Unlike 411 pausing, suspension typically indicates a policy or compliance hold rather than a 412 temporary operational stop. 413 An optional `reason` string can be supplied to record why the installation was 414 suspended; this is stored on the installation and visible when you retrieve it. 415 Only installations that are not already suspended can be suspended sending this 416 request for an already-suspended installation returns 422. The caller must have 417 app scope for the app that owns the installation. 418 419 Args: 420 installation: Installation ID (`cin_...`) to suspend. 421 input: Request body. 422 input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason. 423 424 Returns: 425 The updated installation with `state` set to `"suspended"`. 426 """ 427 return self._http.request( 428 f"/api/v1/agent_installations/{installation}/suspend", 429 method="POST", 430 body=input, 431 response_type=Installation, 432 )
20class AgentInstallationInstallationSourceCreateInput(TypedDict): 21 "Add a source to an installation" 22 23 payload: dict[str, Any] 24 "Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422." 25 type: str 26 'Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`.'
Add a source to an installation
Type-specific payload for the source. The accepted keys depend on the type value; invalid or missing payload fields return 422.
29class AgentInstallationSuspendInput(TypedDict, total=False): 30 "Suspend an installation" 31 32 reason: str | None 33 "Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason."
Suspend an installation
36class AsyncAgentInstallationInstallationSourceResource: 37 def __init__(self, http: HttpClient): 38 self._http = http 39 40 async def list(self, installation: str) -> InstallationSourceListResponse: 41 """ 42 List sources for an installation 43 Returns all sources attached to the specified installation. Sources represent 44 the content units (documents, links, and other typed payloads) that the 45 installation's agent can access as context. 46 This endpoint requires an app-scoped token. Results include sources in all 47 states, including those still being ingested. Inspect each source's `state` 48 field to determine whether its content is ready. 49 50 Args: 51 installation: Installation ID (`cin_...`) whose sources to retrieve. 52 53 Returns: 54 Object containing the list of sources attached to the installation. 55 """ 56 return await self._http.request( 57 f"/api/v1/agent_installations/{installation}/installation_sources", 58 response_type=InstallationSourceListResponse, 59 ) 60 61 async def create( 62 self, installation: str, input: AgentInstallationInstallationSourceCreateInput 63 ) -> InstallationSource: 64 """ 65 Add a source to an installation 66 Attaches a new source to an existing installation, making its content available 67 to the installation's agent as context. The source type and payload must be valid 68 for the installation's kind; invalid combinations return 422. 69 This endpoint requires an app-scoped token. The installation must belong to an 70 agent accessible by the authenticated caller. Once created, the source begins 71 processing asynchronously its `state` will transition from `"pending"` as 72 ingestion progresses. 73 74 Args: 75 installation: Installation ID (`cin_...`) whose sources to retrieve. 76 input: Request body. 77 input.payload: Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422. 78 input.type: Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`. 79 80 Returns: 81 The newly created installation source. 82 """ 83 return await self._http.request( 84 f"/api/v1/agent_installations/{installation}/installation_sources", 85 method="POST", 86 body=input, 87 response_type=InstallationSource, 88 )
40 async def list(self, installation: str) -> InstallationSourceListResponse: 41 """ 42 List sources for an installation 43 Returns all sources attached to the specified installation. Sources represent 44 the content units (documents, links, and other typed payloads) that the 45 installation's agent can access as context. 46 This endpoint requires an app-scoped token. Results include sources in all 47 states, including those still being ingested. Inspect each source's `state` 48 field to determine whether its content is ready. 49 50 Args: 51 installation: Installation ID (`cin_...`) whose sources to retrieve. 52 53 Returns: 54 Object containing the list of sources attached to the installation. 55 """ 56 return await self._http.request( 57 f"/api/v1/agent_installations/{installation}/installation_sources", 58 response_type=InstallationSourceListResponse, 59 )
List sources for an installation
Returns all sources attached to the specified installation. Sources represent
the content units (documents, links, and other typed payloads) that the
installation's agent can access as context.
This endpoint requires an app-scoped token. Results include sources in all
states, including those still being ingested. Inspect each source's state
field to determine whether its content is ready.
Arguments:
- installation: Installation ID (
cin_...) whose sources to retrieve.
Returns:
Object containing the list of sources attached to the installation.
61 async def create( 62 self, installation: str, input: AgentInstallationInstallationSourceCreateInput 63 ) -> InstallationSource: 64 """ 65 Add a source to an installation 66 Attaches a new source to an existing installation, making its content available 67 to the installation's agent as context. The source type and payload must be valid 68 for the installation's kind; invalid combinations return 422. 69 This endpoint requires an app-scoped token. The installation must belong to an 70 agent accessible by the authenticated caller. Once created, the source begins 71 processing asynchronously its `state` will transition from `"pending"` as 72 ingestion progresses. 73 74 Args: 75 installation: Installation ID (`cin_...`) whose sources to retrieve. 76 input: Request body. 77 input.payload: Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422. 78 input.type: Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`. 79 80 Returns: 81 The newly created installation source. 82 """ 83 return await self._http.request( 84 f"/api/v1/agent_installations/{installation}/installation_sources", 85 method="POST", 86 body=input, 87 response_type=InstallationSource, 88 )
Add a source to an installation
Attaches a new source to an existing installation, making its content available
to the installation's agent as context. The source type and payload must be valid
for the installation's kind; invalid combinations return 422.
This endpoint requires an app-scoped token. The installation must belong to an
agent accessible by the authenticated caller. Once created, the source begins
processing asynchronously its state will transition from "pending" as
ingestion progresses.
Arguments:
- installation: Installation ID (
cin_...) whose sources to retrieve. - input: Request body.
- input.payload: Type-specific payload for the source. The accepted keys depend on the
typevalue; invalid or missing payload fields return 422. - input.type: Source type slug identifying the kind of content being attached, e.g.
"file/document"or"web/link".
Returns:
The newly created installation source.
91class AsyncAgentInstallationResource: 92 def __init__(self, http: HttpClient): 93 self._http = http 94 self.installation_sources = AsyncAgentInstallationInstallationSourceResource(http) 95 96 async def list(self, *, agent: builtins.list[str] | None = None) -> InstallationListResponse: 97 """ 98 List installations for an app 99 Returns all installations across every agent in the authenticated app. Use this 100 endpoint to get a global view of all external service and enablement channel 101 connections for the app. 102 Optionally narrow results to a single agent by passing the `agent` parameter. To 103 list installations scoped to a specific agent, you may also use the per-agent List 104 Installations endpoint. Results are returned as an unordered array with no 105 pagination. The caller must have app scope. 106 107 Args: 108 agent: Agent IDs (`agi_...`) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd. 109 110 Returns: 111 The list of installations for the app, optionally filtered by agent. 112 """ 113 query: dict[str, object] = {} 114 if agent is not None: 115 query["agent"] = agent 116 return await self._http.request( 117 "/api/v1/agent_installations", 118 query=query, 119 response_type=InstallationListResponse, 120 ) 121 122 async def delete(self, installation: str) -> None: 123 """ 124 Delete an installation 125 Permanently deletes an installation and severs the connection between the agent 126 and the external service or enablement channel. Any backing context sources 127 associated with the installation are also removed. 128 This action is irreversible. If you want to temporarily stop an installation from 129 processing events, use the Pause or Suspend endpoints instead. The caller must have 130 app scope for the app that owns the installation. 131 132 Args: 133 installation: Installation ID (`cin_...`) to delete. 134 135 Returns: 136 Empty response with HTTP 204 status on successful deletion. 137 """ 138 await self._http.request(f"/api/v1/agent_installations/{installation}", method="DELETE") 139 140 async def get(self, installation: str) -> Installation: 141 """ 142 Retrieve an installation 143 Returns a single installation by ID. Use this endpoint to check the current 144 `state`, `kind`, `config`, and bound integration of an installation. 145 The installation must belong to an agent that is accessible within the 146 authenticated app's scope. The caller must have app scope for the app that 147 owns the installation. 148 149 Args: 150 installation: Installation ID (`cin_...`) to retrieve. 151 152 Returns: 153 The requested installation. 154 """ 155 return await self._http.request( 156 f"/api/v1/agent_installations/{installation}", 157 response_type=Installation, 158 ) 159 160 async def activate(self, installation: str) -> Installation: 161 """ 162 Activate an installation 163 Transitions an installation from a pending or paused state to `active`, enabling 164 the agent to receive events and process work through the installed integration or 165 enablement channel. 166 Activation requires that the installation already has a bound integration (either 167 via `shared_integration` or an inline `integration` created at install time). If no 168 integration is bound, the request returns 422. The caller must have app scope for 169 the app that owns the installation. 170 171 Args: 172 installation: Installation ID (`cin_...`) to activate. 173 174 Returns: 175 The updated installation with `state` reflecting the new active status. 176 """ 177 return await self._http.request( 178 f"/api/v1/agent_installations/{installation}/activate", 179 method="POST", 180 response_type=Installation, 181 ) 182 183 async def pause(self, installation: str) -> Installation: 184 """ 185 Pause an installation 186 Transitions an active installation to the `paused` state, temporarily stopping 187 the agent from receiving events through this installation. The installation and 188 its integration binding are preserved and can be resumed by calling the Activate 189 endpoint. 190 Only installations in the `active` state can be paused. Attempting to pause an 191 installation in any other state returns 422. The caller must have app scope for 192 the app that owns the installation. 193 194 Args: 195 installation: Installation ID (`cin_...`) to pause. 196 197 Returns: 198 The updated installation with `state` set to `"paused"`. 199 """ 200 return await self._http.request( 201 f"/api/v1/agent_installations/{installation}/pause", 202 method="POST", 203 response_type=Installation, 204 ) 205 206 async def suspend( 207 self, installation: str, input: AgentInstallationSuspendInput 208 ) -> Installation: 209 """ 210 Suspend an installation 211 Transitions an installation to the `suspended` state, disabling event processing 212 and signaling that the installation requires administrative attention. Unlike 213 pausing, suspension typically indicates a policy or compliance hold rather than a 214 temporary operational stop. 215 An optional `reason` string can be supplied to record why the installation was 216 suspended; this is stored on the installation and visible when you retrieve it. 217 Only installations that are not already suspended can be suspended sending this 218 request for an already-suspended installation returns 422. The caller must have 219 app scope for the app that owns the installation. 220 221 Args: 222 installation: Installation ID (`cin_...`) to suspend. 223 input: Request body. 224 input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason. 225 226 Returns: 227 The updated installation with `state` set to `"suspended"`. 228 """ 229 return await self._http.request( 230 f"/api/v1/agent_installations/{installation}/suspend", 231 method="POST", 232 body=input, 233 response_type=Installation, 234 )
96 async def list(self, *, agent: builtins.list[str] | None = None) -> InstallationListResponse: 97 """ 98 List installations for an app 99 Returns all installations across every agent in the authenticated app. Use this 100 endpoint to get a global view of all external service and enablement channel 101 connections for the app. 102 Optionally narrow results to a single agent by passing the `agent` parameter. To 103 list installations scoped to a specific agent, you may also use the per-agent List 104 Installations endpoint. Results are returned as an unordered array with no 105 pagination. The caller must have app scope. 106 107 Args: 108 agent: Agent IDs (`agi_...`) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd. 109 110 Returns: 111 The list of installations for the app, optionally filtered by agent. 112 """ 113 query: dict[str, object] = {} 114 if agent is not None: 115 query["agent"] = agent 116 return await self._http.request( 117 "/api/v1/agent_installations", 118 query=query, 119 response_type=InstallationListResponse, 120 )
List installations for an app
Returns all installations across every agent in the authenticated app. Use this
endpoint to get a global view of all external service and enablement channel
connections for the app.
Optionally narrow results to a single agent by passing the agent parameter. To
list installations scoped to a specific agent, you may also use the per-agent List
Installations endpoint. Results are returned as an unordered array with no
pagination. The caller must have app scope.
Arguments:
- agent: Agent IDs (
agi_...) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd.
Returns:
The list of installations for the app, optionally filtered by agent.
122 async def delete(self, installation: str) -> None: 123 """ 124 Delete an installation 125 Permanently deletes an installation and severs the connection between the agent 126 and the external service or enablement channel. Any backing context sources 127 associated with the installation are also removed. 128 This action is irreversible. If you want to temporarily stop an installation from 129 processing events, use the Pause or Suspend endpoints instead. The caller must have 130 app scope for the app that owns the installation. 131 132 Args: 133 installation: Installation ID (`cin_...`) to delete. 134 135 Returns: 136 Empty response with HTTP 204 status on successful deletion. 137 """ 138 await self._http.request(f"/api/v1/agent_installations/{installation}", method="DELETE")
Delete an installation Permanently deletes an installation and severs the connection between the agent and the external service or enablement channel. Any backing context sources associated with the installation are also removed. This action is irreversible. If you want to temporarily stop an installation from processing events, use the Pause or Suspend endpoints instead. The caller must have app scope for the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to delete.
Returns:
Empty response with HTTP 204 status on successful deletion.
140 async def get(self, installation: str) -> Installation: 141 """ 142 Retrieve an installation 143 Returns a single installation by ID. Use this endpoint to check the current 144 `state`, `kind`, `config`, and bound integration of an installation. 145 The installation must belong to an agent that is accessible within the 146 authenticated app's scope. The caller must have app scope for the app that 147 owns the installation. 148 149 Args: 150 installation: Installation ID (`cin_...`) to retrieve. 151 152 Returns: 153 The requested installation. 154 """ 155 return await self._http.request( 156 f"/api/v1/agent_installations/{installation}", 157 response_type=Installation, 158 )
Retrieve an installation
Returns a single installation by ID. Use this endpoint to check the current
state, kind, config, and bound integration of an installation.
The installation must belong to an agent that is accessible within the
authenticated app's scope. The caller must have app scope for the app that
owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to retrieve.
Returns:
The requested installation.
160 async def activate(self, installation: str) -> Installation: 161 """ 162 Activate an installation 163 Transitions an installation from a pending or paused state to `active`, enabling 164 the agent to receive events and process work through the installed integration or 165 enablement channel. 166 Activation requires that the installation already has a bound integration (either 167 via `shared_integration` or an inline `integration` created at install time). If no 168 integration is bound, the request returns 422. The caller must have app scope for 169 the app that owns the installation. 170 171 Args: 172 installation: Installation ID (`cin_...`) to activate. 173 174 Returns: 175 The updated installation with `state` reflecting the new active status. 176 """ 177 return await self._http.request( 178 f"/api/v1/agent_installations/{installation}/activate", 179 method="POST", 180 response_type=Installation, 181 )
Activate an installation
Transitions an installation from a pending or paused state to active, enabling
the agent to receive events and process work through the installed integration or
enablement channel.
Activation requires that the installation already has a bound integration (either
via shared_integration or an inline integration created at install time). If no
integration is bound, the request returns 422. The caller must have app scope for
the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to activate.
Returns:
The updated installation with
statereflecting the new active status.
183 async def pause(self, installation: str) -> Installation: 184 """ 185 Pause an installation 186 Transitions an active installation to the `paused` state, temporarily stopping 187 the agent from receiving events through this installation. The installation and 188 its integration binding are preserved and can be resumed by calling the Activate 189 endpoint. 190 Only installations in the `active` state can be paused. Attempting to pause an 191 installation in any other state returns 422. The caller must have app scope for 192 the app that owns the installation. 193 194 Args: 195 installation: Installation ID (`cin_...`) to pause. 196 197 Returns: 198 The updated installation with `state` set to `"paused"`. 199 """ 200 return await self._http.request( 201 f"/api/v1/agent_installations/{installation}/pause", 202 method="POST", 203 response_type=Installation, 204 )
Pause an installation
Transitions an active installation to the paused state, temporarily stopping
the agent from receiving events through this installation. The installation and
its integration binding are preserved and can be resumed by calling the Activate
endpoint.
Only installations in the active state can be paused. Attempting to pause an
installation in any other state returns 422. The caller must have app scope for
the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to pause.
Returns:
The updated installation with
stateset to"paused".
206 async def suspend( 207 self, installation: str, input: AgentInstallationSuspendInput 208 ) -> Installation: 209 """ 210 Suspend an installation 211 Transitions an installation to the `suspended` state, disabling event processing 212 and signaling that the installation requires administrative attention. Unlike 213 pausing, suspension typically indicates a policy or compliance hold rather than a 214 temporary operational stop. 215 An optional `reason` string can be supplied to record why the installation was 216 suspended; this is stored on the installation and visible when you retrieve it. 217 Only installations that are not already suspended can be suspended sending this 218 request for an already-suspended installation returns 422. The caller must have 219 app scope for the app that owns the installation. 220 221 Args: 222 installation: Installation ID (`cin_...`) to suspend. 223 input: Request body. 224 input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason. 225 226 Returns: 227 The updated installation with `state` set to `"suspended"`. 228 """ 229 return await self._http.request( 230 f"/api/v1/agent_installations/{installation}/suspend", 231 method="POST", 232 body=input, 233 response_type=Installation, 234 )
Suspend an installation
Transitions an installation to the suspended state, disabling event processing
and signaling that the installation requires administrative attention. Unlike
pausing, suspension typically indicates a policy or compliance hold rather than a
temporary operational stop.
An optional reason string can be supplied to record why the installation was
suspended; this is stored on the installation and visible when you retrieve it.
Only installations that are not already suspended can be suspended sending this
request for an already-suspended installation returns 422. The caller must have
app scope for the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to suspend. - input: Request body.
- input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason.
Returns:
The updated installation with
stateset to"suspended".
237class AgentInstallationInstallationSourceResource: 238 def __init__(self, http: SyncHttpClient): 239 self._http = http 240 241 def list(self, installation: str) -> InstallationSourceListResponse: 242 """ 243 List sources for an installation 244 Returns all sources attached to the specified installation. Sources represent 245 the content units (documents, links, and other typed payloads) that the 246 installation's agent can access as context. 247 This endpoint requires an app-scoped token. Results include sources in all 248 states, including those still being ingested. Inspect each source's `state` 249 field to determine whether its content is ready. 250 251 Args: 252 installation: Installation ID (`cin_...`) whose sources to retrieve. 253 254 Returns: 255 Object containing the list of sources attached to the installation. 256 """ 257 return self._http.request( 258 f"/api/v1/agent_installations/{installation}/installation_sources", 259 response_type=InstallationSourceListResponse, 260 ) 261 262 def create( 263 self, installation: str, input: AgentInstallationInstallationSourceCreateInput 264 ) -> InstallationSource: 265 """ 266 Add a source to an installation 267 Attaches a new source to an existing installation, making its content available 268 to the installation's agent as context. The source type and payload must be valid 269 for the installation's kind; invalid combinations return 422. 270 This endpoint requires an app-scoped token. The installation must belong to an 271 agent accessible by the authenticated caller. Once created, the source begins 272 processing asynchronously its `state` will transition from `"pending"` as 273 ingestion progresses. 274 275 Args: 276 installation: Installation ID (`cin_...`) whose sources to retrieve. 277 input: Request body. 278 input.payload: Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422. 279 input.type: Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`. 280 281 Returns: 282 The newly created installation source. 283 """ 284 return self._http.request( 285 f"/api/v1/agent_installations/{installation}/installation_sources", 286 method="POST", 287 body=input, 288 response_type=InstallationSource, 289 )
241 def list(self, installation: str) -> InstallationSourceListResponse: 242 """ 243 List sources for an installation 244 Returns all sources attached to the specified installation. Sources represent 245 the content units (documents, links, and other typed payloads) that the 246 installation's agent can access as context. 247 This endpoint requires an app-scoped token. Results include sources in all 248 states, including those still being ingested. Inspect each source's `state` 249 field to determine whether its content is ready. 250 251 Args: 252 installation: Installation ID (`cin_...`) whose sources to retrieve. 253 254 Returns: 255 Object containing the list of sources attached to the installation. 256 """ 257 return self._http.request( 258 f"/api/v1/agent_installations/{installation}/installation_sources", 259 response_type=InstallationSourceListResponse, 260 )
List sources for an installation
Returns all sources attached to the specified installation. Sources represent
the content units (documents, links, and other typed payloads) that the
installation's agent can access as context.
This endpoint requires an app-scoped token. Results include sources in all
states, including those still being ingested. Inspect each source's state
field to determine whether its content is ready.
Arguments:
- installation: Installation ID (
cin_...) whose sources to retrieve.
Returns:
Object containing the list of sources attached to the installation.
262 def create( 263 self, installation: str, input: AgentInstallationInstallationSourceCreateInput 264 ) -> InstallationSource: 265 """ 266 Add a source to an installation 267 Attaches a new source to an existing installation, making its content available 268 to the installation's agent as context. The source type and payload must be valid 269 for the installation's kind; invalid combinations return 422. 270 This endpoint requires an app-scoped token. The installation must belong to an 271 agent accessible by the authenticated caller. Once created, the source begins 272 processing asynchronously its `state` will transition from `"pending"` as 273 ingestion progresses. 274 275 Args: 276 installation: Installation ID (`cin_...`) whose sources to retrieve. 277 input: Request body. 278 input.payload: Type-specific payload for the source. The accepted keys depend on the `type` value; invalid or missing payload fields return 422. 279 input.type: Source type slug identifying the kind of content being attached, e.g. `"file/document"` or `"web/link"`. 280 281 Returns: 282 The newly created installation source. 283 """ 284 return self._http.request( 285 f"/api/v1/agent_installations/{installation}/installation_sources", 286 method="POST", 287 body=input, 288 response_type=InstallationSource, 289 )
Add a source to an installation
Attaches a new source to an existing installation, making its content available
to the installation's agent as context. The source type and payload must be valid
for the installation's kind; invalid combinations return 422.
This endpoint requires an app-scoped token. The installation must belong to an
agent accessible by the authenticated caller. Once created, the source begins
processing asynchronously its state will transition from "pending" as
ingestion progresses.
Arguments:
- installation: Installation ID (
cin_...) whose sources to retrieve. - input: Request body.
- input.payload: Type-specific payload for the source. The accepted keys depend on the
typevalue; invalid or missing payload fields return 422. - input.type: Source type slug identifying the kind of content being attached, e.g.
"file/document"or"web/link".
Returns:
The newly created installation source.
292class AgentInstallationResource: 293 def __init__(self, http: SyncHttpClient): 294 self._http = http 295 self.installation_sources = AgentInstallationInstallationSourceResource(http) 296 297 def list(self, *, agent: builtins.list[str] | None = None) -> InstallationListResponse: 298 """ 299 List installations for an app 300 Returns all installations across every agent in the authenticated app. Use this 301 endpoint to get a global view of all external service and enablement channel 302 connections for the app. 303 Optionally narrow results to a single agent by passing the `agent` parameter. To 304 list installations scoped to a specific agent, you may also use the per-agent List 305 Installations endpoint. Results are returned as an unordered array with no 306 pagination. The caller must have app scope. 307 308 Args: 309 agent: Agent IDs (`agi_...`) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd. 310 311 Returns: 312 The list of installations for the app, optionally filtered by agent. 313 """ 314 query: dict[str, object] = {} 315 if agent is not None: 316 query["agent"] = agent 317 return self._http.request( 318 "/api/v1/agent_installations", 319 query=query, 320 response_type=InstallationListResponse, 321 ) 322 323 def delete(self, installation: str) -> None: 324 """ 325 Delete an installation 326 Permanently deletes an installation and severs the connection between the agent 327 and the external service or enablement channel. Any backing context sources 328 associated with the installation are also removed. 329 This action is irreversible. If you want to temporarily stop an installation from 330 processing events, use the Pause or Suspend endpoints instead. The caller must have 331 app scope for the app that owns the installation. 332 333 Args: 334 installation: Installation ID (`cin_...`) to delete. 335 336 Returns: 337 Empty response with HTTP 204 status on successful deletion. 338 """ 339 self._http.request(f"/api/v1/agent_installations/{installation}", method="DELETE") 340 341 def get(self, installation: str) -> Installation: 342 """ 343 Retrieve an installation 344 Returns a single installation by ID. Use this endpoint to check the current 345 `state`, `kind`, `config`, and bound integration of an installation. 346 The installation must belong to an agent that is accessible within the 347 authenticated app's scope. The caller must have app scope for the app that 348 owns the installation. 349 350 Args: 351 installation: Installation ID (`cin_...`) to retrieve. 352 353 Returns: 354 The requested installation. 355 """ 356 return self._http.request( 357 f"/api/v1/agent_installations/{installation}", 358 response_type=Installation, 359 ) 360 361 def activate(self, installation: str) -> Installation: 362 """ 363 Activate an installation 364 Transitions an installation from a pending or paused state to `active`, enabling 365 the agent to receive events and process work through the installed integration or 366 enablement channel. 367 Activation requires that the installation already has a bound integration (either 368 via `shared_integration` or an inline `integration` created at install time). If no 369 integration is bound, the request returns 422. The caller must have app scope for 370 the app that owns the installation. 371 372 Args: 373 installation: Installation ID (`cin_...`) to activate. 374 375 Returns: 376 The updated installation with `state` reflecting the new active status. 377 """ 378 return self._http.request( 379 f"/api/v1/agent_installations/{installation}/activate", 380 method="POST", 381 response_type=Installation, 382 ) 383 384 def pause(self, installation: str) -> Installation: 385 """ 386 Pause an installation 387 Transitions an active installation to the `paused` state, temporarily stopping 388 the agent from receiving events through this installation. The installation and 389 its integration binding are preserved and can be resumed by calling the Activate 390 endpoint. 391 Only installations in the `active` state can be paused. Attempting to pause an 392 installation in any other state returns 422. The caller must have app scope for 393 the app that owns the installation. 394 395 Args: 396 installation: Installation ID (`cin_...`) to pause. 397 398 Returns: 399 The updated installation with `state` set to `"paused"`. 400 """ 401 return self._http.request( 402 f"/api/v1/agent_installations/{installation}/pause", 403 method="POST", 404 response_type=Installation, 405 ) 406 407 def suspend(self, installation: str, input: AgentInstallationSuspendInput) -> Installation: 408 """ 409 Suspend an installation 410 Transitions an installation to the `suspended` state, disabling event processing 411 and signaling that the installation requires administrative attention. Unlike 412 pausing, suspension typically indicates a policy or compliance hold rather than a 413 temporary operational stop. 414 An optional `reason` string can be supplied to record why the installation was 415 suspended; this is stored on the installation and visible when you retrieve it. 416 Only installations that are not already suspended can be suspended sending this 417 request for an already-suspended installation returns 422. The caller must have 418 app scope for the app that owns the installation. 419 420 Args: 421 installation: Installation ID (`cin_...`) to suspend. 422 input: Request body. 423 input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason. 424 425 Returns: 426 The updated installation with `state` set to `"suspended"`. 427 """ 428 return self._http.request( 429 f"/api/v1/agent_installations/{installation}/suspend", 430 method="POST", 431 body=input, 432 response_type=Installation, 433 )
297 def list(self, *, agent: builtins.list[str] | None = None) -> InstallationListResponse: 298 """ 299 List installations for an app 300 Returns all installations across every agent in the authenticated app. Use this 301 endpoint to get a global view of all external service and enablement channel 302 connections for the app. 303 Optionally narrow results to a single agent by passing the `agent` parameter. To 304 list installations scoped to a specific agent, you may also use the per-agent List 305 Installations endpoint. Results are returned as an unordered array with no 306 pagination. The caller must have app scope. 307 308 Args: 309 agent: Agent IDs (`agi_...`) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd. 310 311 Returns: 312 The list of installations for the app, optionally filtered by agent. 313 """ 314 query: dict[str, object] = {} 315 if agent is not None: 316 query["agent"] = agent 317 return self._http.request( 318 "/api/v1/agent_installations", 319 query=query, 320 response_type=InstallationListResponse, 321 )
List installations for an app
Returns all installations across every agent in the authenticated app. Use this
endpoint to get a global view of all external service and enablement channel
connections for the app.
Optionally narrow results to a single agent by passing the agent parameter. To
list installations scoped to a specific agent, you may also use the per-agent List
Installations endpoint. Results are returned as an unordered array with no
pagination. The caller must have app scope.
Arguments:
- agent: Agent IDs (
agi_...) to filter results by. When omitted, installations for all agents in the app are returned. Multiple values are OR'd.
Returns:
The list of installations for the app, optionally filtered by agent.
323 def delete(self, installation: str) -> None: 324 """ 325 Delete an installation 326 Permanently deletes an installation and severs the connection between the agent 327 and the external service or enablement channel. Any backing context sources 328 associated with the installation are also removed. 329 This action is irreversible. If you want to temporarily stop an installation from 330 processing events, use the Pause or Suspend endpoints instead. The caller must have 331 app scope for the app that owns the installation. 332 333 Args: 334 installation: Installation ID (`cin_...`) to delete. 335 336 Returns: 337 Empty response with HTTP 204 status on successful deletion. 338 """ 339 self._http.request(f"/api/v1/agent_installations/{installation}", method="DELETE")
Delete an installation Permanently deletes an installation and severs the connection between the agent and the external service or enablement channel. Any backing context sources associated with the installation are also removed. This action is irreversible. If you want to temporarily stop an installation from processing events, use the Pause or Suspend endpoints instead. The caller must have app scope for the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to delete.
Returns:
Empty response with HTTP 204 status on successful deletion.
341 def get(self, installation: str) -> Installation: 342 """ 343 Retrieve an installation 344 Returns a single installation by ID. Use this endpoint to check the current 345 `state`, `kind`, `config`, and bound integration of an installation. 346 The installation must belong to an agent that is accessible within the 347 authenticated app's scope. The caller must have app scope for the app that 348 owns the installation. 349 350 Args: 351 installation: Installation ID (`cin_...`) to retrieve. 352 353 Returns: 354 The requested installation. 355 """ 356 return self._http.request( 357 f"/api/v1/agent_installations/{installation}", 358 response_type=Installation, 359 )
Retrieve an installation
Returns a single installation by ID. Use this endpoint to check the current
state, kind, config, and bound integration of an installation.
The installation must belong to an agent that is accessible within the
authenticated app's scope. The caller must have app scope for the app that
owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to retrieve.
Returns:
The requested installation.
361 def activate(self, installation: str) -> Installation: 362 """ 363 Activate an installation 364 Transitions an installation from a pending or paused state to `active`, enabling 365 the agent to receive events and process work through the installed integration or 366 enablement channel. 367 Activation requires that the installation already has a bound integration (either 368 via `shared_integration` or an inline `integration` created at install time). If no 369 integration is bound, the request returns 422. The caller must have app scope for 370 the app that owns the installation. 371 372 Args: 373 installation: Installation ID (`cin_...`) to activate. 374 375 Returns: 376 The updated installation with `state` reflecting the new active status. 377 """ 378 return self._http.request( 379 f"/api/v1/agent_installations/{installation}/activate", 380 method="POST", 381 response_type=Installation, 382 )
Activate an installation
Transitions an installation from a pending or paused state to active, enabling
the agent to receive events and process work through the installed integration or
enablement channel.
Activation requires that the installation already has a bound integration (either
via shared_integration or an inline integration created at install time). If no
integration is bound, the request returns 422. The caller must have app scope for
the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to activate.
Returns:
The updated installation with
statereflecting the new active status.
384 def pause(self, installation: str) -> Installation: 385 """ 386 Pause an installation 387 Transitions an active installation to the `paused` state, temporarily stopping 388 the agent from receiving events through this installation. The installation and 389 its integration binding are preserved and can be resumed by calling the Activate 390 endpoint. 391 Only installations in the `active` state can be paused. Attempting to pause an 392 installation in any other state returns 422. The caller must have app scope for 393 the app that owns the installation. 394 395 Args: 396 installation: Installation ID (`cin_...`) to pause. 397 398 Returns: 399 The updated installation with `state` set to `"paused"`. 400 """ 401 return self._http.request( 402 f"/api/v1/agent_installations/{installation}/pause", 403 method="POST", 404 response_type=Installation, 405 )
Pause an installation
Transitions an active installation to the paused state, temporarily stopping
the agent from receiving events through this installation. The installation and
its integration binding are preserved and can be resumed by calling the Activate
endpoint.
Only installations in the active state can be paused. Attempting to pause an
installation in any other state returns 422. The caller must have app scope for
the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to pause.
Returns:
The updated installation with
stateset to"paused".
407 def suspend(self, installation: str, input: AgentInstallationSuspendInput) -> Installation: 408 """ 409 Suspend an installation 410 Transitions an installation to the `suspended` state, disabling event processing 411 and signaling that the installation requires administrative attention. Unlike 412 pausing, suspension typically indicates a policy or compliance hold rather than a 413 temporary operational stop. 414 An optional `reason` string can be supplied to record why the installation was 415 suspended; this is stored on the installation and visible when you retrieve it. 416 Only installations that are not already suspended can be suspended sending this 417 request for an already-suspended installation returns 422. The caller must have 418 app scope for the app that owns the installation. 419 420 Args: 421 installation: Installation ID (`cin_...`) to suspend. 422 input: Request body. 423 input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason. 424 425 Returns: 426 The updated installation with `state` set to `"suspended"`. 427 """ 428 return self._http.request( 429 f"/api/v1/agent_installations/{installation}/suspend", 430 method="POST", 431 body=input, 432 response_type=Installation, 433 )
Suspend an installation
Transitions an installation to the suspended state, disabling event processing
and signaling that the installation requires administrative attention. Unlike
pausing, suspension typically indicates a policy or compliance hold rather than a
temporary operational stop.
An optional reason string can be supplied to record why the installation was
suspended; this is stored on the installation and visible when you retrieve it.
Only installations that are not already suspended can be suspended sending this
request for an already-suspended installation returns 422. The caller must have
app scope for the app that owns the installation.
Arguments:
- installation: Installation ID (
cin_...) to suspend. - input: Request body.
- input.reason: Human-readable explanation for the suspension. Stored on the installation and visible when you retrieve it. Omit to suspend without recording a reason.
Returns:
The updated installation with
stateset to"suspended".