Skip to content

Isolate an app (kill switch)

POST
/api/apps/{id}/isolation
curl --request POST \
--url https://opfield.example.com/api/apps/550e8400-e29b-41d4-a716-446655440000/isolation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "environmentIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "confirmName": "example" }'

For a security incident; confirmName must be the app name. Routes of the environment and routes whose upstream is a member show the maintenance page without team access (other routes are withdrawn), container links and database/storage bindings touching a member are suspended, Secure Links to members close, direct database/storage publications are suspended (ports kept), and every member container loses all its networks (a host-network container is stopped). Members are frozen until the kill switch is turned off: every change answers 409 APP_ISOLATED (recreate, update, rename, deploy, Compose apply/down, migration, Availability, route edits and deletes, deleting the member itself or its links, bindings and Secure Links, settings, new resources in the environment, membership). Reads, logs, console, stop, restart and start still work. Every change is recorded with its prior state and restored exactly. environmentIds limits it to those environments (apps:operate on each); null or omitted means every environment (apps:operate on the app).

id
required
string
>= 1 characters
Example
550e8400-e29b-41d4-a716-446655440000

JSON request body

Media typeapplication/json
object
environmentIds
Array<string> | null
>= 1 items
confirmName
required
string
<= 255 characters
Examplegenerated
{
"environmentIds": [
"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
],
"confirmName": "example"
}

Successful response

Media typeapplication/json
object
data
required

Resource object. Exact fields depend on the endpoint.

object
id
string
name
string
key
additional properties
Example
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Example resource",
"createdAt": "2024-01-01T12:00:00.000Z",
"updatedAt": "2024-01-01T12:30:00.000Z"
}
}

Bad request

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"details": [
{
"path": [
"name"
],
"message": "Required"
}
]
}

Authentication required

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "UNAUTHORIZED",
"message": "Authentication required"
}

Forbidden

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "FORBIDDEN",
"message": "Insufficient permissions"
}

Not found

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "NOT_FOUND",
"message": "Resource not found"
}

Conflict

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "CONFLICT",
"message": "Resource already exists"
}

Unprocessable entity

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "UNPROCESSABLE_ENTITY",
"message": "Request could not be processed"
}

Internal server error

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}