{"openapi":"3.1.0","info":{"title":"Soku API","version":"3.9.2","description":"The agent-facing Soku API: the surface the Soku CLI (`npm i -g @soku-ai/cli`)\nuses, published so any AI agent can call it directly.\n\n**Authentication.** Workspace-scoped `/api/cli` operations take a bearer session token\nand `X-Soku-Org` / `X-Soku-Brand` headers. Session-only workspace discovery uses the\nbearer token without those headers; public skill bundles need neither.\nObtain one with the OAuth 2.0 device authorization grant (RFC 8628) — either\n`soku login`, or `POST /api/device/code` followed by polling\n`POST /api/device/token`. Authorization-server metadata is published at\nhttps://soku.ai/.well-known/oauth-authorization-server\n\n**Write operations are human-gated.** Calls that would change a connected ad\naccount are queued for approval and surface through `/api/cli/reviews`; a 2xx\nmeans the request was accepted, not that the change is already live.","contact":{"name":"Soku","email":"hello@soku.ai","url":"https://soku.ai/cli"},"license":{"name":"Proprietary","url":"https://soku.ai/terms"}},"servers":[{"url":"https://api.soku.ai","description":"Soku API"}],"paths":{"/api/device/code":{"post":{"tags":["Device Auth"],"summary":"Device Code","description":"Start a device authorization (CLI, unauthenticated).","operationId":"device.postCode","requestBody":{"content":{"application/json":{"schema":{"properties":{"client_id":{"type":"string","maxLength":128,"title":"Client Id","default":"soku-cli"},"scope":{"type":"string","maxLength":512,"title":"Scope","default":"data-infra"},"client_capabilities":{"items":{"type":"string"},"type":"array","maxItems":16,"title":"Client Capabilities"}},"type":"object","title":"DeviceCodeRequest"}},"application/x-www-form-urlencoded":{"schema":{"properties":{"client_id":{"type":"string","maxLength":128,"title":"Client Id","default":"soku-cli"},"scope":{"type":"string","maxLength":512,"title":"Scope","default":"data-infra"},"client_capabilities":{"items":{"type":"string"},"type":"array","maxItems":16,"title":"Client Capabilities"}},"type":"object","title":"DeviceCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/api/device/token":{"post":{"tags":["Device Auth"],"summary":"Device Token","description":"Poll for the access token (CLI, unauthenticated).","operationId":"device.postToken","requestBody":{"content":{"application/json":{"schema":{"properties":{"grant_type":{"type":"string","title":"Grant Type","default":"urn:ietf:params:oauth:grant-type:device_code"},"device_code":{"type":"string","maxLength":512,"minLength":1,"title":"Device Code"},"client_id":{"type":"string","maxLength":128,"title":"Client Id","default":"soku-cli"}},"type":"object","required":["device_code"],"title":"DeviceTokenRequest"}},"application/x-www-form-urlencoded":{"schema":{"properties":{"grant_type":{"type":"string","title":"Grant Type","default":"urn:ietf:params:oauth:grant-type:device_code"},"device_code":{"type":"string","maxLength":512,"minLength":1,"title":"Device Code"},"client_id":{"type":"string","maxLength":128,"title":"Client Id","default":"soku-cli"}},"type":"object","required":["device_code"],"title":"DeviceTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/api/cli/skills/index.json":{"get":{"tags":["Soku CLI"],"summary":"Public Skill Index","description":"Return the public CLI skill catalog index.\n\nThis endpoint intentionally does not require a CLI token: the bundle text is\npublic installation material. Actual data access still requires\n``soku auth login`` and workspace-scoped API calls.","operationId":"cli.getSkillsIndexJson","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cli/skills/{slug}.zip":{"get":{"tags":["Soku CLI"],"summary":"Public Skill Zip","description":"Return one CLI-native public skill bundle.","operationId":"cli.getSkillsSlugZip","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/zip":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cli/me":{"get":{"tags":["Soku CLI"],"summary":"Me","description":"Return the identity behind the current CLI session token.","operationId":"cli.getMe","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Api Cli Me Get"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/memory":{"get":{"tags":["Soku CLI"],"summary":"List Memory","description":"List brand-scoped memory entries for the active CLI workspace.","operationId":"cli.getMemory","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"enum":["user","feedback","reference","task","reflection"],"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Memory Api Cli Memory Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/memory/{type_}/{name}":{"get":{"tags":["Soku CLI"],"summary":"Get Memory Entry","description":"Read one full brand-scoped memory entry for the active CLI workspace.","operationId":"cli.getMemoryByTypeByName","parameters":[{"name":"type_","in":"path","required":true,"schema":{"enum":["user","feedback","reference","task","reflection"],"type":"string","title":"Type "}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Memory Entry Api Cli Memory  Type    Name  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/capabilities":{"get":{"tags":["Soku CLI"],"summary":"Capabilities","description":"List all callable CLI data capabilities (resource model retired).","operationId":"cli.getCapabilities","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Capabilities Api Cli Capabilities Get"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/capabilities/{namespace}/{action}":{"get":{"tags":["Soku CLI"],"summary":"Describe Capability","description":"Return the full spec for one CLI capability.","operationId":"cli.getCapabilitiesByNamespaceByAction","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Describe Capability Api Cli Capabilities  Namespace   Action  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/call/{namespace}/{action}":{"post":{"tags":["Soku CLI"],"summary":"Call Action","description":"Invoke one data action.","operationId":"cli.postCallByNamespaceByAction","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","title":"Namespace"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/reviews":{"get":{"tags":["Soku CLI"],"summary":"List Reviews","description":"List review-gated actions this CLI user initiated in the active workspace.","operationId":"cli.getReviews","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Reviews Api Cli Reviews Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/reviews/{review_id}":{"get":{"tags":["Soku CLI"],"summary":"Get Review","description":"Fetch one review (status, payload, executed payload, result, decision).","operationId":"cli.getReviewsByReviewId","parameters":[{"name":"review_id","in":"path","required":true,"schema":{"type":"string","title":"Review Id"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Review Api Cli Reviews  Review Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/reviews/{review_id}/respond":{"post":{"tags":["Soku CLI"],"summary":"Respond Review","description":"Approve or reject a review. Bulk approvals execute asynchronously.","operationId":"cli.postReviewsByReviewIdRespond","parameters":[{"name":"review_id","in":"path","required":true,"schema":{"type":"string","title":"Review Id"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Respond Review Api Cli Reviews  Review Id  Respond Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/egress/providers":{"get":{"tags":["Soku CLI"],"summary":"Egress Providers","description":"List the third-party hosts the egress proxy injects credentials for.","operationId":"cli.getEgressProviders","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Egress Providers Api Cli Egress Providers Get"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/egress":{"post":{"tags":["Soku CLI"],"summary":"Egress","description":"Reverse-proxy one third-party request with server-side credential injection.\n\nThe CLI sends the target as a base64 JSON spec header\n(``X-Soku-Egress-Spec`` = ``{method, url, headers, id}``) plus the raw\nrequest body. We match the host against the proxy_provider allowlist, inject\nthe provider credential (unless the caller brought a real one), forward,\nmeter the call, and stream the upstream response back verbatim.","operationId":"cli.postEgress","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/orgs":{"get":{"tags":["Soku CLI"],"summary":"List Orgs","description":"List organizations the token owner belongs to.","operationId":"cli.getOrgs","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Orgs Api Cli Orgs Get"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brands":{"get":{"tags":["Soku CLI"],"summary":"List Brands","description":"List brands the owner can access within one organization.","operationId":"cli.getBrands","parameters":[{"name":"org_id","in":"query","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Brands Api Cli Brands Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brands/search":{"get":{"tags":["Soku CLI"],"summary":"Search Brands","description":"Search accessible live brands across live organizations in one query.","operationId":"cli.getBrandsSearch","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Brands Api Cli Brands Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/automations":{"get":{"tags":["Soku CLI"],"summary":"List Cli Automations","description":"List automations for the active CLI workspace.","operationId":"cli.getAutomations","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAutomationListResponse"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]},"post":{"tags":["Soku CLI"],"summary":"Create Cli Automation","description":"Create an automation in the active CLI workspace.","operationId":"cli.postAutomations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/automations/{automation_id}":{"get":{"tags":["Soku CLI"],"summary":"Get Cli Automation","description":"Read one automation from the active CLI workspace.","operationId":"cli.getAutomationsByAutomationId","parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Automation Id"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/automations/{automation_id}/runs":{"get":{"tags":["Soku CLI"],"summary":"List Cli Automation Runs","description":"List run history for one automation in the active CLI workspace.","operationId":"cli.getAutomationsByAutomationIdRuns","parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Automation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAutomationRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/automations/{automation_id}/trigger":{"post":{"tags":["Soku CLI"],"summary":"Trigger Cli Automation","description":"Trigger one manual automation run from the CLI.","operationId":"cli.postAutomationsByAutomationIdTrigger","parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Automation Id"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brand-skills":{"get":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"List Brand Skills","description":"List installed catalog skills and uploaded private skills for the active brand.","operationId":"cli.getBrandSkills","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Brand Skills Api Cli Brand Skills Get"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/brand-skills/catalog":{"get":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"List Brand Skill Catalog","description":"List catalog skills with active-brand install state.","operationId":"cli.getBrandSkillsCatalog","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Brand Skill Catalog Api Cli Brand Skills Catalog Get"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/brand-skills/{slug}/install":{"post":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Install Brand Skill","description":"Install or re-add a catalog skill to the active brand.","operationId":"cli.postBrandSkillsBySlugInstall","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Install Brand Skill Api Cli Brand Skills  Slug  Install Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brand-skills/{slug}/reset":{"post":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Reset Brand Skill","description":"Reset an installed catalog skill to the current catalog version.","operationId":"cli.postBrandSkillsBySlugReset","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Brand Skill Api Cli Brand Skills  Slug  Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brand-skills/{slug}":{"delete":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Uninstall Brand Skill","description":"Uninstall a catalog skill from the active brand.","operationId":"cli.deleteBrandSkillsBySlug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Uninstall Brand Skill Api Cli Brand Skills  Slug  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brand-skills/upload":{"post":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Upload Brand Skill","description":"Upload a private skill zip into the active brand.","operationId":"cli.postBrandSkillsUpload","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_brand_skill_api_cli_brand_skills_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Brand Skill Api Cli Brand Skills Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/brand-skills/uploaded/{slug}":{"delete":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Delete Uploaded Brand Skill","description":"Delete a private uploaded skill from the active brand.","operationId":"cli.deleteBrandSkillsUploadedBySlug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Uploaded Brand Skill Api Cli Brand Skills Uploaded  Slug  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brand-skills/uploaded/{slug}/files":{"get":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"List Uploaded Brand Skill Files","description":"List files in one installed or uploaded brand skill.","operationId":"cli.getBrandSkillsUploadedBySlugFiles","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Uploaded Brand Skill Files Api Cli Brand Skills Uploaded  Slug  Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/brand-skills/uploaded/{slug}/files/{path}":{"get":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Read Uploaded Brand Skill File","description":"Read a UTF-8 file from one installed or uploaded brand skill.","operationId":"cli.getBrandSkillsUploadedBySlugFilesByPath","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Read Uploaded Brand Skill File Api Cli Brand Skills Uploaded  Slug  Files  Path  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]},"put":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Write Uploaded Brand Skill File","description":"Overwrite one file in one installed or uploaded brand skill.","operationId":"cli.putBrandSkillsUploadedBySlugFilesByPath","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadedSkillFileWriteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Write Uploaded Brand Skill File Api Cli Brand Skills Uploaded  Slug  Files  Path  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]},"post":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Create Uploaded Brand Skill File","description":"Create one file in one installed or uploaded brand skill.","operationId":"cli.postBrandSkillsUploadedBySlugFilesByPath","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadedSkillFileWriteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Uploaded Brand Skill File Api Cli Brand Skills Uploaded  Slug  Files  Path  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]},"delete":{"tags":["Soku CLI","CLI-brand-skills"],"summary":"Delete Uploaded Brand Skill File","description":"Delete one file from one installed or uploaded brand skill.","operationId":"cli.deleteBrandSkillsUploadedBySlugFilesByPath","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Uploaded Brand Skill File Api Cli Brand Skills Uploaded  Slug  Files  Path  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/seo-hosting/domain-connections":{"get":{"tags":["Soku CLI"],"summary":"List Seo Hosting Domain Connections","description":"List SEO Hosting domain connections for the active CLI workspace.","operationId":"cli.getSeoHostingDomainConnections","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Seo Hosting Domain Connections Api Cli Seo Hosting Domain Connections Get"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]},"post":{"tags":["Soku CLI"],"summary":"Create Seo Hosting Cname Connection","description":"Create and provision a CNAME SEO Hosting connection from the CLI.","operationId":"cli.postSeoHostingDomainConnections","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainConnectionCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Seo Hosting Cname Connection Api Cli Seo Hosting Domain Connections Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/seo-hosting/domain-connections/worker/probe":{"post":{"tags":["Soku CLI"],"summary":"Probe Seo Hosting Worker Connection","description":"Probe a customer hostname before CLI Worker reverse-proxy provisioning.","operationId":"cli.postSeoHostingDomainConnectionsWorkerProbe","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerProbeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Probe Seo Hosting Worker Connection Api Cli Seo Hosting Domain Connections Worker Probe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/seo-hosting/domain-connections/worker":{"post":{"tags":["Soku CLI"],"summary":"Create Seo Hosting Worker Connection","description":"Create and provision a Cloudflare Worker reverse-proxy connection.","operationId":"cli.postSeoHostingDomainConnectionsWorker","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerConnectionCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Seo Hosting Worker Connection Api Cli Seo Hosting Domain Connections Worker Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/seo-hosting/assets":{"post":{"tags":["Soku CLI"],"summary":"Upload Seo Hosting Asset","description":"Upload an SEO Hosting asset (image / css / font) to the public CDN.\n\nA direct ``multipart/form-data`` upload — the CLI streams the file, no base64.\nMirrors the ``seo_hosting/upload_asset`` data action's authz (seo-hosting\nresource + org-admin) and reuses ``AssetPublisher`` for the same path /\nextension validation and Content-Type derivation (served Content-Type is\nalways derived from the dest ``path`` extension, never client-supplied).\nFor ``.css`` uploads the response adds an advisory ``warnings`` list\n(fonts declared but never loaded; ``[]`` otherwise).","operationId":"cli.postSeoHostingAssets","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_seo_hosting_asset_api_cli_seo_hosting_assets_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Seo Hosting Asset Api Cli Seo Hosting Assets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/seo-hosting/domain-connections/{connection_id}/verify":{"post":{"tags":["Soku CLI"],"summary":"Verify Seo Hosting Domain Connection","description":"Run one verification pass for a CLI SEO Hosting connection.","operationId":"cli.postSeoHostingDomainConnectionsByConnectionIdVerify","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Verify Seo Hosting Domain Connection Api Cli Seo Hosting Domain Connections  Connection Id  Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/seo-hosting/domain-connections/{connection_id}":{"delete":{"tags":["Soku CLI"],"summary":"Delete Seo Hosting Domain Connection","description":"Disconnect a CLI SEO Hosting domain connection.","operationId":"cli.deleteSeoHostingDomainConnectionsByConnectionId","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Seo Hosting Domain Connection Api Cli Seo Hosting Domain Connections  Connection Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/context-hub/files":{"get":{"tags":["Soku CLI"],"summary":"List Context Files","description":"List files and sub-directories at a Context Hub directory level.","operationId":"cli.getContextHubFiles","parameters":[{"name":"dir","in":"query","required":false,"schema":{"type":"string","description":"Context-relative directory (e.g. 'docs')","default":"","title":"Dir"},"description":"Context-relative directory (e.g. 'docs')"},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Context Files Api Cli Context Hub Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]},"delete":{"tags":["Soku CLI"],"summary":"Delete Context File","description":"Delete a single Context Hub file.","operationId":"cli.deleteContextHubFiles","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"Context-relative file path","title":"Path"},"description":"Context-relative file path"},{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Context File Api Cli Context Hub Files Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}]}},"/api/cli/context-hub/upload":{"post":{"tags":["Soku CLI"],"summary":"Create Context Upload Url","description":"Issue a presigned PUT URL for a Context Hub upload (two-step).","operationId":"cli.postContextHubUpload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextUploadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Context Upload Url Api Cli Context Hub Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/context-hub/directory":{"post":{"tags":["Soku CLI"],"summary":"Create Context Directory","description":"Create a Context Hub directory.","operationId":"cli.postContextHubDirectory","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextDirRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Context Directory Api Cli Context Hub Directory Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/context-hub/rename":{"post":{"tags":["Soku CLI"],"summary":"Rename Context Path","description":"Rename or move a Context Hub file or directory.","operationId":"cli.postContextHubRename","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextRenameRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rename Context Path Api Cli Context Hub Rename Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}},"/api/cli/files/publish":{"post":{"tags":["Soku CLI","CLI-files"],"summary":"Publish File","description":"Upload a file and return a 30-minute signed URL.\n\nMultipart ``form-data`` upload (the CLI streams the file, no base64).\nGated by the ``asset-publish`` resource bundle.","operationId":"cli.postFilesPublish","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_publish_file_api_cli_files_publish_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/apps__api__routers__cli__files__FilePublishResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SokuSessionToken":[]}],"parameters":[{"name":"X-Soku-Org","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."},{"name":"X-Soku-Brand","in":"header","required":true,"schema":{"type":"string"},"description":"Workspace context required by this CLI operation."}]}}},"components":{"schemas":{"AdsAuditMetricsResponse":{"properties":{"coverageComplete":{"type":"boolean","title":"Coveragecomplete"},"expectedAccounts":{"type":"integer","title":"Expectedaccounts"},"processedAccounts":{"type":"integer","title":"Processedaccounts"},"expectedEntities":{"type":"integer","title":"Expectedentities"},"processedEntities":{"type":"integer","title":"Processedentities"},"findings":{"type":"integer","title":"Findings"},"drifted":{"type":"integer","title":"Drifted"},"noBaseline":{"type":"integer","title":"Nobaseline"},"accountDisconnected":{"type":"integer","title":"Accountdisconnected"},"entityDeleted":{"type":"integer","title":"Entitydeleted"},"inventoryReadFailures":{"type":"integer","title":"Inventoryreadfailures"},"providerReadFailures":{"type":"integer","title":"Providerreadfailures"},"missingCadences":{"items":{"type":"string"},"type":"array","title":"Missingcadences"},"platforms":{"items":{"$ref":"#/components/schemas/AdsAuditPlatformMetricsResponse"},"type":"array","title":"Platforms"}},"type":"object","required":["coverageComplete","expectedAccounts","processedAccounts","expectedEntities","processedEntities","findings","drifted","noBaseline","accountDisconnected","entityDeleted","inventoryReadFailures","providerReadFailures","platforms"],"title":"AdsAuditMetricsResponse"},"AdsAuditPlatformMetricsResponse":{"properties":{"platform":{"type":"string","title":"Platform"},"accounts":{"type":"integer","title":"Accounts"},"entities":{"type":"integer","title":"Entities"},"findings":{"type":"integer","title":"Findings"},"drifted":{"type":"integer","title":"Drifted"},"noBaseline":{"type":"integer","title":"Nobaseline"},"accountDisconnected":{"type":"integer","title":"Accountdisconnected"},"entityDeleted":{"type":"integer","title":"Entitydeleted"},"inventoryReadFailures":{"type":"integer","title":"Inventoryreadfailures"},"providerReadFailures":{"type":"integer","title":"Providerreadfailures"}},"type":"object","required":["platform","accounts","entities","findings","drifted","noBaseline","accountDisconnected","entityDeleted","inventoryReadFailures","providerReadFailures"],"title":"AdsAuditPlatformMetricsResponse"},"AutomationCreateRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"prompt":{"type":"string","maxLength":20000,"minLength":1,"title":"Prompt"},"tier":{"type":"string","maxLength":32,"minLength":1,"title":"Tier"},"context_references":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContextReferenceRequest"},"type":"array"},{"type":"null"}],"title":"Context References"},"attachment_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Attachment Ids"},"schedule":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ScheduleConfig"},{"$ref":"#/components/schemas/MonitorScheduleConfig-Input"}],"discriminator":{"propertyName":"kind","mapping":{"cron":"#/components/schemas/ScheduleConfig","interval":"#/components/schemas/ScheduleConfig","monitor":"#/components/schemas/MonitorScheduleConfig-Input","multi":"#/components/schemas/ScheduleConfig","once_at":"#/components/schemas/ScheduleConfig","rrule":"#/components/schemas/ScheduleConfig"}}},{"type":"null"}],"title":"Schedule"},"scheduleContract":{"anyOf":[{"$ref":"#/components/schemas/ScheduleContractWire"},{"type":"null"}]},"timezone":{"type":"string","maxLength":64,"minLength":1,"title":"Timezone","default":"UTC"}},"type":"object","required":["name","prompt"],"title":"AutomationCreateRequest"},"AutomationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"prompt":{"type":"string","title":"Prompt"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"contextReferences":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContextReferenceRequest"},"type":"array"},{"type":"null"}],"title":"Contextreferences"},"attachmentIds":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Attachmentids"},"schedule":{"oneOf":[{"$ref":"#/components/schemas/ScheduleConfig"},{"$ref":"#/components/schemas/MonitorScheduleConfig-Output"}],"title":"Schedule","discriminator":{"propertyName":"kind","mapping":{"cron":"#/components/schemas/ScheduleConfig","interval":"#/components/schemas/ScheduleConfig","monitor":"#/components/schemas/MonitorScheduleConfig-Output","multi":"#/components/schemas/ScheduleConfig","once_at":"#/components/schemas/ScheduleConfig","rrule":"#/components/schemas/ScheduleConfig"}}},"scheduleContract":{"anyOf":[{"$ref":"#/components/schemas/ScheduleContractWire"},{"type":"null"}]},"timezone":{"type":"string","title":"Timezone"},"status":{"type":"string","enum":["active","paused","completed","error"],"title":"Status"},"monitorState":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Monitorstate"},"nextRunAtMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nextrunatms"},"pausedReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pausedreason"},"billingBlockedAtMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Billingblockedatms"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"owner":{"anyOf":[{"$ref":"#/components/schemas/OwnerInfo"},{"type":"null"}]},"isOwner":{"type":"boolean","title":"Isowner","default":false},"canWrite":{"type":"boolean","title":"Canwrite","default":false}},"type":"object","required":["id","name","prompt","schedule","timezone","status","createdAt","updatedAt"],"title":"AutomationResponse"},"AutomationTriggerResponse":{"properties":{"runId":{"type":"string","format":"uuid","title":"Runid"},"conversationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversationid"}},"type":"object","required":["runId"],"title":"AutomationTriggerResponse"},"Body_publish_file_api_cli_files_publish_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"target_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Dir"}},"type":"object","required":["file"],"title":"Body_publish_file_api_cli_files_publish_post"},"Body_upload_brand_skill_api_cli_brand_skills_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"Skill bundle zip; <=50MB"}},"type":"object","required":["file"],"title":"Body_upload_brand_skill_api_cli_brand_skills_upload_post"},"Body_upload_seo_hosting_asset_api_cli_seo_hosting_assets_post":{"properties":{"path":{"type":"string","title":"Path"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["path","file"],"title":"Body_upload_seo_hosting_asset_api_cli_seo_hosting_assets_post"},"CliAutomationListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AutomationResponse"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["items","count"],"title":"CliAutomationListResponse"},"CliAutomationRunResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"taskId":{"type":"string","format":"uuid","title":"Taskid"},"conversationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversationid"},"conversationKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationkey"},"status":{"type":"string","enum":["pending","running","done","error","skipped"],"title":"Status"},"promptSnapshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Promptsnapshot"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"finishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finishedat"},"scheduledFor":{"type":"string","format":"date-time","title":"Scheduledfor"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Errormessage"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"adsAuditMetrics":{"anyOf":[{"$ref":"#/components/schemas/AdsAuditMetricsResponse"},{"type":"null"}]},"pendingReviewCount":{"type":"integer","title":"Pendingreviewcount","default":0},"artifactsCount":{"type":"integer","title":"Artifactscount","default":0},"conversationPath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversationpath"}},"type":"object","required":["id","taskId","status","scheduledFor"],"title":"CliAutomationRunResponse"},"CliAutomationRunsResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/CliAutomationRunResponse"},"type":"array","title":"Runs"},"total":{"type":"integer","title":"Total"},"hasMore":{"type":"boolean","title":"Hasmore"}},"type":"object","required":["runs","total","hasMore"],"title":"CliAutomationRunsResponse"},"ContextDirRequest":{"properties":{"path":{"type":"string","maxLength":200,"minLength":1,"title":"Path"}},"type":"object","required":["path"],"title":"ContextDirRequest"},"ContextReferenceRequest":{"properties":{"id":{"type":"string","maxLength":255,"title":"Id"},"type":{"type":"string","enum":["account","campaign","ad_set","ad","report","skill","integration","file","metric"],"title":"Type"},"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id","type"],"title":"ContextReferenceRequest"},"ContextRenameRequest":{"properties":{"old_path":{"type":"string","maxLength":200,"minLength":1,"title":"Old Path"},"new_path":{"type":"string","maxLength":200,"minLength":1,"title":"New Path"}},"type":"object","required":["old_path","new_path"],"title":"ContextRenameRequest"},"ContextUploadRequest":{"properties":{"filename":{"type":"string","maxLength":500,"title":"Filename"},"content_type":{"type":"string","maxLength":100,"title":"Content Type","default":"application/octet-stream"},"target_dir":{"type":"string","maxLength":200,"title":"Target Dir","default":""}},"type":"object","required":["filename"],"title":"ContextUploadRequest"},"DomainConnectionCreateRequest":{"properties":{"hostname":{"type":"string","maxLength":255,"minLength":1,"title":"Hostname"},"sections":{"items":{"type":"string"},"type":"array","title":"Sections"}},"type":"object","required":["hostname"],"title":"DomainConnectionCreateRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MonitorConditionPayload":{"properties":{"schemaVersion":{"type":"integer","title":"Schemaversion","default":1},"type":{"type":"string","enum":["threshold","relative_change"],"title":"Type"},"metricKey":{"type":"string","maxLength":64,"minLength":1,"title":"Metrickey"},"operator":{"type":"string","maxLength":8,"minLength":1,"title":"Operator"},"threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Threshold"},"thresholdPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Thresholdpct"},"window":{"$ref":"#/components/schemas/MonitorConditionWindow"},"baselineWindow":{"anyOf":[{"$ref":"#/components/schemas/MonitorConditionWindow"},{"type":"null"}]},"minSpendMicros":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Minspendmicros"},"minClicks":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Minclicks"},"minConversions":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Minconversions"}},"type":"object","required":["type","metricKey","operator","window"],"title":"MonitorConditionPayload","description":"Wire shape of a monitor condition (threshold / relative_change).\n\nDeliberately lenient: fields are declared explicitly so the OpenAPI/TS\ntypes are useful, but the single validation authority is\n``packages.services.automation.monitor_config.parse_monitor_schedule_config``\n(which delegates to ``packages.services.monitoring.condition_spec``). The\nservice layer re-validates the snake_case dump of this model, so bounds and\ncross-field rules are enforced there, not here."},"MonitorConditionWindow":{"properties":{"days":{"type":"integer","minimum":1,"title":"Days"}},"type":"object","required":["days"],"title":"MonitorConditionWindow","description":"Rolling window expressed in whole days (mirrors condition_spec)."},"MonitorScheduleConfig-Input":{"properties":{"kind":{"type":"string","const":"monitor","title":"Kind"},"condition":{"$ref":"#/components/schemas/MonitorConditionPayload"},"scope":{"anyOf":[{"$ref":"#/components/schemas/MonitorScopePayload"},{"type":"null"}]},"checkIntervalMinutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Checkintervalminutes"},"cooldownMinutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cooldownminutes"},"pauseAfterTrigger":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pauseaftertrigger"}},"type":"object","required":["kind","condition"],"title":"MonitorScheduleConfig","description":"Monitor schedule wire shape (``kind=\"monitor\"``).\n\nThis is the API-boundary counterpart of the monitor ``schedule_config``\nJSONB contract. It never enters the ``ScheduleContract`` system — monitor\nrows are branched around contract parsing in ``automation_response`` and\n``AutomationsService`` (a monitor config would raise inside\n``schedule_contract_from_storage`` and poison whole list endpoints).\nInterval/cooldown bounds are enforced by the service-layer parse, not here."},"MonitorScheduleConfig-Output":{"properties":{"kind":{"type":"string","const":"monitor","title":"Kind"},"condition":{"$ref":"#/components/schemas/MonitorConditionPayload"},"scope":{"anyOf":[{"$ref":"#/components/schemas/MonitorScopePayload"},{"type":"null"}]},"checkIntervalMinutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Checkintervalminutes"},"cooldownMinutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cooldownminutes"},"pauseAfterTrigger":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pauseaftertrigger"}},"type":"object","required":["kind","condition"],"title":"MonitorScheduleConfig","description":"Monitor schedule wire shape (``kind=\"monitor\"``).\n\nThis is the API-boundary counterpart of the monitor ``schedule_config``\nJSONB contract. It never enters the ``ScheduleContract`` system — monitor\nrows are branched around contract parsing in ``automation_response`` and\n``AutomationsService`` (a monitor config would raise inside\n``schedule_contract_from_storage`` and poison whole list endpoints).\nInterval/cooldown bounds are enforced by the service-layer parse, not here."},"MonitorScopePayload":{"properties":{"selector":{"anyOf":[{"type":"string","const":"all_active"},{"type":"null"}],"title":"Selector"},"accountId":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Accountid"},"accountIds":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Accountids"}},"type":"object","title":"MonitorScopePayload","description":"Wire shape of a monitor account scope (validated by the service)."},"OwnerInfo":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"display_name":{"type":"string","title":"Display Name"},"email":{"type":"string","title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","required":["user_id","display_name","email","avatar_url"],"title":"OwnerInfo","description":"Public identity of a brand-shared resource's owner.\n\nEmbedded in chat / task responses so the UI can render an owner avatar and\ndistinguish \"your\" resources from teammates'. Populated by joining the\n``users`` table on ``conversation.user_id`` / ``task.created_by_user_id``."},"ScheduleConfig":{"properties":{"kind":{"type":"string","enum":["cron","interval","once_at","rrule","multi"],"title":"Kind"},"expr":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Expr"},"exprs":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Exprs"},"rrule":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Rrule"},"everySeconds":{"anyOf":[{"type":"integer","multipleOf":60,"minimum":3600},{"type":"null"}],"title":"Everyseconds"},"at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"At"}},"type":"object","required":["kind"],"title":"ScheduleConfig","description":"Frontend-compatible schedule config."},"ScheduleContractWire":{"properties":{"kind":{"type":"string","enum":["local_cron","local_multi","local_rrule","interval","once_at"],"title":"Kind"},"source":{"type":"string","enum":["browser","agent","im","utc_escape","legacy"],"title":"Source","default":"legacy"},"timezone":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Timezone"},"cron":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Cron"},"crons":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Crons"},"rrule":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Rrule"},"everySeconds":{"anyOf":[{"type":"integer","multipleOf":60,"minimum":3600},{"type":"null"}],"title":"Everyseconds"},"instantUtc":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Instantutc"}},"type":"object","required":["kind"],"title":"ScheduleContractWire","description":"Versioned schedule contract exposed at the API boundary."},"UploadedSkillFileWriteBody":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"UploadedSkillFileWriteBody","description":"Request body for PUT .../files/{path} — UTF-8 text only."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkerConnectionCreateRequest":{"properties":{"hostname":{"type":"string","maxLength":255,"minLength":1,"title":"Hostname"},"api_token":{"type":"string","maxLength":512,"minLength":1,"title":"Api Token"},"sections":{"items":{"type":"string"},"type":"array","title":"Sections"}},"type":"object","required":["hostname","api_token"],"title":"WorkerConnectionCreateRequest","description":"Connect a customer apex/host via a reverse-proxy Worker (T4)."},"WorkerProbeRequest":{"properties":{"hostname":{"type":"string","maxLength":255,"minLength":1,"title":"Hostname"},"sections":{"items":{"type":"string"},"type":"array","title":"Sections"}},"type":"object","required":["hostname"],"title":"WorkerProbeRequest"},"apps__api__routers__cli__files__FilePublishResponse":{"properties":{"url":{"type":"string","title":"Url","description":"Public signed URL valid until ``expires_at``."},"brand_path":{"type":"string","title":"Brand Path","description":"Brand-relative path of the stored file."},"size_bytes":{"type":"integer","minimum":0,"title":"Size Bytes"},"content_type":{"type":"string","title":"Content Type"},"expires_in_seconds":{"type":"integer","minimum":1,"title":"Expires In Seconds"},"expires_at":{"type":"string","title":"Expires At","description":"Absolute expiration timestamp (ISO 8601, UTC)."}},"type":"object","required":["url","brand_path","size_bytes","content_type","expires_in_seconds","expires_at"],"title":"FilePublishResponse","description":"Response for ``POST /api/cli/files/publish``."}},"securitySchemes":{"SokuSessionToken":{"type":"http","scheme":"bearer","description":"Session token issued by the OAuth 2.0 device authorization grant (RFC 8628). Run `soku login`, or drive `/api/device/code` and `/api/device/token` directly."}}}}