Skip to content
Select themeSelect language

get_api_management_v1_workspaces_slug_state

GET
/api/management/v1/workspaces/{slug}/state

Sanitized workspace state

Media typeapplication/json
object
agent_profiles
required

#998 — the workspace’s agent profiles, so an M2M caller can check a pin BEFORE launching instead of discovering a bad one as a 400. Deliberately the SHARED AgentProfileSummary projection rather than a management-local DTO: the decision about which profile columns may leave the instance is made once, in sc-svc-tenancy::agent_profiles_summary, so this surface and the profile.* MCP tools cannot drift apart. READ-ONLY — the apply (PUT) side takes a different struct (ManagementWorkspaceState) and ignores unknown sections, so this can never become a write path.

Array<object>

The outward-facing view of one agent profile: identity, lifecycle and what the profile PINS. Deliberately free of prompts, allowlists and open config bags — see the module header.

object
created_at
required
string format: date-time
default_agent_type
required

The harness the profile runs (claude, codex, …).

string
description
string | null
effort_default
string | null
enabled
required

A disabled profile still resolves by id/slug, so a caller checking a pin must be able to see that it would not actually be selectable.

boolean
execution_mode
required
string
fixed_model
string | null
id
required
string format: uuid
interactive_approval
required

ADR 0045 §3.2 — does a task under this profile arm the interactive tool-approval gate? (resolve_interactive_approvals_for_run OR-folds it with the slider.)

#1161 — ADDED DELIBERATELY, per this module’s rule that widening is a decision. The reason: #1152 made a profile authorable from the Management API and from the profile.create/profile.update MCP tools, and BOTH write this column — but the only read-back either door has is this projection, so a provisioning run could set the gate and had no way to confirm it landed. A write with no matching read is not “one shape”; it is a shape you have to take on faith. It belongs with review_required: a governance PIN of the profile, not prompt or allowlist material, and the same class of fact the summary already answers (“what does this profile pin?”). It is not a secret and it widens no capability — the slider can arm the gate for every profile regardless of this flag.

boolean
is_workspace_default
required
boolean
model_policy
required

fixed | auto | … — together with fixed_model this is the answer to “which model does a task pinned to this profile actually get?”.

string
name
required
string
review_required
required
boolean
slug
required
string
tags
required
Array<string>
updated_at
required
string format: date-time
version
required

Bumped on every profile edit — lets a caller detect that the thing it verified earlier is no longer the thing it is launching against.

integer format: int32
ai_credentials
required
Array<object>
object
account_email
string | null
expires_at
string | null format: date-time
fingerprint
string | null
id
required
string format: uuid
key
required
string
provider
string | null
scope
required
string
budget
One of:
null
git_credentials
required
Array<object>
object
account_email
string | null
expires_at
string | null format: date-time
fingerprint
string | null
id
required
string format: uuid
key
required
string
provider
string | null
scope
required
string
invites
required
Array<object>
object
email
required
string
role
required
string
mailbox_credentials
required
Array<object>
object
account_email
string | null
expires_at
string | null format: date-time
fingerprint
string | null
id
required
string format: uuid
key
required
string
provider
string | null
scope
required
string
marketplace_installs
required

#1214 — installed official-catalog listings, each with whether the catalog has moved past it. Empty on a workspace with no installs.

Array<object>

What the READ side reports back per installed listing.

object
name
required
string
slug
required
string
update_available
required

True when a newer non-withdrawn version exists in the catalog — the same question the #351 update signal answers in the UI, so a provisioning run can see drift without installing anything.

boolean
version
required
string
members
required
Array<object>
object
admin
boolean
approved
boolean
display_name
string | null
email
required
string
role
required
string
oauth_credentials
required
Array<object>
object
account_email
string | null
expires_at
string | null format: date-time
fingerprint
string | null
id
required
string format: uuid
key
required
string
provider
string | null
scope
required
string
projects
required
Array<object>
object
automations
required

#1161 D2 — the project’s automation arms, so a management caller can READ BACK what it wrote through the spec’s automations block. Without this the write side could only be confirmed by running the pipeline: the fields went in and nothing came out. Ordered by kind; empty for a project with no arms.

Array<object>

#1161 D2 — the management read projection of ONE automation arm. Deliberately NARROW: it carries the arm’s identity plus the two fields that had no management door (review_enabled, pipeline_config), and NEVER the row’s webhook_secret — a read projection must not become a secret-exfiltration path.

object
enabled
required
boolean
kind
required
string
pipeline_config
required

#538 (mig 231) — the pipeline knobs bag: the return-to-sender loop’s max_rounds / max_cost_usd ceilings, the convergence level and the per-stage overrides.

review_enabled
required

#538 (mig 231) — the independent forensic audit tail.

boolean
git_provider
string | null
git_repo_url
string | null
id
required
string format: uuid
key
required
string
name
required
string
repo_sync
One of:
null
schedules
required
Array<object>
object
agent_profile_id

#1161 C12 — the profile PIN this schedule fires under; null is the ungated (no-pin) shape. The schedule-side sibling of ManagementTaskInfo.agent_profile_id.

string | null format: uuid
agent_type
required
string
cadence
required
string
id
required
string format: uuid
interval_minutes
required

