{"openapi":"3.1.0","info":{"title":"egbe OS","summary":"One api_key, all capabilities — a friendly BFF over the fleet.","description":"egbe OS is a secure BFF that gives an agent a whole stack behind one api_key: deploy apps, databases, email, an OpenAI-compatible LLM, web tools (search/scraping/image-gen/ads/outreach), git, payments, a wallet, notifications and scoped keys. REST responses use a uniform `{code, message, data}` envelope; Git smart HTTP uses raw Git bytes. Every capability has an instruction URL in the public catalog. Start at `GET /` or `GET /quickstart`.","version":"1.0.0"},"paths":{"/":{"get":{"tags":["root"],"summary":"Root","operationId":"root_index","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/quickstart":{"get":{"tags":["root"],"summary":"Quickstart","operationId":"root_quickstart","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/healthz":{"get":{"tags":["health"],"summary":"Healthz","operationId":"health_check","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/telemetry":{"get":{"tags":["telemetry"],"summary":"Info","operationId":"telemetry_info","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/telemetry/skill":{"get":{"tags":["telemetry"],"summary":"Skill","operationId":"telemetry_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/telemetry/status":{"get":{"tags":["telemetry"],"summary":"Status","operationId":"telemetry_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"harness","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64,"pattern":"^[a-z][a-z0-9-]*$"},{"type":"null"}],"title":"Harness"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/context/product":{"get":{"tags":["context"],"summary":"Product Context","operationId":"context_product_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/context/chat":{"post":{"tags":["context"],"summary":"Submit Chat Context","description":"Project a runtime-submitted snapshot without calling back into it.","operationId":"context_chat_submit","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/wallet/skill":{"get":{"tags":["wallet"],"summary":"Wallet Skill","operationId":"wallet_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/wallet/balance":{"get":{"tags":["wallet"],"summary":"Balance","operationId":"wallet_balance","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/wallet/policy":{"get":{"tags":["wallet"],"summary":"Policy","description":"Read periodic fees and depletion/retention conditions, not a usage quote.","operationId":"wallet_policy","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/wallet/topup":{"post":{"tags":["wallet"],"summary":"Topup","operationId":"wallet_topup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/llm/skill":{"get":{"tags":["llm"],"summary":"Llm Skill","operationId":"llm_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/v1/llm/models":{"get":{"tags":["llm"],"summary":"List Models","description":"List the model slugs this account can use.\n\nProxies the upstream ai-api (LiteLLM) ``GET /v1/models`` with the account's\nkey, so agents can discover valid model names instead of guessing. The\nupstream rejects unknown slugs (e.g. ``gpt-4o``) with \"Invalid model name\";\nthis endpoint is how you find the slugs it actually serves.","operationId":"llm_models","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/llm/chat/completions":{"post":{"tags":["llm"],"summary":"Chat Completions","operationId":"llm_chat_completions","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/llm/embeddings":{"post":{"tags":["llm"],"summary":"Embeddings","description":"Standard OpenAI-compatible embeddings — `{model, input}` in, vectors out.\n\n`input` may be a single string or a list; the upstream returns one\n`data[]` item per input, each carrying its `index` and `embedding`.","operationId":"llm_embeddings","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/media":{"get":{"tags":["media"],"summary":"Media Contract","operationId":"media_info","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/media/analyze":{"post":{"tags":["media"],"summary":"Analyze Media","operationId":"media_analyze","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaAnalysisRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/media/transcribe":{"post":{"tags":["media"],"summary":"Transcribe Media","description":"Speech evidence only; callers supply audio, never an arbitrary remote URL.","operationId":"media_transcribe","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaTranscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/media/classify-creative":{"post":{"tags":["media"],"summary":"Classify Creative","operationId":"media_classify_creative","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreativeClassificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/deploy/skill":{"get":{"tags":["deploy"],"summary":"Deploy Skill","operationId":"deploy_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/deploy":{"get":{"tags":["deploy"],"summary":"List Apps","operationId":"deploy_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["deploy"],"summary":"Deploy","operationId":"deploy_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/deploy/{slug}/db":{"post":{"tags":["deploy"],"summary":"Provision Db","description":"Provision a Postgres database co-located with your app (reachable from it),\nand return its connection details. One per claw. To wire it into a deploy\nautomatically, pass `db: true` to POST /deploy instead.","operationId":"deploy_db_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["deploy"],"summary":"Get Db","description":"Connection details for your app's co-located database (provision it first\nvia `db: true` on deploy, or POST /deploy/{slug}/db).","operationId":"deploy_db_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{slug}/convex":{"post":{"tags":["deploy"],"summary":"Provision Convex","description":"Spawn a managed Convex backend for your app (one per account) and return its\n`deploymentUrl`, `siteUrl`, and `adminKey`. Convex is a reactive backend — you\npush functions, schema, cron, and your built static frontend to it with\n`npx convex deploy`; there is no Dockerfile or repo build on this path.\n\nPoint the Convex CLI at the returned backend:\n`CONVEX_SELF_HOSTED_URL=<deploymentUrl> CONVEX_SELF_HOSTED_ADMIN_KEY=<adminKey> npx convex deploy`.\nThe app then serves from `siteUrl`. Idempotent — re-provisioning returns the same backend.","operationId":"deploy_convex_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BusinessNameRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["deploy"],"summary":"Get Convex","description":"Connection details (`deploymentUrl`, `siteUrl`, `adminKey`) for your app's\nConvex backend. Provision it first via `POST /deploy/{slug}/convex`.","operationId":"deploy_convex_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{slug}":{"get":{"tags":["deploy"],"summary":"App Status","operationId":"deploy_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["deploy"],"summary":"Delete App","description":"Tear down a deployed app: its host stops serving and the app is removed.\n\nYour database is *not* touched — it is one-per-claw and shared across your\napps, so dropping it here would take your other apps down with it. Remove it\nseparately if you really mean to.","operationId":"deploy_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{slug}/deploys/{deploy_id}":{"get":{"tags":["deploy"],"summary":"Deploy Status","description":"Progress/outcome of one async deploy (the `deployId` from POST /deploy):\nqueued | running | succeeded | failed, with the error/stage on failure.","operationId":"deploy_build_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"deploy_id","in":"path","required":true,"schema":{"type":"string","title":"Deploy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{slug}/logs":{"get":{"tags":["deploy"],"summary":"App Logs","operationId":"deploy_logs","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"lines","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Tail the last N lines (1–1000).","default":100,"title":"Lines"},"description":"Tail the last N lines (1–1000)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/db/skill":{"get":{"tags":["db"],"summary":"Db Skill","operationId":"db_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/db/query":{"post":{"tags":["db"],"summary":"Query","description":"Run one read-only query in the account's managed PostgreSQL schema.\n\nSupports joins and read CTEs. Results have row/byte/time limits and an explicit\n`truncated` flag. Large integers and fractional numbers are returned as exact\nstrings. The database is shared by the account's apps; this is not app-scoped.","operationId":"db_query","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/db/rows/update":{"post":{"tags":["db"],"summary":"Update","description":"Update one row by its complete primary key. Database triggers and cascades apply.\nNever automatically retry after an ambiguous response; read the row first.","operationId":"db_update","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/db/rows/delete":{"post":{"tags":["db"],"summary":"Delete","description":"Delete one row by its complete primary key. Database triggers and cascades apply.\nNever automatically retry after an ambiguous response; read the row first.","operationId":"db_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RowRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/domains/skill":{"get":{"tags":["domains"],"summary":"Domains Skill","operationId":"domains_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/domains":{"get":{"tags":["domains"],"summary":"List Domains","description":"The domains you hold, and which app each one points at.","operationId":"domains_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["domains"],"summary":"Attach Domain","description":"Point `<name>.egbe.app` at one of your deployed apps.\n\nYour first deploy claims this automatically from the app's slug, so call this\nonly to choose a different name or to move your domain to another app. The\napp's canonical host keeps serving either way.\n\nWith `host` instead of `name` you attach a domain you or your client own\n(bring-your-own domain, operator-enabled). The response lists the CNAME\nrecords the domain owner has to add; `tls.ready` turns true once the\ncertificate has issued, and only then does the host serve.","operationId":"domains_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/domains/{slug}":{"delete":{"tags":["domains"],"summary":"Release Domain","description":"Release the domain attached to an app, freeing your one-per-business slot.\n\nThe app stays live on its canonical host — only the pretty address goes away.\nPass `host` to release one address and keep the other when an app carries\nboth a `<name>.egbe.app` alias and a bring-your-own domain.","operationId":"domains_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Release only this host (e.g. a bring-your-own domain) and keep the app's other address.","title":"Host"},"description":"Release only this host (e.g. a bring-your-own domain) and keep the app's other address."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mail/skill":{"get":{"tags":["mail"],"summary":"Mail Skill","operationId":"mail_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/mail/account":{"get":{"tags":["mail"],"summary":"Account","operationId":"mail_account","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/mail/lifecycle-aliases/reserve":{"post":{"tags":["mail"],"summary":"Reserve Lifecycle Aliases","description":"Reserve random +10..+99 aliases; refresh with the same capture ID is idempotent.\n\nMailbox identity comes only from this account's credential. Reservations\nare shared across captures and workspaces, never reused, and do not send mail.","operationId":"mail_lifecycle_aliases_reserve","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReserveLifecycleAliasesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/mail/send":{"post":{"tags":["mail"],"summary":"Send Mail","operationId":"mail_send","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/mail/inbox":{"get":{"tags":["mail"],"summary":"Inbox","operationId":"mail_inbox","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Only mail that arrived on or after this day (YYYY-MM-DD, server arrival date).","title":"Since"},"description":"Only mail that arrived on or after this day (YYYY-MM-DD, server arrival date)."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":254,"pattern":"^[A-Za-z0-9._%+@-]+$"},{"type":"null"}],"description":"Only mail addressed to this address or alias (substring of To or Delivered-To, e.g. a plus-addressed alias of your mailbox).","title":"To"},"description":"Only mail addressed to this address or alias (substring of To or Delivered-To, e.g. a plus-addressed alias of your mailbox)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mail/message/{uid}":{"get":{"tags":["mail"],"summary":"Read Message","operationId":"mail_read","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","title":"Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/skill":{"get":{"tags":["analytics"],"summary":"Analytics Skill","operationId":"analytics_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/analytics/events":{"get":{"tags":["analytics"],"summary":"Analytics Events","description":"Canonical product analytics event contract.","operationId":"analytics_events","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/analytics":{"get":{"tags":["analytics"],"summary":"List Sites","operationId":"analytics_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["analytics"],"summary":"Create Site","operationId":"analytics_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSiteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/analytics/{app}/replay":{"post":{"tags":["analytics"],"summary":"Update Replay","description":"Configure session recording for an owned analytics site.","operationId":"analytics_replay_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaySettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}/tracking":{"get":{"tags":["analytics"],"summary":"Tracking","operationId":"analytics_tracking","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}":{"get":{"tags":["analytics"],"summary":"Get Site","description":"Your site's details (websiteId, name, share info if any).","operationId":"analytics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}/stats":{"get":{"tags":["analytics"],"summary":"Stats","description":"Read your site's stats — pageviews, visitors, top pages, referrers, events.","operationId":"analytics_stats","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Time window: 1h | 24h | 7d | 30d | all.","default":"24h","title":"Period"},"description":"Time window: 1h | 24h | 7d | 30d | all."},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Inclusive ISO 8601 timestamp with timezone. Supply with to; overrides period.","title":"From"},"description":"Inclusive ISO 8601 timestamp with timezone. Supply with to; overrides period."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exclusive ISO 8601 timestamp with timezone. Must be later than from.","title":"To"},"description":"Exclusive ISO 8601 timestamp with timezone. Must be later than from."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}/event-data":{"get":{"tags":["analytics"],"summary":"Event Rows","description":"Paged audit inputs for an owned app. Event-data joins events.id by eventId.\n\nReturns {data: [...], count, page, pageSize}; count is events, not properties.\nRaw values may include personal data; filter before retaining audit evidence.","operationId":"analytics_event_data","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}},{"name":"startAt","in":"query","required":true,"schema":{"type":"integer","maximum":253402300799999,"minimum":0,"description":"Inclusive UTC Unix milliseconds.","title":"Startat"},"description":"Inclusive UTC Unix milliseconds."},{"name":"endAt","in":"query","required":true,"schema":{"type":"integer","maximum":253402300799999,"minimum":0,"description":"Inclusive UTC Unix milliseconds.","title":"Endat"},"description":"Inclusive UTC Unix milliseconds."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":100001,"minimum":1,"default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":500,"title":"Pagesize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}/events":{"get":{"tags":["analytics"],"summary":"Event Rows","description":"Paged audit inputs for an owned app. Event-data joins events.id by eventId.\n\nReturns {data: [...], count, page, pageSize}; count is events, not properties.\nRaw values may include personal data; filter before retaining audit evidence.","operationId":"analytics_event_rows","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}},{"name":"startAt","in":"query","required":true,"schema":{"type":"integer","maximum":253402300799999,"minimum":0,"description":"Inclusive UTC Unix milliseconds.","title":"Startat"},"description":"Inclusive UTC Unix milliseconds."},{"name":"endAt","in":"query","required":true,"schema":{"type":"integer","maximum":253402300799999,"minimum":0,"description":"Inclusive UTC Unix milliseconds.","title":"Endat"},"description":"Inclusive UTC Unix milliseconds."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":100001,"minimum":1,"default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":500,"title":"Pagesize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}/campaigns":{"get":{"tags":["analytics"],"summary":"Campaigns","description":"Read campaign-attributed visits for your site.","operationId":"analytics_campaigns","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","description":"Time window: 1h | 24h | 7d | 30d | all.","default":"all","title":"Period"},"description":"Time window: 1h | 24h | 7d | 30d | all."},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Inclusive ISO 8601 timestamp with timezone. Supply with to; overrides period.","title":"From"},"description":"Inclusive ISO 8601 timestamp with timezone. Supply with to; overrides period."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exclusive ISO 8601 timestamp with timezone. Must be later than from.","title":"To"},"description":"Exclusive ISO 8601 timestamp with timezone. Must be later than from."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analytics/{app}/share":{"post":{"tags":["analytics"],"summary":"Share","description":"Create (or fetch) a public share link for the site's dashboard — hand the\nreturned shareUrl to the owner so they can view stats without logging in.","operationId":"analytics_share","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","title":"App"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gtm/benchmarks":{"get":{"tags":["gtm"],"summary":"Benchmarks","description":"Aggregate fleet-measured channel benchmarks (median CPC/CTR/CVR and\nfriends). Aggregates only — per-experiment evidence lives behind\n`POST /gtm/search`.","operationId":"gtm_benchmarks","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/gtm/skill":{"get":{"tags":["gtm"],"summary":"Gtm Skill","operationId":"gtm_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/gtm/search":{"post":{"tags":["gtm"],"summary":"Search","operationId":"gtm_search","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GtmSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/gtm/comparables":{"post":{"tags":["gtm"],"summary":"Comparables","description":"Comparable fleet experiments selected semantically, not lexically.\n\nUnlike `POST /gtm/search` (token-overlap ranking), this endpoint shows the\nWHOLE agent-visible pool to an LLM judge that keeps only experiments whose\naudience, problem, or product category genuinely matches the given product\ncontext — differently-worded records still match, unrelated records that\nmerely share words do not. The judge call is billed to the account's own\nLLM key. An empty result is a statement about our pool's coverage, never\nevidence against the idea.","operationId":"gtm_comparables","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GtmComparablesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/tools":{"get":{"tags":["tools"],"summary":"List Tools","operationId":"tools_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/tools/skill":{"get":{"tags":["tools"],"summary":"Tools Skill","operationId":"tools_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/tools/{provider}/{path}":{"post":{"tags":["tools"],"summary":"Tools Proxy","operationId":"tools_call_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["tools"],"summary":"Tools Proxy","operationId":"tools_call_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/account":{"get":{"tags":["ads"],"summary":"Account","operationId":"ads_openai_account","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/openai/locations":{"get":{"tags":["ads"],"summary":"Locations","operationId":"ads_openai_locations","security":[{"HTTPBearer":[]}],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/campaigns":{"post":{"tags":["ads"],"summary":"Create Campaign","operationId":"ads_openai_campaign_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__openai_ads_models__CampaignCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"Campaigns","operationId":"ads_openai_campaign_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"include_serving_issues","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Serving Issues"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/campaigns/{identifier}":{"get":{"tags":["ads"],"summary":"Campaign","operationId":"ads_openai_campaign_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"include_serving_issues","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Serving Issues"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ads"],"summary":"Update Campaign","operationId":"ads_openai_campaign_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__openai_ads_models__CampaignUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/campaigns/{identifier}/launch":{"post":{"tags":["ads"],"summary":"Launch","operationId":"ads_openai_campaign_launch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/campaigns/{identifier}/pause":{"post":{"tags":["ads"],"summary":"Pause","operationId":"ads_openai_campaign_pause","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/campaigns/{identifier}/results":{"get":{"tags":["ads"],"summary":"Results","operationId":"ads_openai_campaign_results","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"start_time","in":"query","required":true,"schema":{"type":"integer","minimum":0,"title":"Start Time"}},{"name":"end_time","in":"query","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"title":"End Time"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/uploads":{"post":{"tags":["ads"],"summary":"Upload","operationId":"ads_openai_upload","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Upload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/ad-groups":{"post":{"tags":["ads"],"summary":"Create Group","operationId":"ads_openai_ad_group_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__openai_ads_models__GroupCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"Groups","operationId":"ads_openai_ad_group_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"include_serving_issues","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Serving Issues"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/ad-groups/{identifier}":{"get":{"tags":["ads"],"summary":"Group","operationId":"ads_openai_ad_group_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"include_serving_issues","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Serving Issues"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ads"],"summary":"Update Group","operationId":"ads_openai_ad_group_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/ad-groups/{identifier}/status":{"post":{"tags":["ads"],"summary":"Group Status","operationId":"ads_openai_ad_group_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"status","in":"query","required":true,"schema":{"type":"string","pattern":"^(active|paused)$","title":"Status"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/ads":{"post":{"tags":["ads"],"summary":"Create Ad","operationId":"ads_openai_ad_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"Ads","operationId":"ads_openai_ad_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"include_serving_issues","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Serving Issues"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/ads/{identifier}":{"get":{"tags":["ads"],"summary":"Ad","operationId":"ads_openai_ad_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"include_serving_issues","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Serving Issues"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ads"],"summary":"Update Ad","operationId":"ads_openai_ad_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/ads/{identifier}/status":{"post":{"tags":["ads"],"summary":"Ad Status","operationId":"ads_openai_ad_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"status","in":"query","required":true,"schema":{"type":"string","pattern":"^(active|paused)$","title":"Status"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/conversion-sources":{"post":{"tags":["ads"],"summary":"Create Source","operationId":"ads_openai_conversion_source_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"Sources","operationId":"ads_openai_conversion_source_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/conversion-settings":{"post":{"tags":["ads"],"summary":"Create Setting","operationId":"ads_openai_conversion_setting_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"Goals","operationId":"ads_openai_conversion_setting_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/conversion-events":{"post":{"tags":["ads"],"summary":"Event","operationId":"ads_openai_conversion_event_send","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/conversion-sources/{identifier}":{"get":{"tags":["ads"],"summary":"Source","operationId":"ads_openai_conversion_source_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/conversion-settings/{identifier}":{"get":{"tags":["ads"],"summary":"Goal","operationId":"ads_openai_conversion_setting_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/campaigns/{identifier}/conversion-results":{"get":{"tags":["ads"],"summary":"Conversion Results","operationId":"ads_openai_conversion_results","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}},{"name":"start_time","in":"query","required":true,"schema":{"type":"integer","minimum":0,"title":"Start Time"}},{"name":"end_time","in":"query","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"title":"End Time"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/openai/conversion-events/{receipt_id}":{"get":{"tags":["ads"],"summary":"Receipt","operationId":"ads_openai_conversion_event_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/account":{"get":{"tags":["ads"],"summary":"Account","operationId":"ads_linkedin_account","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/linkedin/readiness":{"get":{"tags":["ads"],"summary":"Readiness","operationId":"ads_linkedin_readiness","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/linkedin/targeting/facets":{"get":{"tags":["ads"],"summary":"Targeting Facets","operationId":"ads_linkedin_targeting_facets","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/linkedin/targeting/entities":{"get":{"tags":["ads"],"summary":"Entities","operationId":"ads_linkedin_targeting_entities","security":[{"HTTPBearer":[]}],"parameters":[{"name":"facet","in":"query","required":true,"schema":{"enum":["locations","industries","staffCountRanges","seniorities","jobFunctions","titles","employers","skills"],"type":"string","title":"Facet"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[A-Z_]+$"},{"type":"null"}],"title":"Entity Type"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"title":"Query"}},{"name":"language","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z]{2}$","default":"en","title":"Language"}},{"name":"country","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Z]{2}$","default":"US","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/audience-estimate":{"post":{"tags":["ads"],"summary":"Create Audience Estimate","operationId":"ads_linkedin_audience_estimate_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/linkedin/budget-pricing":{"post":{"tags":["ads"],"summary":"Create Budget Pricing","operationId":"ads_linkedin_budget_pricing_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/linkedin/campaign-groups":{"post":{"tags":["ads"],"summary":"Create Campaign Groups","operationId":"ads_linkedin_campaign_groups_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__linkedin_ads_models__GroupCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"List Group","operationId":"ads_linkedin_group_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns":{"post":{"tags":["ads"],"summary":"Create Campaigns","operationId":"ads_linkedin_campaigns_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__linkedin_ads_models__CampaignCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"List Campaign","operationId":"ads_linkedin_campaign_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/creatives":{"post":{"tags":["ads"],"summary":"Create Creatives","operationId":"ads_linkedin_creatives_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreativeCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"List Creative","operationId":"ads_linkedin_creative_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/images":{"post":{"tags":["ads"],"summary":"Create Images","operationId":"ads_linkedin_images_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageUpload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"List Image","operationId":"ads_linkedin_image_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaign-groups/{identifier}":{"get":{"tags":["ads"],"summary":"Get Group","operationId":"ads_linkedin_group_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaign-groups/{identifier}/launch":{"post":{"tags":["ads"],"summary":"Launch Group","operationId":"ads_linkedin_group_launch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaign-groups/{identifier}/pause":{"post":{"tags":["ads"],"summary":"Pause Group","operationId":"ads_linkedin_group_pause","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns/{identifier}":{"get":{"tags":["ads"],"summary":"Get Campaign","operationId":"ads_linkedin_campaign_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ads"],"summary":"Update Campaign","operationId":"ads_linkedin_campaign_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__linkedin_ads_models__CampaignUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns/{identifier}/launch":{"post":{"tags":["ads"],"summary":"Launch Campaign","operationId":"ads_linkedin_campaign_launch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns/{identifier}/pause":{"post":{"tags":["ads"],"summary":"Pause Campaign","operationId":"ads_linkedin_campaign_pause","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/creatives/{identifier}":{"get":{"tags":["ads"],"summary":"Get Creative","operationId":"ads_linkedin_creative_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ads"],"summary":"Update Creative","operationId":"ads_linkedin_creative_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreativeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/creatives/{identifier}/launch":{"post":{"tags":["ads"],"summary":"Launch Creative","operationId":"ads_linkedin_creative_launch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/creatives/{identifier}/pause":{"post":{"tags":["ads"],"summary":"Pause Creative","operationId":"ads_linkedin_creative_pause","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/images/{identifier}":{"get":{"tags":["ads"],"summary":"Get Image","operationId":"ads_linkedin_image_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^urn:li:image:[A-Za-z0-9_-]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns/{identifier}/results":{"get":{"tags":["ads"],"summary":"Results","operationId":"ads_linkedin_campaign_results","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/creatives/{identifier}/content":{"get":{"tags":["ads"],"summary":"Creative Content","operationId":"ads_linkedin_creative_content","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/conversion-rules":{"post":{"tags":["ads"],"summary":"Create Rule","operationId":"ads_linkedin_conversion_rules_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"List Rules","operationId":"ads_linkedin_conversion_rules_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/conversion-rules/{identifier}":{"get":{"tags":["ads"],"summary":"Get Rule","operationId":"ads_linkedin_conversion_rules_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ads"],"summary":"Update Rule","operationId":"ads_linkedin_conversion_rules_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/conversion-rules/{identifier}/browser-tag":{"get":{"tags":["ads"],"summary":"Browser Tag","operationId":"ads_linkedin_conversion_browser_tag","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns/{campaign_id}/conversion-rules/{identifier}":{"get":{"tags":["ads"],"summary":"Get Association","operationId":"ads_linkedin_conversion_association_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Campaign Id"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["ads"],"summary":"Associate","operationId":"ads_linkedin_conversion_association_set","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Campaign Id"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ads"],"summary":"Dissociate","operationId":"ads_linkedin_conversion_association_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Campaign Id"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/campaigns/{campaign_id}/conversion-rules/{identifier}/results":{"get":{"tags":["ads"],"summary":"Results","operationId":"ads_linkedin_conversion_results","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Campaign Id"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Identifier"}},{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/conversion-events":{"post":{"tags":["ads"],"summary":"Deliver Event","operationId":"ads_linkedin_conversion_events_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionEvent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/linkedin/conversion-events/{identifier}":{"get":{"tags":["ads"],"summary":"Get Event","operationId":"ads_linkedin_conversion_events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/skill":{"get":{"tags":["ads"],"summary":"Ads Source Skill","operationId":"ads_source_skill","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads":{"get":{"tags":["ads"],"summary":"Ads Root","operationId":"ads_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/reddit/targeting/interests":{"get":{"tags":["ads"],"summary":"Reddit Interests","description":"Read-only Reddit interest catalog. Provider rows (id, name, category) are in data.data.\n\nUse returned IDs for an authorized targeting update; this lookup neither\nvalidates community targetability nor changes campaigns or ad groups.","operationId":"ads_reddit_interests","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/{source}/account":{"get":{"tags":["ads"],"summary":"Account","description":"Your ad account on this network (id, currency, spend where available).\n\nFor Google, `raw` describes the effective operator-assigned account for new\ncampaigns (customer_id, currency, time_zone, status). OS selects it; this is\nnot an account picker or MCC catalog. Historical campaigns keep their refs.\n\nReddit `provider_account` exposes configured-account id, currency, timezone,\napproval and suspension reason, with field availability and retrieval time.\nUnavailable details are explicit; profiles and funding remain usable. These\nfields do not establish budget reset, hidden caps or auction delivery.\n\nFor Reddit this also lists `funding_instruments`: a launched campaign only\ndelivers once a **servable** funding instrument is attached — pass its id via\n`extra.funding_instrument_id` when you create the campaign. An empty list\nmeans the ad account has no funding source configured yet (an account-setup\nstep). Servable funding alone does not prove campaign delivery.","operationId":"ads_account","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/campaigns":{"post":{"tags":["ads"],"summary":"Create Campaign","description":"Create a campaign (PAUSED by default). `daily_budget_usd` is converted to\nthe network's native unit. Launch it with POST .../launch when ready.","operationId":"ads_campaign_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"pattern":".*\\S.*"},{"type":"null"}],"description":"Required for Google and Reddit: stable create-operation key. Reuse on retry.","title":"Idempotency-Key"},"description":"Required for Google and Reddit: stable create-operation key. Reuse on retry."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"List Campaigns","description":"Your campaigns. Google includes owned campaigns across their original accounts after reassignment; use returned refs unchanged.","operationId":"ads_campaigns_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/plan":{"post":{"tags":["ads"],"summary":"Plan Campaign","description":"Validate a whole campaign spec before spending anything: no quota, no\nwallet hold, no ad-network writes. Returns the payloads a launch would send\nplus any blockers, and a plan_token on a clean spec. Meta only for now.","operationId":"ads_plan","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Spec"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/apply":{"post":{"tags":["ads"],"summary":"Apply Campaign","description":"Build the whole campaign tree atomically from a /plan-approved spec. Requires\nthe `plan_token` from /plan and `approved: true`. Any failure rolls the tree\nback and consumes no create-quota. Meta only for now.","operationId":"ads_apply","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/campaigns/{campaign_id}/state":{"get":{"tags":["ads"],"summary":"Campaign State","description":"Live Meta tree observation. Legacy `delivering` means all objects have\neffective ACTIVE status; it does not prove impressions. include_configuration\nreturns the complete paginated configuration for reused safety checks,\nobserved_at and provider usage/request-count diagnostics.","operationId":"ads_campaign_state","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"expect","in":"query","required":false,"schema":{"type":"string","default":"ACTIVE","title":"Expect"}},{"name":"include_configuration","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Configuration"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/campaigns/{campaign_id}/launch":{"post":{"tags":["ads"],"summary":"Launch","description":"Set the campaign ACTIVE. For google, one launch ensures the whole\nserving path can serve: when no ENABLED ad group -> keyword -> ad path\nexists, the same atomic call activates ad groups, keywords and ads; a\ncampaign that can already serve keeps every child untouched. The response\nreports `delivering` + `drift` from live readback. Body `children`:\nauto (default) | activate (force all) | keep (campaign flag only).","operationId":"ads_campaign_launch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LaunchRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/campaigns/{campaign_id}/pause":{"post":{"tags":["ads"],"summary":"Pause","description":"Set the campaign PAUSED.","operationId":"ads_campaign_pause","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/campaigns/{campaign_id}/status":{"get":{"tags":["ads"],"summary":"Campaign Status","description":"Provider status readback. Reddit returns separate configured/effective\nstates and successful observation time, without claiming actual impressions.\nMeta reads effective status across the campaign, ad sets and ads.\nGoogle uses its dedicated /readback operation.","operationId":"ads_campaign_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/keyword-ideas":{"post":{"tags":["ads"],"summary":"Google Keyword Ideas","operationId":"ads_google_keyword_ideas","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/google/campaigns/{campaign_id}/children":{"get":{"tags":["ads"],"summary":"Google Campaign Children","operationId":"ads_google_children","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/children/status":{"post":{"tags":["ads"],"summary":"Google Campaign Children Status","description":"Flip every ad group, keyword and ad under the campaign at once. Google\nchildren are created PAUSED, and activating them one call at a time\nexhausts the daily mutate quota before the campaign can serve. (POST\n.../launch already does this — use this endpoint to repair drift.)","operationId":"ads_google_children_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/readback":{"get":{"tags":["ads"],"summary":"Google Campaign Readback","description":"Full-tree readback plus delivery truth: `delivering` is true only when\nthe campaign can serve AND at least one ad group forms a complete ENABLED,\neligible serving path (the group, one of its keywords and one of its ads —\nGoogle's primary_status counts, so an ad still in review is not yet\ndelivering); `drift` lists each blocker when `expect` (ENABLED|PAUSED) is\nnot met. Quote these fields — a campaign-level ENABLED with no enabled\nserving path serves 0 impressions. Use expect=ENABLED after launch and\nexpect=PAUSED after pause.","operationId":"ads_google_readback","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"expect","in":"query","required":false,"schema":{"type":"string","default":"ENABLED","title":"Expect"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/geo-targets":{"get":{"tags":["ads"],"summary":"Google Campaign Geo Targets","operationId":"ads_google_geo_targets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ads"],"summary":"Google Create Geo Targets","operationId":"ads_google_geo_targets_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/search-terms":{"get":{"tags":["ads"],"summary":"Google Campaign Search Terms","operationId":"ads_google_search_terms","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"LAST_30_DAYS","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/conversion-readiness":{"get":{"tags":["ads"],"summary":"Google Campaign Conversion Readiness","operationId":"ads_google_conversion_readiness","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/ad-groups":{"post":{"tags":["ads"],"summary":"Google Create Ad Groups","operationId":"ads_google_ad_groups_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/ad-groups/{ad_group_id}/keywords":{"post":{"tags":["ads"],"summary":"Google Create Keywords","operationId":"ads_google_keywords_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","title":"Ad Group Id"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}],"description":"Temporary successful-response cache, not durable exactly-once. After an uncertain create, inspect campaign children before retrying.","title":"Idempotency-Key"},"description":"Temporary successful-response cache, not durable exactly-once. After an uncertain create, inspect campaign children before retrying."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAdsKeywordsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/ad-groups/{ad_group_id}/negative-keywords":{"post":{"tags":["ads"],"summary":"Google Create Negative Keywords","operationId":"ads_google_negative_keywords_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","title":"Ad Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/ad-groups/{ad_group_id}/responsive-search-ads":{"post":{"tags":["ads"],"summary":"Google Create Responsive Search Ads","operationId":"ads_google_responsive_search_ads_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","title":"Ad Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{campaign_id}/search-assets":{"post":{"tags":["ads"],"summary":"Google Create Search Assets","description":"Create Search assets or update only the existing campaign budget.\n\nBudget-only body: {\"daily_budget_usd\": <positive USD amount>}; omit geoTargets\nand adGroups. Requires a USD account, owned single-campaign budget, configured\nquota and wallet reservation. Send a distinct Idempotency-Key per campaign and\nintentional change. Successful-response caching is temporary, not durable\nexactly-once; reconcile an uncertain outcome before another write. Inspect\nthe returned campaign readback. Does not launch or change statuses.","operationId":"ads_google_search_assets_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"pattern":".*\\S.*"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/campaigns/{campaign_id}/results":{"get":{"tags":["ads"],"summary":"Results","description":"Campaign performance (+ raw). Google and Meta accept period OR inclusive\naccount-calendar dates. Meta additionally accepts MAXIMUM for maximum available\nhistory through the current day; its unchanged no-input last_30d may exclude\ntoday. Meta report bounds/currency/availability are explicit; retrieval time\ndoes not prove completeness or final spend. Unsupported selected-window\nbackends fail unavailable instead of silently returning the default window.\n\nGoogle metrics include search_impression_share, search_rank_lost_impression_share\nand search_budget_lost_impression_share as ratios, with per-field\nmetric_availability: available, unavailable, below_threshold (<0.1 for share)\nor above_threshold (>0.9 for lost share). Unavailable and bounded values are\nnull, not zero or exact percentages. Search shares update daily and may lag\n1–2 days; retrieved_at is fetch time, not a completeness watermark. Calendar\ndates in account timezone do not represent an exact rolling 24-hour window.\n\nReddit reads the last 30 days of owned campaign rows through every report\npage. `report` states the request, page count, provider metrics_updated_at\nand per-metric availability. A repeated token, the page limit, an\nunreadable next page or malformed page and missing metric fields are\nunavailable (null), not zero; a failed page request returns that error. A\ncomplete report with no rows is zero reported delivery.","operationId":"ads_campaign_results","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"enum":["TODAY","YESTERDAY","LAST_7_DAYS","LAST_30_DAYS","MAXIMUM"],"type":"string"},{"type":"null"}],"title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/{source}/raw/{path}":{"post":{"tags":["ads"],"summary":"Passthrough","description":"Forward to implemented provider-specific Tools routes. This is not arbitrary\naccess to the network's native API. `POST /ads/meta/raw/adsets` -> tools-gateway\n`/v1/meta-ads/adsets`. Body and query string are forwarded as-is.","operationId":"ads_raw_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"pattern":".*\\S.*"},{"type":"null"}],"description":"Required for Reddit campaign and Meta custom conversion creation; reuse the same key on retry.","title":"Idempotency-Key"},"description":"Required for Reddit campaign and Meta custom conversion creation; reuse the same key on retry."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ads"],"summary":"Passthrough","description":"Forward to implemented provider-specific Tools routes. This is not arbitrary\naccess to the network's native API. `POST /ads/meta/raw/adsets` -> tools-gateway\n`/v1/meta-ads/adsets`. Body and query string are forwarded as-is.","operationId":"ads_raw_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}},{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":128,"pattern":".*\\S.*"},{"type":"null"}],"description":"Required for Reddit campaign and Meta custom conversion creation; reuse the same key on retry.","title":"Idempotency-Key"},"description":"Required for Reddit campaign and Meta custom conversion creation; reuse the same key on retry."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/conversion-actions":{"get":{"tags":["ads"],"summary":"List Actions","operationId":"ads_google_conversion_actions_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ads"],"summary":"Create Action","description":"Create tracking-only action. Does not change bidding, budget or campaign status.","operationId":"ads_google_conversion_actions_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleConversionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/conversion-actions/{ref}":{"get":{"tags":["ads"],"summary":"Get Action","description":"Read one owned action. Accepts ads or analytics scope; does not grant advertising management.","operationId":"ads_google_conversion_action_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/conversion-optimization":{"get":{"tags":["ads"],"summary":"Get Optimization","operationId":"ads_google_conversion_optimization_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ads"],"summary":"Set Optimization","description":"Explicit opt-in to selected actions and Maximize Conversions, or restore a saved configuration.","operationId":"ads_google_conversion_optimization_set","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleConversionOptimization"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/conversion-events":{"post":{"tags":["ads"],"summary":"Send Event","description":"Send one confirmed outcome, or validate without importing. Accepts ads or analytics scope; campaign/action ownership is required. Inspect data.status, not HTTP 200, for delivery.","operationId":"ads_google_conversion_event_send","security":[{"HTTPBearer":[]}],"parameters":[{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleConversionEvent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/conversion-events/{receipt}":{"get":{"tags":["ads"],"summary":"Get Event","description":"Read an owned delivery receipt and available Google processing diagnostics. Accepts ads or analytics scope.","operationId":"ads_google_conversion_event_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"receipt","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Receipt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/ad-groups/{ad_group_id}/keywords/status":{"patch":{"tags":["ads"],"summary":"Update Keyword Status","operationId":"ads_google_keywords_status_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAdsKeywordStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/ad-groups/{ad_group_id}/responsive-search-ads/{ad_id}":{"get":{"tags":["ads"],"summary":"Get Ad Text","operationId":"ads_google_responsive_search_ad_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Group Id"}},{"name":"ad_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ads"],"summary":"Update Ad Text","operationId":"ads_google_responsive_search_ad_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Group Id"}},{"name":"ad_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Id"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdTextPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/ad-groups/{ad_group_id}/responsive-search-ads/{ad_id}/status":{"patch":{"tags":["ads"],"summary":"Update Ad Status","operationId":"ads_google_responsive_search_ad_status_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"ad_group_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Group Id"}},{"name":"ad_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$","title":"Ad Id"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":".*\\S.*","title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdStatusPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/account-settings":{"get":{"tags":["ads"],"summary":"Account Settings","operationId":"ads_google_campaign_account_settings","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/diagnostics":{"get":{"tags":["ads"],"summary":"Diagnostics","description":"Current campaign primary status/reasons and per-keyword Quality Score,\nexpected CTR, ad relevance and landing-page experience, with explicit\navailability. These are current quality_info diagnostics, not historical\nsearch-term metrics or proof of the cause of CPC/conversion performance.\nExisting bid inheritance and ad policy details are retained.","operationId":"ads_google_campaign_diagnostics","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/bids":{"patch":{"tags":["ads"],"summary":"Update Bids","operationId":"ads_google_campaign_bids_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BidsPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/targeting":{"get":{"tags":["ads"],"summary":"Targeting","operationId":"ads_google_campaign_targeting_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ads"],"summary":"Update Targeting","operationId":"ads_google_campaign_targeting_update","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetingPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ads/google/campaigns/{ref}/conversion-report":{"get":{"tags":["ads"],"summary":"Conversion Report","operationId":"ads_google_campaign_conversion_report","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Ref"}},{"name":"conversion_ref","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Conversion Ref"}},{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date To"}},{"name":"date_basis","in":"query","required":false,"schema":{"enum":["interaction","conversion"],"type":"string","default":"interaction","title":"Date Basis"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/skill":{"get":{"tags":["scrape"],"summary":"Scrape Skill","operationId":"scrape_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/scrape":{"get":{"tags":["scrape"],"summary":"Scrape Root","operationId":"scrape_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/scrape/{source}/account":{"get":{"tags":["scrape"],"summary":"Account","description":"Your scraping account (plan, usage, credit) on this provider.","operationId":"scrape_account","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/actors":{"get":{"tags":["scrape"],"summary":"Search Actors","description":"Search the provider's actor store for a ready-made scraper.","operationId":"scrape_actors","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"What to scrape, e.g. 'google maps reviews'.","title":"Query"},"description":"What to scrape, e.g. 'google maps reviews'."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/actors/{actor_id}":{"get":{"tags":["scrape"],"summary":"Actor Details","description":"Full metadata for one actor — read it to shape the run `input`.","operationId":"scrape_actor_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"actor_id","in":"path","required":true,"schema":{"type":"string","title":"Actor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/run":{"post":{"tags":["scrape"],"summary":"Run","description":"Run an actor. `sync=true` (default) blocks and returns rows; `sync=false`\nreturns a run handle ({run_id, dataset_id}) to poll. `Idempotency-Key` is\nforwarded to the provider gateway as a best-effort retry identity; callers\nmust persist the returned handle because it is not a durable exactly-once\nguarantee.","operationId":"scrape_run","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/runs/{run_id}":{"get":{"tags":["scrape"],"summary":"Run Status","description":"Status of an async run. When finished, fetch its `dataset_id`.","operationId":"scrape_run_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/datasets/{dataset_id}":{"get":{"tags":["scrape"],"summary":"Dataset","description":"Read the scraped rows of a run's dataset.","operationId":"scrape_dataset_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/datasets/{dataset_id}/items":{"get":{"tags":["scrape"],"summary":"Dataset","description":"Read the scraped rows of a run's dataset.","operationId":"scrape_dataset_items","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scrape/{source}/raw/{path}":{"post":{"tags":["scrape"],"summary":"Passthrough","description":"Escape hatch to the provider's native API for anything the normalized\nverbs don't cover. `GET /scrape/apify/raw/store?search=x` -> tools-gateway\n`/v1/apify/store?search=x`. Body and query string are forwarded as-is.","operationId":"scrape_raw_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["scrape"],"summary":"Passthrough","description":"Escape hatch to the provider's native API for anything the normalized\nverbs don't cover. `GET /scrape/apify/raw/store?search=x` -> tools-gateway\n`/v1/apify/store?search=x`. Body and query string are forwarded as-is.","operationId":"scrape_raw_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach":{"get":{"tags":["outreach"],"summary":"List Outreach","operationId":"outreach_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/outreach/skill":{"get":{"tags":["outreach"],"summary":"Outreach Skill","operationId":"outreach_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/outreach/instantly/campaigns":{"get":{"tags":["outreach"],"summary":"Instantly Campaigns","operationId":"outreach_instantly_campaigns","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/campaigns/{campaign_id}":{"get":{"tags":["outreach"],"summary":"Instantly Campaign","operationId":"outreach_instantly_campaign","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/campaigns/{campaign_id}/analytics":{"get":{"tags":["outreach"],"summary":"Instantly Analytics","operationId":"outreach_instantly_analytics","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/campaigns/{campaign_id}/analytics/overview":{"get":{"tags":["outreach"],"summary":"Instantly Overview","operationId":"outreach_instantly_overview","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/campaigns/{campaign_id}/sending-status":{"get":{"tags":["outreach"],"summary":"Instantly Sending Status","operationId":"outreach_instantly_sending_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/campaigns/{campaign_id}/senders":{"get":{"tags":["outreach"],"summary":"Instantly Campaign Senders","operationId":"outreach_instantly_campaign_senders","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/leads":{"get":{"tags":["outreach"],"summary":"Instantly Leads","operationId":"outreach_instantly_leads","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/emails":{"get":{"tags":["outreach"],"summary":"Instantly Emails","operationId":"outreach_instantly_emails","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}},{"name":"email_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Type"}},{"name":"is_unread","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Unread"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/instantly/campaigns/{campaign_id}/leads/{lead_id}/exclusion":{"get":{"tags":["outreach"],"summary":"Instantly Exclusion","operationId":"outreach_instantly_exclusion","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}},{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Lead Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["outreach"],"summary":"Instantly Exclude","operationId":"outreach_instantly_exclude","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Campaign Id"}},{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","title":"Lead Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionIntent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/outreach/{provider}/{path}":{"delete":{"tags":["outreach"],"summary":"Outreach Proxy","operationId":"outreach_call_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["outreach"],"summary":"Outreach Proxy","operationId":"outreach_call_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["outreach"],"summary":"Outreach Proxy","operationId":"outreach_call_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["outreach"],"summary":"Outreach Proxy","operationId":"outreach_call_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/research/skill":{"get":{"tags":["research"],"summary":"Research Skill","operationId":"research_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/research":{"get":{"tags":["research"],"summary":"List Research","description":"Your research jobs, newest first.","operationId":"research_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["research"],"summary":"Start Research","description":"Submit or retrieve an idempotent attempt; terminal jobs are not requeued.\nPoll queued/running jobs until completed or failed.","operationId":"research_start","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/research/{job_id}":{"get":{"tags":["research"],"summary":"Get Research","description":"A research job's status and authenticated result when completed.","operationId":"research_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/skill":{"get":{"tags":["search"],"summary":"Search Skill","operationId":"search_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/search":{"get":{"tags":["search"],"summary":"List Search","operationId":"search_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/search/web/brave":{"post":{"tags":["search"],"summary":"Search Brave","operationId":"search_brave","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/search/web/perplexity":{"post":{"tags":["search"],"summary":"Search Perplexity","operationId":"search_perplexity","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerplexitySearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/search/web/perplexity/async":{"post":{"tags":["search"],"summary":"Search Perplexity Async Submit","description":"Submit a deep-research request and return a request_id to poll — the\nnon-blocking path for work that takes minutes.","operationId":"search_perplexity_async","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerplexityAsyncRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/search/web/perplexity/async/{request_id}":{"get":{"tags":["search"],"summary":"Search Perplexity Async Status","description":"Poll a submitted deep-research request. While running, `answer` is null\nand `results` is empty. Stop polling on COMPLETED, FAILED, CANCELLED or\nINCOMPLETE. Terminal responses may contain partial answer/results; inspect\n`error_message` when the run did not complete.","operationId":"search_perplexity_status","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/places":{"post":{"tags":["search"],"summary":"Search Places","operationId":"search_places","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/images/skill":{"get":{"tags":["images"],"summary":"Images Skill","operationId":"images_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/images":{"get":{"tags":["images"],"summary":"List Models","operationId":"images_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/images/generations":{"post":{"tags":["images"],"summary":"Generate","operationId":"images_generate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/design/skill":{"get":{"tags":["design"],"summary":"Design Skill","operationId":"design_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/design":{"get":{"tags":["design"],"summary":"Design Index","operationId":"design_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/design/facets":{"get":{"tags":["design"],"summary":"Design Facets","operationId":"design_facets","security":[{"HTTPBearer":[]}],"parameters":[{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"enum":["light","dark"],"type":"string"},{"type":"null"}],"title":"Theme"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/design/styles/search":{"post":{"tags":["design"],"summary":"Design Search","operationId":"design_styles_search","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/design/styles":{"get":{"tags":["design"],"summary":"Design Browse","operationId":"design_styles_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"enum":["light","dark"],"type":"string"},{"type":"null"}],"title":"Theme"}},{"name":"font","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Font family substring, e.g. 'Geist'.","title":"Font"},"description":"Font family substring, e.g. 'Geist'."},{"name":"color","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Colour name or exact hex, e.g. 'Bone' or '#08090a'.","title":"Color"},"description":"Colour name or exact hex, e.g. 'Bone' or '#08090a'."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/design/styles/{style_id}":{"get":{"tags":["design"],"summary":"Design Style","operationId":"design_style_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"style_id","in":"path","required":true,"schema":{"type":"string","title":"Style Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/design/styles/{style_id}/design.md":{"get":{"tags":["design"],"summary":"Design Style Markdown","description":"The design system as a DESIGN.md — save it in your repo and build against it.","operationId":"design_style_markdown","security":[{"HTTPBearer":[]}],"parameters":[{"name":"style_id","in":"path","required":true,"schema":{"type":"string","title":"Style Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/git/skill":{"get":{"tags":["git"],"summary":"Git Skill","operationId":"git_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/git/credentials":{"get":{"tags":["git"],"summary":"Credentials","description":"Deprecated for Git transport: use /git/http/<repo>.git with the OS key\nand git scope; see /git/skill. Retained for native Forgejo REST API access\n(including issues/comments), which the Git HTTP adapter does not proxy.\nExisting credential fields remain available; treat them as secrets.","operationId":"git_credentials","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}]}},"/git/repos":{"get":{"tags":["git"],"summary":"List Repos","operationId":"git_repos_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["git"],"summary":"Create Repo","operationId":"git_repo_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRepoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/git/http/{repo}.git/info/refs":{"get":{"tags":["git"],"summary":"Refs","description":"Native Git reference discovery, authenticated with the OS key (raw Git bytes).","operationId":"git_http_refs","security":[{"HTTPBearer":[]}],"parameters":[{"name":"repo","in":"path","required":true,"schema":{"type":"string","title":"Repo"}},{"name":"service","in":"query","required":true,"schema":{"enum":["git-upload-pack","git-receive-pack"],"type":"string","title":"Service"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/git/http/{repo}.git/{service}":{"post":{"tags":["git"],"summary":"Rpc","description":"Native Git fetch/push RPC for the authenticated account's repository (raw Git bytes).","operationId":"git_http_rpc","security":[{"HTTPBearer":[]}],"parameters":[{"name":"repo","in":"path","required":true,"schema":{"type":"string","title":"Repo"}},{"name":"service","in":"path","required":true,"schema":{"enum":["git-upload-pack","git-receive-pack"],"type":"string","title":"Service"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/skill":{"get":{"tags":["notifications"],"summary":"Notifications Skill","operationId":"notifications_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/notifications":{"get":{"tags":["notifications"],"summary":"List Notifications","operationId":"notifications_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"unread","in":"query","required":false,"schema":{"type":"boolean","description":"Only return unread notifications.","default":false,"title":"Unread"},"description":"Only return unread notifications."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Read","operationId":"notifications_mark_read","security":[{"HTTPBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/skill":{"get":{"tags":["payments"],"summary":"Payments Skill","operationId":"payments_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/payments/webhooks":{"get":{"tags":["payments"],"summary":"Webhooks Info","operationId":"payments_webhooks_info","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["payments"],"summary":"Webhooks Register","operationId":"payments_webhooks_register","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/webhooks/test":{"post":{"tags":["payments"],"summary":"Webhooks Test","description":"Fire a SIMULATED payment event at your own webhook so you can test your\nhandler without a real charge. Signed exactly like a real event but with\nlivemode:false and an x-egbe-payment-test:1 header.","operationId":"payments_webhooks_test","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/webhook-secret":{"get":{"tags":["payments"],"summary":"Webhook Secret","description":"Your app's webhook signing secret + how to verify x-egbe-payment-signature.\nTreat the secret as confidential — it proves an event really came from us.","operationId":"payments_webhook_secret","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/payment-links":{"post":{"tags":["payments"],"summary":"Create Payment Link","description":"Payment link. Pass `app_slug` (+ optional `webhook_path`) to also receive\n`checkout.session.completed` at your app when someone pays — we resolve your\napp's real host and set the delivery URL.","operationId":"payments_payment_link_create","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/checkout-sessions":{"post":{"tags":["payments"],"summary":"Create Checkout Session","description":"Checkout session. If you pass `app_slug` (+ optional `webhook_path`) for the\nwebhook, we resolve your app's real host and set the delivery URL for you, so\n`checkout.session.completed` reaches your app on the platform it's deployed to.","operationId":"payments_checkout_create","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/checkout-sessions/validate":{"post":{"tags":["payments"],"summary":"Validate Checkout Session","description":"Validate owned price/customer bindings and checkout return targets without\ncreating a Stripe Checkout Session.","operationId":"payments_checkout_validate","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/customers":{"post":{"tags":["payments"],"summary":"Create Customer","description":"Create a Stripe customer tagged to you (free — not a charge). Store the\nreturned id on a user; you can open a billing portal for it right away, even\nbefore they subscribe.","operationId":"payments_customer_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/evidence":{"get":{"tags":["payments"],"summary":"Payment Evidence","description":"Scoped, non-sensitive provider readback for payment validation.","operationId":"payments_evidence","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/metrics":{"get":{"tags":["payments"],"summary":"Payment Metrics","operationId":"payments_metrics","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/portal-sessions":{"post":{"tags":["payments"],"summary":"Create Portal Session","description":"A Stripe Customer Portal session ('Manage subscription') for one of your\ncustomers — invoices, update card, cancel. Returns a `url` to send them to.","operationId":"payments_portal_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/portal-sessions/validate":{"post":{"tags":["payments"],"summary":"Validate Portal Session","description":"Validate owned-customer and same-app return bindings without creating a\nStripe Customer Portal Session.","operationId":"payments_portal_validate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/validation-receipts/verify":{"post":{"tags":["payments"],"summary":"Verify Validation Receipt","operationId":"payments_receipt_verify","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationReceiptVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/coupons":{"post":{"tags":["payments"],"summary":"Create Coupon","description":"Create a coupon restricted to this product's owned Stripe Products.","operationId":"payments_coupon_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["payments"],"summary":"List Coupons","description":"List coupons owned by the current product without exposing shared-account resources.","operationId":"payments_coupon_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/coupons/{coupon_id}":{"get":{"tags":["payments"],"summary":"Get Coupon","operationId":"payments_coupon_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"coupon_id","in":"path","required":true,"schema":{"type":"string","title":"Coupon Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/promotion-codes":{"post":{"tags":["payments"],"summary":"Create Promotion Code","description":"Create a customer-facing promotion code over an owned coupon.","operationId":"payments_promotion_code_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionCodeCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["payments"],"summary":"List Promotion Codes","description":"List promotion codes owned by the current product.","operationId":"payments_promotion_code_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}},{"name":"active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/promotion-codes/batch":{"post":{"tags":["payments"],"summary":"Create Promotion Codes Batch","description":"Create one customer-restricted Promotion Code per pre-bound account email.","operationId":"payments_promotion_code_batch_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionCodeEmailBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/promotion-codes/{promotion_code_id}":{"get":{"tags":["payments"],"summary":"Get Promotion Code","operationId":"payments_promotion_code_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"promotion_code_id","in":"path","required":true,"schema":{"type":"string","title":"Promotion Code Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/promotion-codes/{promotion_code_id}/deactivate":{"post":{"tags":["payments"],"summary":"Deactivate Promotion Code","description":"Deactivate one owned promotion code; its coupon and sibling codes remain unchanged.","operationId":"payments_promotion_code_deactivate","security":[{"HTTPBearer":[]}],"parameters":[{"name":"promotion_code_id","in":"path","required":true,"schema":{"type":"string","title":"Promotion Code Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/{resource}":{"post":{"tags":["payments"],"summary":"Create","operationId":"payments_resource_create","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string","title":"Resource"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/google/skill":{"get":{"tags":["auth"],"summary":"Google Auth Skill","operationId":"auth_google_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/auth/google/intents":{"post":{"tags":["auth"],"summary":"Create Google Intent","operationId":"auth_google_intent_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleIntentRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/google/onetap/intents":{"post":{"tags":["auth"],"summary":"Create Google Onetap Intent","operationId":"auth_google_onetap_intent_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOneTapIntentRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/google/onetap/frame":{"get":{"tags":["auth"],"summary":"Google Onetap Frame","operationId":"auth_google_onetap_frame","parameters":[{"name":"nonce","in":"query","required":true,"schema":{"type":"string","minLength":32,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$","title":"Nonce"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/google/onetap/exchange":{"post":{"tags":["auth"],"summary":"Exchange Google Onetap Credential","operationId":"auth_google_onetap_exchange","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOneTapExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/google/start/{intent}":{"get":{"tags":["auth"],"summary":"Start Google","operationId":"auth_google_start","parameters":[{"name":"intent","in":"path","required":true,"schema":{"type":"string","title":"Intent"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/google/callback":{"get":{"tags":["auth"],"summary":"Google Callback","operationId":"auth_google_callback","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Error"}},{"name":"egbe_google_oauth_state","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Egbe Google Oauth State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/google/exchange":{"post":{"tags":["auth"],"summary":"Exchange Google Code","operationId":"auth_google_exchange","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/errors/skill":{"get":{"tags":["errors"],"summary":"Errors Skill","operationId":"errors_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/errors/{slug}":{"post":{"tags":["errors"],"summary":"Provision Errors","description":"Ensure a Sentry project for your app and return its DSN. Set the DSN as\nSENTRY_DSN in your app's env (works for both server and browser SDKs).","operationId":"errors_provision","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["errors"],"summary":"List Errors","description":"Your app's Sentry project(s) and DSN(s). Provision first via POST /errors/{slug}.","operationId":"errors_list","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/errors/{slug}/{target}/issues":{"get":{"tags":["errors"],"summary":"List Issues","description":"Recent Sentry issues for your app's project. Provision the project first via\nPOST /errors/{slug}, then resolve one with POST /errors/{slug}/{target}/issues/{issue_id}/resolve.","operationId":"errors_issues","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"Issue status: unresolved | resolved | ignored | all.","default":"unresolved","title":"Status"},"description":"Issue status: unresolved | resolved | ignored | all."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Max issues to return (1-50).","default":10,"title":"Limit"},"description":"Max issues to return (1-50)."},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Raw Sentry search query; overrides `status` when set.","title":"Query"},"description":"Raw Sentry search query; overrides `status` when set."},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort order, e.g. freq | date | new.","default":"freq","title":"Sort"},"description":"Sort order, e.g. freq | date | new."},{"name":"statsPeriod","in":"query","required":false,"schema":{"enum":["24h","14d"],"type":"string","description":"Stats window: 24h | 14d.","default":"14d","title":"Statsperiod"},"description":"Stats window: 24h | 14d."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/errors/{slug}/{target}/issues/{issue_id}/resolve":{"post":{"tags":["errors"],"summary":"Resolve Issue","description":"Mark a Sentry issue resolved. The gateway resolves it with its own Sentry\ncredentials — no Sentry token is ever exposed to your app.","operationId":"errors_issue_resolve","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}},{"name":"issue_id","in":"path","required":true,"schema":{"type":"string","title":"Issue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/skill":{"get":{"tags":["support"],"summary":"Support Skill","operationId":"support_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/support/tickets":{"get":{"tags":["support"],"summary":"List Tickets","description":"Your support tickets, newest first.","operationId":"support_tickets_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["support"],"summary":"Create Ticket","description":"File a support ticket. We open it with the egbe team and hand back a\nticket id you can poll for the reply.","operationId":"support_ticket_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/support/tickets/{ticket_id}":{"get":{"tags":["support"],"summary":"Get Ticket","description":"A single ticket with its conversation (status + comments).","operationId":"support_ticket_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/tickets/{ticket_id}/comments":{"post":{"tags":["support"],"summary":"Add Comment","description":"Reply on one of your tickets.","operationId":"support_ticket_comment","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/keys/skill":{"get":{"tags":["keys"],"summary":"Keys Skill","operationId":"keys_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/keys":{"get":{"tags":["keys"],"summary":"List Keys","operationId":"keys_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["keys"],"summary":"Mint Key","operationId":"keys_mint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MintRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/keys/{key_id}/revoke":{"post":{"tags":["keys"],"summary":"Revoke Key","operationId":"keys_revoke","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/skill":{"get":{"tags":["me"],"summary":"Me Skill","operationId":"me_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/me/limits":{"get":{"tags":["me"],"summary":"My Limits","operationId":"me_limits","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resource","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by resource prefix, e.g. 'perplexity' or 'brave:searches'.","title":"Resource"},"description":"Filter by resource prefix, e.g. 'perplexity' or 'brave:searches'."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/setup-complete":{"post":{"tags":["me"],"summary":"My Setup Complete","operationId":"me_setup_complete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}},"/skills":{"get":{"tags":["skills"],"summary":"List Available Skills","operationId":"skills_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/skills/catalog.zip":{"get":{"tags":["skills"],"summary":"Download Skill Catalog","operationId":"skills_catalog_download","parameters":[{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/install.zip":{"get":{"tags":["skills"],"summary":"Download Installation Catalog","operationId":"skills_installation_download","parameters":[{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/{name}/resources/{resource_path}":{"get":{"tags":["skills"],"summary":"Download Skill Resource","operationId":"skills_resource","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"resource_path","in":"path","required":true,"schema":{"type":"string","title":"Resource Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/skills/{name}":{"get":{"tags":["skills"],"summary":"Download Skill","operationId":"skills_download","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/playbooks/resources/{resource_path}":{"get":{"tags":["playbooks"],"summary":"Read Playbook","operationId":"playbooks_resource","parameters":[{"name":"resource_path","in":"path","required":true,"schema":{"type":"string","title":"Resource Path"}}],"responses":{"200":{"description":"Successful Response","content":{"text/markdown":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/playbooks/catalog.zip":{"get":{"tags":["playbooks"],"summary":"Download Playbooks","operationId":"playbooks_catalog_download","parameters":[{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/playbooks/skill":{"get":{"tags":["playbooks"],"summary":"Skill","operationId":"playbooks_skill","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}}}},"/playbooks/changes":{"post":{"tags":["playbooks"],"summary":"Record","operationId":"playbooks_change_record","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AdCreate":{"properties":{"ad_group_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Ad Group Id"},"name":{"type":"string","maxLength":200,"minLength":3,"title":"Name"},"creative":{"$ref":"#/components/schemas/Creative"}},"additionalProperties":false,"type":"object","required":["ad_group_id","name","creative"],"title":"AdCreate"},"AdGroupBid":{"properties":{"id":{"type":"string","pattern":"^[0-9]+$","title":"Id"},"cpc_bid_micros":{"type":"integer","exclusiveMinimum":0.0,"title":"Cpc Bid Micros"}},"additionalProperties":false,"type":"object","required":["id","cpc_bid_micros"],"title":"AdGroupBid"},"AdStatusPatch":{"properties":{"status":{"type":"string","enum":["ENABLED","PAUSED"],"title":"Status"}},"additionalProperties":false,"type":"object","required":["status"],"title":"AdStatusPatch"},"AdTextAsset":{"properties":{"text":{"type":"string","maxLength":90,"minLength":1,"title":"Text"},"pinned_field":{"anyOf":[{"type":"string","enum":["HEADLINE_1","HEADLINE_2","HEADLINE_3","DESCRIPTION_1","DESCRIPTION_2"]},{"type":"null"}],"title":"Pinned Field"}},"additionalProperties":false,"type":"object","required":["text"],"title":"AdTextAsset"},"AdTextPatch":{"properties":{"headlines":{"anyOf":[{"items":{"$ref":"#/components/schemas/AdTextAsset"},"type":"array","maxItems":15,"minItems":3},{"type":"null"}],"title":"Headlines"},"descriptions":{"anyOf":[{"items":{"$ref":"#/components/schemas/AdTextAsset"},"type":"array","maxItems":4,"minItems":2},{"type":"null"}],"title":"Descriptions"}},"additionalProperties":false,"type":"object","title":"AdTextPatch"},"AdUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":3},{"type":"null"}],"title":"Name"},"creative":{"anyOf":[{"$ref":"#/components/schemas/Creative"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"AdUpdate"},"Bid":{"properties":{"billing_event_type":{"type":"string","enum":["impression","click"],"title":"Billing Event Type"},"max_bid_micros":{"type":"integer","exclusiveMinimum":0.0,"title":"Max Bid Micros"}},"additionalProperties":false,"type":"object","required":["billing_event_type","max_bid_micros"],"title":"Bid"},"BidsPatch":{"properties":{"ad_groups":{"items":{"$ref":"#/components/schemas/AdGroupBid"},"type":"array","maxItems":100,"title":"Ad Groups"},"keywords":{"items":{"$ref":"#/components/schemas/KeywordBid"},"type":"array","maxItems":500,"title":"Keywords"}},"additionalProperties":false,"type":"object","title":"BidsPatch"},"BusinessNameRequest":{"properties":{"business_name":{"anyOf":[{"type":"string","maxLength":80,"minLength":2},{"type":"null"}],"title":"Business Name","description":"Exact chosen business name, preserving spelling and capitalization (e.g. FirstSignal). Initializes an unnamed Dashboard business; never replaces an existing chosen name."}},"type":"object","title":"BusinessNameRequest"},"CommentRequest":{"properties":{"body":{"type":"string","maxLength":65536,"minLength":1,"title":"Body"}},"type":"object","required":["body"],"title":"CommentRequest"},"ConversionCreate":{"properties":{"campaign_id":{"type":"string","pattern":"^[0-9]+$","title":"Campaign Id","description":"Owned campaign used to resolve product identity; association is a separate operation"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"method":{"type":"string","enum":["INSIGHT_TAG","CONVERSIONS_API"],"title":"Method"},"type":{"type":"string","enum":["SIGN_UP","PURCHASE","LEAD","ADD_TO_CART","DOWNLOAD","INSTALL","KEY_PAGE_VIEW","OTHER"],"title":"Type"},"post_click_days":{"type":"integer","enum":[1,7,30],"title":"Post Click Days","default":30},"view_through_days":{"type":"integer","enum":[1,7,30],"title":"View Through Days","default":7},"attribution_type":{"type":"string","enum":["LAST_TOUCH_BY_CAMPAIGN","LAST_TOUCH_BY_CONVERSION"],"title":"Attribution Type","default":"LAST_TOUCH_BY_CONVERSION"}},"additionalProperties":false,"type":"object","required":["campaign_id","name","method","type"],"title":"ConversionCreate"},"ConversionEvent":{"properties":{"conversion_id":{"type":"string","pattern":"^[0-9]+$","title":"Conversion Id"},"event_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Event Id","description":"Stable opaque business-event identity, unique across this product; never an email"},"happened_at":{"type":"integer","exclusiveMinimum":0.0,"title":"Happened At","description":"Original event time in Unix milliseconds, within the past 90 days"},"email_sha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}],"title":"Email Sha256","description":"SHA-256 of trimmed lowercase email; never plaintext email"},"linkedin_tracking_uuid":{"anyOf":[{"type":"string","pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"},{"type":"null"}],"title":"Linkedin Tracking Uuid","description":"Genuine li_fat_id captured by the product, never synthesized"},"value":{"anyOf":[{"$ref":"#/components/schemas/ConversionValue"},{"type":"null"}]},"validate_only":{"type":"boolean","title":"Validate Only","description":"Local contract and owned-rule checks only; does not send an event to LinkedIn","default":false}},"additionalProperties":false,"type":"object","required":["conversion_id","event_id","happened_at"],"title":"ConversionEvent"},"ConversionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"post_click_days":{"anyOf":[{"type":"integer","enum":[1,7,30]},{"type":"null"}],"title":"Post Click Days"},"view_through_days":{"anyOf":[{"type":"integer","enum":[1,7,30]},{"type":"null"}],"title":"View Through Days"},"attribution_type":{"anyOf":[{"type":"string","enum":["LAST_TOUCH_BY_CAMPAIGN","LAST_TOUCH_BY_CONVERSION"]},{"type":"null"}],"title":"Attribution Type"}},"additionalProperties":false,"type":"object","title":"ConversionUpdate"},"ConversionValue":{"properties":{"currency_code":{"type":"string","pattern":"^[A-Z]{3}$","title":"Currency Code"},"amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string"}],"title":"Amount"}},"additionalProperties":false,"type":"object","required":["currency_code","amount"],"title":"ConversionValue"},"CouponAppliesTo":{"properties":{"products":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Products","description":"Owned Stripe Product ids this coupon can discount."}},"type":"object","required":["products"],"title":"CouponAppliesTo"},"CouponCreateRequest":{"properties":{"percent_off":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Percent Off"},"amount_off":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Amount Off"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Za-z]{3}$"},{"type":"null"}],"title":"Currency"},"duration":{"type":"string","enum":["once","forever","repeating"],"title":"Duration","default":"once"},"duration_in_months":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Duration In Months"},"max_redemptions":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Redemptions"},"redeem_by":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Redeem By"},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"applies_to":{"$ref":"#/components/schemas/CouponAppliesTo"},"metadata":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["applies_to"],"title":"CouponCreateRequest"},"CreateCampaignRequest":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"product_slug":{"anyOf":[{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},{"type":"null"}],"title":"Product Slug","description":"Durable product grouping for owned campaigns; required for Meta conversion binding."},"daily_budget_usd":{"type":"number","exclusiveMinimum":0.0,"title":"Daily Budget Usd","description":"Daily budget in USD; scaled to provider units, not currency-converted. Google requires a USD account."},"objective":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Objective","description":"Network objective; a network-appropriate default is used if omitted."},"status":{"type":"string","title":"Status","description":"PAUSED (default) or ACTIVE.","default":"PAUSED"},"extra":{"additionalProperties":true,"type":"object","title":"Extra","description":"Network-specific passthrough fields, e.g. Reddit funding_instrument_id, Meta special_ad_categories."}},"type":"object","required":["name","daily_budget_usd"],"title":"CreateCampaignRequest"},"CreateRepoRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"private":{"type":"boolean","title":"Private","default":true},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name"],"title":"CreateRepoRequest"},"CreateSiteRequest":{"properties":{"app":{"type":"string","title":"App","description":"App slug the website belongs to."},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"The site's public hostname, e.g. 'my-app-abc1234.n.egbe.app'. Umami only counts pageviews whose hostname matches this — set it to your deployed host or stats stay 0. Omit to leave an existing domain unchanged."}},"type":"object","required":["app"],"title":"CreateSiteRequest"},"CreateTicketRequest":{"properties":{"title":{"type":"string","maxLength":256,"minLength":1,"title":"Title"},"body":{"type":"string","maxLength":65536,"minLength":1,"title":"Body"},"reason":{"anyOf":[{"type":"string","maxLength":8192,"minLength":1},{"type":"null"}],"title":"Reason","description":"Why the business is blocked and needs support; include the goal and impact."},"environment":{"anyOf":[{"type":"string","maxLength":8192,"minLength":1},{"type":"null"}],"title":"Environment","description":"Agent runtime, available tools, access constraints, and attempted workarounds. Omit secrets."},"requested_action":{"anyOf":[{"type":"string","maxLength":8192,"minLength":1},{"type":"null"}],"title":"Requested Action","description":"The specific action or answer needed from support, including any budget constraints."}},"type":"object","required":["title","body"],"title":"CreateTicketRequest"},"Creative":{"properties":{"type":{"type":"string","const":"chat_card","title":"Type","default":"chat_card"},"title":{"type":"string","maxLength":50,"minLength":3,"title":"Title"},"body":{"type":"string","maxLength":100,"minLength":1,"title":"Body"},"target_url":{"type":"string","maxLength":2048,"minLength":1,"title":"Target Url"},"file_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"File Id"}},"additionalProperties":false,"type":"object","required":["title","body","target_url","file_id"],"title":"Creative"},"CreativeClassificationRequest":{"properties":{"schema_version":{"type":"integer","const":1,"title":"Schema Version"},"taxonomy_version":{"type":"string","maxLength":64,"minLength":1,"title":"Taxonomy Version"},"product_context":{"anyOf":[{"type":"string","maxLength":24000},{"type":"null"}],"title":"Product Context"},"semantic_context":{"anyOf":[{"$ref":"#/components/schemas/CreativeSemanticContext"},{"type":"null"}]},"creatives":{"items":{"$ref":"#/components/schemas/TaxonomyCreativeInput"},"type":"array","maxItems":10,"minItems":1,"title":"Creatives"},"frames":{"items":{"$ref":"#/components/schemas/FrameInput"},"type":"array","maxItems":8,"title":"Frames"}},"additionalProperties":false,"type":"object","required":["schema_version","taxonomy_version","creatives"],"title":"CreativeClassificationRequest"},"CreativeCreate":{"properties":{"campaign_id":{"type":"string","pattern":"^[0-9]+$","title":"Campaign Id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"image_id":{"type":"string","pattern":"^urn:li:image:[A-Za-z0-9_-]+$","title":"Image Id"},"headline":{"type":"string","maxLength":200,"minLength":1,"title":"Headline"},"text":{"type":"string","maxLength":3000,"minLength":1,"title":"Text"},"destination_url":{"type":"string","maxLength":2000,"minLength":1,"title":"Destination Url"},"cta":{"type":"string","enum":["LEARN_MORE","SIGN_UP","DOWNLOAD","REGISTER","REQUEST_DEMO"],"title":"Cta","default":"LEARN_MORE"}},"additionalProperties":false,"type":"object","required":["campaign_id","name","image_id","headline","text","destination_url"],"title":"CreativeCreate"},"CreativeExtraTextSource":{"properties":{"kind":{"type":"string","enum":["ad_text","video_metadata_title","video_metadata_description","video_frame_ocr"],"title":"Kind"},"ref":{"type":"string","maxLength":300,"minLength":1,"title":"Ref"}},"additionalProperties":false,"type":"object","required":["kind","ref"],"title":"CreativeExtraTextSource"},"CreativeSemanticContext":{"properties":{"semantic_contract":{"type":"string","const":"creative-semantics.v1","title":"Semantic Contract"},"context_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Context Sha256"},"product_context":{"type":"string","maxLength":24000,"title":"Product Context"},"allowed_languages":{"items":{"type":"string"},"type":"array","maxItems":40,"title":"Allowed Languages"},"axes":{"items":{"type":"string"},"type":"array","maxItems":7,"title":"Axes"},"known_angles":{"items":{"$ref":"#/components/schemas/KnownCreativeAngle"},"type":"array","maxItems":320,"title":"Known Angles"},"known_message_families":{"items":{"$ref":"#/components/schemas/KnownCreativeMessageFamily"},"type":"array","maxItems":320,"title":"Known Message Families"}},"additionalProperties":false,"type":"object","required":["semantic_contract","context_sha256","product_context"],"title":"CreativeSemanticContext","description":"Category data is versioned independently of the generic taxonomy."},"CreativeUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"image_id":{"anyOf":[{"type":"string","pattern":"^urn:li:image:[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Image Id"},"headline":{"anyOf":[{"type":"string","maxLength":25,"minLength":1},{"type":"null"}],"title":"Headline"},"text":{"anyOf":[{"type":"string","maxLength":75,"minLength":1},{"type":"null"}],"title":"Text"},"destination_url":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Destination Url"}},"additionalProperties":false,"type":"object","title":"CreativeUpdate"},"CustomerRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Customer email (optional)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Customer name (optional)."}},"type":"object","title":"CustomerRequest"},"DeployRequest":{"properties":{"business_name":{"anyOf":[{"type":"string","maxLength":80,"minLength":2},{"type":"null"}],"title":"Business Name","description":"Exact chosen business name, preserving spelling and capitalization (e.g. FirstSignal). Initializes an unnamed Dashboard business; never replaces an existing chosen name."},"slug":{"type":"string","title":"Slug","description":"App name — becomes <slug>-<publicId>.n.egbe.app, and (on your first deploy) also claims <slug>.egbe.app as your one domain."},"repo":{"type":"string","title":"Repo","description":"Git repo to deploy (your Forgejo repo)."},"ref":{"type":"string","title":"Ref","description":"Branch or commit to deploy.","default":"main"},"env":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Env","description":"Environment variables for the app."},"db":{"type":"boolean","title":"Db","description":"Provision a Postgres database co-located with your app and inject its connection string as DATABASE_URL. Use this instead of an external DB host — your app runs on a network that cannot reach databases outside the platform.","default":false},"min_instances":{"type":"integer","maximum":1.0,"minimum":0.0,"title":"Min Instances","description":"Minimum running app instances. Set to 1 to prevent scale-to-zero cold starts; the continuously running instance consumes wallet resources even while idle.","default":0}},"type":"object","required":["slug","repo"],"title":"DeployRequest"},"DomainRequest":{"properties":{"slug":{"type":"string","title":"Slug","description":"The deployed app to point the domain at."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Subdomain label — 'acme' becomes acme.egbe.app. Letters, digits and dashes."},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host","description":"Bring-your-own domain: a full host you or your client own, e.g. try.client.tld. Operator-enabled per business. The response carries the two CNAME records the domain owner must add; the host serves once its certificate has issued."}},"type":"object","required":["slug"],"title":"DomainRequest"},"Envelope":{"properties":{"code":{"type":"integer","title":"Code"},"message":{"type":"string","title":"Message"},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"Envelope"},"ErrorsRequest":{"properties":{"target":{"type":"string","title":"Target","description":"A label for this project, e.g. web | server.","default":"web"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform","description":"Sentry platform: javascript-nextjs (default), javascript-react, node-express, python, python-django, python-fastapi or python-flask."}},"type":"object","title":"ErrorsRequest"},"EstimateRequest":{"properties":{"targeting":{"$ref":"#/components/schemas/Targeting"}},"additionalProperties":false,"type":"object","required":["targeting"],"title":"EstimateRequest"},"Event":{"properties":{"source_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Source Id"},"event_id":{"type":"string","maxLength":128,"minLength":1,"title":"Event Id"},"event_type":{"type":"string","enum":["registration_completed","order_created","subscription_created","trial_started","lead_created"],"title":"Event Type"},"timestamp_ms":{"type":"integer","exclusiveMinimum":0.0,"title":"Timestamp Ms"},"source_url":{"type":"string","maxLength":2048,"minLength":1,"title":"Source Url"},"measurement_consent":{"type":"boolean","const":true,"title":"Measurement Consent"},"oppref":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Oppref"},"obref":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Obref"},"amount_minor":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Amount Minor"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"},"plan_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Plan Id"},"validate_only":{"type":"boolean","title":"Validate Only","default":false}},"additionalProperties":false,"type":"object","required":["source_id","event_id","event_type","timestamp_ms","source_url","measurement_consent"],"title":"Event"},"ExclusionIntent":{"properties":{"intent":{"type":"string","const":"confirmed_opt_out","title":"Intent"}},"additionalProperties":false,"type":"object","required":["intent"],"title":"ExclusionIntent"},"FrameInput":{"properties":{"ref":{"type":"string","maxLength":300,"minLength":1,"title":"Ref"},"timestamp_seconds":{"type":"number","maximum":86400.0,"minimum":0.0,"title":"Timestamp Seconds"},"media_type":{"type":"string","enum":["image/jpeg","image/png","image/webp"],"title":"Media Type"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Sha256"},"content_base64":{"type":"string","maxLength":8388608,"minLength":1,"title":"Content Base64"}},"additionalProperties":false,"type":"object","required":["ref","timestamp_seconds","media_type","sha256","content_base64"],"title":"FrameInput"},"GoalCreate":{"properties":{"source_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Source Id"},"name":{"type":"string","maxLength":200,"minLength":3,"title":"Name"},"event_type":{"type":"string","enum":["registration_completed","order_created","subscription_created","trial_started","lead_created"],"title":"Event Type"}},"additionalProperties":false,"type":"object","required":["source_id","name","event_type"],"title":"GoalCreate"},"GoogleAdsKeywordSpec":{"properties":{"text":{"type":"string","minLength":1,"title":"Text","description":"Keyword text, without match-type punctuation."},"matchType":{"type":"string","enum":["PHRASE","EXACT","BROAD"],"title":"Matchtype","default":"PHRASE"},"cpcBidMicros":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Cpcbidmicros","description":"Keyword CPC override in account-currency micros; omit/null to inherit the ad group bid."},"status":{"type":"string","enum":["PAUSED","ENABLED"],"title":"Status","description":"Only this new keyword's status. Does not enable its campaign or ad group.","default":"PAUSED"}},"additionalProperties":false,"type":"object","required":["text"],"title":"GoogleAdsKeywordSpec"},"GoogleAdsKeywordStatusRequest":{"properties":{"keyword_ids":{"items":{"type":"string","pattern":"^[0-9]+$"},"type":"array","maxItems":100,"minItems":1,"title":"Keyword Ids","description":"Existing positive keyword IDs in the selected owned campaign and ad group."},"status":{"type":"string","enum":["PAUSED","ENABLED"],"title":"Status"}},"additionalProperties":false,"type":"object","required":["keyword_ids","status"],"title":"GoogleAdsKeywordStatusRequest"},"GoogleAdsKeywordsRequest":{"properties":{"keywords":{"items":{"$ref":"#/components/schemas/GoogleAdsKeywordSpec"},"type":"array","maxItems":100,"minItems":1,"title":"Keywords","description":"Create-only batch; use keyword-status to update existing keyword IDs."}},"additionalProperties":false,"type":"object","required":["keywords"],"title":"GoogleAdsKeywordsRequest"},"GoogleConversionCreate":{"properties":{"campaign_ref":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Campaign Ref","description":"Owned campaign identifying the ad account and product. It is not launched or modified."},"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"},"delivery_method":{"type":"string","enum":["browser","server"],"title":"Delivery Method","default":"browser"},"category":{"type":"string","enum":["SIGNUP","PURCHASE","SUBMIT_LEAD_FORM","CONTACT"],"title":"Category","default":"SIGNUP"},"counting_type":{"type":"string","enum":["ONE_PER_CLICK","MANY_PER_CLICK"],"title":"Counting Type","default":"ONE_PER_CLICK"},"default_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Default Value"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"}},"additionalProperties":false,"type":"object","required":["campaign_ref","name"],"title":"GoogleConversionCreate"},"GoogleConversionEvent":{"properties":{"campaign_ref":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Campaign Ref"},"conversion_ref":{"type":"string","pattern":"^[0-9]+:[0-9]+$","title":"Conversion Ref"},"transaction_id":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Transaction Id","description":"Stable non-PII ID of the actual outcome, reused on every retry."},"gclid":{"type":"string","maxLength":2048,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Gclid"},"event_timestamp":{"type":"string","format":"date-time","title":"Event Timestamp"},"ad_user_data":{"type":"string","enum":["CONSENT_GRANTED","CONSENT_DENIED"],"title":"Ad User Data","description":"Google Data Manager consent value. Upload requires CONSENT_GRANTED; no implicit grant."},"ad_personalization":{"anyOf":[{"type":"string","enum":["CONSENT_GRANTED","CONSENT_DENIED"]},{"type":"null"}],"title":"Ad Personalization","description":"Google Data Manager consent value. CONSENT_DENIED permits measurement without personalization."},"value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Value"},"currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Currency"},"validate_only":{"type":"boolean","title":"Validate Only","default":false}},"additionalProperties":false,"type":"object","required":["campaign_ref","conversion_ref","transaction_id","gclid","event_timestamp","ad_user_data"],"title":"GoogleConversionEvent"},"GoogleConversionOptimization":{"properties":{"mode":{"type":"string","enum":["select_goals","maximize_conversions","restore"],"title":"Mode","default":"maximize_conversions"},"conversion_actions":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Conversion Actions"},"restore_key":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Restore Key"}},"additionalProperties":false,"type":"object","title":"GoogleConversionOptimization"},"GoogleExchangeRequest":{"properties":{"app_slug":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$","title":"App Slug"},"code":{"type":"string","maxLength":256,"minLength":32,"title":"Code"}},"type":"object","required":["app_slug","code"],"title":"GoogleExchangeRequest"},"GoogleIntentRequest":{"properties":{"app_slug":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$","title":"App Slug"},"return_path":{"type":"string","maxLength":2048,"minLength":1,"title":"Return Path"},"return_origin":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Return Origin"}},"type":"object","required":["app_slug","return_path"],"title":"GoogleIntentRequest"},"GoogleOneTapExchangeRequest":{"properties":{"app_slug":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$","title":"App Slug"},"nonce":{"type":"string","maxLength":256,"minLength":32,"title":"Nonce"},"credential":{"type":"string","maxLength":4096,"minLength":32,"title":"Credential"}},"type":"object","required":["app_slug","nonce","credential"],"title":"GoogleOneTapExchangeRequest"},"GoogleOneTapIntentRequest":{"properties":{"app_slug":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$","title":"App Slug"}},"type":"object","required":["app_slug"],"title":"GoogleOneTapIntentRequest"},"GroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":3},{"type":"null"}],"title":"Name"},"context_hints":{"anyOf":[{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":2000},{"type":"null"}],"title":"Context Hints"},"bidding_config":{"anyOf":[{"$ref":"#/components/schemas/Bid"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"GroupUpdate"},"GtmComparablesRequest":{"properties":{"query":{"type":"string","maxLength":1000,"minLength":3,"title":"Query","description":"Product context to compare against: category, buyer problem, offer phrases."},"geo":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Geo","description":"Launch geography, given to the judge as context (not a hard filter)."},"limit":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Limit","default":10}},"type":"object","required":["query"],"title":"GtmComparablesRequest"},"GtmSearchRequest":{"properties":{"query":{"type":"string","maxLength":1000,"minLength":3,"title":"Query","description":"Product, buyer problem, segment, offer, or message to compare."},"channels":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Channels","description":"Optional exact channel filters, for example meta or instantly."},"buyer_type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Buyer Type"},"business_model":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Business Model"},"geo":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Geo"},"include_directional":{"type":"boolean","title":"Include Directional","default":true},"limit":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Limit","default":5}},"type":"object","required":["query"],"title":"GtmSearchRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageRequest":{"properties":{"prompt":{"type":"string","minLength":1,"title":"Prompt","description":"What to draw."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"One of: gemini-flash-image, gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2, gpt-image-mini, gpt-image, dall-e-3, gemini-3-pro-image, gemini-3-pro-image-preview, gemini-3.1-flash-image, gemini-3.1-flash-image-preview, gemini-2.5-flash-image, imagen-4-fast, imagen-4, imagen-4-ultra. Omit for the default."},"fast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fast","description":"Shortcut: pick the fastest model instead of the slow default. Ignored if `model` is set explicitly."},"n":{"anyOf":[{"type":"integer","maximum":4.0,"minimum":1.0},{"type":"null"}],"title":"N","description":"How many images (each counts against your daily limit)."},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size","description":"Advisory target dimensions; providers may return a native resolution bucket."},"aspect_ratio":{"anyOf":[{"type":"string","enum":["1:1","1:4","1:8","2:3","3:2","3:4","4:1","4:3","4:5","5:4","8:1","9:16","16:9","21:9"]},{"type":"null"}],"title":"Aspect Ratio","description":"Composition ratio for providers supporting image_config.aspect_ratio."}},"type":"object","required":["prompt"],"title":"ImageRequest"},"ImageUpload":{"properties":{"product_slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Product Slug"},"image_base64":{"type":"string","maxLength":7000000,"minLength":1,"title":"Image Base64","description":"Base64 PNG/JPEG, at most 5 MB decoded; no data URI"}},"additionalProperties":false,"type":"object","required":["product_slug","image_base64"],"title":"ImageUpload"},"JsonValue":{},"KeywordBid":{"properties":{"ad_group_id":{"type":"string","pattern":"^[0-9]+$","title":"Ad Group Id"},"criterion_id":{"type":"string","pattern":"^[0-9]+$","title":"Criterion Id"},"cpc_bid_micros":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Cpc Bid Micros","description":"Positive account-currency micros; null clears the override and inherits the ad-group bid."}},"additionalProperties":false,"type":"object","required":["ad_group_id","criterion_id","cpc_bid_micros"],"title":"KeywordBid"},"KnownCreativeAngle":{"properties":{"axis":{"type":"string","enum":["buyer_context","job","mechanism","outcome","proof","price_terms","action"],"title":"Axis"},"key":{"type":"string","maxLength":240,"minLength":1,"title":"Key"},"label":{"type":"string","maxLength":160,"minLength":1,"title":"Label"}},"additionalProperties":false,"type":"object","required":["axis","key","label"],"title":"KnownCreativeAngle"},"KnownCreativeMessageFamily":{"properties":{"key":{"type":"string","maxLength":320,"minLength":1,"title":"Key"},"label":{"type":"string","maxLength":160,"minLength":1,"title":"Label"},"meaning":{"type":"string","maxLength":1200,"minLength":1,"title":"Meaning"}},"additionalProperties":false,"type":"object","required":["key","label","meaning"],"title":"KnownCreativeMessageFamily"},"LaunchRequest":{"properties":{"children":{"anyOf":[{"type":"string","enum":["auto","activate","keep"]},{"type":"null"}],"title":"Children","description":"google only. auto (default): activate ad groups/keywords/ads only when the campaign has no ENABLED serving path — preserves intentionally paused children on resume; activate: force every child ENABLED; keep: flip only the campaign flag."}},"type":"object","title":"LaunchRequest"},"Locale":{"properties":{"language":{"type":"string","pattern":"^[a-z]{2}$","title":"Language","default":"en"},"country":{"type":"string","pattern":"^[A-Z]{2}$","title":"Country","default":"US"}},"additionalProperties":false,"type":"object","title":"Locale"},"MediaAnalysisRequest":{"properties":{"schema_version":{"type":"integer","const":1,"title":"Schema Version"},"analysis_contract":{"type":"string","maxLength":128,"minLength":1,"title":"Analysis Contract"},"instructions":{"type":"string","maxLength":12000,"minLength":1,"title":"Instructions"},"frames":{"items":{"$ref":"#/components/schemas/FrameInput"},"type":"array","maxItems":8,"title":"Frames"},"transcript":{"anyOf":[{"type":"string","maxLength":50000},{"type":"null"}],"title":"Transcript"}},"additionalProperties":false,"type":"object","required":["schema_version","analysis_contract","instructions"],"title":"MediaAnalysisRequest"},"MediaTranscriptionRequest":{"properties":{"schema_version":{"type":"integer","const":1,"title":"Schema Version"},"media_type":{"type":"string","enum":["audio/wav","audio/mpeg","audio/mp4","audio/webm","audio/ogg","audio/flac"],"title":"Media Type"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Sha256"},"content_base64":{"type":"string","maxLength":33554432,"minLength":1,"title":"Content Base64"},"language":{"anyOf":[{"type":"string","pattern":"^[a-z]{2,3}$"},{"type":"null"}],"title":"Language"}},"additionalProperties":false,"type":"object","required":["schema_version","media_type","sha256","content_base64"],"title":"MediaTranscriptionRequest"},"MintRequest":{"properties":{"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","description":"Subset of: deploy, mail, analytics, gtm, llm, tools, git, wallet, notifications, payments, errors, research, support, ads, outreach, playbooks:write"},"label":{"type":"string","title":"Label","default":""}},"type":"object","required":["scopes"],"title":"MintRequest"},"Networks":{"properties":{"google_search":{"type":"boolean","title":"Google Search"},"search_partners":{"type":"boolean","title":"Search Partners"},"display":{"type":"boolean","title":"Display"}},"additionalProperties":false,"type":"object","required":["google_search","search_partners","display"],"title":"Networks"},"PerplexityAsyncRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"The question to deep-research."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Sonar model; defaults to sonar-deep-research."},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"reasoning_effort":{"anyOf":[{"type":"string","enum":["low","medium","high"]},{"type":"null"}],"title":"Reasoning Effort","description":"low | medium | high"}},"type":"object","required":["query"],"title":"PerplexityAsyncRequest"},"PerplexitySearchRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"The question to research."},"preset":{"type":"string","minLength":1,"title":"Preset","default":"deep-research"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"}},"type":"object","required":["query"],"title":"PerplexitySearchRequest"},"PlacesSearchRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"e.g. 'ramen in Shibuya'."},"max_results":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":1.0},{"type":"null"}],"title":"Max Results"},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code","description":"2-letter region, e.g. 'jp'."},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code"}},"type":"object","required":["query"],"title":"PlacesSearchRequest"},"PortalSessionRequest":{"properties":{"customer":{"type":"string","title":"Customer","description":"Stripe customer id (from your checkout event or POST /payments/customers)."},"app_slug":{"type":"string","title":"App Slug","description":"Owned deployed app used to bind the portal return origin."},"return_path":{"type":"string","title":"Return Path","description":"Same-app path used after the portal.","default":"/account/billing"}},"type":"object","required":["customer","app_slug"],"title":"PortalSessionRequest"},"PricingRequest":{"properties":{"targeting":{"$ref":"#/components/schemas/Targeting"},"format":{"type":"string","enum":["SINGLE_IMAGE","TEXT_AD"],"title":"Format"},"daily_budget_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Daily Budget Usd"}},"additionalProperties":false,"type":"object","required":["targeting","format","daily_budget_usd"],"title":"PricingRequest"},"PromotionCodeCreateRequest":{"properties":{"coupon":{"type":"string","minLength":1,"title":"Coupon"},"code":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Code"},"max_redemptions":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Redemptions"},"expires_at":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Expires At"},"restrictions":{"anyOf":[{"$ref":"#/components/schemas/PromotionCodeRestrictions"},{"type":"null"}]},"metadata":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Metadata"},"customer":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Customer","description":"Optional owned Stripe Customer allowed to redeem this code."}},"additionalProperties":false,"type":"object","required":["coupon"],"title":"PromotionCodeCreateRequest"},"PromotionCodeEmailBatchRequest":{"properties":{"coupon":{"type":"string","minLength":1,"title":"Coupon"},"code":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Code"},"max_redemptions":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Redemptions"},"expires_at":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Expires At"},"restrictions":{"anyOf":[{"$ref":"#/components/schemas/PromotionCodeRestrictions"},{"type":"null"}]},"metadata":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Metadata"},"customer_emails":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Customer Emails","description":"Unique product-account emails whose Stripe Customer ids are already persisted on those accounts. The gateway never creates Customers in this operation."}},"additionalProperties":false,"type":"object","required":["coupon","customer_emails"],"title":"PromotionCodeEmailBatchRequest"},"PromotionCodeRestrictions":{"properties":{"first_time_transaction":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"First Time Transaction"},"minimum_amount":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Minimum Amount"},"minimum_amount_currency":{"anyOf":[{"type":"string","pattern":"^[A-Za-z]{3}$"},{"type":"null"}],"title":"Minimum Amount Currency"}},"type":"object","title":"PromotionCodeRestrictions"},"QueryRequest":{"properties":{"sql":{"type":"string","maxLength":65536,"minLength":1,"title":"Sql","description":"One read-only SQL query. Use $1, $2, ... for parameters."},"params":{"items":{"$ref":"#/components/schemas/JsonValue"},"type":"array","maxItems":100,"title":"Params"}},"additionalProperties":false,"type":"object","required":["sql"],"title":"QueryRequest"},"ReplayConfig":{"properties":{"sampleRate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Samplerate","description":"Fraction of sessions to record; 1.0 records every session."},"maskLevel":{"type":"string","enum":["moderate","strict"],"title":"Masklevel"},"maxDuration":{"type":"integer","exclusiveMinimum":0.0,"title":"Maxduration","description":"Maximum recording duration in milliseconds."},"blockSelector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blockselector","description":"Optional CSS selector for elements to exclude."}},"type":"object","required":["sampleRate","maskLevel","maxDuration"],"title":"ReplayConfig"},"ReplaySettingsRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"replayConfig":{"anyOf":[{"$ref":"#/components/schemas/ReplayConfig"},{"type":"null"}],"description":"Omit to keep the site's existing recording settings."}},"type":"object","required":["enabled"],"title":"ReplaySettingsRequest"},"ResearchRequest":{"properties":{"query":{"type":"string","maxLength":200000,"minLength":1,"title":"Query"},"instructions":{"type":"string","maxLength":50000,"minLength":1,"title":"Instructions"},"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]+$","title":"Idempotency Key"},"depth":{"type":"string","pattern":"^(standard|deep)$","title":"Depth","default":"standard"}},"type":"object","required":["query","instructions","idempotency_key"],"title":"ResearchRequest"},"ReserveLifecycleAliasesRequest":{"properties":{"capture_id":{"type":"string","format":"uuid","title":"Capture Id"},"domains":{"items":{"type":"string"},"type":"array","maxItems":90,"minItems":1,"title":"Domains"}},"additionalProperties":false,"type":"object","required":["capture_id","domains"],"title":"ReserveLifecycleAliasesRequest"},"RowRequest":{"properties":{"table":{"type":"string","maxLength":63,"minLength":1,"title":"Table","description":"Table name in your account's schema."},"key":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"type":"object","maxProperties":100,"minProperties":1,"title":"Key","description":"Complete primary key, including all composite-key columns. Use strings for large integers and exact decimals."}},"additionalProperties":false,"type":"object","required":["table","key"],"title":"RowRequest"},"RunRequest":{"properties":{"actor":{"type":"string","minLength":1,"title":"Actor","description":"Actor id, e.g. 'apify/google-search-scraper' (or 'user~actor')."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Actor input JSON — the actor's own schema."},"sync":{"type":"boolean","title":"Sync","description":"True (default): block and return rows. False: return a run handle to poll.","default":true},"limit":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Limit","description":"Max dataset rows to return (sync only)."}},"type":"object","required":["actor"],"title":"RunRequest"},"Schedule":{"properties":{"start":{"type":"integer","exclusiveMinimum":0.0,"title":"Start","description":"Unix milliseconds"},"end":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"End","description":"Unix milliseconds; omit for no end"}},"additionalProperties":false,"type":"object","required":["start"],"title":"Schedule"},"SendRequest":{"properties":{"to":{"type":"string","format":"email","title":"To"},"subject":{"type":"string","minLength":1,"title":"Subject"},"text":{"type":"string","minLength":1,"title":"Text"},"from_name":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"From Name"}},"type":"object","required":["to","subject","text"],"title":"SendRequest"},"SourceCreate":{"properties":{"product_slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Product Slug"},"name":{"type":"string","maxLength":200,"minLength":3,"title":"Name"}},"additionalProperties":false,"type":"object","required":["product_slug","name"],"title":"SourceCreate"},"StyleSearchRequest":{"properties":{"query":{"type":"string","minLength":2,"title":"Query","description":"Words that appear in the catalog, e.g. 'cream paper editorial serif'."},"theme":{"anyOf":[{"type":"string","enum":["light","dark"]},{"type":"null"}],"title":"Theme","description":"light | dark ('both' styles match either)."},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit","default":10}},"type":"object","required":["query"],"title":"StyleSearchRequest"},"Targeting":{"properties":{"include":{"additionalProperties":{"items":{"type":"string","maxLength":200,"pattern":"^urn:li:[A-Za-z]+:[A-Za-z0-9_(),.-]+$"},"type":"array"},"propertyNames":{"enum":["locations","industries","staffCountRanges","seniorities","jobFunctions","titles","employers","skills"]},"type":"object","title":"Include"},"exclude":{"additionalProperties":{"items":{"type":"string","maxLength":200,"pattern":"^urn:li:[A-Za-z]+:[A-Za-z0-9_(),.-]+$"},"type":"array"},"propertyNames":{"enum":["locations","industries","staffCountRanges","seniorities","jobFunctions","titles","employers","skills"]},"type":"object","title":"Exclude"}},"additionalProperties":false,"type":"object","required":["include"],"title":"Targeting"},"TargetingPatch":{"properties":{"language_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1},{"type":"null"}],"title":"Language Ids"},"location_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Location Ids"},"excluded_location_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":100},{"type":"null"}],"title":"Excluded Location Ids"},"positive_geo_target_type":{"anyOf":[{"type":"string","enum":["PRESENCE","PRESENCE_OR_INTEREST"]},{"type":"null"}],"title":"Positive Geo Target Type"},"networks":{"anyOf":[{"$ref":"#/components/schemas/Networks"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"TargetingPatch"},"TaxonomyCreativeInput":{"properties":{"ad_ref":{"type":"string","maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9:_.\\-/]{0,199}$","title":"Ad Ref"},"platform":{"type":"string","maxLength":32,"minLength":1,"title":"Platform"},"advertiser":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Advertiser"},"headline":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Headline"},"body":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Body"},"extra_texts":{"items":{"type":"string"},"type":"array","maxItems":16,"title":"Extra Texts"},"extra_text_sources":{"items":{"$ref":"#/components/schemas/CreativeExtraTextSource"},"type":"array","maxItems":16,"title":"Extra Text Sources"},"cta_label":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Cta Label"},"landing_url":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Landing Url"},"format_hint":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Format Hint"},"cta_hint":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Cta Hint"},"frame_refs":{"items":{"type":"string"},"type":"array","maxItems":4,"title":"Frame Refs"},"transcript":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Transcript"},"country":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Country"},"allowed_languages":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":40},{"type":"null"}],"title":"Allowed Languages"},"video_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Video Sha256"},"video_observations":{"anyOf":[{"type":"string","maxLength":12000},{"type":"null"}],"title":"Video Observations"}},"additionalProperties":false,"type":"object","required":["ad_ref","platform"],"title":"TaxonomyCreativeInput"},"TopupRequest":{"properties":{"amount_cents":{"type":"integer","minimum":100.0,"title":"Amount Cents","description":"Amount to add, in cents (min 100 = $1.00)."},"currency":{"type":"string","title":"Currency","default":"usd"}},"type":"object","required":["amount_cents"],"title":"TopupRequest"},"UpdateRequest":{"properties":{"table":{"type":"string","maxLength":63,"minLength":1,"title":"Table","description":"Table name in your account's schema."},"key":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"type":"object","maxProperties":100,"minProperties":1,"title":"Key","description":"Complete primary key, including all composite-key columns. Use strings for large integers and exact decimals."},"values":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","maxProperties":100,"minProperties":1,"title":"Values","description":"Literal values to assign. Primary-key and generated columns cannot be changed."}},"additionalProperties":false,"type":"object","required":["table","key","values"],"title":"UpdateRequest"},"Upload":{"properties":{"product_slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Product Slug"},"image_url":{"type":"string","maxLength":2048,"minLength":1,"title":"Image Url"}},"additionalProperties":false,"type":"object","required":["product_slug","image_url"],"title":"Upload"},"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"},"ValidationReceiptVerifyRequest":{"properties":{"receipt":{"type":"string","title":"Receipt"},"probe_id":{"type":"string","title":"Probe Id"},"operation":{"type":"string","title":"Operation"}},"type":"object","required":["receipt","probe_id","operation"],"title":"ValidationReceiptVerifyRequest"},"WebSearchRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"What to search for."},"count":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":1.0},{"type":"null"}],"title":"Count","description":"Max results."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"2-letter country code, e.g. 'us'."},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang","description":"Language code, e.g. 'en'."}},"type":"object","required":["query"],"title":"WebSearchRequest"},"WebhookTestRequest":{"properties":{"app_slug":{"type":"string","title":"App Slug","description":"Your app's slug — where the event is delivered."},"webhook_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Path","description":"Path on your app, e.g. /webhooks/payments."},"type":{"type":"string","title":"Type","description":"Simulated event: completed | renewal | failed | canceled | refunded.","default":"completed"},"variant":{"type":"string","title":"Variant","description":"Signature/replay variant: valid | invalid | stale | future | duplicate.","default":"valid"},"client_reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Reference Id","description":"Echoed back so you can map it to a user."}},"type":"object","required":["app_slug"],"title":"WebhookTestRequest"},"app__linkedin_ads_models__CampaignCreate":{"properties":{"group_id":{"type":"string","pattern":"^[0-9]+$","title":"Group Id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"format":{"type":"string","enum":["SINGLE_IMAGE","TEXT_AD"],"title":"Format"},"daily_budget_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Daily Budget Usd"},"cpc_bid_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Cpc Bid Usd"},"locale":{"$ref":"#/components/schemas/Locale"},"targeting":{"$ref":"#/components/schemas/Targeting"},"schedule":{"$ref":"#/components/schemas/Schedule"}},"additionalProperties":false,"type":"object","required":["group_id","name","format","daily_budget_usd","cpc_bid_usd","targeting","schedule"],"title":"CampaignCreate"},"app__linkedin_ads_models__CampaignUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"daily_budget_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"},{"type":"null"}],"title":"Daily Budget Usd"},"cpc_bid_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"},{"type":"null"}],"title":"Cpc Bid Usd"},"targeting":{"anyOf":[{"$ref":"#/components/schemas/Targeting"},{"type":"null"}]},"schedule":{"anyOf":[{"$ref":"#/components/schemas/Schedule"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"CampaignUpdate"},"app__linkedin_ads_models__GroupCreate":{"properties":{"product_slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Product Slug"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"schedule":{"$ref":"#/components/schemas/Schedule"}},"additionalProperties":false,"type":"object","required":["product_slug","name","schedule"],"title":"GroupCreate"},"app__openai_ads_models__CampaignCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":3,"title":"Name"},"product_slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Product Slug"},"daily_budget_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"}],"title":"Daily Budget Usd"},"bidding_type":{"type":"string","enum":["impressions","clicks","conversions"],"title":"Bidding Type","default":"clicks"},"conversion_event_setting_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$"},{"type":"null"}],"title":"Conversion Event Setting Id"},"location_ids":{"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$"},"type":"array","maxItems":2500,"minItems":1,"title":"Location Ids"},"status":{"type":"string","const":"PAUSED","title":"Status","default":"PAUSED"}},"additionalProperties":false,"type":"object","required":["name","product_slug","daily_budget_usd","location_ids"],"title":"CampaignCreate"},"app__openai_ads_models__CampaignUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":3},{"type":"null"}],"title":"Name"},"daily_budget_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string"},{"type":"null"}],"title":"Daily Budget Usd"},"location_ids":{"anyOf":[{"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$"},"type":"array","maxItems":2500,"minItems":1},{"type":"null"}],"title":"Location Ids"},"conversion_event_setting_ids":{"anyOf":[{"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$"},"type":"array","maxItems":100},{"type":"null"}],"title":"Conversion Event Setting Ids","description":"Replace measurement goals for clicks/impressions campaigns. Empty list clears; omit to preserve. Not editable for conversion bidding."}},"additionalProperties":false,"type":"object","title":"CampaignUpdate"},"app__openai_ads_models__GroupCreate":{"properties":{"campaign_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,160}$","title":"Campaign Id"},"name":{"type":"string","maxLength":200,"minLength":3,"title":"Name"},"context_hints":{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":2000,"title":"Context Hints"},"bidding_config":{"$ref":"#/components/schemas/Bid"}},"additionalProperties":false,"type":"object","required":["campaign_id","name","bidding_config"],"title":"GroupCreate"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}