application · active
Social Studio
Hybrid desktop and web production surface for social planning, generation, review, and export. This is the only live Studio-branded application in the suite.
Documentation map
- Topolo Social Studio — Public overview of the hybrid desktop and Cloudflare runtime used for AI-assisted social content planning and generation.
Authority and runtime
- System ID
topolo-social-studio- App IDs
- app_topolo_social_studio
- Owners
- socialize
- Repositories
- apps/TopoloSocialStudio
- Hosts
- https://studio.topolo.app, https://studio-api.stg.topolo.us, https://studio.stg.topolo.us
- Dependencies
- topolo-auth, topolo-brand, applications-packages, topolo-nexus
Security and data ownership
- Risk tier
- high
- Tenant isolation
- organization_scoped
- Privacy classification
- restricted
- Storage
- d1, external_provider, r2
- Export and deletion
- planned
- Enterprise ready
- no
Source-derived capability inventory
Source revisions: apps/TopoloSocialStudio@e59a4cb80a4e7154108acb7133a5127016e6540c
Declared actions: 47 · API routes: 11 · UI routes: 0
{
"id": "topolo-social-studio",
"name": "Social Studio",
"slug": "topolo-social-studio",
"kind": "application",
"visibility": "public",
"repo_paths": [
"apps/TopoloSocialStudio"
],
"source_revisions": [
{
"source_path": "apps/TopoloSocialStudio",
"repository": "apps/TopoloSocialStudio",
"revision": "e59a4cb80a4e7154108acb7133a5127016e6540c",
"ref": "origin/staging"
}
],
"source_counts": {
"source_files": 138,
"test_files": 87,
"test_cases": 0,
"migration_files": 12,
"database_tables": 0,
"manifests": 1,
"deploy_targets": 3,
"actions": 47,
"mobile_contracts": 1,
"notifications": 6,
"package_manifests": 13,
"deployment_configs": 0
},
"manifests": [
{
"source_path": "apps/TopoloSocialStudio/topolo.app.json",
"service_slug": "topolo-social-studio",
"name": "topolo-social-studio",
"app_id": "app_topolo_social_studio",
"compatibility_date": "2026-04-10",
"primary_target": null,
"environments": [
"development",
"production",
"staging"
],
"targets": [
{
"name": "marketing",
"kind": "worker",
"directory": "apps/marketing",
"main": "src/worker.ts",
"worker_name": "topolo-social-studio",
"subdomain": "studio",
"healthcheck_path": null,
"variable_names": [
"AUTH_API_URL"
],
"secret_names": [],
"bindings": [
{
"kind": "services",
"binding": "API",
"target": null
}
]
},
{
"name": "api",
"kind": "worker",
"directory": "apps/api",
"main": "src/index.ts",
"worker_name": "topolo-social-studio-api",
"subdomain": null,
"healthcheck_path": "/healthz",
"variable_names": [
"ADDITIONAL_ALLOWED_ORIGINS",
"API_WORKER_URL",
"APP_ENV",
"AUTH_BASE_URL",
"BILLING_SUPPORT_CONTACT",
"DESKTOP_APP_URL",
"ENVIRONMENT",
"GENERATION_QUEUE_NAME",
"MARKETING_APP_URL",
"QUEUE_CONSUMER_NAME",
"SOCIAL_STUDIO_PUBLIC_BASE_URL",
"TOPOLO_BUG_REPORTER_URL",
"TOPOLO_LAUNCHER_URL",
"TOPOLO_NOTIFY_URL",
"TOPOLO_SEED_APP_ID"
],
"secret_names": [],
"bindings": [
{
"kind": "services",
"binding": "BRAND_API",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_CORE_DB",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_GENERATION_DB",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_USAGE_DB",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_CONTROLS_DB",
"target": null
},
{
"kind": "r2",
"binding": "ASSET_BUCKET",
"target": null
}
]
},
{
"name": "jobs",
"kind": "worker",
"directory": "apps/jobs",
"main": "src/index.ts",
"worker_name": "topolo-social-studio-queue",
"subdomain": null,
"healthcheck_path": "/health",
"variable_names": [
"APP_ENV",
"AUTH_BASE_URL",
"DESKTOP_SYNC_QUEUE",
"GENERATION_QUEUE_NAME",
"QUEUE_CONSUMER_NAME",
"SOCIAL_STUDIO_PUBLIC_BASE_URL",
"TOPOLO_NOTIFY_URL"
],
"secret_names": [],
"bindings": [
{
"kind": "d1",
"binding": "STUDIO_CORE_DB",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_GENERATION_DB",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_USAGE_DB",
"target": null
},
{
"kind": "d1",
"binding": "STUDIO_CONTROLS_DB",
"target": null
},
{
"kind": "r2",
"binding": "ASSET_BUCKET",
"target": null
}
]
}
],
"notifications": [
"social_studio.approval.requested",
"social_studio.asset.ready",
"social_studio.generation.completed",
"social_studio.generation.failed",
"social_studio.plan.ready",
"social_studio.quota.warning"
],
"notification_contract": {
"source_path": "topolo.notification-contracts.json",
"role": "producer",
"schema_version": 1,
"owner_app_id": "app_topolo_social_studio",
"events": [
{
"type": "social_studio.approval.requested",
"version": 1,
"status": "published",
"description": "A project approval request was persisted for an active workspace reviewer.",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at",
"payload"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"payload": {
"type": "object",
"required": [
"approval_request_id",
"project_id",
"requested_by_user_id"
],
"properties": {
"approval_request_id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"requested_by_user_id": {
"type": "string"
},
"note": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Approval requested",
"body": "A Social Studio project is ready for your review.",
"object_id": "approval_123",
"occurred_at": "2026-07-20T00:00:00.000Z",
"payload": {
"approval_request_id": "approval_123",
"project_id": "project_123",
"requested_by_user_id": "user_123",
"note": "Please review"
}
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^social-studio:approval:.*:requested$"
},
"sensitiveFields": []
},
{
"type": "social_studio.asset.ready",
"version": 1,
"status": "published",
"description": "A generated asset was durably persisted in the available state.",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at",
"payload"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"payload": {
"type": "object",
"required": [
"asset_id",
"job_id",
"project_id",
"scene_id",
"kind"
],
"properties": {
"asset_id": {
"type": "string"
},
"job_id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"scene_id": {
"type": "string"
},
"kind": {
"type": "string"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Asset ready",
"body": "Hero image is ready to review.",
"object_id": "asset_123",
"occurred_at": "2026-07-20T00:00:00.000Z",
"payload": {
"asset_id": "asset_123",
"job_id": "job_123",
"project_id": "project_123",
"scene_id": "scene_123",
"kind": "image"
}
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^social-studio:asset:.*:ready$"
},
"sensitiveFields": []
},
{
"type": "social_studio.generation.completed",
"version": 1,
"status": "published",
"description": "A scene generation job durably reached the completed terminal state.",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at",
"payload"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"payload": {
"type": "object",
"required": [
"job_id",
"project_id",
"scene_id",
"asset_count"
],
"properties": {
"job_id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"scene_id": {
"type": "string"
},
"asset_count": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Generation completed",
"body": "2 generated assets are ready.",
"object_id": "job_123",
"occurred_at": "2026-07-20T00:00:00.000Z",
"payload": {
"job_id": "job_123",
"project_id": "project_123",
"scene_id": "scene_123",
"asset_count": 2
}
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^social-studio:generation:.*:completed$"
},
"sensitiveFields": []
},
{
"type": "social_studio.generation.failed",
"version": 1,
"status": "published",
"description": "A scene generation job durably reached the failed terminal state after retries were exhausted.",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at",
"payload"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"payload": {
"type": "object",
"required": [
"job_id",
"project_id",
"scene_id",
"provider",
"error_code"
],
"properties": {
"job_id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"scene_id": {
"type": "string"
},
"provider": {
"type": "string"
},
"error_code": {
"type": "string"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Generation failed",
"body": "A Social Studio generation job needs attention.",
"object_id": "job_123",
"occurred_at": "2026-07-20T00:00:00.000Z",
"payload": {
"job_id": "job_123",
"project_id": "project_123",
"scene_id": "scene_123",
"provider": "nexus-configured",
"error_code": "provider_timeout"
}
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^social-studio:generation:.*:failed$"
},
"sensitiveFields": []
},
{
"type": "social_studio.plan.ready",
"version": 1,
"status": "published",
"description": "A creative plan and its scenes were durably persisted and are ready for review.",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at",
"payload"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"payload": {
"type": "object",
"required": [
"project_id",
"plan_id",
"scene_count"
],
"properties": {
"project_id": {
"type": "string"
},
"plan_id": {
"type": [
"string",
"null"
]
},
"scene_count": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Creative plan ready",
"body": "4 planned scenes are ready to review.",
"object_id": "plan_123",
"occurred_at": "2026-07-20T00:00:00.000Z",
"payload": {
"project_id": "project_123",
"plan_id": "plan_123",
"scene_count": 4
}
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^social-studio:plan:.*:ready:"
},
"sensitiveFields": []
},
{
"type": "social_studio.quota.warning",
"version": 1,
"status": "published",
"description": "A monthly deduplicated entitlement warning was durably claimed for a workspace member.",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at",
"payload"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"payload": {
"type": "object",
"required": [
"warning_id",
"action",
"warning",
"period_key"
],
"properties": {
"warning_id": {
"type": "string"
},
"action": {
"type": "string"
},
"warning": {
"type": "string"
},
"period_key": {
"type": "string"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Usage limit warning",
"body": "generation_units will exceed the included plan limit.",
"object_id": "quota_warning_123",
"occurred_at": "2026-07-20T00:00:00.000Z",
"payload": {
"warning_id": "quota_warning_123",
"action": "generation.start",
"warning": "generation_units will exceed the included plan limit.",
"period_key": "2026-07"
}
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^social-studio:quota-warning:"
},
"sensitiveFields": []
}
]
},
"actions": [
{
"name": "organizations.data.export",
"title": "Export organization data",
"description": "Export all Social Studio data and asset object metadata owned by the authenticated organization across four D1 stores without credentials.",
"method": "GET",
"path": "/api/organizations/data/export",
"permission": "privacy:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"target": "api",
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/organizations/data/export",
"body": null
},
"effects": "Reads state through GET /api/organizations/data/export without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/organizations/data/export",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.data.erase",
"title": "Erase organization data",
"description": "Permanently erase all Social Studio data and asset objects owned by the authenticated organization while retaining backups under policy.",
"method": "DELETE",
"path": "/api/organizations/data/erase",
"permission": "privacy:write",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"confirmation": {
"type": "string",
"const": "ERASE"
}
},
"required": [
"confirmation"
],
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"target": "api",
"destructive": true,
"requiresConfirmation": true,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"confirmation": "ERASE"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "DELETE",
"path": "/api/organizations/data/erase",
"body": null
},
"effects": "May change state through DELETE /api/organizations/data/erase. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "DELETE /api/organizations/data/erase",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "workspaces.delete",
"title": "Delete workspace",
"description": "Delete a non-default empty Social Studio workspace.",
"method": "DELETE",
"path": "/api/workspaces/{workspaceSlug}",
"permission": "workspace:delete",
"authorizationMode": "static",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"readOnly": false,
"destructive": true,
"requiresConfirmation": true,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "DELETE",
"path": "/api/workspaces/example",
"body": null
},
"effects": "May change state through DELETE /api/workspaces/{workspaceSlug}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "DELETE /api/workspaces/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.create",
"title": "Create project",
"description": "Create a Social Studio project.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects",
"permission": "workspace:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"objective": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"templateId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"brandKitId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"title"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create project.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"title": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects",
"body": {
"workspaceSlug": "example",
"title": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.duplicate",
"title": "Duplicate project",
"description": "Duplicate a Social Studio project.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/duplicate",
"permission": "briefs:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"includeAssets": {
"type": "boolean"
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Duplicate project.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/duplicate",
"body": {
"workspaceSlug": "example",
"projectId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/duplicate. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/duplicate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "planning.generate",
"title": "Generate project plan",
"description": "Generate a project creative plan.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/planning/generate",
"permission": "briefs:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"freeformPrompt": {
"type": "string",
"minLength": 1,
"maxLength": 20000
},
"title": {
"type": "string",
"maxLength": 255
},
"platforms": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"instagram",
"tiktok",
"youtube",
"linkedin",
"x",
"facebook"
]
}
},
"durationMs": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 180000
},
"style": {
"type": "string",
"maxLength": 4000
},
"captions": {
"type": "string",
"enum": [
"auto",
"manual",
"none"
]
},
"objective": {
"type": "string",
"maxLength": 4000
},
"audience": {
"type": "string",
"maxLength": 4000
}
},
"required": [
"workspaceSlug",
"projectId",
"freeformPrompt"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Generate project plan.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"freeformPrompt": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/planning/generate",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"freeformPrompt": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/planning/generate. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/planning/generate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.approval_requests.create",
"title": "Create project approval request",
"description": "Request approval from an active Social Studio workspace member.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/approval-requests",
"permission": "approvals:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"reviewerUserId": {
"type": "string",
"minLength": 1
},
"note": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 2000
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"projectId",
"reviewerUserId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Persisted approval request.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"reviewerUserId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/approval-requests",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"reviewerUserId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/approval-requests. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/approval-requests",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "generation.start",
"title": "Start generation",
"description": "Start generation for a project.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/generation/start",
"permission": "generation:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"sceneIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"provider": {
"type": "string",
"enum": [
"nexus-configured",
"grok-imagine",
"nano-banana",
"cloudflare-media"
]
},
"fallbackProvider": {
"anyOf": [
{
"type": "string",
"enum": [
"nexus-configured",
"grok-imagine",
"nano-banana",
"cloudflare-media"
]
},
{
"type": "null"
}
]
},
"candidateCount": {
"type": "integer",
"minimum": 1,
"maximum": 4
},
"sourceAssetId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"outputKind": {
"type": "string",
"enum": [
"image",
"video"
]
},
"videoDurationSeconds": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 15
},
{
"type": "null"
}
]
},
"nexusProviderOverride": {
"anyOf": [
{
"type": "string",
"enum": [
"openai",
"google",
"xai",
"cloudflare"
]
},
{
"type": "null"
}
]
},
"nexusModelOverride": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Start generation.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/generation/start",
"body": {
"workspaceSlug": "example",
"projectId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/generation/start. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/generation/start",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "operator.backup_export",
"title": "Get backup export",
"description": "Get a complete owner-only Social Studio workspace export.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/operator/backup-export",
"permission": "exports:read",
"readOnly": true,
"requiresConfirmation": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get backup export.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/operator/backup-export",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/operator/backup-export without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/operator/backup-export",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "billing.entitlements.check",
"title": "Billing Entitlements Check",
"description": "Call POST /api/workspaces/{workspaceSlug}/billing/entitlements/check.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/billing/entitlements/check",
"permission": "workspace:read",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"project.create",
"planning.generate",
"generation.start",
"generation.regenerate",
"render.create",
"billing.portal",
"usage.reconcile",
"brand_kits.use",
"batch_variants.use"
]
},
"requestedGenerationUnits": {
"type": "number",
"minimum": 0
},
"requestedRenderJobs": {
"type": "number",
"minimum": 0
},
"requestedStorageBytes": {
"type": "number",
"minimum": 0
},
"featureKey": {
"type": "string",
"enum": [
"batch_variants",
"brand_kits",
"priority_render",
"billing_portal",
"operator_reconciliation"
]
}
},
"required": [
"workspaceSlug",
"action"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Billing Entitlements Check.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"action": "project.create"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/billing/entitlements/check",
"body": {
"workspaceSlug": "example",
"action": "project.create"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/billing/entitlements/check. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/billing/entitlements/check",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "billing.portal_session.create",
"title": "Billing Portal Session Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/billing/portal-session.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/billing/portal-session",
"permission": "settings:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Billing Portal Session Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/billing/portal-session",
"body": {
"workspaceSlug": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/billing/portal-session. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/billing/portal-session",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "billing.reconciliations.create",
"title": "Billing Reconciliations Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/billing/reconciliations.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/billing/reconciliations",
"permission": "approvals:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"metricKey": {
"type": "string",
"enum": [
"generation_units",
"storage_bytes",
"render_jobs",
"premium_batch_variants",
"premium_brand_kits"
]
},
"quantityDelta": {
"type": "number"
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
},
"required": [
"workspaceSlug",
"metricKey",
"quantityDelta",
"unit",
"reason",
"description"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Billing Reconciliations Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"metricKey": "generation_units",
"quantityDelta": 1,
"unit": "example",
"reason": "example",
"description": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/billing/reconciliations",
"body": {
"workspaceSlug": "example",
"metricKey": "generation_units",
"quantityDelta": 1,
"unit": "example",
"reason": "example",
"description": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/billing/reconciliations. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/billing/reconciliations",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "billing.subscription.update",
"title": "Billing Subscription Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/billing/subscription.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/billing/subscription",
"permission": "settings:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"planKey": {
"type": "string",
"enum": [
"free",
"trial",
"pro",
"agency"
]
},
"status": {
"type": "string",
"enum": [
"trialing",
"active",
"grace_period",
"past_due",
"suspended",
"cancelled"
]
},
"supportPlanLabel": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"invoiceEmail": {
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "null"
}
]
},
"providerCustomerId": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"providerSubscriptionId": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Billing Subscription Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/billing/subscription",
"body": {
"workspaceSlug": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/billing/subscription. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/billing/subscription",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "telemetry.events.create",
"title": "Telemetry Events Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/telemetry/events.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/telemetry/events",
"permission": "workspace:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"stream": {
"type": "string",
"enum": [
"product",
"operational",
"security",
"audit"
]
},
"channel": {
"type": "string",
"enum": [
"worker",
"queue",
"desktop",
"web"
]
},
"eventName": {
"type": "string",
"enum": [
"app.opened",
"auth.login.success",
"auth.login.failure",
"project.created",
"project.duplicated",
"project.deleted",
"template.applied",
"brief.generated",
"creative_plan.generated",
"scene.generated",
"asset.generation.started",
"asset.generation.succeeded",
"asset.generation.failed",
"caption.edited",
"library.asset.saved",
"library.asset.reused",
"variants.generated",
"render.preview.started",
"render.preview.completed",
"render.final_export.started",
"render.final_export.completed",
"billing.entitlement.denied",
"billing.portal.opened",
"billing.reconciliation.applied",
"provider.retry.scheduled",
"provider.normalization.failed",
"provider.moderation.failed",
"sync.failed",
"rate_limit.triggered",
"moderation.blocked",
"security.audit.recorded"
]
},
"status": {
"type": "string",
"enum": [
"success",
"failure",
"pending",
"denied",
"blocked",
"review"
]
},
"severity": {
"type": "string",
"enum": [
"info",
"warning",
"error",
"critical"
]
},
"correlationId": {
"type": "string"
},
"errorCode": {
"anyOf": [
{
"type": "string",
"enum": [
"auth_failure",
"billing_limit",
"moderation_block",
"provider_failure",
"provider_retryable",
"quota_failure",
"rate_limit",
"render_failure",
"security_violation",
"sync_failure",
"unknown"
]
},
{
"type": "null"
}
]
},
"message": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"latencyMs": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
}
},
"required": [
"workspaceSlug",
"stream",
"channel",
"eventName",
"status",
"severity"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Telemetry Events Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"stream": "product",
"channel": "worker",
"eventName": "app.opened",
"status": "success",
"severity": "info"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/telemetry/events",
"body": {
"workspaceSlug": "example",
"stream": "product",
"channel": "worker",
"eventName": "app.opened",
"status": "success",
"severity": "info"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/telemetry/events. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/telemetry/events",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "assets.access_token.create",
"title": "Assets Access Token Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/assets/{assetId}/access-token.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/assets/{assetId}/access-token",
"permission": "assets:read",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"assetId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"assetId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Assets Access Token Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"assetId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/assets/example/access-token",
"body": {
"workspaceSlug": "example",
"assetId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/assets/{assetId}/access-token. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/assets/*/access-token",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "assets.library.save",
"title": "Assets Library Save",
"description": "Call POST /api/workspaces/{workspaceSlug}/assets/{assetId}/library.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/assets/{assetId}/library",
"permission": "assets:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"assetId": {
"type": "string",
"minLength": 1
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"notes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"favorite": {
"type": "boolean"
}
},
"required": [
"workspaceSlug",
"assetId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Assets Library Save.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"assetId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/assets/example/library",
"body": {
"workspaceSlug": "example",
"assetId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/assets/{assetId}/library. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/assets/*/library",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "library.assets.reuse",
"title": "Library Assets Reuse",
"description": "Call POST /api/workspaces/{workspaceSlug}/library/assets/{entryId}/reuse.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/library/assets/{entryId}/reuse",
"permission": "assets:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"entryId": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"sceneId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"title": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"entryId",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Library Assets Reuse.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"entryId": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/library/assets/example/reuse",
"body": {
"workspaceSlug": "example",
"entryId": "example",
"projectId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/library/assets/{entryId}/reuse. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/library/assets/*/reuse",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "project_templates.create",
"title": "Project Templates Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/project-templates.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/project-templates",
"permission": "settings:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"promptDefaults": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"platforms": {
"type": "array",
"items": {
"type": "string",
"enum": [
"instagram",
"tiktok",
"youtube",
"linkedin",
"x",
"facebook"
]
}
}
},
"required": [
"workspaceSlug",
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Project Templates Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"name": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/project-templates",
"body": {
"workspaceSlug": "example",
"name": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/project-templates. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/project-templates",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "project_templates.update",
"title": "Project Templates Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/project-templates/{templateId}.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/project-templates/{templateId}",
"permission": "settings:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"promptDefaults": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"platforms": {
"type": "array",
"items": {
"type": "string",
"enum": [
"instagram",
"tiktok",
"youtube",
"linkedin",
"x",
"facebook"
]
}
},
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"templateId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"required": [
"workspaceSlug",
"templateId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Project Templates Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"templateId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/project-templates/example",
"body": {
"workspaceSlug": "example",
"templateId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/project-templates/{templateId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/project-templates/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "presets.create",
"title": "Presets Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/presets.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/presets",
"permission": "settings:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
}
},
"required": [
"workspaceSlug",
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Presets Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"name": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/presets",
"body": {
"workspaceSlug": "example",
"name": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/presets. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/presets",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "presets.update",
"title": "Presets Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/presets/{presetId}.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/presets/{presetId}",
"permission": "settings:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"presetId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"required": [
"workspaceSlug",
"presetId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Presets Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"presetId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/presets/example",
"body": {
"workspaceSlug": "example",
"presetId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/presets/{presetId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/presets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.compositions.create",
"title": "Projects Compositions Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/projects/{projectId}/compositions.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/compositions",
"permission": "assets:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"aspectRatio": {
"type": "string",
"enum": [
"portrait_9_16",
"landscape_16_9"
]
},
"snapshot": {},
"notes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"sourceKind": {
"type": "string",
"enum": [
"manual",
"ai_generated",
"imported"
]
},
"generationStatus": {
"type": "string",
"enum": [
"pending",
"queued",
"running",
"completed",
"failed",
"cancelled"
]
}
},
"required": [
"workspaceSlug",
"projectId",
"title",
"aspectRatio",
"snapshot"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Compositions Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"title": "example",
"aspectRatio": "portrait_9_16",
"snapshot": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/compositions",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"title": "example",
"aspectRatio": "portrait_9_16",
"snapshot": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/compositions. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/compositions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.compositions.update",
"title": "Projects Compositions Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/compositions/{compositionVersionId}.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/compositions/{compositionVersionId}",
"permission": "assets:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"compositionVersionId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"maxLength": 255
},
"aspectRatio": {
"type": "string",
"enum": [
"portrait_9_16",
"landscape_16_9"
]
},
"snapshot": {},
"notes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"generationStatus": {
"type": "string",
"enum": [
"pending",
"queued",
"running",
"completed",
"failed",
"cancelled"
]
}
},
"required": [
"workspaceSlug",
"projectId",
"compositionVersionId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Compositions Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"compositionVersionId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/projects/example/compositions/example",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"compositionVersionId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/compositions/{compositionVersionId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/projects/*/compositions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.render_jobs.create",
"title": "Projects Render Jobs Create",
"description": "Call POST /api/workspaces/{workspaceSlug}/projects/{projectId}/render-jobs.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/render-jobs",
"permission": "exports:read",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"compositionVersionId": {
"type": "string",
"minLength": 1
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"outputFormat": {
"type": "string",
"enum": [
"mp4",
"mov",
"png_sequence",
"gif"
]
},
"priority": {
"type": "integer",
"minimum": 0,
"maximum": 10
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Render Jobs Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/render-jobs",
"body": {
"workspaceSlug": "example",
"projectId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/render-jobs. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/render-jobs",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.render_jobs.update",
"title": "Projects Render Jobs Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/render-jobs/{renderJobId}.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/render-jobs/{renderJobId}",
"permission": "exports:read",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"renderJobId": {
"type": "string",
"minLength": 1
},
"renderStatus": {
"type": "string",
"enum": [
"queued",
"rendering",
"completed",
"failed",
"cancelled"
]
},
"failureReason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"outputAssetId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"startedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"projectId",
"renderJobId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Render Jobs Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"renderJobId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/projects/example/render-jobs/example",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"renderJobId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/render-jobs/{renderJobId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/projects/*/render-jobs/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.scenes.regenerate",
"title": "Projects Scenes Regenerate",
"description": "Call POST /api/workspaces/{workspaceSlug}/projects/{projectId}/scenes/{sceneId}/generation/regenerate.",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/scenes/{sceneId}/generation/regenerate",
"permission": "generation:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"sceneIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"provider": {
"type": "string",
"enum": [
"nexus-configured",
"grok-imagine",
"nano-banana",
"cloudflare-media"
]
},
"fallbackProvider": {
"anyOf": [
{
"type": "string",
"enum": [
"nexus-configured",
"grok-imagine",
"nano-banana",
"cloudflare-media"
]
},
{
"type": "null"
}
]
},
"candidateCount": {
"type": "integer",
"minimum": 1,
"maximum": 4
},
"sourceAssetId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"outputKind": {
"type": "string",
"enum": [
"image",
"video"
]
},
"videoDurationSeconds": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 15
},
{
"type": "null"
}
]
},
"nexusProviderOverride": {
"anyOf": [
{
"type": "string",
"enum": [
"openai",
"google",
"xai",
"cloudflare"
]
},
{
"type": "null"
}
]
},
"nexusModelOverride": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"sceneId": {
"type": "string",
"minLength": 1
},
"assetId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"projectId",
"sceneId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Scenes Regenerate.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"sceneId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/scenes/example/generation/regenerate",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"sceneId": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/scenes/{sceneId}/generation/regenerate. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/scenes/*/generation/regenerate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.structured_brief.update",
"title": "Projects Structured Brief Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/structured-brief.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/structured-brief",
"permission": "briefs:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"maxLength": 255
},
"objective": {
"type": "string",
"maxLength": 4000
},
"audience": {
"type": "string",
"maxLength": 4000
},
"keyMessage": {
"type": "string",
"maxLength": 4000
},
"channels": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"instagram",
"tiktok",
"youtube",
"linkedin",
"x",
"facebook"
]
}
},
"deliverables": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"constraints": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"referenceUrls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"successMetric": {
"type": "string",
"maxLength": 1000
},
"tonePillars": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"sourcePrompt": {
"type": "string",
"maxLength": 20000
},
"preferredDurationMs": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 180000
},
{
"type": "null"
}
]
},
"styleNotes": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"captionMode": {
"type": "string",
"enum": [
"auto",
"manual",
"none"
]
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Structured Brief Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/projects/example/structured-brief",
"body": {
"workspaceSlug": "example",
"projectId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/structured-brief. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/projects/*/structured-brief",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.creative_plan.update",
"title": "Projects Creative Plan Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/creative-plan.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/creative-plan",
"permission": "briefs:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"enum": [
"instagram",
"tiktok",
"youtube",
"linkedin",
"x",
"facebook"
]
},
"concept": {
"type": "string",
"maxLength": 4000
},
"hook": {
"type": "string",
"maxLength": 1000
},
"hookStrategy": {
"type": "string",
"maxLength": 4000
},
"callToAction": {
"type": "string",
"maxLength": 1000
},
"pacingStrategy": {
"type": "string",
"maxLength": 4000
},
"narrativeArc": {
"type": "string",
"maxLength": 4000
},
"narrativeStructure": {
"type": "string",
"maxLength": 4000
},
"visualDirection": {
"type": "string",
"maxLength": 4000
},
"shotStyle": {
"type": "string",
"maxLength": 4000
},
"providerStrategy": {
"type": "object",
"properties": {
"imagePromptShape": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"motionPromptShape": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"renderTarget": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"shapingNotes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": [
"imagePromptShape",
"motionPromptShape",
"renderTarget",
"shapingNotes"
],
"additionalProperties": false
},
"sceneOutline": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"sceneOrder": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"purpose": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"durationMs": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"sceneOrder",
"title",
"purpose",
"durationMs"
],
"additionalProperties": false
}
},
"distributionNotes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Creative Plan Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/projects/example/creative-plan",
"body": {
"workspaceSlug": "example",
"projectId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/creative-plan. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/projects/*/creative-plan",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.scenes.update",
"title": "Projects Scenes Update",
"description": "Call PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/scenes/{sceneId}.",
"method": "PATCH",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/scenes/{sceneId}",
"permission": "briefs:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"sceneId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"maxLength": 255
},
"objective": {
"type": "string",
"maxLength": 4000
},
"visualPrompt": {
"type": "string",
"maxLength": 4000
},
"narration": {
"type": "string",
"maxLength": 4000
},
"durationMs": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"transitionLabel": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"motionRecommendation": {
"type": "string",
"maxLength": 4000
},
"transitionRecommendation": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"captionReference": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"required": [
"workspaceSlug",
"projectId",
"sceneId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Scenes Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"sceneId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/workspaces/example/projects/example/scenes/example",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"sceneId": "example"
}
},
"effects": "May change state through PATCH /api/workspaces/{workspaceSlug}/projects/{projectId}/scenes/{sceneId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/workspaces/*/projects/*/scenes/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "widget.get",
"title": "Get widget summary",
"description": "Get the TopoloOne widget summary for this service.",
"method": "GET",
"path": "/api/widget",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"target": "api",
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/widget",
"body": null
},
"effects": "Reads state through GET /api/widget without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/widget",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "workspace.bootstrap",
"title": "Get workspace bootstrap",
"description": "Get the signed workspace bootstrap payload for this service.",
"method": "GET",
"path": "/api/bootstrap",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"target": "api",
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/bootstrap",
"body": null
},
"effects": "Reads state through GET /api/bootstrap without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/bootstrap",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "identity.get",
"title": "Get current identity",
"description": "Get the authenticated Social Studio user and organization.",
"method": "GET",
"path": "/api/whoami",
"permission": "workspace:read",
"readOnly": true,
"requiresConfirmation": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get current identity.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/whoami",
"body": null
},
"effects": "Reads state through GET /api/whoami without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/whoami",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.list",
"title": "List projects",
"description": "List Social Studio projects.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/projects",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List projects.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/projects",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/projects without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/projects",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "planning.get",
"title": "Get project planning",
"description": "Get project planning data.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/planning",
"permission": "briefs:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get project planning.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/projects/example/planning",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/projects/{projectId}/planning without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/projects/*/planning",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "generation.status",
"title": "Get generation status",
"description": "Get generation status for a project.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/generation/status",
"permission": "assets:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get generation status.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/projects/example/generation/status",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/projects/{projectId}/generation/status without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/projects/*/generation/status",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "assets.list",
"title": "List project assets",
"description": "List assets generated for a project.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/assets",
"permission": "assets:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"sceneId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List assets.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/projects/example/assets",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/projects/{projectId}/assets without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/projects/*/assets",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "assets.upload",
"title": "Upload project asset",
"description": "Upload an image, video, audio file, or PDF into a Social Studio project.",
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"requiresConfirmation": true,
"agentAccess": "confirm",
"method": "POST",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/assets/upload",
"permission": "assets:write",
"authorizationMode": "static",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
},
"contentBase64": {
"type": "string",
"minLength": 1,
"maxLength": 35000000
},
"contentType": {
"type": "string",
"enum": [
"image/png",
"image/jpeg",
"image/webp",
"image/gif",
"image/svg+xml",
"video/mp4",
"video/webm",
"video/quicktime",
"audio/mpeg",
"audio/wav",
"audio/mp4",
"application/pdf"
]
},
"fileName": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"sceneId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"projectId",
"contentBase64",
"contentType",
"fileName"
],
"additionalProperties": false
},
"agentContract": {
"upload": {
"profile": "inline-base64",
"contentField": "contentBase64",
"contentTypeField": "contentType",
"fileNameField": "fileName",
"maxBytes": 26214400,
"acceptedContentTypes": [
"image/png",
"image/jpeg",
"image/webp",
"image/gif",
"image/svg+xml",
"video/mp4",
"video/webm",
"video/quicktime",
"audio/mpeg",
"audio/wav",
"audio/mp4",
"application/pdf"
]
}
},
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example",
"contentBase64": "example",
"contentType": "image/png",
"fileName": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/workspaces/example/projects/example/assets/upload",
"body": {
"workspaceSlug": "example",
"projectId": "example",
"contentBase64": "example",
"contentType": "image/png",
"fileName": "example"
}
},
"effects": "May change state through POST /api/workspaces/{workspaceSlug}/projects/{projectId}/assets/upload. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/workspaces/*/projects/*/assets/upload",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "operator.summary",
"title": "Get operator summary",
"description": "Get operator summary for a workspace.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/operator/summary",
"permission": "settings:write",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get operator summary.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/operator/summary",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/operator/summary without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/operator/summary",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "billing.current_plan.get",
"title": "Billing Current Plan Get",
"description": "Call GET /api/workspaces/{workspaceSlug}/billing/current-plan.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/billing/current-plan",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Billing Current Plan Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/billing/current-plan",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/billing/current-plan without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/billing/current-plan",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "billing.usage_summary.get",
"title": "Billing Usage Summary Get",
"description": "Call GET /api/workspaces/{workspaceSlug}/billing/usage-summary.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/billing/usage-summary",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Billing Usage Summary Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/billing/usage-summary",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/billing/usage-summary without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/billing/usage-summary",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "operator.audit_events.list",
"title": "Operator Audit Events List",
"description": "Call GET /api/workspaces/{workspaceSlug}/security/audit-events.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/security/audit-events",
"permission": "settings:write",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Operator Audit Events List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/security/audit-events",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/security/audit-events without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/security/audit-events",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "assets.content.get",
"title": "Assets Content Get",
"description": "Call GET /api/workspaces/{workspaceSlug}/assets/{assetId}/content.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/assets/{assetId}/content",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"assetId": {
"type": "string",
"minLength": 1
},
"token": {
"type": "string",
"minLength": 1
},
"expiresAt": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"assetId",
"token",
"expiresAt"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Assets Content Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "public",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"assetId": "example",
"token": "example",
"expiresAt": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/assets/example/content",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/assets/{assetId}/content without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/assets/*/content",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "assets.preview.get",
"title": "Assets Preview Get",
"description": "Call GET /api/workspaces/{workspaceSlug}/assets/{assetId}/preview.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/assets/{assetId}/preview",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"assetId": {
"type": "string",
"minLength": 1
},
"token": {
"type": "string",
"minLength": 1
},
"expiresAt": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"assetId",
"token",
"expiresAt"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Assets Preview Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "public",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"assetId": "example",
"token": "example",
"expiresAt": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/assets/example/preview",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/assets/{assetId}/preview without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/assets/*/preview",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "generation.model_options.list",
"title": "Generation Model Options List",
"description": "Call GET /api/workspaces/{workspaceSlug}/generation/model-options.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/generation/model-options",
"permission": "generation:write",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Generation Model Options List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/generation/model-options",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/generation/model-options without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/generation/model-options",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "workspace.creative_resources.list",
"title": "Workspace Creative Resources List",
"description": "Call GET /api/workspaces/{workspaceSlug}/creative-resources.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/creative-resources",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Workspace Creative Resources List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/creative-resources",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/creative-resources without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/creative-resources",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "settings.status.get",
"title": "Settings Status Get",
"description": "Call GET /api/workspaces/{workspaceSlug}/settings/status.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/settings/status",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Settings Status Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/settings/status",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/settings/status without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/settings/status",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "projects.sync.get",
"title": "Projects Sync Get",
"description": "Call GET /api/workspaces/{workspaceSlug}/projects/{projectId}/sync.",
"method": "GET",
"path": "/api/workspaces/{workspaceSlug}/projects/{projectId}/sync",
"permission": "workspace:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceSlug": {
"type": "string",
"minLength": 1
},
"projectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceSlug",
"projectId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Projects Sync Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"workspaceSlug": "example",
"projectId": "example"
},
"cli_example": [
"topolo actions --service topolo-social-studio --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/workspaces/example/projects/example/sync",
"body": null
},
"effects": "Reads state through GET /api/workspaces/{workspaceSlug}/projects/{projectId}/sync without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/workspaces/*/projects/*/sync",
"evidence": "Matched to a served route extracted from canonical staging source."
}
}
],
"action_coverage": {
"status": "ok",
"served_routes": 51,
"matched_actions": 47,
"declared_unserved_actions": [],
"coverage_excluded_actions": [],
"uncatalogued_routes": [],
"ignored_routes": 4,
"configured_exclusions": 0,
"configuration_findings": [],
"notes": []
},
"runtime_contract_audit": {
"status": "verified",
"actions": 47,
"contracts": 47,
"contract_module": "topolo.action-contracts.mjs",
"validator_sources": [
"apps/api/src/index.ts"
],
"authorization_sources": [
"apps/api/src/index.ts"
],
"findings": []
}
}
],
"mobile_contracts": [
{
"source_path": "apps/TopoloSocialStudio/topolo.mobile-experience.json",
"contract": {
"version": "2026-07-03",
"status": "approved",
"mode": "native_capability",
"appId": "app_topolo_social_studio",
"localizationNamespace": "studio",
"permissions": [
"workspace:read",
"workspace:write",
"social-studio:projects:read",
"social-studio:projects:write"
],
"offlinePolicy": "read_through_cache",
"fallbackPath": "/app/projects",
"auth": {
"audience": "topolo-social-studio",
"scopes": [
"workspace:read",
"workspace:write",
"social-studio:projects:read",
"social-studio:projects:write"
],
"orgContext": "required"
},
"routes": [
{
"path": "/app/projects",
"apiPath": "/api/workspaces/:workspaceSlug/projects",
"title": "Projects",
"titleKey": "studio.mobile.routes.projects.title",
"template": "record.list",
"dataSource": "studio.projects.list",
"detailRoute": "/app/projects/:projectId/brief",
"actions": [
{
"id": "studio.projects.create",
"title": "Create project",
"titleKey": "studio.mobile.actions.projectsCreate.title",
"type": "record.create",
"permission": "social-studio:projects:write",
"method": "POST",
"path": "/api/workspaces/:workspaceSlug/projects",
"fields": [
{
"key": "title",
"label": "Title",
"type": "text",
"required": true
},
{
"key": "objective",
"label": "Objective",
"type": "textarea"
}
]
}
]
},
{
"path": "/app/projects/:projectId/brief",
"apiPath": "/api/workspaces/:workspaceSlug/projects/:projectId/planning",
"title": "Project brief",
"titleKey": "studio.mobile.routes.projectBrief.title",
"template": "record.detail",
"dataSource": "studio.projects.detail",
"actions": [
{
"id": "studio.brief.update",
"title": "Update brief",
"titleKey": "studio.mobile.actions.briefUpdate.title",
"type": "record.update",
"permission": "social-studio:projects:write",
"method": "PATCH",
"path": "/api/workspaces/:workspaceSlug/projects/:projectId/structured-brief",
"fields": [
{
"key": "title",
"label": "Title",
"type": "text"
},
{
"key": "objective",
"label": "Objective",
"type": "textarea"
},
{
"key": "audience",
"label": "Audience",
"type": "text"
},
{
"key": "styleNotes",
"label": "Style notes",
"type": "textarea"
}
]
},
{
"id": "studio.planning.generate",
"title": "Generate creative plan",
"titleKey": "studio.mobile.actions.planningGenerate.title",
"type": "record.create",
"permission": "social-studio:projects:write",
"method": "POST",
"path": "/api/workspaces/:workspaceSlug/projects/:projectId/planning/generate"
}
]
},
{
"path": "/app/projects/:projectId/review",
"apiPath": "/api/workspaces/:workspaceSlug/projects/:projectId/sync",
"title": "Review",
"titleKey": "studio.mobile.routes.review.title",
"template": "activity.timeline",
"dataSource": "studio.projects.review"
}
]
}
}
],
"package_manifests": [],
"deployment_configs": [],
"source_signals": {
"api_routes": [
{
"method": "OPTIONS",
"path": "*",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "ALL",
"path": "/__seed/*",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "ALL",
"path": "/healthz",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "ALL",
"path": "/readyz",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "ALL",
"path": "/api/bootstrap",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "GET",
"path": "/api/organizations/data/export",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "DELETE",
"path": "/api/organizations/data/erase",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "GET",
"path": "/api/whoami",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "GET",
"path": "/api/widget",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "DELETE",
"path": "/api/workspaces/:workspaceSlug",
"source_path": "apps/TopoloSocialStudio/apps/api/src/routes.ts"
},
{
"method": "LITERAL",
"path": "/health",
"source_path": "apps/TopoloSocialStudio/apps/jobs/src/index.ts"
}
],
"ui_routes": [],
"test_cases": [],
"database_tables": []
},
"documentation": {
"declared_paths": [
"internal/apps/social-studio",
"applications/social-studio"
],
"present_paths": [
"internal/apps/social-studio",
"applications/social-studio"
],
"missing_paths": [],
"human_reference": "/systems/topolo-social-studio",
"machine_reference": "/machine/systems/topolo-social-studio.json",
"action_examples": 47,
"action_schemas": 47
},
"source_findings": []
}