application · active
Socialize
Social publishing and campaign tooling with brand-scoped workflows, Nexus-authoritative connected-provider state, and local reference-only target selection.
Documentation map
- Socialize — Public overview of the social publishing platform, brand-scoped resource bindings, and content operations.
Authority and runtime
- System ID
socialize- App IDs
- app_topolo_socialize
- Owners
- socialize
- Repositories
- apps/TopoloSocialize
- Hosts
- https://socialize.topolo.app, https://socialize-api.topolo.app, https://socialize.stg.topolo.us, https://socialize-api.stg.topolo.us
- Dependencies
- topolo-auth, topolo-brand, topolo-nexus, topolo-one, applications-packages
Security and data ownership
- Risk tier
- high
- Tenant isolation
- organization_scoped
- Privacy classification
- restricted
- Storage
- d1, external_provider, kv, r2
- Export and deletion
- planned
- Enterprise ready
- no
Source-derived capability inventory
Source revisions: apps/TopoloSocialize@8a2994cc3a2d7b517df53e4a14f0fdb503ce8fe5
Declared actions: 173 · API routes: 198 · UI routes: 38
{
"id": "socialize",
"name": "Socialize",
"slug": "socialize",
"kind": "application",
"visibility": "public",
"repo_paths": [
"apps/TopoloSocialize"
],
"source_revisions": [
{
"source_path": "apps/TopoloSocialize",
"repository": "apps/TopoloSocialize",
"revision": "8a2994cc3a2d7b517df53e4a14f0fdb503ce8fe5",
"ref": "origin/staging"
}
],
"source_counts": {
"source_files": 445,
"test_files": 151,
"test_cases": 0,
"migration_files": 17,
"database_tables": 0,
"manifests": 1,
"deploy_targets": 3,
"actions": 173,
"mobile_contracts": 1,
"notifications": 9,
"package_manifests": 8,
"deployment_configs": 0
},
"manifests": [
{
"source_path": "apps/TopoloSocialize/topolo.app.json",
"service_slug": "socialize",
"name": "socialize",
"app_id": "app_topolo_socialize",
"compatibility_date": "2026-04-10",
"primary_target": null,
"environments": [
"development",
"production",
"staging"
],
"targets": [
{
"name": "web",
"kind": "worker",
"directory": "apps/web",
"main": "src/worker.ts",
"worker_name": "topolo-socialize",
"subdomain": "socialize",
"healthcheck_path": null,
"variable_names": [
"AUTH_API_URL",
"INSIGHTS_SITE_KEY"
],
"secret_names": [],
"bindings": [
{
"kind": "services",
"binding": "API",
"target": null
},
{
"kind": "services",
"binding": "API",
"target": null
},
{
"kind": "services",
"binding": "API",
"target": null
}
]
},
{
"name": "api",
"kind": "worker",
"directory": "apps/api",
"main": "dist/index.js",
"worker_name": "topolo-socialize-api",
"subdomain": "socialize-api",
"healthcheck_path": "/health",
"variable_names": [
"API_URL",
"APP_URL",
"ENVIRONMENT",
"NEXUS_GATEWAY_URL",
"ORG_SLUG",
"TIKTOK_USE_SANDBOX",
"TOPOLO_NOTIFY_URL",
"TOPOLO_SEED_APP_ID"
],
"secret_names": [],
"bindings": [
{
"kind": "d1",
"binding": "SOCIALIZE_BRANDS_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_CONTENT_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_INTEGRATIONS_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_ANALYTICS_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_AI_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_AUDIT_DB",
"target": null
},
{
"kind": "r2",
"binding": "MEDIA_BUCKET",
"target": null
},
{
"kind": "r2",
"binding": "BACKUP_BUCKET",
"target": null
},
{
"kind": "kv",
"binding": "SESSIONS_KV",
"target": null
},
{
"kind": "kv",
"binding": "CACHE_KV",
"target": null
},
{
"kind": "vectorize",
"binding": "VOICE_CONTEXT_INDEX",
"target": null
},
{
"kind": "services",
"binding": "BRAND_API",
"target": null
}
]
},
{
"name": "jobs",
"kind": "worker",
"directory": "apps/scheduler",
"main": "dist/index.js",
"worker_name": "topolo-socialize-scheduler",
"subdomain": null,
"healthcheck_path": "/health",
"variable_names": [
"API_URL",
"APP_URL",
"ENVIRONMENT",
"NEXUS_GATEWAY_URL",
"TOPOLO_NOTIFY_URL"
],
"secret_names": [],
"bindings": [
{
"kind": "d1",
"binding": "SOCIALIZE_BRANDS_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_CONTENT_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_INTEGRATIONS_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_ANALYTICS_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_AI_DB",
"target": null
},
{
"kind": "d1",
"binding": "SOCIALIZE_AUDIT_DB",
"target": null
},
{
"kind": "r2",
"binding": "MEDIA_BUCKET",
"target": null
},
{
"kind": "kv",
"binding": "SESSIONS_KV",
"target": null
},
{
"kind": "kv",
"binding": "CACHE_KV",
"target": null
}
]
}
],
"notifications": [
"socialize.brand.invitation.created",
"socialize.campaign.completed",
"socialize.campaign.scheduled",
"socialize.integration.disconnected",
"socialize.join_request.created",
"socialize.post.approval_requested",
"socialize.post.manual_publish_due",
"socialize.post.publish_failed",
"socialize.post.published"
],
"notification_contract": {
"source_path": "topolo.notification-contracts.json",
"role": "producer",
"schema_version": 1,
"owner_app_id": "app_topolo_socialize",
"events": [
{
"type": "socialize.brand.invitation.created",
"version": 1,
"description": "An external collaborator was invited to a Socialize brand.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"recipient_email",
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"actor_id": {
"type": "string"
},
"actor_display_name": {
"type": "string"
},
"recipient_email": {
"type": "string",
"format": "email"
},
"thread_key": {
"type": "string"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"action_context": {
"type": "object"
}
},
"additionalProperties": true
},
"examples": [
{
"recipient_email": "collaborator@example.com",
"title": "An external collaborator was invited to a Socialize brand.",
"body": "Open the owning app to review this event.",
"object_id": "object_123",
"occurred_at": "2026-07-17T00:00:00.000Z"
}
],
"dataClassification": "confidential",
"recipients": {
"modes": [
"external"
],
"externalAddress": "required"
},
"idempotency": {
"required": true,
"pattern": "^socialize:brand-invite:"
},
"sensitiveFields": [
"recipient_email",
"cta_url"
]
},
{
"type": "socialize.campaign.completed",
"version": 1,
"description": "Socialize recorded the durable campaign completed transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Campaign completed",
"body": "The campaign reached its durable completed state.",
"object_type": "campaign",
"object_id": "campaign_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:campaign:completed:"
}
},
{
"type": "socialize.campaign.scheduled",
"version": 1,
"description": "Socialize recorded the durable campaign scheduled transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Campaign scheduled",
"body": "The campaign schedule and its post runs were persisted.",
"object_type": "campaign",
"object_id": "campaign_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:campaign:scheduled:"
}
},
{
"type": "socialize.integration.disconnected",
"version": 1,
"description": "Socialize recorded the durable integration disconnected transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Social account disconnected",
"body": "A connected social account was durably disconnected.",
"object_type": "integration",
"object_id": "connection_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:integration:disconnected:"
}
},
{
"type": "socialize.join_request.created",
"version": 1,
"description": "Socialize recorded the durable join request created transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "New brand join request",
"body": "A new request to join the brand was persisted.",
"object_type": "join_request",
"object_id": "join_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "confidential",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:join-request:created:"
},
"sensitiveFields": [
"requester_email"
]
},
{
"type": "socialize.post.approval_requested",
"version": 1,
"description": "Socialize recorded the durable post approval requested transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Post ready for approval",
"body": "A persisted post suggestion is ready for review.",
"object_type": "post",
"object_id": "post_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:post:approval-requested:"
}
},
{
"type": "socialize.post.manual_publish_due",
"version": 1,
"description": "A post set to manual publishing reached its scheduled time. Socialize will not publish it — the Instagram Content Publishing API cannot attach sticker-based stories — so the operator is reminded to post it by hand.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
},
"placement": {
"type": "string"
},
"scheduled_for": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Post ready for you to publish",
"body": "An instagram story is scheduled now and is set to manual publishing. Post it on the platform yourself.",
"object_type": "post",
"object_id": "post_123",
"occurred_at": "2026-09-01T03:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:post:manual-publish-due:"
}
},
{
"type": "socialize.post.publish_failed",
"version": 1,
"description": "Socialize recorded the durable post publish failed transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Post publishing failed",
"body": "The publish failure was persisted and needs attention.",
"object_type": "post",
"object_id": "post_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:post:publish-failed:"
}
},
{
"type": "socialize.post.published",
"version": 1,
"description": "Socialize recorded the durable post published transition.",
"status": "published",
"payloadSchema": {
"type": "object",
"required": [
"title",
"body",
"object_id",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"enum": [
"notification",
"action"
]
},
"action_kind": {
"enum": [
"open",
"review",
"approve",
"resolve",
"complete"
]
},
"action_status": {
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"cta_url": {
"type": "string",
"format": "uri"
},
"cta_label": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"info",
"success",
"warning",
"critical"
]
},
"object_type": {
"type": "string"
},
"object_id": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"thread_key": {
"type": "string"
},
"campaign_name": {
"type": "string"
},
"window_start_date": {
"type": "string",
"format": "date-time"
},
"window_end_date": {
"type": "string",
"format": "date-time"
},
"platform": {
"type": "string"
},
"platform_post_id": {
"type": [
"string",
"null"
]
},
"disconnect_event_id": {
"type": "string"
},
"requester_name": {
"type": [
"string",
"null"
]
},
"requester_email": {
"type": "string",
"format": "email"
},
"source_type": {
"type": "string"
},
"failure_code": {
"type": "string"
}
},
"additionalProperties": true
},
"examples": [
{
"title": "Post published",
"body": "The post reached its durable published state.",
"object_type": "post",
"object_id": "post_123",
"occurred_at": "2026-07-20T00:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^socialize:post:published:"
}
}
]
},
"actions": [
{
"name": "widget.get",
"title": "Get widget summary",
"description": "Get the TopoloOne widget summary for this service.",
"method": "GET",
"path": "/api/widget",
"permission": "dashboard: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 socialize --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": "analytics.summary",
"title": "Get analytics summary",
"description": "Get social analytics summary.",
"method": "GET",
"path": "/api/analytics/summary",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"startDate": {
"type": "string",
"minLength": 1
},
"endDate": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get analytics summary.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"days": 1,
"startDate": "example",
"endDate": "example"
},
"cli_example": [
"topolo actions --service socialize --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/analytics/summary",
"body": null
},
"effects": "Reads state through GET /api/analytics/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/analytics/summary",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.list",
"title": "List posts",
"description": "List social posts.",
"method": "GET",
"path": "/api/posts",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"authorId": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"enum": [
"draft",
"scheduled",
"published",
"failed",
"cancelled",
"archived"
]
},
"platform": {
"type": "string",
"enum": [
"twitter",
"x",
"linkedin",
"linkedin_company",
"facebook",
"instagram",
"threads",
"tiktok",
"youtube"
]
},
"campaignId": {
"type": "string",
"minLength": 1
},
"threadId": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List posts.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"authorId": "example",
"status": "draft",
"platform": "twitter"
},
"cli_example": [
"topolo actions --service socialize --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/posts",
"body": null
},
"effects": "Reads state through GET /api/posts 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/posts",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.create",
"title": "Create post",
"description": "Create a social post.",
"method": "POST",
"path": "/api/posts",
"permission": "posts:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"content": {
"type": "string",
"minLength": 1,
"maxLength": 63206
},
"platform": {
"type": "string",
"enum": [
"twitter",
"x",
"linkedin",
"linkedin_company",
"facebook",
"instagram",
"threads",
"tiktok",
"youtube"
]
},
"scheduledFor": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"publishNow": {
"type": "boolean"
},
"mediaUrl": {
"type": "string",
"format": "uri"
},
"mediaType": {
"type": "string",
"enum": [
"image",
"video",
"gif"
]
},
"placement": {
"type": "string",
"enum": [
"feed",
"story"
]
},
"publishMode": {
"type": "string",
"enum": [
"auto",
"manual"
]
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"content",
"platform"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string"
},
"authorId": {
"type": "string",
"minLength": 1
},
"brandId": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string"
},
"status": {
"type": "string"
},
"scheduledFor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publishedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failureCode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failureMessage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lastPublishAttemptAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lastPublishResultAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaType": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaThumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"content",
"authorId",
"brandId",
"platform",
"status",
"scheduledFor",
"publishedAt",
"failedAt",
"failureCode",
"failureMessage",
"lastPublishAttemptAt",
"lastPublishResultAt",
"mediaUrl",
"mediaType",
"mediaThumbnailUrl",
"metadata",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"destructive": false,
"agentAccess": "confirm",
"agentContract": {
"docsUrl": "https://docs.topolo.app/applications/socialize#posts",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"effects": [
"Creates one draft or scheduled social post for the active brand."
],
"errors": [
{
"status": 403,
"code": "forbidden",
"recovery": "Select a brand bound to the credential and retry."
}
],
"verify": [
"Call posts.get with the returned id and confirm status, platform, and scheduledFor."
],
"nextActionIds": [
"app_topolo_socialize.posts.get"
],
"examples": [
{
"title": "Schedule an X post",
"description": "Use an ISO timestamp in the future for the active brand.",
"input": {
"content": "A concise launch update.",
"platform": "twitter",
"scheduledFor": "2026-08-01T09:00:00.000Z"
}
}
]
},
"authorizationMode": "static",
"documentation": {
"example_input": {
"content": "A concise launch update.",
"platform": "twitter",
"scheduledFor": "2026-08-01T09:00:00.000Z"
},
"cli_example": [
"topolo actions --service socialize --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/posts",
"body": {
"content": "A concise launch update.",
"platform": "twitter",
"scheduledFor": "2026-08-01T09:00:00.000Z"
}
},
"effects": "Creates one draft or scheduled social post for the active brand.",
"verification": [
"Call posts.get with the returned id and confirm status, platform, and scheduledFor."
],
"recovery": [
"403 forbidden: Select a brand bound to the credential and retry."
],
"docs_url": "https://docs.topolo.app/applications/socialize#posts",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"next_action_ids": [
"app_topolo_socialize.posts.get"
],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/posts",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.get",
"title": "Posts Get",
"description": "Call GET /api/posts/{id}.",
"method": "GET",
"path": "/api/posts/{id}",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string"
},
"authorId": {
"type": "string",
"minLength": 1
},
"brandId": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string"
},
"status": {
"type": "string"
},
"scheduledFor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"publishedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failureCode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"failureMessage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lastPublishAttemptAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lastPublishResultAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaType": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaThumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"metadata": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"content",
"authorId",
"brandId",
"platform",
"status",
"scheduledFor",
"publishedAt",
"failedAt",
"failureCode",
"failureMessage",
"lastPublishAttemptAt",
"lastPublishResultAt",
"mediaUrl",
"mediaType",
"mediaThumbnailUrl",
"metadata",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/posts/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/posts/{id} 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/posts/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.update",
"title": "Posts Update",
"description": "Call PUT /api/posts/{id}.",
"method": "PUT",
"path": "/api/posts/{id}",
"permission": "posts:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 10000
},
"scheduledFor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"draft",
"scheduled",
"published",
"failed",
"cancelled"
]
},
"unschedule": {
"type": "boolean"
},
"platform": {
"type": "string",
"enum": [
"twitter",
"x",
"linkedin",
"linkedin_company",
"facebook",
"instagram",
"threads",
"tiktok",
"youtube"
]
},
"metadata": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"mediaUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaType": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"placement": {
"anyOf": [
{
"type": "string",
"enum": [
"feed",
"story"
]
},
{
"type": "null"
}
]
},
"publishMode": {
"anyOf": [
{
"type": "string",
"enum": [
"auto",
"manual"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Posts Update.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/posts/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/posts/{id}. 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": "PUT /api/posts/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.delete",
"title": "Posts Delete",
"description": "Call DELETE /api/posts/{id}.",
"method": "DELETE",
"path": "/api/posts/{id}",
"permission": "posts:write",
"readOnly": false,
"destructive": true,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Posts Delete.",
"additionalProperties": true
},
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/posts/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/posts/{id}. 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/posts/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.publish",
"title": "Posts Publish",
"description": "Call POST /api/posts/{id}/publish.",
"method": "POST",
"path": "/api/posts/{id}/publish",
"permission": "posts:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Posts Publish.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/posts/00000000-0000-4000-8000-000000000000/publish",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/posts/{id}/publish. 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/posts/*/publish",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.list",
"title": "List campaigns",
"description": "List social campaigns.",
"method": "GET",
"path": "/api/campaigns",
"permission": "calendar:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"createdBy": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"enum": [
"draft",
"scheduled",
"active",
"completed",
"cancelled"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List campaigns.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"createdBy": "example",
"status": "draft",
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/campaigns",
"body": null
},
"effects": "Reads state through GET /api/campaigns 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/campaigns",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.create",
"title": "Create campaign",
"description": "Create a social campaign.",
"method": "POST",
"path": "/api/campaigns",
"permission": "calendar:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 1000
},
"platforms": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"twitter",
"linkedin",
"facebook",
"instagram",
"tiktok",
"threads",
"youtube"
]
}
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"weight": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"postId": {
"type": "string",
"minLength": 1
},
"content": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 63206
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"media": {
"type": "array",
"items": {
"type": "string"
}
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"text"
],
"additionalProperties": false
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name",
"weight"
],
"additionalProperties": false
}
},
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"windowStartDate": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"windowEndDate": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"timezone": {
"type": "string"
},
"scheduleDays": {
"type": "array",
"items": {
"type": "string",
"enum": [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
]
}
},
"scheduleTimes": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
}
},
"status": {
"type": "string",
"enum": [
"draft",
"scheduled"
]
}
},
"required": [
"name",
"platforms"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"brandId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"createdBy": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string"
},
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"platforms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"platform",
"enabled",
"settings"
],
"additionalProperties": false
}
},
"timezone": {
"type": "string"
},
"scheduleDays": {
"type": "array",
"items": {
"type": "string"
}
},
"scheduleTimes": {
"type": "array",
"items": {
"type": "string"
}
},
"windowStartDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"windowEndDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"paused": {
"type": "boolean"
},
"pausedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"resumedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"postId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"name",
"weight",
"postId"
],
"additionalProperties": false
}
},
"scheduledPosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string"
},
"scheduledFor": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"platform",
"scheduledFor",
"status"
],
"additionalProperties": false
}
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"createdBy",
"status",
"windowStartDate",
"windowEndDate",
"paused",
"pausedAt",
"resumedAt",
"variants",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"destructive": false,
"agentAccess": "confirm",
"agentContract": {
"docsUrl": "https://docs.topolo.app/applications/socialize#campaigns",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"effects": [
"Creates campaign variants for the active brand.",
"When status=scheduled, materializes one durable post per cadence slot and enabled platform."
],
"errors": [
{
"status": 400,
"code": "validation_error",
"recovery": "Correct platform, variant weights, window, timezone, days, and times."
}
],
"verify": [
"Call campaigns.get and posts.list with campaignId; scheduled campaigns must return concrete scheduled posts."
],
"nextActionIds": [
"app_topolo_socialize.campaigns.get",
"app_topolo_socialize.posts.list"
],
"examples": [
{
"title": "Create and schedule a launch campaign",
"description": "Materialize weekday posts at 09:00 in the campaign timezone.",
"input": {
"name": "Launch campaign",
"status": "scheduled",
"platforms": [
"twitter",
"linkedin"
],
"variants": [
{
"name": "Primary",
"weight": 100,
"content": {
"text": "Launch update"
}
}
],
"windowStartDate": "2026-08-01T00:00:00.000Z",
"windowEndDate": "2026-08-08T23:59:59.000Z",
"timezone": "Asia/Dubai",
"scheduleDays": [
"monday",
"wednesday",
"friday"
],
"scheduleTimes": [
"09:00"
]
}
}
]
},
"authorizationMode": "static",
"documentation": {
"example_input": {
"name": "Launch campaign",
"status": "scheduled",
"platforms": [
"twitter",
"linkedin"
],
"variants": [
{
"name": "Primary",
"weight": 100,
"content": {
"text": "Launch update"
}
}
],
"windowStartDate": "2026-08-01T00:00:00.000Z",
"windowEndDate": "2026-08-08T23:59:59.000Z",
"timezone": "Asia/Dubai",
"scheduleDays": [
"monday",
"wednesday",
"friday"
],
"scheduleTimes": [
"09:00"
]
},
"cli_example": [
"topolo actions --service socialize --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/campaigns",
"body": {
"name": "Launch campaign",
"status": "scheduled",
"platforms": [
"twitter",
"linkedin"
],
"variants": [
{
"name": "Primary",
"weight": 100,
"content": {
"text": "Launch update"
}
}
],
"windowStartDate": "2026-08-01T00:00:00.000Z",
"windowEndDate": "2026-08-08T23:59:59.000Z",
"timezone": "Asia/Dubai",
"scheduleDays": [
"monday",
"wednesday",
"friday"
],
"scheduleTimes": [
"09:00"
]
}
},
"effects": "Creates campaign variants for the active brand. When status=scheduled, materializes one durable post per cadence slot and enabled platform.",
"verification": [
"Call campaigns.get and posts.list with campaignId; scheduled campaigns must return concrete scheduled posts."
],
"recovery": [
"400 validation_error: Correct platform, variant weights, window, timezone, days, and times."
],
"docs_url": "https://docs.topolo.app/applications/socialize#campaigns",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"next_action_ids": [
"app_topolo_socialize.campaigns.get",
"app_topolo_socialize.posts.list"
],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/campaigns",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.schedule",
"title": "Campaigns Schedule",
"description": "Call POST /api/campaigns/{id}/schedule.",
"method": "POST",
"path": "/api/campaigns/{id}/schedule",
"permission": "calendar:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"windowStartDate": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"windowEndDate": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
}
},
"required": [
"id",
"windowStartDate",
"windowEndDate"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"brandId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"createdBy": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string"
},
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"platforms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"platform",
"enabled",
"settings"
],
"additionalProperties": false
}
},
"timezone": {
"type": "string"
},
"scheduleDays": {
"type": "array",
"items": {
"type": "string"
}
},
"scheduleTimes": {
"type": "array",
"items": {
"type": "string"
}
},
"windowStartDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"windowEndDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"paused": {
"type": "boolean"
},
"pausedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"resumedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"postId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"name",
"weight",
"postId"
],
"additionalProperties": false
}
},
"scheduledPosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string"
},
"scheduledFor": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"platform",
"scheduledFor",
"status"
],
"additionalProperties": false
}
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"createdBy",
"status",
"windowStartDate",
"windowEndDate",
"paused",
"pausedAt",
"resumedAt",
"variants",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"destructive": false,
"agentAccess": "confirm",
"agentContract": {
"docsUrl": "https://docs.topolo.app/applications/socialize#campaigns",
"resource": {
"kind": "campaign",
"idPath": "id"
},
"effects": [
"Transitions a draft campaign to scheduled and idempotently materializes its publish occurrences."
],
"errors": [
{
"status": 400,
"code": "validation_error",
"recovery": "Ensure the campaign has content variants, enabled platforms, and cadence slots inside the window."
},
{
"status": 403,
"code": "forbidden",
"recovery": "Use a campaign owned by the credential-bound brand."
}
],
"verify": [
"Confirm scheduledPosts is non-empty and call posts.list with campaignId."
],
"nextActionIds": [
"app_topolo_socialize.posts.list",
"app_topolo_socialize.brands.publishing_readiness.get"
],
"examples": [
{
"title": "Schedule a prepared campaign",
"description": "Use the campaign id returned by campaigns.create.",
"input": {
"id": "campaign_example",
"windowStartDate": "2026-08-01T00:00:00.000Z",
"windowEndDate": "2026-08-08T23:59:59.000Z"
}
}
]
},
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "campaign_example",
"windowStartDate": "2026-08-01T00:00:00.000Z",
"windowEndDate": "2026-08-08T23:59:59.000Z"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/campaign_example/schedule",
"body": {
"id": "campaign_example",
"windowStartDate": "2026-08-01T00:00:00.000Z",
"windowEndDate": "2026-08-08T23:59:59.000Z"
}
},
"effects": "Transitions a draft campaign to scheduled and idempotently materializes its publish occurrences.",
"verification": [
"Confirm scheduledPosts is non-empty and call posts.list with campaignId."
],
"recovery": [
"400 validation_error: Ensure the campaign has content variants, enabled platforms, and cadence slots inside the window.",
"403 forbidden: Use a campaign owned by the credential-bound brand."
],
"docs_url": "https://docs.topolo.app/applications/socialize#campaigns",
"resource": {
"kind": "campaign",
"idPath": "id"
},
"next_action_ids": [
"app_topolo_socialize.posts.list",
"app_topolo_socialize.brands.publishing_readiness.get"
],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/campaigns/*/schedule",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.list",
"title": "List brands",
"description": "List social brands/accounts.",
"method": "GET",
"path": "/api/brands",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List brands.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/brands",
"body": null
},
"effects": "Reads state through GET /api/brands 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/brands",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.create",
"title": "Create brand",
"description": "Create a social brand/account.",
"method": "POST",
"path": "/api/brands",
"permission": "workspace:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 500
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"logoUrl": {
"type": "string"
},
"memberCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"organizationId": {
"type": "string",
"minLength": 1
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"description",
"logoUrl",
"memberCount",
"organizationId",
"createdAt",
"updatedAt"
],
"additionalProperties": false
}
},
"required": [
"data"
],
"additionalProperties": false
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"agentContract": {
"docsUrl": "https://docs.topolo.app/platform/workspaces/",
"resource": {
"kind": "workspace",
"idPath": "data.id"
},
"effects": [
"Creates canonical workspace identity in Topolo Auth for Socialize.",
"Creates the Socialize-owned brand profile mirror for that workspace."
],
"errors": [
{
"status": 403,
"code": "forbidden",
"recovery": "Confirm the caller has workspace:write for Socialize and the organization can create another workspace."
},
{
"status": 409,
"code": "workspace_creation_conflict",
"recovery": "List Socialize brands before retrying so a successful creation is not duplicated."
}
],
"verify": [
"Call brands.list and confirm the returned workspace id appears exactly once."
],
"nextActionIds": [
"app_topolo_socialize.brands.list"
],
"rollbackActionId": "app_topolo_socialize.workspaces.delete",
"examples": [
{
"title": "Create a founder brand",
"description": "Auth generates the stable workspace slug; Socialize stores only its app-owned profile.",
"input": {
"name": "Ashley Lane - Topolo Founder",
"description": "Founder-led social presence for Topolo."
}
}
]
},
"documentation": {
"example_input": {
"name": "Ashley Lane - Topolo Founder",
"description": "Founder-led social presence for Topolo."
},
"cli_example": [
"topolo actions --service socialize --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/brands",
"body": {
"name": "Ashley Lane - Topolo Founder",
"description": "Founder-led social presence for Topolo."
}
},
"effects": "Creates canonical workspace identity in Topolo Auth for Socialize. Creates the Socialize-owned brand profile mirror for that workspace.",
"verification": [
"Call brands.list and confirm the returned workspace id appears exactly once."
],
"recovery": [
"403 forbidden: Confirm the caller has workspace:write for Socialize and the organization can create another workspace.",
"409 workspace_creation_conflict: List Socialize brands before retrying so a successful creation is not duplicated."
],
"docs_url": "https://docs.topolo.app/platform/workspaces/",
"resource": {
"kind": "workspace",
"idPath": "data.id"
},
"next_action_ids": [
"app_topolo_socialize.brands.list"
],
"rollback_action_id": "app_topolo_socialize.workspaces.delete"
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/brands",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "workspaces.delete",
"title": "Delete workspace",
"description": "Delete an empty non-default Socialize workspace.",
"method": "DELETE",
"path": "/api/workspaces/{id}",
"permission": "workspace:delete",
"authorizationMode": "static",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"target": "api",
"destructive": true,
"requiresConfirmation": true,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/workspaces/{id}. 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": "brands.get",
"title": "Get brand",
"description": "Get a brand by id.",
"method": "GET",
"path": "/api/brands/{id}",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brands/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/brands/{id} 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/brands/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.generate_content",
"title": "Generate content",
"description": "Generate social content with AI.",
"method": "POST",
"path": "/api/ai/generate-content",
"permission": "posts:write",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"prompt": {
"type": "string",
"minLength": 10,
"maxLength": 10000
},
"contentTypeId": {
"type": "string",
"minLength": 1
},
"maxTokens": {
"type": "number",
"minimum": 100,
"maximum": 4000
},
"temperature": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"channel": {
"type": "string",
"enum": [
"twitter",
"x",
"linkedin",
"linkedin_company",
"facebook",
"instagram",
"threads",
"tiktok",
"youtube"
]
},
"audience": {
"type": "string",
"maxLength": 500
},
"objective": {
"type": "string",
"maxLength": 500
},
"claimIds": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"ctaId": {
"type": "string",
"minLength": 1
}
},
"required": [
"prompt"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Generate content.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"prompt": "examplexxx"
},
"cli_example": [
"topolo actions --service socialize --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/ai/generate-content",
"body": {
"prompt": "examplexxx"
}
},
"effects": "May change state through POST /api/ai/generate-content. 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/ai/generate-content",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.archive",
"title": "Archive post",
"description": "Archive a Socialize post.",
"method": "POST",
"path": "/api/posts/{id}/archive",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Archive post.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/posts/00000000-0000-4000-8000-000000000000/archive",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/posts/{id}/archive. 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/posts/*/archive",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.reschedule",
"title": "Reschedule post",
"description": "Reschedule a Socialize post.",
"method": "PATCH",
"path": "/api/posts/{id}/reschedule",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"scheduledFor": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"scheduledFor"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Reschedule post.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"scheduledFor": "example"
},
"cli_example": [
"topolo actions --service socialize --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/posts/00000000-0000-4000-8000-000000000000/reschedule",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"scheduledFor": "example"
}
},
"effects": "May change state through PATCH /api/posts/{id}/reschedule. 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/posts/*/reschedule",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "posts.toggle_pause",
"title": "Toggle post pause",
"description": "Toggle pause on a Socialize post.",
"method": "PATCH",
"path": "/api/posts/{id}/toggle-pause",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"paused": {
"type": "boolean"
}
},
"required": [
"id",
"paused"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Toggle post pause.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"paused": true
},
"cli_example": [
"topolo actions --service socialize --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/posts/00000000-0000-4000-8000-000000000000/toggle-pause",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"paused": true
}
},
"effects": "May change state through PATCH /api/posts/{id}/toggle-pause. 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/posts/*/toggle-pause",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.queue.get",
"title": "Get content ops queue",
"description": "Get the Socialize content ops queue.",
"method": "GET",
"path": "/api/content-ops/queue",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"channel": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"approval_state": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get content ops queue.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"channel": "example",
"status": "example",
"approval_state": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/queue",
"body": null
},
"effects": "Reads state through GET /api/content-ops/queue 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/content-ops/queue",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.daily.get",
"title": "Get daily content ops",
"description": "Get Socialize daily content ops summary.",
"method": "GET",
"path": "/api/content-ops/daily",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"date": {
"type": "string",
"minLength": 1
},
"utc_offset": {
"type": "string",
"minLength": 1
},
"queue_limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get daily content ops.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"date": "example",
"utc_offset": "example",
"queue_limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/daily",
"body": null
},
"effects": "Reads state through GET /api/content-ops/daily 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/content-ops/daily",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.events.list",
"title": "List content ops events",
"description": "List Socialize content ops events.",
"method": "GET",
"path": "/api/content-ops/events",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"date": {
"type": "string",
"minLength": 1
},
"utc_offset": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List content ops events.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"date": "example",
"utc_offset": "example",
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/events",
"body": null
},
"effects": "Reads state through GET /api/content-ops/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/content-ops/events",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.deck.get",
"title": "Get content ops deck",
"description": "Get the Socialize content ops deck.",
"method": "GET",
"path": "/api/content-ops/deck",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platform": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get content ops deck.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"platform": "example",
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/deck",
"body": null
},
"effects": "Reads state through GET /api/content-ops/deck 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/content-ops/deck",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.items.get",
"title": "Get content ops item",
"description": "Get a Socialize content ops item.",
"method": "GET",
"path": "/api/content-ops/items/{id}",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get content ops item.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/items/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/content-ops/items/{id} 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/content-ops/items/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.items.update",
"title": "Update content ops item",
"description": "Update a Socialize content ops item.",
"method": "PATCH",
"path": "/api/content-ops/items/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"content"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update content ops item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"content": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/items/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"content": "example"
}
},
"effects": "May change state through PATCH /api/content-ops/items/{id}. 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/content-ops/items/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.items.approve",
"title": "Approve content ops item",
"description": "Approve a Socialize content ops item.",
"method": "POST",
"path": "/api/content-ops/items/{id}/approve",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Approve content ops item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/items/00000000-0000-4000-8000-000000000000/approve",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/content-ops/items/{id}/approve. 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/content-ops/items/*/approve",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.items.reject",
"title": "Reject content ops item",
"description": "Reject a Socialize content ops item.",
"method": "POST",
"path": "/api/content-ops/items/{id}/reject",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Reject content ops item.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/items/00000000-0000-4000-8000-000000000000/reject",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/content-ops/items/{id}/reject. 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/content-ops/items/*/reject",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.items.reschedule",
"title": "Reschedule content ops item",
"description": "Reschedule a Socialize content ops item.",
"method": "POST",
"path": "/api/content-ops/items/{id}/reschedule",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"scheduled_at": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"scheduled_at"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Reschedule content ops item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"scheduled_at": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/items/00000000-0000-4000-8000-000000000000/reschedule",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"scheduled_at": "example"
}
},
"effects": "May change state through POST /api/content-ops/items/{id}/reschedule. 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/content-ops/items/*/reschedule",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_ops.items.retry",
"title": "Retry content ops item",
"description": "Retry a Socialize content ops item.",
"method": "POST",
"path": "/api/content-ops/items/{id}/retry",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Retry content ops item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-ops/items/00000000-0000-4000-8000-000000000000/retry",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/content-ops/items/{id}/retry. 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/content-ops/items/*/retry",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.get",
"title": "Get campaign",
"description": "Get a Socialize campaign.",
"method": "GET",
"path": "/api/campaigns/{id}",
"permission": "calendar:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"brandId": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"createdBy": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string"
},
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"platforms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"platform",
"enabled",
"settings"
],
"additionalProperties": false
}
},
"timezone": {
"type": "string"
},
"scheduleDays": {
"type": "array",
"items": {
"type": "string"
}
},
"scheduleTimes": {
"type": "array",
"items": {
"type": "string"
}
},
"windowStartDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"windowEndDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"paused": {
"type": "boolean"
},
"pausedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"resumedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"weight": {
"type": "number"
},
"postId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"name",
"weight",
"postId"
],
"additionalProperties": false
}
},
"scheduledPosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string"
},
"scheduledFor": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"platform",
"scheduledFor",
"status"
],
"additionalProperties": false
}
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"id",
"name",
"createdBy",
"status",
"windowStartDate",
"windowEndDate",
"paused",
"pausedAt",
"resumedAt",
"variants",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/campaigns/{id} 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/campaigns/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.update",
"title": "Update campaign",
"description": "Update a Socialize campaign.",
"method": "PUT",
"path": "/api/campaigns/{id}",
"permission": "calendar:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string"
},
"status": {
"type": "string"
},
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"platforms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"platform",
"enabled",
"settings"
],
"additionalProperties": false
}
},
"windowStartDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"windowEndDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"timezone": {
"type": "string"
},
"scheduleDays": {
"type": "array",
"items": {
"type": "string"
}
},
"scheduleTimes": {
"type": "array",
"items": {
"type": "string"
}
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"weight": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"postId": {
"type": "string",
"minLength": 1
},
"content": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 63206
},
"mediaUrls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"media": {
"type": "array",
"items": {
"type": "string"
}
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"text"
],
"additionalProperties": false
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name",
"weight"
],
"additionalProperties": false
}
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update campaign.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/campaigns/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/campaigns/{id}. 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": "PUT /api/campaigns/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.delete",
"title": "Delete campaign",
"description": "Delete a Socialize campaign.",
"method": "DELETE",
"path": "/api/campaigns/{id}",
"permission": "calendar:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete campaign.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/campaigns/{id}. 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/campaigns/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.activate",
"title": "Activate campaign",
"description": "Activate a Socialize campaign.",
"method": "POST",
"path": "/api/campaigns/{id}/activate",
"permission": "calendar:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Activate campaign.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/activate",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/campaigns/{id}/activate. 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/campaigns/*/activate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.complete",
"title": "Complete campaign",
"description": "Complete a Socialize campaign.",
"method": "POST",
"path": "/api/campaigns/{id}/complete",
"permission": "calendar:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Complete campaign.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/complete",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/campaigns/{id}/complete. 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/campaigns/*/complete",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.cancel",
"title": "Cancel campaign",
"description": "Cancel a Socialize campaign.",
"method": "POST",
"path": "/api/campaigns/{id}/cancel",
"permission": "calendar:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Cancel campaign.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/cancel",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/campaigns/{id}/cancel. 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/campaigns/*/cancel",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.pause",
"title": "Pause campaign",
"description": "Pause a Socialize campaign.",
"method": "POST",
"path": "/api/campaigns/{id}/pause",
"permission": "calendar:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Pause campaign.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/pause",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/campaigns/{id}/pause. 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/campaigns/*/pause",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.resume",
"title": "Resume campaign",
"description": "Resume a Socialize campaign.",
"method": "POST",
"path": "/api/campaigns/{id}/resume",
"permission": "calendar:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Resume campaign.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/resume",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/campaigns/{id}/resume. 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/campaigns/*/resume",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.analytics.get",
"title": "Get campaign analytics",
"description": "Get Socialize campaign analytics.",
"method": "GET",
"path": "/api/campaigns/{id}/analytics",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"startDate": {
"type": "string",
"minLength": 1
},
"endDate": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get campaign analytics.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/analytics",
"body": null
},
"effects": "Reads state through GET /api/campaigns/{id}/analytics 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/campaigns/*/analytics",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.analytics_engine.get",
"title": "Get campaign analytics engine",
"description": "Get Socialize campaign analytics engine data.",
"method": "GET",
"path": "/api/campaigns/{id}/analytics/engine",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"startDate": {
"type": "string",
"minLength": 1
},
"endDate": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get campaign analytics engine.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/analytics/engine",
"body": null
},
"effects": "Reads state through GET /api/campaigns/{id}/analytics/engine 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/campaigns/*/analytics/engine",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "campaigns.variants.analytics.get",
"title": "Get campaign variant analytics",
"description": "Get Socialize campaign variant analytics.",
"method": "GET",
"path": "/api/campaigns/{id}/analytics/variants/{variantId}",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"variantId": {
"type": "string",
"minLength": 1
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"startDate": {
"type": "string",
"minLength": 1
},
"endDate": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"variantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get campaign variant analytics.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"variantId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/campaigns/00000000-0000-4000-8000-000000000000/analytics/variants/example",
"body": null
},
"effects": "Reads state through GET /api/campaigns/{id}/analytics/variants/{variantId} 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/campaigns/*/analytics/variants/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "scheduler.process",
"title": "Process scheduler",
"description": "Process Socialize scheduled posts.",
"method": "POST",
"path": "/api/scheduler/process",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Process scheduler.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/scheduler/process",
"body": {}
},
"effects": "May change state through POST /api/scheduler/process. 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/scheduler/process",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "scheduler.status.get",
"title": "Get scheduler status",
"description": "Get Socialize scheduler status.",
"method": "GET",
"path": "/api/scheduler/status",
"permission": "posts:read",
"readOnly": true,
"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 scheduler status.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/scheduler/status",
"body": null
},
"effects": "Reads state through GET /api/scheduler/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/scheduler/status",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "scheduler.drafts.from_trend",
"title": "Create draft from trend",
"description": "Create a Socialize scheduler draft from a trend.",
"method": "POST",
"path": "/api/scheduler/drafts/from-trend",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"trendId": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"enum": [
"linkedin",
"x",
"instagram",
"tiktok",
"youtube"
]
},
"content": {
"type": "string",
"minLength": 1
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
},
"scheduledFor": {
"type": "string",
"minLength": 1
}
},
"required": [
"trendId",
"platform",
"content"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create draft from trend.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"trendId": "example",
"platform": "linkedin",
"content": "example"
},
"cli_example": [
"topolo actions --service socialize --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/scheduler/drafts/from-trend",
"body": {
"trendId": "example",
"platform": "linkedin",
"content": "example"
}
},
"effects": "May change state through POST /api/scheduler/drafts/from-trend. 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/scheduler/drafts/from-trend",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.upload_url.create",
"title": "Create media upload URL",
"description": "Create a Socialize media upload URL.",
"method": "POST",
"path": "/api/media/upload",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"contentType": {
"type": "string",
"minLength": 1
},
"size": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 524288000
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"key": {
"type": "string",
"minLength": 1
}
},
"required": [
"filename",
"contentType",
"size"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create media upload URL.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"agentContract": {
"upload": {
"profile": "url-session",
"fileNameField": "filename",
"contentTypeField": "contentType",
"sizeField": "size",
"maxBytes": 524288000,
"acceptedContentTypes": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"video/mp4",
"video/webm",
"video/quicktime"
],
"uploadUrlPath": "uploadUrl",
"uploadMethod": "PUT",
"complete": {
"actionId": "app_topolo_socialize.media.upload.complete",
"inputField": "id",
"responsePath": "mediaId"
}
}
},
"documentation": {
"example_input": {
"filename": "example",
"contentType": "example",
"size": 1
},
"cli_example": [
"topolo actions --service socialize --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/media/upload",
"body": {
"filename": "example",
"contentType": "example",
"size": 1
}
},
"effects": "May change state through POST /api/media/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/media/upload",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.list",
"title": "List media",
"description": "List Socialize media.",
"method": "GET",
"path": "/api/media/list",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"search": {
"type": "string",
"minLength": 1
},
"collection": {
"type": "string",
"minLength": 1
},
"tag": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"all",
"image",
"video",
"audio",
"document"
]
},
"sort": {
"type": "string",
"enum": [
"date",
"name",
"size",
"type"
]
},
"order": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"status": {
"type": "string",
"enum": [
"active",
"archived",
"deleted"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List media.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"search": "example",
"collection": "example",
"tag": "example"
},
"cli_example": [
"topolo actions --service socialize --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/media/list",
"body": null
},
"effects": "Reads state through GET /api/media/list 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/media/list",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.bulk",
"title": "Run bulk media operation",
"description": "Run a Socialize bulk media operation.",
"method": "POST",
"path": "/api/media/bulk",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"mediaIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"action": {
"type": "string",
"enum": [
"delete",
"archive",
"restore",
"tag",
"move"
]
},
"tagId": {
"type": "string",
"minLength": 1
},
"collectionId": {
"type": "string",
"minLength": 1
}
},
"required": [
"mediaIds",
"action"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Run bulk media operation.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"mediaIds": [
"example"
],
"action": "delete"
},
"cli_example": [
"topolo actions --service socialize --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/media/bulk",
"body": {
"mediaIds": [
"example"
],
"action": "delete"
}
},
"effects": "May change state through POST /api/media/bulk. 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/media/bulk",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.tags.list",
"title": "List media tags",
"description": "List Socialize media tags.",
"method": "GET",
"path": "/api/media/tags",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List media tags.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/media/tags",
"body": null
},
"effects": "Reads state through GET /api/media/tags 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/media/tags",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.tags.create",
"title": "Create media tag",
"description": "Create a Socialize media tag.",
"method": "POST",
"path": "/api/media/tags",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create media tag.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"name": "example"
},
"cli_example": [
"topolo actions --service socialize --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/media/tags",
"body": {
"name": "example"
}
},
"effects": "May change state through POST /api/media/tags. 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/media/tags",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.tags.delete",
"title": "Delete media tag",
"description": "Delete a Socialize media tag.",
"method": "DELETE",
"path": "/api/media/tags/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete media tag.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/media/tags/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/media/tags/{id}. 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/media/tags/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.collections.list",
"title": "List media collections",
"description": "List Socialize media collections.",
"method": "GET",
"path": "/api/media/collections",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List media collections.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/media/collections",
"body": null
},
"effects": "Reads state through GET /api/media/collections 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/media/collections",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.collections.create",
"title": "Create media collection",
"description": "Create a Socialize media collection.",
"method": "POST",
"path": "/api/media/collections",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 500
},
"parentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create media collection.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"name": "example"
},
"cli_example": [
"topolo actions --service socialize --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/media/collections",
"body": {
"name": "example"
}
},
"effects": "May change state through POST /api/media/collections. 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/media/collections",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.collections.delete",
"title": "Delete media collection",
"description": "Delete a Socialize media collection.",
"method": "DELETE",
"path": "/api/media/collections/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete media collection.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/media/collections/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/media/collections/{id}. 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/media/collections/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.metadata.get",
"title": "Get media metadata",
"description": "Get Socialize media metadata.",
"method": "GET",
"path": "/api/media/{id}/metadata",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get media metadata.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/media/00000000-0000-4000-8000-000000000000/metadata",
"body": null
},
"effects": "Reads state through GET /api/media/{id}/metadata 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/media/*/metadata",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.upload.complete",
"title": "Complete media upload",
"description": "Complete a Socialize media upload.",
"method": "POST",
"path": "/api/media/{id}/complete",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Complete media upload.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/media/00000000-0000-4000-8000-000000000000/complete",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/media/{id}/complete. 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/media/*/complete",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "media.metadata.bulk_get",
"title": "Bulk get media metadata",
"description": "Bulk get Socialize media metadata.",
"method": "POST",
"path": "/api/media/metadata",
"permission": "posts:read",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"mediaIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": [
"mediaIds"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Bulk get media metadata.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"mediaIds": [
"example"
]
},
"cli_example": [
"topolo actions --service socialize --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/media/metadata",
"body": {
"mediaIds": [
"example"
]
}
},
"effects": "May change state through POST /api/media/metadata. 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/media/metadata",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.list",
"title": "List flags",
"description": "List Socialize flags.",
"method": "GET",
"path": "/api/flags",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List flags.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/flags",
"body": null
},
"effects": "Reads state through GET /api/flags 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/flags",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.create",
"title": "Create flag",
"description": "Create a Socialize flag.",
"method": "POST",
"path": "/api/flags",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean"
},
"rolloutPercentage": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"targetRoles": {
"type": "array",
"items": {
"type": "string"
}
},
"targetEmails": {
"type": "array",
"items": {
"type": "string"
}
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name",
"description"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create flag.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"name": "example",
"description": "example"
},
"cli_example": [
"topolo actions --service socialize --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/flags",
"body": {
"name": "example",
"description": "example"
}
},
"effects": "May change state through POST /api/flags. 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/flags",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.me.list",
"title": "List my flags",
"description": "List current-user Socialize flags.",
"method": "GET",
"path": "/api/flags/me",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List my flags.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/flags/me",
"body": null
},
"effects": "Reads state through GET /api/flags/me 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/flags/me",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.user.list",
"title": "List user flags",
"description": "List Socialize flags for a user.",
"method": "GET",
"path": "/api/flags/user/{id}",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"email": {
"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,}$"
},
"role": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List user flags.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/flags/user/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/flags/user/{id} 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/flags/user/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.user.set",
"title": "Set user flag",
"description": "Set a Socialize flag for a user.",
"method": "PUT",
"path": "/api/flags/{flagId}/users/{userId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"flagId": {
"type": "string",
"minLength": 1
},
"userId": {
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean"
}
},
"required": [
"flagId",
"userId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Set user flag.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"flagId": "example",
"userId": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/flags/example/users/example",
"body": {
"flagId": "example",
"userId": "example"
}
},
"effects": "May change state through PUT /api/flags/{flagId}/users/{userId}. 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": "PUT /api/flags/*/users/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.user.remove",
"title": "Remove user flag",
"description": "Remove a Socialize flag for a user.",
"method": "DELETE",
"path": "/api/flags/{flagId}/users/{userId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"flagId": {
"type": "string",
"minLength": 1
},
"userId": {
"type": "string",
"minLength": 1
}
},
"required": [
"flagId",
"userId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Remove user flag.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"flagId": "example",
"userId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/flags/example/users/example",
"body": null
},
"effects": "May change state through DELETE /api/flags/{flagId}/users/{userId}. 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/flags/*/users/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.get",
"title": "Get flag",
"description": "Get a Socialize flag.",
"method": "GET",
"path": "/api/flags/{id}",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get flag.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/flags/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/flags/{id} 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/flags/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.update",
"title": "Update flag",
"description": "Update a Socialize flag.",
"method": "PATCH",
"path": "/api/flags/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean"
},
"rolloutPercentage": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"targetRoles": {
"type": "array",
"items": {
"type": "string"
}
},
"targetEmails": {
"type": "array",
"items": {
"type": "string"
}
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update flag.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/flags/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PATCH /api/flags/{id}. 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/flags/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "flags.delete",
"title": "Delete flag",
"description": "Delete a Socialize flag.",
"method": "DELETE",
"path": "/api/flags/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete flag.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/flags/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/flags/{id}. 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/flags/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organization.create",
"title": "Create organization brand",
"description": "Create a Socialize organization brand.",
"method": "POST",
"path": "/api/organization",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 500
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create organization brand.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"name": "example"
},
"cli_example": [
"topolo actions --service socialize --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/organization",
"body": {
"name": "example"
}
},
"effects": "May change state through POST /api/organization. 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/organization",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organization.get",
"title": "Get organization brand",
"description": "Get the Socialize organization brand.",
"method": "GET",
"path": "/api/organization",
"permission": "accounts:read",
"readOnly": true,
"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 organization brand.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/organization",
"body": null
},
"effects": "Reads state through GET /api/organization 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/organization",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organization.accept_invite",
"title": "Accept organization invite",
"description": "Accept a Socialize organization invite.",
"method": "POST",
"path": "/api/organization/accept-invite",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"token": {
"type": "string",
"minLength": 10,
"maxLength": 100
}
},
"required": [
"token"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Accept organization invite.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"token": "examplexxx"
},
"cli_example": [
"topolo actions --service socialize --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/organization/accept-invite",
"body": {
"token": "examplexxx"
}
},
"effects": "May change state through POST /api/organization/accept-invite. 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/organization/accept-invite",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.update",
"title": "Update brand",
"description": "Update a Socialize brand.",
"method": "PUT",
"path": "/api/brands/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 500
},
"logoUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update brand.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/brands/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/brands/{id}. 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": "PUT /api/brands/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.transfer_organization",
"title": "Transfer brand organization",
"description": "Transfer a Socialize brand organization.",
"method": "POST",
"path": "/api/brands/{id}/transfer-organization",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"targetOrganizationId": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"id",
"targetOrganizationId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Transfer brand organization.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"targetOrganizationId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brands/00000000-0000-4000-8000-000000000000/transfer-organization",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"targetOrganizationId": "example"
}
},
"effects": "May change state through POST /api/brands/{id}/transfer-organization. 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/brands/*/transfer-organization",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.members.list",
"title": "List brand members",
"description": "List Socialize brand members.",
"method": "GET",
"path": "/api/brands/{id}/members",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List brand members.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brands/00000000-0000-4000-8000-000000000000/members",
"body": null
},
"effects": "Reads state through GET /api/brands/{id}/members 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/brands/*/members",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.join_requests.list",
"title": "List brand join requests",
"description": "List Socialize brand join requests.",
"method": "GET",
"path": "/api/brands/{id}/join-requests",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List brand join requests.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brands/00000000-0000-4000-8000-000000000000/join-requests",
"body": null
},
"effects": "Reads state through GET /api/brands/{id}/join-requests 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/brands/*/join-requests",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "join_requests.approve",
"title": "Approve join request",
"description": "Approve a Socialize join request.",
"method": "PUT",
"path": "/api/join-requests/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Approve join request.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/join-requests/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/join-requests/{id}. 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": "PUT /api/join-requests/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "join_requests.reject",
"title": "Reject join request",
"description": "Reject a Socialize join request.",
"method": "DELETE",
"path": "/api/join-requests/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Reject join request.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/join-requests/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/join-requests/{id}. 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/join-requests/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.get",
"title": "Get organization",
"description": "Get a Socialize organization.",
"method": "GET",
"path": "/api/organizations/{id}",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get organization.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/organizations/{id} 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/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.update",
"title": "Update organization",
"description": "Update a Socialize organization.",
"method": "PUT",
"path": "/api/organizations/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 500
},
"logoUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update organization.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/organizations/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/organizations/{id}. 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": "PUT /api/organizations/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.members.list",
"title": "List organization members",
"description": "List Socialize organization members.",
"method": "GET",
"path": "/api/organizations/{id}/members",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List organization members.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/members",
"body": null
},
"effects": "Reads state through GET /api/organizations/{id}/members 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/*/members",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.members.invite",
"title": "Invite organization member",
"description": "Invite a Socialize organization member.",
"method": "POST",
"path": "/api/organizations/{id}/members",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer"
]
},
"expiresInDays": {
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"required": [
"id",
"email",
"role"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Invite organization member.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"role": "admin"
},
"cli_example": [
"topolo actions --service socialize --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/organizations/00000000-0000-4000-8000-000000000000/members",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"role": "admin"
}
},
"effects": "May change state through POST /api/organizations/{id}/members. 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/organizations/*/members",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.members.remove",
"title": "Remove organization member",
"description": "Remove a Socialize organization member.",
"method": "DELETE",
"path": "/api/organizations/{id}/members/{userId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"userId": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"userId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Remove organization member.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"userId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/members/example",
"body": null
},
"effects": "May change state through DELETE /api/organizations/{id}/members/{userId}. 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/*/members/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.members.update_role",
"title": "Update organization member role",
"description": "Update a Socialize organization member role.",
"method": "PUT",
"path": "/api/organizations/{id}/members/{userId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"userId": {
"type": "string",
"minLength": 1
},
"role": {
"type": "string",
"enum": [
"admin",
"member",
"viewer"
]
}
},
"required": [
"id",
"userId",
"role"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update organization member role.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"userId": "example",
"role": "admin"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/organizations/00000000-0000-4000-8000-000000000000/members/example",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"userId": "example",
"role": "admin"
}
},
"effects": "May change state through PUT /api/organizations/{id}/members/{userId}. 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": "PUT /api/organizations/*/members/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.invites.list",
"title": "List organization invites",
"description": "List Socialize organization invites.",
"method": "GET",
"path": "/api/organizations/{id}/invites",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List organization invites.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/invites",
"body": null
},
"effects": "Reads state through GET /api/organizations/{id}/invites 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/*/invites",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.invites.cancel",
"title": "Cancel organization invite",
"description": "Cancel a Socialize organization invite.",
"method": "DELETE",
"path": "/api/organizations/{id}/invites/{inviteId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"inviteId": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"inviteId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Cancel organization invite.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"inviteId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/invites/example",
"body": null
},
"effects": "May change state through DELETE /api/organizations/{id}/invites/{inviteId}. 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/*/invites/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.activity.list",
"title": "List organization activity",
"description": "List Socialize organization activity.",
"method": "GET",
"path": "/api/organizations/{id}/activity",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List organization activity.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/activity",
"body": null
},
"effects": "Reads state through GET /api/organizations/{id}/activity 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/*/activity",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.data.export",
"title": "Export organization data",
"description": "Export organization-authored Socialize data without provider credentials or media binaries.",
"method": "GET",
"path": "/api/organizations/{id}/data",
"permission": "privacy:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/data",
"body": null
},
"effects": "Reads state through GET /api/organizations/{id}/data 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",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.data.erase",
"title": "Erase organization data",
"description": "Erase organization-authored Socialize data, provider connections, and media objects after active publishing work is cleared.",
"method": "DELETE",
"path": "/api/organizations/{id}/data",
"permission": "privacy:write",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"confirmation": {
"type": "string",
"const": "ERASE"
}
},
"required": [
"id",
"confirmation"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": true,
"requiresConfirmation": true,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"confirmation": "ERASE"
},
"cli_example": [
"topolo actions --service socialize --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/00000000-0000-4000-8000-000000000000/data",
"body": null
},
"effects": "May change state through DELETE /api/organizations/{id}/data. 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",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "preferences.get",
"title": "Get user preferences",
"description": "Get Socialize user preferences.",
"method": "GET",
"path": "/api/user/preferences",
"permission": "accounts:read",
"readOnly": true,
"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 user preferences.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/user/preferences",
"body": null
},
"effects": "Reads state through GET /api/user/preferences 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/user/preferences",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "preferences.update",
"title": "Update user preferences",
"description": "Update Socialize user preferences.",
"method": "PUT",
"path": "/api/user/preferences",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"theme": {
"type": "string"
},
"language": {
"type": "string"
},
"timezone": {
"type": "string"
},
"notifications": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"dashboard": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"calendar": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"analytics": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update user preferences.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"theme": "example",
"language": "example",
"timezone": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/user/preferences",
"body": {
"theme": "example",
"language": "example",
"timezone": "example"
}
},
"effects": "May change state through PUT /api/user/preferences. 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": "PUT /api/user/preferences",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.list",
"title": "List integrations",
"description": "List Socialize integrations.",
"method": "GET",
"path": "/api/integrations",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List integrations.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/integrations",
"body": null
},
"effects": "Reads state through GET /api/integrations 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/integrations",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.connect",
"title": "Connect integration",
"description": "Start a Socialize integration connection.",
"method": "POST",
"path": "/api/integrations/{platform}/connect",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platform": {
"type": "string",
"minLength": 1
},
"callbackUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"platform"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"authUrl": {
"type": "string",
"format": "uri"
},
"state": {
"type": "string",
"minLength": 1
},
"expiresAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
}
},
"required": [
"authUrl",
"state",
"expiresAt"
],
"additionalProperties": false
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"agentContract": {
"docsUrl": "https://docs.topolo.app/applications/socialize#integrations",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"effects": [
"Creates a short-lived OAuth state and returns the provider authorization URL; it does not complete the connection."
],
"errors": [
{
"status": 400,
"code": "unsupported_platform",
"recovery": "Call integrations.list and choose a connectable provider id."
},
{
"status": 409,
"code": "integration_misconfigured",
"recovery": "Configure the provider OAuth credential in Nexus for Socialize and this environment."
},
{
"status": 503,
"code": "integration_dependency_unavailable",
"recovery": "Retry the action. If it continues, inspect Auth service-token exchange and Nexus availability using the request ID."
}
],
"verify": [
"Open authUrl for the user, complete provider consent, then call integrations.list and confirm an active connection for the selected provider."
],
"nextActionIds": [
"app_topolo_socialize.integrations.list"
],
"examples": [
{
"title": "Begin a personal LinkedIn connection",
"description": "Returns the LinkedIn consent URL for the active Socialize brand.",
"input": {
"platform": "linkedin"
}
}
]
},
"documentation": {
"example_input": {
"platform": "linkedin"
},
"cli_example": [
"topolo actions --service socialize --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/integrations/linkedin/connect",
"body": {
"platform": "linkedin"
}
},
"effects": "Creates a short-lived OAuth state and returns the provider authorization URL; it does not complete the connection.",
"verification": [
"Open authUrl for the user, complete provider consent, then call integrations.list and confirm an active connection for the selected provider."
],
"recovery": [
"400 unsupported_platform: Call integrations.list and choose a connectable provider id.",
"409 integration_misconfigured: Configure the provider OAuth credential in Nexus for Socialize and this environment.",
"503 integration_dependency_unavailable: Retry the action. If it continues, inspect Auth service-token exchange and Nexus availability using the request ID."
],
"docs_url": "https://docs.topolo.app/applications/socialize#integrations",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"next_action_ids": [
"app_topolo_socialize.integrations.list"
],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/integrations/*/connect",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.linkedin_organization.update",
"title": "Update LinkedIn organization",
"description": "Update Socialize LinkedIn organization.",
"method": "PUT",
"path": "/api/integrations/linkedin/organization",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"organizationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"organizationId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update LinkedIn organization.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"organizationId": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/integrations/linkedin/organization",
"body": {
"organizationId": "example"
}
},
"effects": "May change state through PUT /api/integrations/linkedin/organization. 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": "PUT /api/integrations/linkedin/organization",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.facebook_page.update",
"title": "Update Facebook page",
"description": "Update Socialize Facebook page.",
"method": "PUT",
"path": "/api/integrations/facebook/page",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"pageId": {
"type": "string",
"minLength": 1
}
},
"required": [
"pageId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update Facebook page.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"pageId": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/integrations/facebook/page",
"body": {
"pageId": "example"
}
},
"effects": "May change state through PUT /api/integrations/facebook/page. 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": "PUT /api/integrations/facebook/page",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.nickname.update",
"title": "Update integration nickname",
"description": "Update a Socialize integration nickname.",
"method": "PUT",
"path": "/api/integrations/{id}/nickname",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"nickname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"nickname"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update integration nickname.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"nickname": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/integrations/00000000-0000-4000-8000-000000000000/nickname",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"nickname": "example"
}
},
"effects": "May change state through PUT /api/integrations/{id}/nickname. 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": "PUT /api/integrations/*/nickname",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.disconnect",
"title": "Disconnect integration",
"description": "Disconnect a Socialize integration.",
"method": "DELETE",
"path": "/api/integrations/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Disconnect integration.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/integrations/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/integrations/{id}. 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/integrations/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.generate_image",
"title": "Generate image",
"description": "Generate a Socialize image.",
"method": "POST",
"path": "/api/ai/generate-image",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"prompt": {
"type": "string",
"minLength": 10,
"maxLength": 1000
},
"negativePrompt": {
"type": "string",
"maxLength": 500
},
"aspectRatio": {
"type": "string",
"enum": [
"1:1",
"16:9",
"9:16",
"4:3",
"3:4"
]
},
"numberOfImages": {
"type": "number",
"minimum": 1,
"maximum": 4
},
"style": {
"type": "string",
"enum": [
"photorealistic",
"digital_art",
"watercolor",
"oil_painting",
"sketch"
]
},
"preprocessPrompt": {
"type": "boolean"
},
"postContent": {
"type": "string",
"maxLength": 2000
},
"provider": {
"type": "string",
"enum": [
"openai",
"google",
"xai",
"cloudflare"
]
},
"model": {
"type": "string",
"maxLength": 200
}
},
"required": [
"prompt"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Generate image.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"prompt": "examplexxx"
},
"cli_example": [
"topolo actions --service socialize --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/ai/generate-image",
"body": {
"prompt": "examplexxx"
}
},
"effects": "May change state through POST /api/ai/generate-image. 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/ai/generate-image",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.generate_programmatic_image",
"title": "Generate programmatic image",
"description": "Generate a Socialize programmatic image.",
"method": "POST",
"path": "/api/ai/generate-programmatic-image",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"content": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"template": {
"type": "string",
"enum": [
"quote",
"stat",
"comparison",
"announcement",
"list",
"pricing",
"thread_hook",
"milestone"
]
},
"aspectRatio": {
"type": "string",
"enum": [
"1:1",
"16:9",
"9:16",
"4:3",
"4:5"
]
},
"channel": {
"type": "string",
"enum": [
"twitter",
"x",
"linkedin",
"linkedin_company",
"facebook",
"instagram",
"threads",
"tiktok",
"youtube"
]
},
"claimIds": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"ctaId": {
"type": "string",
"minLength": 1
}
},
"required": [
"content"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Generate programmatic image.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"content": "example"
},
"cli_example": [
"topolo actions --service socialize --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/ai/generate-programmatic-image",
"body": {
"content": "example"
}
},
"effects": "May change state through POST /api/ai/generate-programmatic-image. 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/ai/generate-programmatic-image",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.programmatic_config.get",
"title": "Get programmatic config",
"description": "Get Socialize programmatic image config.",
"method": "GET",
"path": "/api/ai/programmatic-config",
"permission": "posts:read",
"readOnly": true,
"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 programmatic config.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/ai/programmatic-config",
"body": null
},
"effects": "Reads state through GET /api/ai/programmatic-config 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/ai/programmatic-config",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.update_image",
"title": "Update image",
"description": "Update a Socialize item image.",
"method": "POST",
"path": "/api/ai/update-image",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"itemType": {
"type": "string",
"enum": [
"suggestion",
"post"
]
},
"itemId": {
"type": "string",
"minLength": 1
},
"imageUrl": {
"type": "string",
"minLength": 1
}
},
"required": [
"itemType",
"itemId",
"imageUrl"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update image.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"itemType": "suggestion",
"itemId": "example",
"imageUrl": "https://example.com"
},
"cli_example": [
"topolo actions --service socialize --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/ai/update-image",
"body": {
"itemType": "suggestion",
"itemId": "example",
"imageUrl": "https://example.com"
}
},
"effects": "May change state through POST /api/ai/update-image. 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/ai/update-image",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.config.get",
"title": "Get AI config",
"description": "Get Socialize AI config.",
"method": "GET",
"path": "/api/ai/config",
"permission": "posts:read",
"readOnly": true,
"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 AI config.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/ai/config",
"body": null
},
"effects": "Reads state through GET /api/ai/config 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/ai/config",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.images.list",
"title": "List AI images",
"description": "List Socialize AI images.",
"method": "GET",
"path": "/api/ai/images",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"contentTypeId": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"favoritesOnly": {
"type": "string",
"enum": [
"true",
"false"
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List AI images.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"contentTypeId": "example",
"limit": 1,
"offset": 1
},
"cli_example": [
"topolo actions --service socialize --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/ai/images",
"body": null
},
"effects": "Reads state through GET /api/ai/images 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/ai/images",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.library.list",
"title": "List AI library",
"description": "List Socialize AI library items.",
"method": "GET",
"path": "/api/ai/library",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"contentTypeId": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"favoritesOnly": {
"type": "string",
"enum": [
"true",
"false"
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List AI library.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"contentTypeId": "example",
"limit": 1,
"offset": 1
},
"cli_example": [
"topolo actions --service socialize --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/ai/library",
"body": null
},
"effects": "Reads state through GET /api/ai/library 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/ai/library",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.library.create",
"title": "Create AI library item",
"description": "Create a Socialize AI library item.",
"method": "POST",
"path": "/api/ai/library",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"contentTypeId": {
"type": "string",
"minLength": 1
},
"inputs": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"output": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"tone": {
"type": "string",
"minLength": 1
},
"length": {
"type": "string",
"minLength": 1
},
"brandVoiceSnapshot": {},
"authenticityControlsSnapshot": {},
"aiLikenessScore": {},
"tags": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"isFavorite": {
"type": "boolean"
},
"mediaUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"mediaType": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"contentTypeId",
"inputs",
"output",
"tone",
"length"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create AI library item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"contentTypeId": "example",
"inputs": {},
"output": {},
"tone": "example",
"length": "example"
},
"cli_example": [
"topolo actions --service socialize --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/ai/library",
"body": {
"contentTypeId": "example",
"inputs": {},
"output": {},
"tone": "example",
"length": "example"
}
},
"effects": "May change state through POST /api/ai/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/ai/library",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.library.delete",
"title": "Delete AI library item",
"description": "Delete a Socialize AI library item.",
"method": "DELETE",
"path": "/api/ai/library/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete AI library item.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/ai/library/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/ai/library/{id}. 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/ai/library/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.library.favorite",
"title": "Favorite AI library item",
"description": "Toggle favorite on a Socialize AI library item.",
"method": "PATCH",
"path": "/api/ai/library/{id}/favorite",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Favorite AI library item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/ai/library/00000000-0000-4000-8000-000000000000/favorite",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PATCH /api/ai/library/{id}/favorite. 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/ai/library/*/favorite",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.list",
"title": "List AI trends",
"description": "List Socialize AI trends.",
"method": "GET",
"path": "/api/ai/trends",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platforms": {
"type": "string"
},
"region": {
"type": "string",
"enum": [
"global",
"us",
"uk",
"eu",
"uae",
"india",
"asia-pacific",
"latam"
]
},
"language": {
"type": "string",
"maxLength": 10
},
"topics": {
"type": "string"
},
"timeWindow": {
"type": "string",
"enum": [
"24h",
"7d"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"forceRefresh": {
"type": "string",
"enum": [
"true",
"false"
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List AI trends.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"platforms": "example",
"region": "global",
"language": "example"
},
"cli_example": [
"topolo actions --service socialize --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/ai/trends",
"body": null
},
"effects": "Reads state through GET /api/ai/trends 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/ai/trends",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.saved.list",
"title": "List saved AI trends",
"description": "List saved Socialize AI trends.",
"method": "GET",
"path": "/api/ai/trends/saved",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List saved AI trends.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/ai/trends/saved",
"body": null
},
"effects": "Reads state through GET /api/ai/trends/saved 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/ai/trends/saved",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.save",
"title": "Save AI trend",
"description": "Save a Socialize AI trend.",
"method": "POST",
"path": "/api/ai/trends/save",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"trendId": {
"type": "string",
"minLength": 1
},
"notes": {
"type": "string",
"maxLength": 500
}
},
"required": [
"trendId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Save AI trend.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"trendId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/ai/trends/save",
"body": {
"trendId": "example"
}
},
"effects": "May change state through POST /api/ai/trends/save. 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/ai/trends/save",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.health.get",
"title": "Get trend provider health",
"description": "Get Socialize trend provider health.",
"method": "GET",
"path": "/api/ai/trends/health",
"permission": "posts:read",
"readOnly": true,
"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 trend provider health.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/ai/trends/health",
"body": null
},
"effects": "Reads state through GET /api/ai/trends/health 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/ai/trends/health",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.x_research.get",
"title": "Get X research",
"description": "Get Socialize X research.",
"method": "GET",
"path": "/api/ai/x-research",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"handle": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get X research.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"handle": "example",
"limit": 1,
"days": 1
},
"cli_example": [
"topolo actions --service socialize --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/ai/x-research",
"body": null
},
"effects": "Reads state through GET /api/ai/x-research 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/ai/x-research",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "trends.list",
"title": "List trends",
"description": "List Socialize content strategy trends.",
"method": "GET",
"path": "/api/trends",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"source": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List trends.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"source": "example",
"limit": 1,
"offset": 1
},
"cli_example": [
"topolo actions --service socialize --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/trends",
"body": null
},
"effects": "Reads state through GET /api/trends 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/trends",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.get",
"title": "Get AI trend",
"description": "Get a Socialize AI trend.",
"method": "GET",
"path": "/api/ai/trends/{id}",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get AI trend.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/ai/trends/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/ai/trends/{id} 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/ai/trends/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.generate",
"title": "Generate from AI trend",
"description": "Generate Socialize content from an AI trend.",
"method": "POST",
"path": "/api/ai/trends/{id}/generate",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"enum": [
"linkedin",
"x",
"instagram",
"tiktok",
"youtube"
]
},
"selectedAngleIndex": {
"type": "number"
},
"selectedHookIndex": {
"type": "number"
},
"tone": {
"type": "string"
},
"length": {
"type": "string"
},
"brandVoice": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"id",
"platform"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Generate from AI trend.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"platform": "linkedin"
},
"cli_example": [
"topolo actions --service socialize --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/ai/trends/00000000-0000-4000-8000-000000000000/generate",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"platform": "linkedin"
}
},
"effects": "May change state through POST /api/ai/trends/{id}/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/ai/trends/*/generate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.trends.saved.delete",
"title": "Delete saved AI trend",
"description": "Delete a saved Socialize AI trend.",
"method": "DELETE",
"path": "/api/ai/trends/saved/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete saved AI trend.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/ai/trends/saved/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/ai/trends/saved/{id}. 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/ai/trends/saved/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.list",
"title": "List brand voice presets",
"description": "List Socialize brand voice presets.",
"method": "GET",
"path": "/api/brand-voice/presets",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List brand voice presets.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets",
"body": null
},
"effects": "Reads state through GET /api/brand-voice/presets 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/brand-voice/presets",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "integrations.linkedin_company_organization.update",
"title": "Integrations Linkedin Company Organization Update",
"description": "Call PUT /api/integrations/linkedin_company/organization.",
"method": "PUT",
"path": "/api/integrations/linkedin_company/organization",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"organizationId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"organizationId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Integrations Linkedin Company Organization Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"organizationId": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/integrations/linkedin_company/organization",
"body": {
"organizationId": "example"
}
},
"effects": "May change state through PUT /api/integrations/linkedin_company/organization. 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": "PUT /api/integrations/linkedin_company/organization",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.builtin.list",
"title": "Brand Voice Presets Builtin List",
"description": "Call GET /api/brand-voice/presets/builtin.",
"method": "GET",
"path": "/api/brand-voice/presets/builtin",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Builtin List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets/builtin",
"body": null
},
"effects": "Reads state through GET /api/brand-voice/presets/builtin 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/brand-voice/presets/builtin",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.default.get",
"title": "Brand Voice Presets Default Get",
"description": "Call GET /api/brand-voice/presets/default.",
"method": "GET",
"path": "/api/brand-voice/presets/default",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Default Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets/default",
"body": null
},
"effects": "Reads state through GET /api/brand-voice/presets/default 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/brand-voice/presets/default",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.create",
"title": "Brand Voice Presets Create",
"description": "Call POST /api/brand-voice/presets.",
"method": "POST",
"path": "/api/brand-voice/presets",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"tone": {
"type": "string"
},
"audience": {
"type": "string"
},
"styleRules": {
"type": "array",
"items": {
"type": "string"
}
},
"examples": {
"type": "array",
"items": {
"type": "string"
}
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"name": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets",
"body": {
"name": "example"
}
},
"effects": "May change state through POST /api/brand-voice/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/brand-voice/presets",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.set_default",
"title": "Brand Voice Presets Set Default",
"description": "Call POST /api/brand-voice/presets/{id}/default.",
"method": "POST",
"path": "/api/brand-voice/presets/{id}/default",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Set Default.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets/00000000-0000-4000-8000-000000000000/default",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/brand-voice/presets/{id}/default. 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/brand-voice/presets/*/default",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.duplicate",
"title": "Brand Voice Presets Duplicate",
"description": "Call POST /api/brand-voice/presets/{id}/duplicate.",
"method": "POST",
"path": "/api/brand-voice/presets/{id}/duplicate",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Duplicate.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets/00000000-0000-4000-8000-000000000000/duplicate",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/brand-voice/presets/{id}/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/brand-voice/presets/*/duplicate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.get",
"title": "Brand Voice Presets Get",
"description": "Call GET /api/brand-voice/presets/{id}.",
"method": "GET",
"path": "/api/brand-voice/presets/{id}",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/brand-voice/presets/{id} 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/brand-voice/presets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.update",
"title": "Brand Voice Presets Update",
"description": "Call PUT /api/brand-voice/presets/{id}.",
"method": "PUT",
"path": "/api/brand-voice/presets/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"tone": {
"type": "string"
},
"audience": {
"type": "string"
},
"styleRules": {
"type": "array",
"items": {
"type": "string"
}
},
"examples": {
"type": "array",
"items": {
"type": "string"
}
},
"isDefault": {
"type": "boolean"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/brand-voice/presets/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/brand-voice/presets/{id}. 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": "PUT /api/brand-voice/presets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.presets.delete",
"title": "Brand Voice Presets Delete",
"description": "Call DELETE /api/brand-voice/presets/{id}.",
"method": "DELETE",
"path": "/api/brand-voice/presets/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Presets Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/presets/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/brand-voice/presets/{id}. 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/brand-voice/presets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand_voice.audit.list",
"title": "Brand Voice Audit List",
"description": "Call GET /api/brand-voice/audit.",
"method": "GET",
"path": "/api/brand-voice/audit",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Voice Audit List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/brand-voice/audit",
"body": null
},
"effects": "Reads state through GET /api/brand-voice/audit 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/brand-voice/audit",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.ctas.list",
"title": "Brand Ctas List",
"description": "Call GET /api/brand/ctas.",
"method": "GET",
"path": "/api/brand/ctas",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Ctas List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/brand/ctas",
"body": null
},
"effects": "Reads state through GET /api/brand/ctas 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/brand/ctas",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.ctas.create",
"title": "Brand Ctas Create",
"description": "Call POST /api/brand/ctas.",
"method": "POST",
"path": "/api/brand/ctas",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 1
},
"url": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"category": {
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"priority": {
"type": "number"
}
},
"required": [
"label",
"url"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Ctas Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"label": "example",
"url": "https://example.com"
},
"cli_example": [
"topolo actions --service socialize --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/brand/ctas",
"body": {
"label": "example",
"url": "https://example.com"
}
},
"effects": "May change state through POST /api/brand/ctas. 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/brand/ctas",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.ctas.update",
"title": "Brand Ctas Update",
"description": "Call PUT /api/brand/ctas/{id}.",
"method": "PUT",
"path": "/api/brand/ctas/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string",
"minLength": 1
},
"url": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"category": {
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"priority": {
"type": "number"
},
"isActive": {
"type": "boolean"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Ctas Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/brand/ctas/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/brand/ctas/{id}. 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": "PUT /api/brand/ctas/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.ctas.delete",
"title": "Brand Ctas Delete",
"description": "Call DELETE /api/brand/ctas/{id}.",
"method": "DELETE",
"path": "/api/brand/ctas/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand Ctas Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brand/ctas/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/brand/ctas/{id}. 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/brand/ctas/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.x_mentions.list",
"title": "Brand X Mentions List",
"description": "Call GET /api/brand/x-mentions.",
"method": "GET",
"path": "/api/brand/x-mentions",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand X Mentions List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/brand/x-mentions",
"body": null
},
"effects": "Reads state through GET /api/brand/x-mentions 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/brand/x-mentions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.x_mentions.create",
"title": "Brand X Mentions Create",
"description": "Call POST /api/brand/x-mentions.",
"method": "POST",
"path": "/api/brand/x-mentions",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"entityName": {
"type": "string",
"minLength": 1
},
"xHandle": {
"type": "string",
"minLength": 1
},
"entityType": {
"type": "string"
},
"relationship": {
"type": "string"
},
"notes": {
"type": "string"
},
"autoTag": {
"type": "boolean"
}
},
"required": [
"entityName",
"xHandle"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand X Mentions Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"entityName": "example",
"xHandle": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brand/x-mentions",
"body": {
"entityName": "example",
"xHandle": "example"
}
},
"effects": "May change state through POST /api/brand/x-mentions. 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/brand/x-mentions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.x_mentions.update",
"title": "Brand X Mentions Update",
"description": "Call PUT /api/brand/x-mentions/{id}.",
"method": "PUT",
"path": "/api/brand/x-mentions/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"entityName": {
"type": "string",
"minLength": 1
},
"xHandle": {
"type": "string",
"minLength": 1
},
"entityType": {
"type": "string"
},
"relationship": {
"type": "string"
},
"notes": {
"type": "string"
},
"autoTag": {
"type": "boolean"
},
"isVerified": {
"type": "boolean"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand X Mentions Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/brand/x-mentions/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/brand/x-mentions/{id}. 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": "PUT /api/brand/x-mentions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brand.x_mentions.delete",
"title": "Brand X Mentions Delete",
"description": "Call DELETE /api/brand/x-mentions/{id}.",
"method": "DELETE",
"path": "/api/brand/x-mentions/{id}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brand X Mentions Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brand/x-mentions/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/brand/x-mentions/{id}. 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/brand/x-mentions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.engagement_targets.list",
"title": "Content Strategy Engagement Targets List",
"description": "Call GET /api/content-strategy/engagement-targets.",
"method": "GET",
"path": "/api/content-strategy/engagement-targets",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"activeOnly": {
"type": "string",
"enum": [
"true",
"false"
]
},
"brandId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Engagement Targets List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"activeOnly": "true",
"brandId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/engagement-targets",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/engagement-targets 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/content-strategy/engagement-targets",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.engagement_targets.create",
"title": "Content Strategy Engagement Targets Create",
"description": "Call POST /api/content-strategy/engagement-targets.",
"method": "POST",
"path": "/api/content-strategy/engagement-targets",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"username": {
"type": "string",
"minLength": 1
},
"displayName": {
"type": "string"
},
"notes": {
"type": "string"
},
"priority": {
"type": "number"
},
"active": {
"type": "boolean"
}
},
"required": [
"platform",
"username"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Engagement Targets Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"platform": "example",
"username": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/engagement-targets",
"body": {
"platform": "example",
"username": "example"
}
},
"effects": "May change state through POST /api/content-strategy/engagement-targets. 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/content-strategy/engagement-targets",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.engagement_targets.get",
"title": "Content Strategy Engagement Targets Get",
"description": "Call GET /api/content-strategy/engagement-targets/{id}.",
"method": "GET",
"path": "/api/content-strategy/engagement-targets/{id}",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Engagement Targets Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/engagement-targets/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/engagement-targets/{id} 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/content-strategy/engagement-targets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.engagement_targets.update",
"title": "Content Strategy Engagement Targets Update",
"description": "Call PUT /api/content-strategy/engagement-targets/{id}.",
"method": "PUT",
"path": "/api/content-strategy/engagement-targets/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string"
},
"username": {
"type": "string",
"minLength": 1
},
"displayName": {
"type": "string"
},
"notes": {
"type": "string"
},
"priority": {
"type": "number"
},
"active": {
"type": "boolean"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Engagement Targets Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/content-strategy/engagement-targets/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/content-strategy/engagement-targets/{id}. 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": "PUT /api/content-strategy/engagement-targets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.engagement_targets.delete",
"title": "Content Strategy Engagement Targets Delete",
"description": "Call DELETE /api/content-strategy/engagement-targets/{id}.",
"method": "DELETE",
"path": "/api/content-strategy/engagement-targets/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Engagement Targets Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/engagement-targets/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/content-strategy/engagement-targets/{id}. 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/content-strategy/engagement-targets/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.topics.list",
"title": "Content Strategy Topics List",
"description": "Call GET /api/content-strategy/topics.",
"method": "GET",
"path": "/api/content-strategy/topics",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"activeOnly": {
"type": "string",
"enum": [
"true",
"false"
]
},
"brandId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Topics List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"activeOnly": "true",
"brandId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/topics",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/topics 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/content-strategy/topics",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.topics.create",
"title": "Content Strategy Topics Create",
"description": "Call POST /api/content-strategy/topics.",
"method": "POST",
"path": "/api/content-strategy/topics",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"topic": {
"type": "string",
"minLength": 1
},
"weight": {
"type": "number"
},
"active": {
"type": "boolean"
}
},
"required": [
"topic"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Topics Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"topic": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/topics",
"body": {
"topic": "example"
}
},
"effects": "May change state through POST /api/content-strategy/topics. 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/content-strategy/topics",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.topics.update",
"title": "Content Strategy Topics Update",
"description": "Call PUT /api/content-strategy/topics/{id}.",
"method": "PUT",
"path": "/api/content-strategy/topics/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"topic": {
"type": "string",
"minLength": 1
},
"weight": {
"type": "number"
},
"active": {
"type": "boolean"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Topics Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/content-strategy/topics/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/content-strategy/topics/{id}. 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": "PUT /api/content-strategy/topics/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.topics.delete",
"title": "Content Strategy Topics Delete",
"description": "Call DELETE /api/content-strategy/topics/{id}.",
"method": "DELETE",
"path": "/api/content-strategy/topics/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Topics Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/topics/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/content-strategy/topics/{id}. 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/content-strategy/topics/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.pillars.list",
"title": "Content Strategy Pillars List",
"description": "Call GET /api/content-strategy/pillars.",
"method": "GET",
"path": "/api/content-strategy/pillars",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"activeOnly": {
"type": "string",
"enum": [
"true",
"false"
]
},
"brandId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Pillars List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"activeOnly": "true",
"brandId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/pillars",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/pillars 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/content-strategy/pillars",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.pillars.create",
"title": "Content Strategy Pillars Create",
"description": "Call POST /api/content-strategy/pillars.",
"method": "POST",
"path": "/api/content-strategy/pillars",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"weight": {
"type": "number"
},
"active": {
"type": "boolean"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Pillars Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"name": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/pillars",
"body": {
"name": "example"
}
},
"effects": "May change state through POST /api/content-strategy/pillars. 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/content-strategy/pillars",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.pillars.update",
"title": "Content Strategy Pillars Update",
"description": "Call PUT /api/content-strategy/pillars/{id}.",
"method": "PUT",
"path": "/api/content-strategy/pillars/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"weight": {
"type": "number"
},
"active": {
"type": "boolean"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Pillars Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/content-strategy/pillars/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/content-strategy/pillars/{id}. 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": "PUT /api/content-strategy/pillars/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.pillars.delete",
"title": "Content Strategy Pillars Delete",
"description": "Call DELETE /api/content-strategy/pillars/{id}.",
"method": "DELETE",
"path": "/api/content-strategy/pillars/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Pillars Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/pillars/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/content-strategy/pillars/{id}. 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/content-strategy/pillars/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.platform_preferences.list",
"title": "Content Strategy Platform Preferences List",
"description": "Call GET /api/content-strategy/platform-preferences.",
"method": "GET",
"path": "/api/content-strategy/platform-preferences",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Platform Preferences List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/platform-preferences",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/platform-preferences 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/content-strategy/platform-preferences",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.platform_preferences.create",
"title": "Content Strategy Platform Preferences Create",
"description": "Call POST /api/content-strategy/platform-preferences.",
"method": "POST",
"path": "/api/content-strategy/platform-preferences",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"postingFrequency": {
"type": "string"
},
"tone": {
"type": "string"
},
"settings": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"platform"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Platform Preferences Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"platform": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/platform-preferences",
"body": {
"platform": "example"
}
},
"effects": "May change state through POST /api/content-strategy/platform-preferences. 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/content-strategy/platform-preferences",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.generate",
"title": "Content Strategy Generate",
"description": "Call POST /api/content-strategy/generate.",
"method": "POST",
"path": "/api/content-strategy/generate",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"goals": {
"type": "array",
"items": {
"type": "string"
}
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"prompt": {
"type": "string"
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Generate.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example",
"goals": [
"example"
],
"platforms": [
"example"
]
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/generate",
"body": {
"brandId": "example",
"goals": [
"example"
],
"platforms": [
"example"
]
}
},
"effects": "May change state through POST /api/content-strategy/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/content-strategy/generate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.list",
"title": "Content Strategy Suggestions List",
"description": "Call GET /api/content-strategy/suggestions.",
"method": "GET",
"path": "/api/content-strategy/suggestions",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"brandId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"status": "example",
"platform": "example",
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/suggestions",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/suggestions 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/content-strategy/suggestions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.generate",
"title": "Content Strategy Suggestions Generate",
"description": "Call POST /api/content-strategy/suggestions/generate.",
"method": "POST",
"path": "/api/content-strategy/suggestions/generate",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"count": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"platform": {
"type": "string",
"minLength": 1
},
"topic": {
"type": "string"
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions Generate.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"count": 1,
"platform": "example",
"topic": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/suggestions/generate",
"body": {
"count": 1,
"platform": "example",
"topic": "example"
}
},
"effects": "May change state through POST /api/content-strategy/suggestions/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/content-strategy/suggestions/generate",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.generate_batch",
"title": "Content Strategy Suggestions Generate Batch",
"description": "Call POST /api/content-strategy/suggestions/generate-batch.",
"method": "POST",
"path": "/api/content-strategy/suggestions/generate-batch",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"count": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions Generate Batch.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"count": 1,
"platforms": [
"example"
],
"topics": [
"example"
]
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/suggestions/generate-batch",
"body": {
"count": 1,
"platforms": [
"example"
],
"topics": [
"example"
]
}
},
"effects": "May change state through POST /api/content-strategy/suggestions/generate-batch. 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/content-strategy/suggestions/generate-batch",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.generate_from_trends",
"title": "Content Strategy Suggestions Generate From Trends",
"description": "Call POST /api/content-strategy/suggestions/generate-from-trends.",
"method": "POST",
"path": "/api/content-strategy/suggestions/generate-from-trends",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"trendIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions Generate From Trends.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"trendIds": [
"example"
],
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/suggestions/generate-from-trends",
"body": {
"trendIds": [
"example"
],
"limit": 1
}
},
"effects": "May change state through POST /api/content-strategy/suggestions/generate-from-trends. 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/content-strategy/suggestions/generate-from-trends",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.engagement_feed.list",
"title": "Content Strategy Engagement Feed List",
"description": "Call GET /api/content-strategy/engagement-feed.",
"method": "GET",
"path": "/api/content-strategy/engagement-feed",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"suggestions": {
"type": "string",
"enum": [
"true",
"false"
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Engagement Feed List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"limit": 1,
"suggestions": "true"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/engagement-feed",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/engagement-feed 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/content-strategy/engagement-feed",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.get",
"title": "Content Strategy Suggestions Get",
"description": "Call GET /api/content-strategy/suggestions/{id}.",
"method": "GET",
"path": "/api/content-strategy/suggestions/{id}",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/suggestions/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/suggestions/{id} 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/content-strategy/suggestions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.update",
"title": "Content Strategy Suggestions Update",
"description": "Call PUT /api/content-strategy/suggestions/{id}.",
"method": "PUT",
"path": "/api/content-strategy/suggestions/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"deferredUntil": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"notes": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/content-strategy/suggestions/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through PUT /api/content-strategy/suggestions/{id}. 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": "PUT /api/content-strategy/suggestions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.suggestions.delete",
"title": "Content Strategy Suggestions Delete",
"description": "Call DELETE /api/content-strategy/suggestions/{id}.",
"method": "DELETE",
"path": "/api/content-strategy/suggestions/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Suggestions Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/suggestions/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/content-strategy/suggestions/{id}. 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/content-strategy/suggestions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.feedback.list",
"title": "Content Strategy Feedback List",
"description": "Call GET /api/content-strategy/feedback.",
"method": "GET",
"path": "/api/content-strategy/feedback",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"type": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Feedback List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"type": "example",
"limit": 1
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/feedback",
"body": null
},
"effects": "Reads state through GET /api/content-strategy/feedback 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/content-strategy/feedback",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.feedback.create",
"title": "Content Strategy Feedback Create",
"description": "Call POST /api/content-strategy/feedback.",
"method": "POST",
"path": "/api/content-strategy/feedback",
"permission": "posts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"type": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"type",
"message"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Feedback Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"type": "example",
"message": "example"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/feedback",
"body": {
"type": "example",
"message": "example"
}
},
"effects": "May change state through POST /api/content-strategy/feedback. 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/content-strategy/feedback",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "content_strategy.feedback.delete",
"title": "Content Strategy Feedback Delete",
"description": "Call DELETE /api/content-strategy/feedback/{id}.",
"method": "DELETE",
"path": "/api/content-strategy/feedback/{id}",
"permission": "posts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Content Strategy Feedback Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/content-strategy/feedback/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "May change state through DELETE /api/content-strategy/feedback/{id}. 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/content-strategy/feedback/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.publishing_readiness.get",
"title": "Brands Publishing Readiness Get",
"description": "Call GET /api/brands/{id}/publishing-readiness.",
"method": "GET",
"path": "/api/brands/{id}/publishing-readiness",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"platforms": {
"type": "object",
"properties": {
"x": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
},
"linkedin": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
},
"facebook": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
},
"instagram": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
},
"threads": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
},
"tiktok": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
},
"youtube": {
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"canSchedule": {
"type": "boolean"
},
"reason": {
"type": "string",
"enum": [
"account_not_connected",
"connection_error",
"token_expired",
"connection_unavailable"
]
}
},
"required": [
"connected",
"canSchedule"
],
"additionalProperties": false
}
},
"required": [
"x",
"linkedin",
"facebook",
"instagram",
"threads",
"tiktok",
"youtube"
],
"additionalProperties": false
}
},
"required": [
"brandId",
"platforms"
],
"additionalProperties": false
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"agentContract": {
"docsUrl": "https://docs.topolo.app/applications/socialize#publishing-readiness",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"effects": [
"Reads provider connection and token readiness without changing state."
],
"errors": [
{
"status": 404,
"code": "brand_not_found",
"recovery": "Resolve a brand id through brands.list in the same organization before checking publishing readiness."
}
],
"verify": [
"Require canSchedule=true for every target platform before scheduling or publishing."
],
"nextActionIds": [
"app_topolo_socialize.posts.create",
"app_topolo_socialize.campaigns.create"
]
},
"authorizationMode": "static",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service socialize --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/brands/00000000-0000-4000-8000-000000000000/publishing-readiness",
"body": null
},
"effects": "Reads provider connection and token readiness without changing state.",
"verification": [
"Require canSchedule=true for every target platform before scheduling or publishing."
],
"recovery": [
"404 brand_not_found: Resolve a brand id through brands.list in the same organization before checking publishing readiness."
],
"docs_url": "https://docs.topolo.app/applications/socialize#publishing-readiness",
"resource": {
"kind": "brand",
"idPath": "brandId"
},
"next_action_ids": [
"app_topolo_socialize.posts.create",
"app_topolo_socialize.campaigns.create"
],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/brands/*/publishing-readiness",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.list",
"title": "Brands Voice Context List",
"description": "Call GET /api/brands/{brandId}/voice-context.",
"method": "GET",
"path": "/api/brands/{brandId}/voice-context",
"permission": "accounts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"document",
"sample",
"guideline",
"faq",
"competitor",
"other"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"brandId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brands/example/voice-context",
"body": null
},
"effects": "Reads state through GET /api/brands/{brandId}/voice-context 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/brands/*/voice-context",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.create",
"title": "Brands Voice Context Create",
"description": "Call POST /api/brands/{brandId}/voice-context.",
"method": "POST",
"path": "/api/brands/{brandId}/voice-context",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"document",
"sample",
"guideline",
"faq",
"competitor",
"other"
]
},
"title": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"brandId",
"title",
"content"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example",
"title": "example",
"content": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brands/example/voice-context",
"body": {
"brandId": "example",
"title": "example",
"content": "example"
}
},
"effects": "May change state through POST /api/brands/{brandId}/voice-context. 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/brands/*/voice-context",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.bulk_create",
"title": "Brands Voice Context Bulk Create",
"description": "Call POST /api/brands/{brandId}/voice-context/bulk.",
"method": "POST",
"path": "/api/brands/{brandId}/voice-context/bulk",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"contexts": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"document",
"sample",
"guideline",
"faq",
"competitor",
"other"
]
},
"title": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"title",
"content"
],
"additionalProperties": false
}
}
},
"required": [
"brandId",
"contexts"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context Bulk Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example",
"contexts": [
{
"title": "example",
"content": "example"
}
]
},
"cli_example": [
"topolo actions --service socialize --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/brands/example/voice-context/bulk",
"body": {
"brandId": "example",
"contexts": [
{
"title": "example",
"content": "example"
}
]
}
},
"effects": "May change state through POST /api/brands/{brandId}/voice-context/bulk. 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/brands/*/voice-context/bulk",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.retrieve",
"title": "Brands Voice Context Retrieve",
"description": "Call POST /api/brands/{brandId}/voice-context/retrieve.",
"method": "POST",
"path": "/api/brands/{brandId}/voice-context/retrieve",
"permission": "accounts:read",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"query": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
},
"type": {
"type": "string",
"enum": [
"document",
"sample",
"guideline",
"faq",
"competitor",
"other"
]
}
},
"required": [
"brandId",
"query"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context Retrieve.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example",
"query": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brands/example/voice-context/retrieve",
"body": {
"brandId": "example",
"query": "example"
}
},
"effects": "May change state through POST /api/brands/{brandId}/voice-context/retrieve. 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/brands/*/voice-context/retrieve",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.stats.get",
"title": "Brands Voice Context Stats Get",
"description": "Call GET /api/brands/{brandId}/voice-context/stats.",
"method": "GET",
"path": "/api/brands/{brandId}/voice-context/stats",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"document",
"sample",
"guideline",
"faq",
"competitor",
"other"
]
}
},
"required": [
"brandId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context Stats Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brands/example/voice-context/stats",
"body": null
},
"effects": "Reads state through GET /api/brands/{brandId}/voice-context/stats 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/brands/*/voice-context/stats",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.update",
"title": "Brands Voice Context Update",
"description": "Call PUT /api/brands/{brandId}/voice-context/{contextId}.",
"method": "PUT",
"path": "/api/brands/{brandId}/voice-context/{contextId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"contextId": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"document",
"sample",
"guideline",
"faq",
"competitor",
"other"
]
},
"title": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"brandId",
"contextId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context Update.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example",
"contextId": "example"
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/brands/example/voice-context/example",
"body": {
"brandId": "example",
"contextId": "example"
}
},
"effects": "May change state through PUT /api/brands/{brandId}/voice-context/{contextId}. 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": "PUT /api/brands/*/voice-context/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "brands.voice_context.delete",
"title": "Brands Voice Context Delete",
"description": "Call DELETE /api/brands/{brandId}/voice-context/{contextId}.",
"method": "DELETE",
"path": "/api/brands/{brandId}/voice-context/{contextId}",
"permission": "accounts:write",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"brandId": {
"type": "string",
"minLength": 1
},
"contextId": {
"type": "string",
"minLength": 1
}
},
"required": [
"brandId",
"contextId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Brands Voice Context Delete.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"brandId": "example",
"contextId": "example"
},
"cli_example": [
"topolo actions --service socialize --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/brands/example/voice-context/example",
"body": null
},
"effects": "May change state through DELETE /api/brands/{brandId}/voice-context/{contextId}. 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/brands/*/voice-context/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.usage.get",
"title": "Get AI usage",
"description": "Get AI usage statistics for the selected brand.",
"method": "GET",
"path": "/api/ai/usage",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/ai/usage",
"body": null
},
"effects": "Reads state through GET /api/ai/usage 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/ai/usage",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.usage.history",
"title": "Get AI usage history",
"description": "Get AI usage history for the selected brand.",
"method": "GET",
"path": "/api/ai/usage/history",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 365
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"days": 1
},
"cli_example": [
"topolo actions --service socialize --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/ai/usage/history",
"body": null
},
"effects": "Reads state through GET /api/ai/usage/history 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/ai/usage/history",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.usage.limits.get",
"title": "Get AI usage limits",
"description": "Get AI usage limits for the selected brand.",
"method": "GET",
"path": "/api/ai/usage/limits",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service socialize --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/ai/usage/limits",
"body": null
},
"effects": "Reads state through GET /api/ai/usage/limits 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/ai/usage/limits",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.usage.limits.update",
"title": "Update AI usage limits",
"description": "Update AI usage limits for the selected brand.",
"method": "PUT",
"path": "/api/ai/usage/limits",
"permission": "accounts:write",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"monthlyTokenLimit": {
"type": "number",
"minimum": 0
},
"dailyTokenLimit": {
"type": "number",
"minimum": 0
},
"monthlyCostLimitUsd": {
"type": "number",
"minimum": 0
},
"dailyCostLimitUsd": {
"type": "number",
"minimum": 0
},
"monthlyRequestLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"dailyRequestLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"contentGenerationsPerDay": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"trendSearchesPerDay": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"imageGenerationsPerDay": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"suggestionsPerDay": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"notifyAtPercentage": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"notificationEmail": {
"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,}$"
},
"hardLimit": {
"type": "boolean"
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": true,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"monthlyTokenLimit": 1,
"dailyTokenLimit": 1,
"monthlyCostLimitUsd": 1
},
"cli_example": [
"topolo actions --service socialize --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": "PUT",
"path": "/api/ai/usage/limits",
"body": {
"monthlyTokenLimit": 1,
"dailyTokenLimit": 1,
"monthlyCostLimitUsd": 1
}
},
"effects": "May change state through PUT /api/ai/usage/limits. 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": "PUT /api/ai/usage/limits",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.usage.check",
"title": "Check AI usage limits",
"description": "Check whether an AI event is within the selected brand limits.",
"method": "GET",
"path": "/api/ai/usage/check",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"eventType": {
"type": "string",
"enum": [
"content_generation",
"trend_search",
"image_generation",
"suggestion",
"brand_voice",
"strategy_generation"
]
}
},
"required": [
"eventType"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"eventType": "content_generation"
},
"cli_example": [
"topolo actions --service socialize --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/ai/usage/check",
"body": null
},
"effects": "Reads state through GET /api/ai/usage/check 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/ai/usage/check",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "ai.usage.events.list",
"title": "List AI usage events",
"description": "List AI usage events for the selected brand.",
"method": "GET",
"path": "/api/ai/usage/events",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"eventType": {
"type": "string",
"enum": [
"content_generation",
"trend_search",
"image_generation",
"suggestion",
"brand_voice",
"strategy_generation"
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"limit": 1,
"offset": 1,
"eventType": "content_generation"
},
"cli_example": [
"topolo actions --service socialize --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/ai/usage/events",
"body": null
},
"effects": "Reads state through GET /api/ai/usage/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/ai/usage/events",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "seeds.list",
"title": "List shared seeds",
"description": "List shared content-strategy seeds for the selected brand.",
"method": "GET",
"path": "/api/seeds",
"permission": "posts:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "static",
"documentation": {
"example_input": {
"limit": 1,
"offset": 1
},
"cli_example": [
"topolo actions --service socialize --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/seeds",
"body": null
},
"effects": "Reads state through GET /api/seeds 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/seeds",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "seeds.share",
"title": "Share seed",
"description": "Share a content-strategy seed and generate brand suggestions.",
"method": "POST",
"path": "/api/seeds/share",
"permission": "posts:write",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"source": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"minLength": 1
},
"url": {
"type": "string",
"format": "uri"
},
"sharedText": {
"type": "string"
},
"sharedAt": {
"type": "string"
}
},
"required": [
"platform"
],
"additionalProperties": false
},
"targeting": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"one",
"selected",
"all"
]
},
"brandIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"additionalProperties": false
},
"priority": {
"type": "string",
"enum": [
"urgent",
"normal"
]
},
"userContext": {
"type": "object",
"properties": {
"note": {
"type": "string"
}
},
"additionalProperties": false
}
},
"required": [
"source"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": true,
"agentAccess": "confirm",
"authorizationMode": "static",
"documentation": {
"example_input": {
"source": {
"platform": "example"
}
},
"cli_example": [
"topolo actions --service socialize --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/seeds/share",
"body": {
"source": {
"platform": "example"
}
}
},
"effects": "May change state through POST /api/seeds/share. 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/seeds/share",
"evidence": "Matched to a served route extracted from canonical staging source."
}
}
],
"action_coverage": {
"status": "ok",
"served_routes": 215,
"matched_actions": 173,
"declared_unserved_actions": [],
"coverage_excluded_actions": [],
"uncatalogued_routes": [],
"ignored_routes": 42,
"configured_exclusions": 39,
"configuration_findings": [],
"notes": [
"analyzed source for api (manifest points at dist build)",
"analyzed source for jobs (manifest points at dist build)",
"3 manually-declared route(s)"
]
},
"runtime_contract_audit": {
"status": "verified",
"actions": 173,
"contracts": 173,
"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/TopoloSocialize/topolo.mobile-experience.json",
"contract": {
"version": "2026-06-29",
"status": "approved",
"mode": "native_capability",
"appId": "app_topolo_socialize",
"localizationNamespace": "socialize",
"permissions": [
"posts:read",
"posts:write",
"calendar:read",
"calendar:write",
"accounts:read",
"accounts:write"
],
"offlinePolicy": "read_through_cache",
"fallbackPath": "/posts",
"auth": {
"audience": "topolo-socialize",
"scopes": [
"posts:read",
"posts:write",
"calendar:read",
"calendar:write",
"accounts:read",
"accounts:write"
]
},
"routes": [
{
"path": "/posts",
"apiPath": "/api/posts",
"title": "Posts",
"titleKey": "socialize.mobile.routes.posts.title",
"template": "record.list",
"dataSource": "socialize.posts.list",
"detailRoute": "/posts/:id",
"actions": [
{
"id": "socialize.posts.create",
"title": "Create post",
"type": "record.create",
"permission": "posts:write",
"method": "POST",
"path": "/api/posts",
"fields": [
{
"key": "content",
"label": "Content",
"type": "textarea",
"required": true
},
{
"key": "platform",
"label": "Platform",
"type": "text",
"required": true
},
{
"key": "scheduledFor",
"label": "Scheduled for",
"type": "datetime"
},
{
"key": "publishNow",
"label": "Publish now",
"type": "boolean"
},
{
"key": "status",
"label": "Status",
"type": "text"
}
],
"titleKey": "socialize.mobile.actions.posts.create.title"
},
{
"id": "socialize.posts.update",
"title": "Update post",
"type": "record.update",
"permission": "posts:write",
"method": "PUT",
"path": "/api/posts/:id",
"fields": [
{
"key": "content",
"label": "Content",
"type": "textarea"
},
{
"key": "platform",
"label": "Platform",
"type": "text"
},
{
"key": "scheduledFor",
"label": "Scheduled for",
"type": "datetime"
},
{
"key": "publishNow",
"label": "Publish now",
"type": "boolean"
},
{
"key": "status",
"label": "Status",
"type": "text"
}
],
"titleKey": "socialize.mobile.actions.posts.update.title"
},
{
"id": "socialize.posts.delete",
"title": "Delete post",
"type": "record.delete",
"permission": "posts:write",
"method": "DELETE",
"path": "/api/posts/:id",
"titleKey": "socialize.mobile.actions.posts.delete.title"
}
]
},
{
"path": "/posts/:id",
"apiPath": "/api/posts/:id",
"title": "Posts",
"titleKey": "socialize.mobile.routes.posts.title",
"template": "record.detail",
"dataSource": "socialize.posts.detail"
},
{
"path": "/campaigns",
"apiPath": "/api/campaigns",
"title": "Campaigns",
"titleKey": "socialize.mobile.routes.campaigns.title",
"template": "record.list",
"dataSource": "socialize.campaigns.list",
"detailRoute": "/campaigns/:id",
"actions": [
{
"id": "socialize.campaigns.update",
"title": "Update campaign",
"type": "record.update",
"permission": "calendar:write",
"method": "PUT",
"path": "/api/campaigns/:id",
"fields": [
{
"key": "name",
"label": "Name",
"type": "text"
},
{
"key": "description",
"label": "Description",
"type": "textarea"
},
{
"key": "status",
"label": "Status",
"type": "text"
},
{
"key": "windowStartDate",
"label": "Window start",
"type": "datetime"
},
{
"key": "windowEndDate",
"label": "Window end",
"type": "datetime"
}
],
"titleKey": "socialize.mobile.actions.campaigns.update.title"
},
{
"id": "socialize.campaigns.delete",
"title": "Delete campaign",
"type": "record.delete",
"permission": "calendar:write",
"method": "DELETE",
"path": "/api/campaigns/:id",
"titleKey": "socialize.mobile.actions.campaigns.delete.title"
}
]
},
{
"path": "/campaigns/:id",
"apiPath": "/api/campaigns/:id",
"title": "Campaigns",
"titleKey": "socialize.mobile.routes.campaigns.title",
"template": "record.detail",
"dataSource": "socialize.campaigns.detail"
},
{
"path": "/brands",
"apiPath": "/api/brands",
"title": "Brands",
"titleKey": "socialize.mobile.routes.brands.title",
"template": "record.list",
"dataSource": "socialize.brands.list",
"detailRoute": "/brands/:id",
"actions": [
{
"id": "socialize.brands.create",
"title": "Create brand",
"type": "record.create",
"permission": "accounts:write",
"method": "POST",
"path": "/api/brands",
"fields": [
{
"key": "name",
"label": "Name",
"type": "text",
"required": true
},
{
"key": "description",
"label": "Description",
"type": "textarea"
}
],
"titleKey": "socialize.mobile.actions.brands.create.title"
},
{
"id": "socialize.brands.update",
"title": "Update brand",
"type": "record.update",
"permission": "accounts:write",
"method": "PUT",
"path": "/api/brands/:id",
"fields": [
{
"key": "name",
"label": "Name",
"type": "text"
},
{
"key": "description",
"label": "Description",
"type": "textarea"
}
],
"titleKey": "socialize.mobile.actions.brands.update.title"
}
]
},
{
"path": "/brands/:id",
"apiPath": "/api/brands/:id",
"title": "Brands",
"titleKey": "socialize.mobile.routes.brands.title",
"template": "record.detail",
"dataSource": "socialize.brands.detail"
}
]
}
}
],
"package_manifests": [],
"deployment_configs": [],
"source_signals": {
"api_routes": [
{
"method": "ALL",
"path": "/healthz",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/livez",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/health",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/status",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/readyz",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/api/internal/platform-connections/refresh-token",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/api/internal/ai/generate-image",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/version",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/test-public-simple",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "ALL",
"path": "/api/auth/*",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/public/join-request",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/public/grok-raw",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/public/trends-debug",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/public/trends-test",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/public/trend/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/public/invite/:token",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/public/invite/:token/accept",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/integrations/:platform/callback",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/integrations/instagram/deauthorize",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/integrations/instagram/data-deletion",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/integrations/threads/deauthorize",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/integrations/threads/data-deletion",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "PUT",
"path": "/api/media/upload/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/widget",
"source_path": "apps/TopoloSocialize/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/ai/generate-image",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/ai/generate-programmatic-image",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/programmatic-config",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/ai/update-image",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/config",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/images",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/ai/generate-content",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/library",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/ai/library",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/ai/library/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PATCH",
"path": "/api/ai/library/:id/favorite",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/trends",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/trends/saved",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/ai/trends/save",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/trends/health",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/x-research",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/trends",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/trends/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/ai/trends/:id/generate",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/ai/trends/saved/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/scheduler/drafts/from-trend",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand-voice/presets",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand-voice/presets/builtin",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand-voice/presets/default",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brand-voice/presets",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brand-voice/presets/:id/default",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brand-voice/presets/:id/duplicate",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand-voice/presets/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/brand-voice/presets/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/brand-voice/presets/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand-voice/audit",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand/ctas",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brand/ctas",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/brand/ctas/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/brand/ctas/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brand/x-mentions",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brand/x-mentions",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/brand/x-mentions/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/brand/x-mentions/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/engagement-targets",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/engagement-targets",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/engagement-targets/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/content-strategy/engagement-targets/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/content-strategy/engagement-targets/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/topics",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/topics",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/content-strategy/topics/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/content-strategy/topics/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/pillars",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/pillars",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/content-strategy/pillars/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/content-strategy/pillars/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/platform-preferences",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/platform-preferences",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/usage",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/usage/history",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/usage/limits",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/ai/usage/limits",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/usage/check",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/ai/usage/events",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/generate",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/suggestions",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/suggestions/generate",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/suggestions/generate-batch",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/suggestions/generate-from-trends",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/seeds",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/seeds/share",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/engagement-feed",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/suggestions/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/content-strategy/suggestions/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/content-strategy/suggestions/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-strategy/feedback",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-strategy/feedback",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/content-strategy/feedback/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands/:id/publishing-readiness",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands/:brandId/voice-context",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brands/:brandId/voice-context",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brands/:brandId/voice-context/bulk",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "POST",
"path": "/api/brands/:brandId/voice-context/retrieve",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands/:brandId/voice-context/stats",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "PUT",
"path": "/api/brands/:brandId/voice-context/:contextId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/brands/:brandId/voice-context/:contextId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/aiAndStrategyRoutes.ts"
},
{
"method": "ALL",
"path": "/api/auth/me",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "ALL",
"path": "/api/debug/auth-context",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/posts",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/posts",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/posts/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/posts/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/posts/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/posts/:id/publish",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/posts/:id/archive",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PATCH",
"path": "/api/posts/:id/reschedule",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PATCH",
"path": "/api/posts/:id/toggle-pause",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-ops/queue",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-ops/daily",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-ops/events",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-ops/deck",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/content-ops/items/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PATCH",
"path": "/api/content-ops/items/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-ops/items/:id/approve",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-ops/items/:id/reject",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-ops/items/:id/reschedule",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/content-ops/items/:id/retry",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/campaigns",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/campaigns/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/campaigns/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/campaigns/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns/:id/schedule",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns/:id/activate",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns/:id/complete",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns/:id/cancel",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns/:id/pause",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/campaigns/:id/resume",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/scheduler/process",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/scheduler/status",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/media/upload",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/media/list",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/media/bulk",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/media/tags",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/media/tags",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/media/tags/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/media/collections",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/media/collections",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/media/collections/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/media/:id/metadata",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/media/:id/complete",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/media/metadata",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/campaigns/:id/analytics",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/campaigns/:id/analytics/engine",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/campaigns/:id/analytics/variants/:variantId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/analytics/summary",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/flags",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/flags",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/flags/me",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/flags/user/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/flags/:flagId/users/:userId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/flags/:flagId/users/:userId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/flags/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PATCH",
"path": "/api/flags/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/flags/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/organization",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/organization/accept-invite",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/brands",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/workspaces/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/brands/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands/:id/members",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/brands/:id/join-requests",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/join-requests/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/join-requests/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/organizations/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:id/members",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/organizations/:id/members",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/organizations/:id/members/:userId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/organizations/:id/members/:userId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:id/invites",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/organizations/:id/invites/:inviteId",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:id/activity",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:id/data",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/organizations/:id/data",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/user/preferences",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/user/preferences",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "GET",
"path": "/api/integrations",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "POST",
"path": "/api/integrations/:platform/connect",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/integrations/linkedin/organization",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/integrations/linkedin_company/organization",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/integrations/facebook/page",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "PUT",
"path": "/api/integrations/:id/nickname",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "DELETE",
"path": "/api/integrations/:id",
"source_path": "apps/TopoloSocialize/apps/api/src/routes/authenticatedRoutes.ts"
},
{
"method": "LITERAL",
"path": "/health",
"source_path": "apps/TopoloSocialize/apps/scheduler/src/index.ts"
},
{
"method": "LITERAL",
"path": "/stats",
"source_path": "apps/TopoloSocialize/apps/scheduler/src/index.ts"
}
],
"ui_routes": [
{
"path": "/feed",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/onboarding",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/dashboard",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/campaigns",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/campaigns/new",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/campaigns/:id",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/campaigns/:id/edit",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/posts",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/posts/new",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/posts/:id",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/posts/:id/edit",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/brands/new",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/calendar",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/analytics",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/billing",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/media",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/generate",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/designer",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/studio",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/library",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/trends",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/suggested",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/ai/feed",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/settings",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/settings/:section",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/referrals",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/admin",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/admin/flags",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/privacy",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/terms",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/design-system",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/pricing",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/brand/:slug",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/invites/accept",
"source_path": "apps/TopoloSocialize/apps/web/src/App.tsx"
},
{
"path": "/settings/integrations",
"source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
},
{
"path": "/settings/api-keys",
"source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
},
{
"path": "/settings/content-context",
"source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
},
{
"path": "/settings/content-strategy",
"source_path": "apps/TopoloSocialize/apps/web/src/routes/settings-nav.tsx"
}
],
"test_cases": [],
"database_tables": []
},
"documentation": {
"declared_paths": [
"internal/apps/socialize",
"applications/socialize"
],
"present_paths": [
"internal/apps/socialize",
"applications/socialize"
],
"missing_paths": [],
"human_reference": "/systems/socialize",
"machine_reference": "/machine/systems/socialize.json",
"action_examples": 173,
"action_schemas": 173
},
"source_findings": []
}