Skip to main content
PATCH
/
api
/
v1
/
apps
/
{id}
Update an app.
curl --request PATCH \
  --url https://api.rigbox.dev/api/v1/apps/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "allowed_emails": [
    "<string>"
  ],
  "custom_domain": "<string>",
  "description": "<string>",
  "metadata": "<unknown>",
  "name": "<string>",
  "port": 1,
  "status": "<string>",
  "swap_subdomain_with": "<string>"
}
'
{
  "app": {
    "allowed_emails": [
      "<string>"
    ],
    "app_kind": "<string>",
    "created_at": "2023-11-07T05:31:56Z",
    "custom_domain_verified": true,
    "depends_on": [
      "<string>"
    ],
    "id": "<string>",
    "managed": true,
    "metadata": "<unknown>",
    "name": "<string>",
    "node_id": "<string>",
    "port": 1,
    "protocol": "<string>",
    "subdomain": "<string>",
    "system_tags": [
      "<string>"
    ],
    "updated_at": "2023-11-07T05:31:56Z",
    "user_id": "<string>",
    "workspace_id": "<string>",
    "custom_domain": "<string>",
    "description": "<string>"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.rigbox.dev/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string
required

App ID

Body

application/json
allowed_emails
string[] | null
custom_domain
string | null

Custom domain (e.g. "api.example.com"). Set to empty string or null to remove.

description
string | null
metadata
any
name
string | null
port
integer<int32> | null
Required range: x >= 0
status
string | null

Toggle status: "active" or "inactive"

swap_subdomain_with
string | null

Atomically swap this app's subdomain with another app in the same workspace. Both apps trade name (and therefore Caddy subdomain) in a single DB transaction + a single Caddy resync pass. Mutually exclusive with every other field on this body — combining them returns 400.

The two apps must satisfy a blue-green sibling relationship (other.name == "{app.name}-<suffix>" or vice versa), share the same (user_id, workspace_id), agree on visibility and allowed_emails, and neither may have a custom domain attached. See the security checklist in the swap handler for full rejection conditions.

visibility
null | enum<string>
Available options:
private,
public,
privileged

Response

App updated

app
object
required

OpenAPI-facing mirror of the canonical app payload.

Response types can keep serializing rig_data_store::models::App while pointing schema generation at this local mirror to avoid cross-crate derive coupling in utoipa.