#908 — the step width of an interval cadence in minutes; null for calendar cadences.

integer | null format: int32
key
required
string
next_run_at
string | null format: date-time
status
required
string
title
required
string
tasks
required
Array<object>
object
agent_profile_id

#1161 C12 — the profile PIN this task was stored with, so an M2M caller can verify the gate it armed instead of probing the column with raw SQL. null is the ungated (no-pin) shape.

string | null format: uuid
agent_type
required
string
id
required
string format: uuid
key
required
string
project_id
string | null format: uuid
status
required
string
title
required
string
variables
required
Array<object>
object
created_at
required
string format: date-time
fingerprint
string | null
id
required
string format: uuid
is_secret
required
boolean
key
required
string
project_id
string | null format: uuid
value
required
string
workspace
required
object
id
required
string format: uuid
name
required
string
owner_id
required
string format: uuid
slug
required
string
Examplegenerated
{
"agent_profiles": [
{
"created_at": "2026-04-15T12:00:00Z",
"default_agent_type": "example",
"description": "example",
"effort_default": "example",
"enabled": true,
"execution_mode": "example",
"fixed_model": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"interactive_approval": true,
"is_workspace_default": true,
"model_policy": "example",
"name": "example",
"review_required": true,
"slug": "example",
"tags": [
"example"
],
"updated_at": "2026-04-15T12:00:00Z",
"version": 1
}
],
"ai_credentials": [
{
"account_email": "example",
"expires_at": "2026-04-15T12:00:00Z",
"fingerprint": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"key": "example",
"provider": "example",
"scope": "example"
}
],
"budget": {
"alerts": [
"example"
],
"api_mode_controls": {
"additionalProperty": true
},
"connected_subscriptions": [
{
"account_email": "example",
"credential_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"plan_label": "example",
"provider": "example",
"quota_readability": "example",
"quota_unreadable_reason": "example"
}
],
"critical_threshold_percent": 1,
"effective_month_spend_usd": 1,
"fill_target": 1,
"hard_stop": true,
"inflight_reserved_usd": 1,
"month_spend_usd": 1,
"monthly_cap_usd": 1,
"per_provider_summary": [
{
"account_count": 1,
"fill_pct": 1,
"limit": 1,
"provider": "example",
"scope": "example",
"used": 1,
"window_type": "example"
}
],
"per_provider_windows": [
{
"account_email": "example",
"account_role": "example",
"credential_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"credential_type": "example",
"fill_pct": 1,
"freshness": "example",
"limit": 1,
"measured_at": "2026-04-15T12:00:00Z",
"measurement": "example",
"minutes_to_refresh": 1,
"plan_label": "example",
"provider": "example",
"reset_credits": 1,
"resets_at": "2026-04-15T12:00:00Z",
"scope": "example",
"source": "example",
"throttling_soon": true,
"used": 1,
"window_start": "2026-04-15T12:00:00Z",
"window_type": "example"
}
],
"provider_inflight_reserved_usd": {
"additionalProperty": 1
},
"provider_monthly_caps_usd": {
"additionalProperty": 1
},
"provider_spend_usd": {
"additionalProperty": 1
},
"remaining_usd": 1,
"status": "example",
"threshold_alerts_percent": [
1
],
"warning_threshold_percent": 1
},
"git_credentials": [
{
"account_email": "example",
"expires_at": "2026-04-15T12:00:00Z",
"fingerprint": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"key": "example",
"provider": "example",
"scope": "example"
}
],
"invites": [
{
"email": "example",
"role": "example"
}
],
"mailbox_credentials": [
{
"account_email": "example",
"expires_at": "2026-04-15T12:00:00Z",
"fingerprint": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"key": "example",
"provider": "example",
"scope": "example"
}
],
"marketplace_installs": [
{
"name": "example",
"slug": "example",
"update_available": true,
"version": "example"
}
],
"members": [
{
"admin": true,
"approved": true,
"display_name": "example",
"email": "example",
"role": "example"
}
],
"oauth_credentials": [
{
"account_email": "example",
"expires_at": "2026-04-15T12:00:00Z",
"fingerprint": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"key": "example",
"provider": "example",
"scope": "example"
}
],
"projects": [
{
"automations": [
{
"enabled": true,
"kind": "example",
"pipeline_config": "example",
"review_enabled": true
}
],
"git_provider": "example",
"git_repo_url": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"key": "example",
"name": "example"
}
],
"repo_sync": {
"auto_push": true,
"branch": "example",
"credential_resource": "example",
"last_sync_at": "2026-04-15T12:00:00Z",
"last_sync_sha": "example",
"repo_url": "example",
"sync_mode": "example"
},
"schedules": [
{
"agent_profile_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"agent_type": "example",
"cadence": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"interval_minutes": 1,
"key": "example",
"next_run_at": "2026-04-15T12:00:00Z",
"status": "example",
"title": "example"
}
],
"tasks": [
{
"agent_profile_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"agent_type": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"key": "example",
"project_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"status": "example",
"title": "example"
}
],
"variables": [
{
"created_at": "2026-04-15T12:00:00Z",
"fingerprint": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"is_secret": true,
"key": "example",
"project_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"value": "example"
}
],
"workspace": {
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"owner_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"slug": "example"
}
}