{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "SocialClaw API",
    "version": "1.0.0",
    "description": "Complete SocialClaw API reference for social account connections, media uploads, validation, scheduling, publishing, analytics, dashboard APIs, webhooks, and delivery URLs."
  },
  "servers": [
    {
      "url": "https://getsocialclaw.com",
      "description": "SocialClaw production API"
    }
  ],
  "externalDocs": {
    "description": "Human-readable SocialClaw API documentation.",
    "url": "https://getsocialclaw.com/docs/api"
  },
  "tags": [
    {
      "name": "Status and Authentication",
      "description": "Health checks, API key validation, and workspace key management."
    },
    {
      "name": "Connections and Accounts",
      "description": "Start OAuth or manual connections, inspect connected accounts, capabilities, settings, and provider discovery actions."
    },
    {
      "name": "Publishing Runs and Posts",
      "description": "Validate schedule payloads, preview campaign graphs, create runs, publish drafts, and manage post lifecycle."
    },
    {
      "name": "Assets and Media Delivery",
      "description": "Upload, register, delete, and deliver SocialClaw-managed media."
    },
    {
      "name": "Analytics",
      "description": "Read and refresh post, account, and run analytics."
    },
    {
      "name": "Dashboard Browser API",
      "description": "Cookie-authenticated routes used by the SocialClaw dashboard. These are documented for completeness, but API-key clients should use the public /v1 routes above."
    },
    {
      "name": "Auth, Billing, and Provider Callbacks",
      "description": "Routes called by identity providers, billing systems, app stores, and Meta webhooks."
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "SocialClaw API key"
      },
      "DashboardSession": {
        "type": "apiKey",
        "in": "cookie",
        "name": "socialclaw_dash_session"
      },
      "WebhookSignature": {
        "type": "apiKey",
        "in": "header",
        "name": "x-signature"
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error response returned by JSON API routes.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": false,
            "description": "Always false for errors."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stable machine-readable error code."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message."
          },
          "details": {
            "type": [
              "object",
              "array",
              "string",
              "number",
              "boolean",
              "null"
            ],
            "description": "Optional route-specific details."
          }
        },
        "required": [
          "ok",
          "message"
        ]
      },
      "ApiKey": {
        "type": "object",
        "description": "API key metadata. Secret values are only returned when a key is created or shown in the dashboard key API.",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "API key id, for example key_abc123."
          },
          "prefix": {
            "type": [
              "string",
              "null"
            ],
            "description": "Public prefix used to identify the key without exposing the secret."
          },
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional human label."
          },
          "kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Key kind, such as personal or agent."
          },
          "secret": {
            "type": [
              "string",
              "null"
            ],
            "description": "Raw key secret. Only present at creation or in dashboard key listings."
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Creation time.",
            "format": "date-time"
          },
          "revokedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Revocation time.",
            "format": "date-time"
          },
          "lastUsedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Last successful API authentication time.",
            "format": "date-time"
          }
        },
        "required": [
          "id"
        ]
      },
      "Tenant": {
        "type": "object",
        "description": "Workspace visible to the authenticated API key or dashboard session.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Workspace id."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Workspace name."
          },
          "plan": {
            "type": [
              "string",
              "null"
            ],
            "description": "Workspace plan."
          },
          "subscriptionStatus": {
            "type": [
              "string",
              "null"
            ],
            "description": "Billing subscription status."
          },
          "entitlements": {
            "type": [
              "object",
              "null"
            ],
            "description": "Plan capabilities and limits."
          }
        },
        "required": [
          "id"
        ]
      },
      "ConnectedAccount": {
        "type": "object",
        "description": "Social account or destination connected to a SocialClaw workspace.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Connected account id."
          },
          "provider": {
            "type": "string",
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress"
            ],
            "description": "Canonical provider id."
          },
          "handle": {
            "type": "string",
            "description": "Stable account handle used in schedules."
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Display name."
          },
          "accountType": {
            "type": [
              "string",
              "null"
            ],
            "description": "Provider-specific account type."
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Provider account id."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Connection status."
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Creation time.",
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Last update time.",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "provider",
          "handle"
        ]
      },
      "ConnectionStartRequest": {
        "type": "object",
        "description": "Request to start an OAuth or manual connection. Telegram and Discord use manual credentials; other providers return an OAuth URL.",
        "additionalProperties": true,
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress"
            ],
            "description": "Provider to connect."
          },
          "botToken": {
            "type": [
              "string",
              "null"
            ],
            "description": "Telegram bot token. Also accepted as bot_token."
          },
          "chatId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Telegram chat id. Also accepted as chat_id."
          },
          "webhookUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Discord webhook URL. Also accepted as webhook_url."
          },
          "client": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional client hint, for example ios."
          },
          "callbackScheme": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional mobile callback scheme. Also accepted as callback_scheme."
          }
        },
        "required": [
          "provider"
        ]
      },
      "Connection": {
        "type": "object",
        "description": "Connection handshake status.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Connection id."
          },
          "provider": {
            "type": "string",
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress"
            ],
            "description": "Provider being connected."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "pending, connected, failed, or provider-specific state."
          },
          "authorizeUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "OAuth authorize URL when OAuth is required."
          },
          "account": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConnectedAccount"
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "type": [
              "string",
              "null"
            ],
            "description": "Connection error message, when failed."
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Creation time.",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "provider"
        ]
      },
      "Capability": {
        "type": "object",
        "description": "Publishing capabilities for a connected account or provider.",
        "additionalProperties": true,
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress"
            ]
          },
          "accountId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Connected account id."
          },
          "canPublish": {
            "type": "boolean",
            "description": "Whether SocialClaw can publish to this account."
          },
          "media": {
            "type": [
              "object",
              "null"
            ],
            "description": "Media limits and supported shapes."
          },
          "settings": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "object"
            },
            "description": "Provider settings fields."
          }
        }
      },
      "PublishSettings": {
        "type": "object",
        "description": "Provider-specific publish settings. Returned fields are authoritative for UI generation.",
        "additionalProperties": true,
        "properties": {
          "supported": {
            "type": "boolean",
            "description": "Whether settings are available for this account."
          },
          "target": {
            "type": [
              "object",
              "null"
            ],
            "description": "Provider and account type target."
          },
          "fields": {
            "type": "array",
            "description": "Field descriptors.",
            "items": {
              "type": "object"
            }
          },
          "discovery": {
            "type": [
              "object",
              "null"
            ],
            "description": "Provider media delivery and publish-shape notes."
          }
        }
      },
      "DiscoveryAction": {
        "type": "object",
        "description": "Provider discovery action such as syncing boards, pages, or channels.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Action id."
          },
          "label": {
            "type": "string",
            "description": "Display label."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "What the action does."
          },
          "provider": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress",
              null
            ]
          },
          "inputSchema": {
            "type": [
              "object",
              "null"
            ],
            "description": "Optional JSON Schema for action input."
          }
        },
        "required": [
          "id",
          "label"
        ]
      },
      "AssetInput": {
        "type": "object",
        "description": "Media asset referenced by a post.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Client-side or SocialClaw asset id."
          },
          "url": {
            "type": "string",
            "description": "Publicly reachable media URL."
          },
          "managed": {
            "type": "boolean",
            "description": "True when this is a SocialClaw-managed asset."
          },
          "originalFilename": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original file name."
          },
          "mime": {
            "type": [
              "string",
              "null"
            ],
            "description": "MIME type."
          },
          "kind": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "image",
              "video",
              "audio",
              "other",
              null
            ]
          },
          "size": {
            "type": [
              "integer",
              "null"
            ],
            "description": "File size in bytes."
          },
          "duration": {
            "type": [
              "number",
              "null"
            ],
            "description": "Duration in seconds for video/audio."
          },
          "width": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Media width in pixels."
          },
          "height": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Media height in pixels."
          },
          "altText": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alt text where the provider supports it."
          }
        },
        "required": [
          "url"
        ]
      },
      "PostInput": {
        "type": "object",
        "description": "Post to validate, schedule, or publish.",
        "additionalProperties": true,
        "properties": {
          "provider": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress",
              null
            ],
            "description": "Provider. Optional when account handle identifies the provider."
          },
          "account": {
            "type": "string",
            "description": "Connected account handle or id."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Post title, campaign step title, or provider title."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alias for name on providers requiring titles."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Primary post text."
          },
          "text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alias for description."
          },
          "publish_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Scheduled publish time.",
            "format": "date-time"
          },
          "publishAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Camel-case alias for publish_at.",
            "format": "date-time"
          },
          "media_link": {
            "type": [
              "string",
              "null"
            ],
            "description": "Single public media URL."
          },
          "mediaLink": {
            "type": [
              "string",
              "null"
            ],
            "description": "Camel-case alias for media_link."
          },
          "assets": {
            "type": "array",
            "description": "One or more asset objects or URL strings.",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AssetInput"
                },
                {
                  "type": "string",
                  "format": "uri"
                }
              ]
            }
          },
          "settings": {
            "type": "object",
            "description": "Provider-specific settings from the publish settings API."
          },
          "interaction_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "post",
              "reply",
              "comment",
              null
            ]
          },
          "parent_step_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Parent step id for reply/thread workflows."
          }
        },
        "required": [
          "account"
        ]
      },
      "CampaignInput": {
        "type": "object",
        "description": "Campaign graph with targets and steps.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Campaign id."
          },
          "name": {
            "type": "string",
            "description": "Campaign name."
          },
          "targets": {
            "type": "array",
            "description": "Publishing targets.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "account": {
                  "type": "string",
                  "description": "Connected account handle."
                },
                "publish_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Base publish time.",
                  "format": "date-time"
                },
                "steps": {
                  "type": "array",
                  "description": "Campaign steps.",
                  "items": {
                    "$ref": "#/components/schemas/PostInput"
                  }
                }
              }
            }
          }
        },
        "required": [
          "name",
          "targets"
        ]
      },
      "ScheduleEnvelope": {
        "type": "object",
        "description": "Schedule document accepted by validation, preview, apply, and dashboard compose workflows.",
        "additionalProperties": true,
        "properties": {
          "timezone": {
            "type": "string",
            "description": "IANA timezone. Defaults to UTC."
          },
          "mode": {
            "type": "string",
            "enum": [
              "scheduled",
              "draft"
            ],
            "description": "scheduled creates runnable posts; draft creates an editable draft run."
          },
          "idempotencyKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional idempotency key. Also accepted as idempotency_key."
          },
          "posts": {
            "type": "array",
            "description": "Flat list of posts.",
            "items": {
              "$ref": "#/components/schemas/PostInput"
            }
          },
          "campaigns": {
            "type": "array",
            "description": "Campaign graph model.",
            "items": {
              "$ref": "#/components/schemas/CampaignInput"
            }
          },
          "schedule": {
            "type": "object",
            "description": "Optional wrapper. Routes accept either the envelope directly or { schedule: envelope }.",
            "additionalProperties": true
          }
        }
      },
      "Run": {
        "type": "object",
        "description": "Publishing run.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Run id."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "created",
              "processing",
              "completed",
              "partial_failed"
            ]
          },
          "mode": {
            "type": [
              "string",
              "null"
            ],
            "description": "draft or scheduled."
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "description": "api, dashboard, or system source."
          },
          "totalPosts": {
            "type": "integer",
            "description": "Number of posts in the run."
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Creation time.",
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Last update time.",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "status"
        ]
      },
      "Post": {
        "type": "object",
        "description": "Scheduled or published post record.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Post id."
          },
          "runId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Run id."
          },
          "provider": {
            "type": "string",
            "enum": [
              "x",
              "meta",
              "facebook",
              "instagram_business",
              "instagram",
              "snapchat",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "pinterest",
              "youtube",
              "reddit",
              "discord",
              "telegram",
              "wordpress"
            ]
          },
          "account": {
            "type": "string",
            "description": "Connected account handle."
          },
          "accountId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Connected account id."
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "scheduled",
              "publishing",
              "published",
              "retry_pending",
              "failed",
              "canceled"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Post name or title."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Post body text."
          },
          "publishAtUtc": {
            "type": [
              "string",
              "null"
            ],
            "description": "UTC publish time.",
            "format": "date-time"
          },
          "providerPostId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Provider-side post id after publish."
          },
          "providerUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Provider-side URL when available.",
            "format": "uri"
          },
          "error": {
            "type": [
              "string",
              "null"
            ],
            "description": "Last error message."
          },
          "attempts": {
            "type": "integer",
            "description": "Publish attempt count."
          }
        },
        "required": [
          "id",
          "provider",
          "account",
          "status"
        ]
      },
      "Asset": {
        "type": "object",
        "description": "SocialClaw-managed media asset.",
        "additionalProperties": true,
        "properties": {
          "id": {
            "type": "string",
            "description": "Asset id."
          },
          "tenantId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Workspace id."
          },
          "storage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Storage driver."
          },
          "objectKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "Internal object key."
          },
          "originalFilename": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original file name."
          },
          "mime": {
            "type": "string",
            "description": "MIME type."
          },
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "audio",
              "other"
            ]
          },
          "size": {
            "type": "integer",
            "description": "Size in bytes."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "ready, uploading, draft, pending_delete, or provider-specific state."
          },
          "publicUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Public delivery URL.",
            "format": "uri"
          },
          "preview": {
            "type": [
              "object",
              "null"
            ],
            "description": "Thumbnail, poster, or preview URLs."
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Creation time.",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "mime",
          "kind"
        ]
      },
      "AssetUploadRequest": {
        "type": "object",
        "description": "Base64 upload request for small media files.",
        "additionalProperties": true,
        "properties": {
          "filename": {
            "type": "string",
            "description": "Original file name."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alias for filename."
          },
          "mime": {
            "type": [
              "string",
              "null"
            ],
            "description": "MIME type. Inferred from filename when omitted."
          },
          "contentBase64": {
            "type": "string",
            "description": "Base64-encoded file content."
          },
          "content_base64": {
            "type": [
              "string",
              "null"
            ],
            "description": "Snake-case alias for contentBase64."
          },
          "duration": {
            "type": [
              "number",
              "null"
            ]
          },
          "width": {
            "type": [
              "integer",
              "null"
            ]
          },
          "height": {
            "type": [
              "integer",
              "null"
            ]
          },
          "deleteAfter": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional retention timestamp.",
            "format": "date-time"
          }
        },
        "required": [
          "filename",
          "contentBase64"
        ]
      },
      "AssetRegistrationRequest": {
        "type": "object",
        "description": "Registers an already-stored asset or externally managed object for the workspace.",
        "additionalProperties": true,
        "properties": {
          "objectKey": {
            "type": "string",
            "description": "Storage object key."
          },
          "originalFilename": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original filename. Also accepted as filename."
          },
          "publicUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Public URL if already available."
          },
          "mime": {
            "type": [
              "string",
              "null"
            ],
            "description": "MIME type."
          },
          "kind": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "image",
              "video",
              "audio",
              "other",
              null
            ]
          },
          "size": {
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Asset status. Defaults to draft."
          }
        },
        "required": [
          "objectKey"
        ]
      },
      "MultipartUploadInitiateRequest": {
        "type": "object",
        "description": "Starts a multipart upload session for dashboard uploads when S3 storage is enabled.",
        "additionalProperties": false,
        "properties": {
          "filename": {
            "type": "string",
            "description": "File name. Also accepted as name."
          },
          "size": {
            "type": "integer",
            "description": "Expected file size in bytes."
          },
          "mime": {
            "type": [
              "string",
              "null"
            ],
            "description": "MIME type."
          }
        },
        "required": [
          "filename",
          "size"
        ]
      },
      "MultipartPartRequest": {
        "type": "object",
        "description": "Signs one multipart upload part.",
        "additionalProperties": false,
        "properties": {
          "uploadId": {
            "type": "string",
            "description": "Multipart upload id returned by initiate."
          },
          "partNumber": {
            "type": "integer",
            "description": "1-based part number.",
            "minimum": 1
          }
        },
        "required": [
          "uploadId",
          "partNumber"
        ]
      },
      "MultipartCompleteRequest": {
        "type": "object",
        "description": "Completes a multipart upload after the client sends every signed part.",
        "additionalProperties": true,
        "properties": {
          "uploadId": {
            "type": "string",
            "description": "Multipart upload id."
          },
          "parts": {
            "type": "array",
            "description": "Uploaded parts with ETag and partNumber.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "ETag": {
                  "type": "string",
                  "description": "Part ETag."
                },
                "PartNumber": {
                  "type": "integer",
                  "description": "Part number."
                }
              }
            }
          },
          "duration": {
            "type": [
              "number",
              "null"
            ]
          },
          "width": {
            "type": [
              "integer",
              "null"
            ]
          },
          "height": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "uploadId",
          "parts"
        ]
      },
      "AnalyticsRefreshRequest": {
        "type": "object",
        "description": "Requests a fresh analytics fetch for a published post.",
        "additionalProperties": false,
        "properties": {
          "postId": {
            "type": "string",
            "description": "Post id. Also accepted as post_id."
          },
          "window": {
            "type": [
              "string",
              "null"
            ],
            "description": "Metric window, for example lifetime."
          },
          "metricWindow": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alias for window."
          }
        },
        "required": [
          "postId"
        ]
      },
      "SupportRequest": {
        "type": "object",
        "description": "Support message submitted from the website or dashboard.",
        "additionalProperties": true,
        "properties": {
          "email": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reply-to email when no dashboard session exists."
          },
          "message": {
            "type": "string",
            "description": "Support message."
          },
          "pageUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Page URL."
          },
          "pageTitle": {
            "type": [
              "string",
              "null"
            ],
            "description": "Page title."
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "description": "site or dashboard."
          }
        },
        "required": [
          "message"
        ]
      },
      "DashboardComposeRequest": {
        "type": "object",
        "description": "Dashboard compose request. Supports one account or a targets array.",
        "additionalProperties": true,
        "properties": {
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Post title. Also accepted as name."
          },
          "text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Post body. Also accepted as description."
          },
          "account": {
            "type": [
              "string",
              "null"
            ],
            "description": "Single account handle."
          },
          "accountHandle": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alias for account."
          },
          "targets": {
            "type": "array",
            "description": "Multi-channel targets.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "account": {
                  "type": "string",
                  "description": "Account handle."
                },
                "accountHandle": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Alias for account."
                },
                "settings": {
                  "type": "object"
                }
              }
            }
          },
          "assets": {
            "type": "array",
            "description": "Assets for the post.",
            "items": {
              "$ref": "#/components/schemas/AssetInput"
            }
          },
          "timezone": {
            "type": [
              "string",
              "null"
            ],
            "description": "IANA timezone. Defaults to UTC."
          },
          "publishAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Scheduled publish time.",
            "format": "date-time"
          },
          "publishNow": {
            "type": "boolean",
            "description": "Publish immediately when true."
          },
          "campaignName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Campaign name for multi-target posts."
          }
        }
      },
      "DashboardPostUpdateRequest": {
        "type": "object",
        "description": "Updates an editable dashboard timeline post.",
        "additionalProperties": true,
        "properties": {
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Updated title."
          },
          "text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Updated text."
          },
          "account": {
            "type": "string",
            "description": "Account handle."
          },
          "assets": {
            "type": "array",
            "description": "Updated media assets.",
            "items": {
              "$ref": "#/components/schemas/AssetInput"
            }
          },
          "settings": {
            "type": "object"
          },
          "timezone": {
            "type": [
              "string",
              "null"
            ],
            "description": "IANA timezone."
          },
          "publishAt": {
            "type": "string",
            "description": "Updated publish time.",
            "format": "date-time"
          }
        },
        "required": [
          "account",
          "publishAt"
        ]
      },
      "BillingCheckoutRequest": {
        "type": "object",
        "description": "Starts a billing checkout session.",
        "additionalProperties": false,
        "properties": {
          "plan": {
            "type": "string",
            "description": "Plan id."
          },
          "billingInterval": {
            "type": "string",
            "description": "monthly or yearly."
          }
        },
        "required": [
          "plan",
          "billingInterval"
        ]
      },
      "AppStoreClaimRequest": {
        "type": "object",
        "description": "Claims an App Store transaction for the current dashboard workspace.",
        "additionalProperties": false,
        "properties": {
          "signedTransactionInfo": {
            "type": "string",
            "description": "App Store signed transaction JWS. Also accepted as signed_transaction_info or transactionJws."
          }
        },
        "required": [
          "signedTransactionInfo"
        ]
      },
      "AppleNativeAuthRequest": {
        "type": "object",
        "description": "Native iOS Sign in with Apple identity token exchange.",
        "additionalProperties": true,
        "properties": {
          "identityToken": {
            "type": "string",
            "description": "Apple identity token. Also accepted as identity_token."
          },
          "nonceSha256": {
            "type": [
              "string",
              "null"
            ],
            "description": "SHA-256 nonce. Also accepted as nonce."
          },
          "email": {
            "type": [
              "string",
              "null"
            ],
            "description": "Email supplied by Apple on first sign-in."
          },
          "givenName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Given name."
          },
          "familyName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Family name."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Display name."
          }
        },
        "required": [
          "identityToken"
        ]
      },
      "OkResponse": {
        "type": "object",
        "description": "Generic successful response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true,
            "description": "Always true for successful JSON API responses."
          }
        },
        "required": [
          "ok"
        ]
      },
      "KeyValidationResponse": {
        "type": "object",
        "description": "Valid API key response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "tenant": {
            "$ref": "#/components/schemas/Tenant"
          },
          "apiKey": {
            "$ref": "#/components/schemas/ApiKey"
          }
        },
        "required": [
          "ok",
          "tenant",
          "apiKey"
        ]
      },
      "KeysResponse": {
        "type": "object",
        "description": "API key list response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "keys": {
            "type": "array",
            "description": "Keys in the workspace.",
            "items": {
              "$ref": "#/components/schemas/ApiKey"
            }
          }
        },
        "required": [
          "ok",
          "keys"
        ]
      },
      "KeyCreateRequest": {
        "type": "object",
        "description": "Creates an API key.",
        "additionalProperties": true,
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional label."
          },
          "kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Dashboard-only key kind."
          }
        }
      },
      "KeyCreateResponse": {
        "type": "object",
        "description": "API key creation response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "key": {
            "$ref": "#/components/schemas/ApiKey"
          },
          "apiKey": {
            "$ref": "#/components/schemas/ApiKey"
          },
          "secret": {
            "type": [
              "string",
              "null"
            ],
            "description": "Raw secret when returned as a top-level value."
          }
        },
        "required": [
          "ok"
        ]
      },
      "ConnectionsResponse": {
        "type": "object",
        "description": "Connection list response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "connections": {
            "type": "array",
            "description": "Connections.",
            "items": {
              "$ref": "#/components/schemas/Connection"
            }
          }
        },
        "required": [
          "ok",
          "connections"
        ]
      },
      "ConnectionResponse": {
        "type": "object",
        "description": "Connection response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "connection": {
            "$ref": "#/components/schemas/Connection"
          },
          "account": {
            "$ref": "#/components/schemas/ConnectedAccount"
          }
        },
        "required": [
          "ok"
        ]
      },
      "AccountsResponse": {
        "type": "object",
        "description": "Connected accounts response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "accounts": {
            "type": "array",
            "description": "Connected accounts.",
            "items": {
              "$ref": "#/components/schemas/ConnectedAccount"
            }
          }
        },
        "required": [
          "ok",
          "accounts"
        ]
      },
      "CapabilitiesResponse": {
        "type": "object",
        "description": "Capability response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "capabilities": {
            "type": "array",
            "description": "Capabilities.",
            "items": {
              "$ref": "#/components/schemas/Capability"
            }
          }
        },
        "required": [
          "ok",
          "capabilities"
        ]
      },
      "PublishSettingsResponse": {
        "type": "object",
        "description": "Publish settings response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "publishSettings": {
            "$ref": "#/components/schemas/PublishSettings"
          }
        },
        "required": [
          "ok",
          "publishSettings"
        ]
      },
      "DiscoveryActionsResponse": {
        "type": "object",
        "description": "Discovery actions response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "actions": {
            "type": "array",
            "description": "Available actions.",
            "items": {
              "$ref": "#/components/schemas/DiscoveryAction"
            }
          }
        },
        "required": [
          "ok",
          "actions"
        ]
      },
      "ActionResultResponse": {
        "type": "object",
        "description": "Discovery action result response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "ok",
          "result"
        ]
      },
      "UsageResponse": {
        "type": "object",
        "description": "Workspace usage response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "usage": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "ok",
          "usage"
        ]
      },
      "WorkspaceHealthResponse": {
        "type": "object",
        "description": "Workspace health response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "health": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "ok",
          "health"
        ]
      },
      "JobsResponse": {
        "type": "object",
        "description": "Job list response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "jobs": {
            "type": "array",
            "description": "Jobs.",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "total": {
            "type": "integer",
            "description": "Total matching jobs."
          }
        },
        "required": [
          "ok"
        ]
      },
      "PostsResponse": {
        "type": "object",
        "description": "Post list response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "posts": {
            "type": "array",
            "description": "Posts.",
            "items": {
              "$ref": "#/components/schemas/Post"
            }
          },
          "total": {
            "type": "integer",
            "description": "Total matching posts."
          },
          "limit": {
            "type": "integer",
            "description": "Page limit."
          },
          "offset": {
            "type": "integer",
            "description": "Page offset."
          }
        },
        "required": [
          "ok",
          "posts"
        ]
      },
      "PostResponse": {
        "type": "object",
        "description": "Single post response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "post": {
            "$ref": "#/components/schemas/Post"
          }
        },
        "required": [
          "ok",
          "post"
        ]
      },
      "AttemptsResponse": {
        "type": "object",
        "description": "Post attempts response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "post": {
            "$ref": "#/components/schemas/Post"
          },
          "attempts": {
            "type": "array",
            "description": "Publish attempts.",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "required": [
          "ok"
        ]
      },
      "AnalyticsResponse": {
        "type": "object",
        "description": "Analytics response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "analytics": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "metrics": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "window": {
            "type": [
              "string",
              "null"
            ],
            "description": "Metric window."
          }
        },
        "required": [
          "ok"
        ]
      },
      "ValidateResponse": {
        "type": "object",
        "description": "Schedule validation response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "tenantId": {
            "type": "string",
            "description": "Workspace id."
          },
          "timezone": {
            "type": "string",
            "description": "Resolved timezone."
          },
          "mode": {
            "type": "string",
            "description": "Resolved mode."
          },
          "sourceModel": {
            "type": "string",
            "description": "posts_v1 or campaigns_v2."
          },
          "totalCampaigns": {
            "type": "integer",
            "description": "Campaign count."
          },
          "totalPosts": {
            "type": "integer",
            "description": "Post count."
          },
          "posts": {
            "type": "array",
            "description": "Prepared posts.",
            "items": {
              "$ref": "#/components/schemas/PostInput"
            }
          },
          "campaign": {
            "anyOf": [
              {
                "type": "object",
                "additionalProperties": true
              },
              {
                "type": "null"
              }
            ]
          },
          "schedule": {
            "anyOf": [
              {
                "type": "object",
                "additionalProperties": true
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "ok",
          "tenantId",
          "timezone",
          "mode",
          "totalPosts",
          "posts"
        ]
      },
      "RunResponse": {
        "type": "object",
        "description": "Run creation or detail response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "duplicate": {
            "type": "boolean",
            "description": "True when idempotency reused an existing run."
          },
          "mode": {
            "type": [
              "string",
              "null"
            ],
            "description": "draft or scheduled."
          },
          "sourceModel": {
            "type": [
              "string",
              "null"
            ],
            "description": "posts_v1 or campaigns_v2."
          },
          "run": {
            "$ref": "#/components/schemas/Run"
          },
          "posts": {
            "type": "array",
            "description": "Posts in the run.",
            "items": {
              "$ref": "#/components/schemas/Post"
            }
          },
          "summary": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "ok"
        ]
      },
      "RunStatusResponse": {
        "type": "object",
        "description": "Run status response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "run": {
            "$ref": "#/components/schemas/Run"
          },
          "posts": {
            "type": "array",
            "description": "Posts in the run.",
            "items": {
              "$ref": "#/components/schemas/Post"
            }
          },
          "summary": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "ok",
          "run",
          "posts"
        ]
      },
      "RunTableResponse": {
        "type": "object",
        "description": "Run table response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "run": {
            "$ref": "#/components/schemas/Run"
          },
          "rows": {
            "type": "array",
            "description": "Rows sorted by publish time.",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "required": [
          "ok",
          "rows"
        ]
      },
      "AssetResponse": {
        "type": "object",
        "description": "Single asset response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "asset": {
            "$ref": "#/components/schemas/Asset"
          }
        },
        "required": [
          "ok",
          "asset"
        ]
      },
      "AssetsResponse": {
        "type": "object",
        "description": "Asset list response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "total": {
            "type": "integer",
            "description": "Total matching assets."
          },
          "limit": {
            "type": "integer",
            "description": "Page limit."
          },
          "offset": {
            "type": "integer",
            "description": "Page offset."
          },
          "assets": {
            "type": "array",
            "description": "Assets.",
            "items": {
              "$ref": "#/components/schemas/Asset"
            }
          }
        },
        "required": [
          "ok",
          "assets"
        ]
      },
      "MultipartInitiateResponse": {
        "type": "object",
        "description": "Multipart initiation response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "mode": {
            "type": "string",
            "description": "multipart when S3 upload is used, otherwise base64."
          },
          "maxAssetBytes": {
            "type": "integer",
            "description": "Base64 fallback max bytes."
          },
          "asset": {
            "$ref": "#/components/schemas/Asset"
          },
          "upload": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "uploadId": {
                "type": "string",
                "description": "Multipart upload id."
              },
              "partSize": {
                "type": "integer",
                "description": "Recommended part size."
              },
              "totalParts": {
                "type": "integer",
                "description": "Total expected parts."
              }
            }
          }
        },
        "required": [
          "ok",
          "mode"
        ]
      },
      "MultipartPartResponse": {
        "type": "object",
        "description": "Signed multipart part response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "assetId": {
            "type": "string",
            "description": "Asset id."
          },
          "uploadId": {
            "type": "string",
            "description": "Multipart upload id."
          },
          "partNumber": {
            "type": "integer",
            "description": "Part number."
          },
          "url": {
            "type": "string",
            "description": "Signed upload URL.",
            "format": "uri"
          },
          "expiresIn": {
            "type": "integer",
            "description": "Signed URL lifetime in seconds."
          }
        },
        "required": [
          "ok",
          "assetId",
          "uploadId",
          "partNumber",
          "url"
        ]
      },
      "DashboardSessionResponse": {
        "type": "object",
        "description": "Current dashboard session response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "authenticated": {
            "type": "boolean",
            "description": "Whether a dashboard session exists."
          },
          "user": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "tenant": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Tenant"
              },
              {
                "type": "null"
              }
            ]
          },
          "membership": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "ok"
        ]
      },
      "BillingStateResponse": {
        "type": "object",
        "description": "Workspace billing state.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "billing": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "plans": {
            "type": "array",
            "description": "Available plans.",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "required": [
          "ok"
        ]
      },
      "UrlResponse": {
        "type": "object",
        "description": "URL response.",
        "additionalProperties": false,
        "properties": {
          "ok": {
            "const": true
          },
          "url": {
            "type": "string",
            "description": "Redirect URL.",
            "format": "uri"
          }
        },
        "required": [
          "ok",
          "url"
        ]
      },
      "ProductsResponse": {
        "type": "object",
        "description": "App Store products response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "provider": {
            "type": "string",
            "description": "Billing provider."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether App Store billing is enabled."
          },
          "bundleId": {
            "type": [
              "string",
              "null"
            ],
            "description": "iOS bundle id."
          },
          "environment": {
            "type": [
              "string",
              "null"
            ],
            "description": "App Store environment."
          },
          "products": {
            "type": "array",
            "description": "Product mappings.",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "required": [
          "ok",
          "products"
        ]
      },
      "SupportResponse": {
        "type": "object",
        "description": "Support request response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "request": {
            "type": "object",
            "additionalProperties": true
          },
          "message": {
            "type": "string",
            "description": "Confirmation message."
          }
        },
        "required": [
          "ok",
          "request",
          "message"
        ]
      },
      "HealthResponse": {
        "type": "object",
        "description": "Service health response.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          },
          "service": {
            "type": "string",
            "description": "Service name."
          },
          "now": {
            "type": "string",
            "description": "Server time.",
            "format": "date-time"
          },
          "db": {
            "type": "object",
            "additionalProperties": true
          },
          "assetStorage": {
            "type": "object",
            "additionalProperties": true
          },
          "maxAssetBytes": {
            "type": "integer",
            "description": "Maximum base64 upload size."
          },
          "publicBaseUrl": {
            "type": "string",
            "description": "Configured public base URL.",
            "format": "uri"
          }
        },
        "required": [
          "ok",
          "service",
          "now"
        ]
      },
      "WebhookResponse": {
        "type": "object",
        "description": "Webhook acknowledgement.",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "const": true
          }
        },
        "required": [
          "ok"
        ]
      }
    }
  },
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "get_health",
        "summary": "Service health",
        "description": "Returns service, database, storage, worker, billing, and public URL health.\n\nNote: Use this route for uptime checks. It does not require a workspace or API key.\n\nNote: The response includes deployment configuration, not tenant-specific account health.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "none",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/keys/validate": {
      "post": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "post_v1_keys_validate",
        "summary": "Validate API key",
        "description": "Checks the bearer token, returns the workspace, and updates last-used metadata.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/keys": {
      "get": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "get_v1_keys",
        "summary": "List API keys",
        "description": "Lists API key metadata for the authenticated workspace. Secrets are not returned from the public key API.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeysResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      },
      "post": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "post_v1_keys",
        "summary": "Create API key",
        "description": "Creates an additional API key for the authenticated workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/keys/{keyId}": {
      "delete": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "delete_v1_keys_keyId",
        "summary": "Revoke API key",
        "description": "Revokes an API key. The current key cannot revoke itself through this public route.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "API key id to revoke."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/me/usage": {
      "get": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "get_v1_me_usage",
        "summary": "Workspace usage",
        "description": "Returns workspace usage counters and entitlement consumption.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/workspace/health": {
      "get": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "get_v1_workspace_health",
        "summary": "Workspace health",
        "description": "Returns tenant-specific account, scheduling, and workspace health.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceHealthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/jobs": {
      "get": {
        "tags": [
          "Status and Authentication"
        ],
        "operationId": "get_v1_jobs",
        "summary": "List jobs",
        "description": "Lists worker jobs for the workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by job status."
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by provider."
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by account handle."
          },
          {
            "name": "runId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by run id. Also accepted as run_id."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "description": "Maximum jobs to return."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/connections/start": {
      "post": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "post_v1_connections_start",
        "summary": "Start connection",
        "description": "Starts a provider connection. OAuth providers return an authorize URL; Telegram and Discord create manual connections.\n\nNote: Supported providers: x, facebook, instagram_business, instagram, snapchat, tiktok, linkedin, linkedin_page, pinterest, youtube, reddit, discord, telegram, wordpress.\n\nNote: For Telegram, include botToken and chatId. For Discord, include webhookUrl.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionStartRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/connections": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_connections",
        "summary": "List connections",
        "description": "Lists OAuth and manual connection handshakes for the workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/connections/health": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_connections_health",
        "summary": "Connections health",
        "description": "Checks connected account health and provider readiness.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional provider filter."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceHealthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/connections/{connectionId}": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_connections_connectionId",
        "summary": "Connection status",
        "description": "Returns the status of one connection handshake.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connection id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_accounts",
        "summary": "List connected accounts",
        "description": "Lists connected social accounts and destinations in the workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional provider filter."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts/capabilities": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_accounts_capabilities",
        "summary": "List account capabilities",
        "description": "Lists publishing capabilities across connected accounts.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional provider filter."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilitiesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts/{accountId}/capabilities": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_accounts_accountId_capabilities",
        "summary": "Get account capabilities",
        "description": "Returns publishing capabilities for one connected account.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilitiesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts/{accountId}/settings": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_accounts_accountId_settings",
        "summary": "Get publish settings",
        "description": "Returns provider-specific settings fields for one account, such as privacy, reply controls, or media modes.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts/{accountId}/actions": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_v1_accounts_accountId_actions",
        "summary": "List discovery actions",
        "description": "Lists provider discovery actions available for one connected account.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoveryActionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts/{accountId}/actions/{actionId}": {
      "post": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "post_v1_accounts_accountId_actions_actionId",
        "summary": "Run discovery action",
        "description": "Runs a provider discovery action such as syncing boards, pages, or remote channel metadata.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          },
          {
            "name": "actionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Discovery action id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResultResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/accounts/{accountId}": {
      "delete": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "delete_v1_accounts_accountId",
        "summary": "Disconnect account",
        "description": "Disconnects a social account from the workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/oauth/{provider}/callback": {
      "get": {
        "tags": [
          "Connections and Accounts"
        ],
        "operationId": "get_oauth_provider_callback",
        "summary": "OAuth provider callback",
        "description": "Completes provider OAuth. This route is called by providers after the user authorizes SocialClaw.\n\nNote: Human users are redirected back to the dashboard or mobile app.\n\nNote: Do not call this directly unless you are testing a provider OAuth redirect.",
        "security": [],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Provider id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response."
          }
        },
        "x-socialclaw-auth": "callback",
        "x-socialclaw-surface": "callback"
      }
    },
    "/v1/posts": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_posts",
        "summary": "List posts",
        "description": "Lists timeline posts in the workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by run id. Also accepted as run_id."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by post status."
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by account handle."
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by provider."
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by campaign id. Also accepted as campaign_id."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Publish time lower bound. Also accepted as publishFrom or publish_from."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Publish time upper bound. Also accepted as publishTo or publish_to."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "description": "Maximum posts to return."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/{postId}": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_posts_postId",
        "summary": "Get post detail",
        "description": "Returns one post with provider, attempt, and preview details.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      },
      "delete": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "delete_v1_posts_postId",
        "summary": "Cancel post",
        "description": "Cancels a draft or scheduled SocialClaw post before publish.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/{postId}/attempts": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_posts_postId_attempts",
        "summary": "List post attempts",
        "description": "Returns publish attempts for one post.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/{postId}/reconcile": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_posts_postId_reconcile",
        "summary": "Reconcile post",
        "description": "Asks SocialClaw to refresh provider-side post status and metadata.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/validate": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_posts_validate",
        "summary": "Validate schedule",
        "description": "Validates and normalizes a posts[] or campaigns[] schedule without creating a run.\n\nNote: Use this before handing a generated schedule to /v1/posts/apply.\n\nNote: The route accepts either the schedule object directly or { schedule: ... }.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleEnvelope"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/campaigns/preview": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_campaigns_preview",
        "summary": "Preview campaign",
        "description": "Builds a campaign graph from campaigns[] and preflights connected accounts.\n\nNote: Requires a campaigns[] schedule. Flat posts[] schedules return a conflict.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleEnvelope"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/apply": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_posts_apply",
        "summary": "Create run",
        "description": "Creates a scheduled or draft run from a validated schedule.\n\nNote: Use idempotencyKey for generated schedules and retry-safe clients.\n\nNote: The route preflights connected accounts and plan entitlements before creating posts.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleEnvelope"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/runs/{runId}/status": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_runs_runId_status",
        "summary": "Run status",
        "description": "Returns run status, posts, and summary.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Run id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/runs/{runId}/campaign": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_runs_runId_campaign",
        "summary": "Run campaign graph",
        "description": "Returns the campaign graph associated with a run.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Run id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/runs/{runId}": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_runs_runId",
        "summary": "Run detail",
        "description": "Returns run, posts, attempts, and provider details.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Run id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/runs/{runId}/publish": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_runs_runId_publish",
        "summary": "Publish draft run",
        "description": "Turns a draft run into scheduled posts, optionally shifting the start time.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Run id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/runs/{runId}/table": {
      "get": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "get_v1_runs_runId_table",
        "summary": "Run table",
        "description": "Returns a compact table projection for a run.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Run id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunTableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/{postId}/retry": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_posts_postId_retry",
        "summary": "Retry post",
        "description": "Queues a failed post for another publishing attempt.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/posts/{postId}/delete": {
      "post": {
        "tags": [
          "Publishing Runs and Posts"
        ],
        "operationId": "post_v1_posts_postId_delete",
        "summary": "Delete provider post",
        "description": "Deletes a published provider-side post where the provider supports deletion.\n\nNote: This does not just cancel the SocialClaw post. It attempts provider-side deletion.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/assets/upload": {
      "post": {
        "tags": [
          "Assets and Media Delivery"
        ],
        "operationId": "post_v1_assets_upload",
        "summary": "Upload asset",
        "description": "Uploads a small media file as base64 and returns a SocialClaw delivery URL.\n\nNote: Use dashboard multipart upload routes for large browser uploads when S3 storage is enabled.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetUploadRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/assets": {
      "post": {
        "tags": [
          "Assets and Media Delivery"
        ],
        "operationId": "post_v1_assets",
        "summary": "Register asset",
        "description": "Registers an existing object or externally managed asset in the workspace.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetRegistrationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/assets/{assetId}": {
      "delete": {
        "tags": [
          "Assets and Media Delivery"
        ],
        "operationId": "delete_v1_assets_assetId",
        "summary": "Delete asset",
        "description": "Marks an asset for deletion after the retention window.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Asset id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/media/{assetId}/{deliveryToken}/{filename}": {
      "get": {
        "tags": [
          "Assets and Media Delivery"
        ],
        "operationId": "get_media_assetId_deliveryToken_filename",
        "summary": "Fetch media asset",
        "description": "Streams a public media asset by delivery URL.\n\nNote: HEAD is also supported for metadata checks.",
        "security": [],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Asset id."
          },
          {
            "name": "deliveryToken",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Delivery token."
          },
          {
            "name": "filename",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "File name."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "media",
        "x-socialclaw-surface": "media"
      }
    },
    "/media/{assetId}/{deliveryToken}/previews/{filename}": {
      "get": {
        "tags": [
          "Assets and Media Delivery"
        ],
        "operationId": "get_media_assetId_deliveryToken_previews_filename",
        "summary": "Fetch media preview",
        "description": "Streams a generated thumbnail, poster, or preview asset.\n\nNote: HEAD is also supported for metadata checks.",
        "security": [],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Asset id."
          },
          {
            "name": "deliveryToken",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Delivery token."
          },
          {
            "name": "filename",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Preview file name."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "media",
        "x-socialclaw-surface": "media"
      }
    },
    "/v1/analytics/posts/{postId}": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "operationId": "get_v1_analytics_posts_postId",
        "summary": "Post analytics",
        "description": "Returns metrics for one published post.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          },
          {
            "name": "window",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Metric window. Defaults to lifetime."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/analytics/accounts/{accountId}": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "operationId": "get_v1_analytics_accounts_accountId",
        "summary": "Account analytics",
        "description": "Returns account-level metrics when provider support is available.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          },
          {
            "name": "window",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Metric window. Defaults to lifetime."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/analytics/runs/{runId}": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "operationId": "get_v1_analytics_runs_runId",
        "summary": "Run analytics",
        "description": "Returns aggregate metrics for a run.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Run id."
          },
          {
            "name": "window",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Metric window. Defaults to lifetime."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/analytics/refresh": {
      "post": {
        "tags": [
          "Analytics"
        ],
        "operationId": "post_v1_analytics_refresh",
        "summary": "Refresh post analytics",
        "description": "Fetches fresh provider analytics for a post.",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnalyticsRefreshRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "bearer",
        "x-socialclaw-surface": "public"
      }
    },
    "/v1/dashboard/session": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_session",
        "summary": "Dashboard session",
        "description": "Returns the current signed-in dashboard user, workspace, and membership.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/support/request": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_support_request",
        "summary": "Create support request",
        "description": "Submits a support request from the site or dashboard.",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupportRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SupportResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "none",
        "x-socialclaw-surface": "site"
      }
    },
    "/v1/billing/state": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_billing_state",
        "summary": "Billing state",
        "description": "Returns workspace billing state for the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingStateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/billing/checkout": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_billing_checkout",
        "summary": "Create checkout",
        "description": "Creates a billing checkout session for a dashboard billing admin.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BillingCheckoutRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UrlResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/billing/manage": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_billing_manage",
        "summary": "Create billing portal",
        "description": "Creates a customer billing management URL for a dashboard billing admin.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UrlResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/billing/app-store/account-token": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_billing_app_store_account_token",
        "summary": "App Store account token",
        "description": "Returns or creates an App Store account token for the dashboard workspace.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/billing/app-store/products": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_billing_app_store_products",
        "summary": "App Store products",
        "description": "Lists App Store product mappings.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/billing/app-store/transactions/claim": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_billing_app_store_transactions_claim",
        "summary": "Claim App Store transaction",
        "description": "Claims a signed App Store transaction for the dashboard workspace.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppStoreClaimRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingStateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/accounts": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_accounts",
        "summary": "Dashboard accounts",
        "description": "Lists connected accounts for the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional provider filter."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/accounts/{accountId}": {
      "delete": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "delete_v1_dashboard_accounts_accountId",
        "summary": "Dashboard disconnect account",
        "description": "Disconnects an account from the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/accounts/{accountId}/publish-settings": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_accounts_accountId_publish_settings",
        "summary": "Dashboard publish settings",
        "description": "Returns provider-specific settings for dashboard compose.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connected account id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/connections/start": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_connections_start",
        "summary": "Dashboard start connection",
        "description": "Starts an OAuth or manual connection from the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionStartRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/connections/{connectionId}": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_connections_connectionId",
        "summary": "Dashboard connection status",
        "description": "Returns dashboard connection status.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Connection id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/posts": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_posts",
        "summary": "Dashboard posts",
        "description": "Lists dashboard timeline posts.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by post status."
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by provider."
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by account handle."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Publish time lower bound."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Publish time upper bound."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Maximum posts to return."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Pagination offset."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/posts/{postId}/reconcile": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_posts_postId_reconcile",
        "summary": "Dashboard reconcile post",
        "description": "Refreshes provider-side status for a dashboard post.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/posts/{postId}": {
      "patch": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "patch_v1_dashboard_posts_postId",
        "summary": "Dashboard update post",
        "description": "Updates an editable dashboard timeline post.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DashboardPostUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      },
      "delete": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "delete_v1_dashboard_posts_postId",
        "summary": "Dashboard delete post",
        "description": "Deletes an editable timeline post from the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Post id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_assets",
        "summary": "Dashboard assets",
        "description": "Lists ready assets for the dashboard media picker.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200
            },
            "description": "Maximum assets to return."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Pagination offset."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets/{assetId}": {
      "delete": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "delete_v1_dashboard_assets_assetId",
        "summary": "Dashboard delete asset",
        "description": "Marks a dashboard asset for deletion.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Asset id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets/upload": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_assets_upload",
        "summary": "Dashboard base64 asset upload",
        "description": "Uploads a small dashboard asset as base64.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetUploadRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets/upload/initiate": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_assets_upload_initiate",
        "summary": "Dashboard multipart initiate",
        "description": "Starts a multipart asset upload when S3 storage is available.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartUploadInitiateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultipartInitiateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets/upload/{assetId}/part": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_assets_upload_assetId_part",
        "summary": "Dashboard multipart sign part",
        "description": "Signs one multipart upload part for direct browser upload.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Uploading asset id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartPartRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultipartPartResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets/upload/{assetId}/complete": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_assets_upload_assetId_complete",
        "summary": "Dashboard multipart complete",
        "description": "Completes a multipart dashboard upload and marks the asset ready.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Uploading asset id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartCompleteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/assets/upload/{assetId}/abort": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_assets_upload_assetId_abort",
        "summary": "Dashboard multipart abort",
        "description": "Aborts a multipart dashboard upload.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Uploading asset id."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/compose": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_compose",
        "summary": "Dashboard compose",
        "description": "Creates a scheduled run from dashboard compose state and can publish immediately.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DashboardComposeRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/keys": {
      "get": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "get_v1_dashboard_keys",
        "summary": "Dashboard list keys",
        "description": "Lists dashboard API keys, including secrets for dashboard display.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeysResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      },
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_keys",
        "summary": "Dashboard create key",
        "description": "Creates a workspace API key from the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/keys/{keyId}": {
      "delete": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "delete_v1_dashboard_keys_keyId",
        "summary": "Dashboard revoke key",
        "description": "Revokes a workspace API key from the dashboard.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "API key id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/v1/dashboard/keys/{keyId}/rotate": {
      "post": {
        "tags": [
          "Dashboard Browser API"
        ],
        "operationId": "post_v1_dashboard_keys_keyId_rotate",
        "summary": "Dashboard rotate key",
        "description": "Rotates a workspace API key and returns the new secret.",
        "security": [
          {
            "DashboardSession": []
          }
        ],
        "parameters": [
          {
            "name": "keyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "API key id."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "session",
        "x-socialclaw-surface": "dashboard"
      }
    },
    "/auth/mobile/google/start": {
      "get": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "get_auth_mobile_google_start",
        "summary": "Mobile Google auth start",
        "description": "Starts native/mobile dashboard authentication with Google.",
        "security": [],
        "parameters": [
          {
            "name": "callbackScheme",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional mobile callback scheme."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response."
          }
        },
        "x-socialclaw-auth": "callback",
        "x-socialclaw-surface": "auth"
      }
    },
    "/auth/mobile/apple/start": {
      "get": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "get_auth_mobile_apple_start",
        "summary": "Mobile Apple auth start",
        "description": "Starts native/mobile dashboard authentication with Apple.",
        "security": [],
        "parameters": [
          {
            "name": "callbackScheme",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional mobile callback scheme."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response."
          }
        },
        "x-socialclaw-auth": "callback",
        "x-socialclaw-surface": "auth"
      }
    },
    "/auth/mobile/apple/native": {
      "post": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "post_auth_mobile_apple_native",
        "summary": "Native Apple token exchange",
        "description": "Exchanges a native Apple identity token for a SocialClaw dashboard session payload.",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppleNativeAuthRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "callback",
        "x-socialclaw-surface": "auth"
      }
    },
    "/v1/billing/webhook": {
      "post": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "post_v1_billing_webhook",
        "summary": "Billing webhook",
        "description": "Processes Lemon Squeezy billing events.\n\nNote: Requests must include the expected billing signature header.",
        "security": [
          {
            "WebhookSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "webhook",
        "x-socialclaw-surface": "webhook"
      }
    },
    "/v1/billing/app-store/notifications": {
      "post": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "post_v1_billing_app_store_notifications",
        "summary": "App Store server notification",
        "description": "Processes signed App Store server notifications.",
        "security": [
          {
            "WebhookSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "webhook",
        "x-socialclaw-surface": "webhook"
      }
    },
    "/webhooks/meta/deauthorize": {
      "post": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "post_webhooks_meta_deauthorize",
        "summary": "Meta deauthorize webhook",
        "description": "Receives Meta deauthorization callbacks.",
        "security": [
          {
            "WebhookSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "webhook",
        "x-socialclaw-surface": "webhook"
      }
    },
    "/webhooks/meta/data-deletion": {
      "post": {
        "tags": [
          "Auth, Billing, and Provider Callbacks"
        ],
        "operationId": "post_webhooks_meta_data_deletion",
        "summary": "Meta data deletion webhook",
        "description": "Receives Meta data deletion requests and returns a deletion status URL/code.",
        "security": [
          {
            "WebhookSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OkResponse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, or unauthorized credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Request body or semantic validation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-socialclaw-auth": "webhook",
        "x-socialclaw-surface": "webhook"
      }
    }
  }
}