{"openapi":"3.1.0","info":{"title":"The Prompting Company API","version":"0.1.0","description":"Machine-readable contract for The Prompting Company organization-scoped API routes.","contact":{"name":"The Prompting Company","url":"https://promptingcompany.com/support","email":"support@promptingcompany.com"},"license":{"name":"Proprietary","url":"https://promptingcompany.com/terms"},"termsOfService":"https://promptingcompany.com/terms"},"tags":[{"name":"Visibility & Mentions"},{"name":"Knowledge"},{"name":"Content"},{"name":"Simulations"},{"name":"Apps & Publishing"}],"servers":[{"url":"https://app.promptingco.com","description":"Production"},{"url":"http://localhost:3000","description":"Local development"}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Organization-scoped API key. Available scopes:\n- content:read: Read site pages, markdown content, and llms.txt files\n- content:write: Create, update, and delete site pages and content\n- prompts:read: Read prompts, topics, and prompt analysis results\n- prompts:write: Create, update, archive prompts\n- simulations:read: Read agent-simulation tasks, runs, environments, and analytics\n- simulations:write: Create and trigger simulation runs\n- logs:read: Read AI-traffic logs and request-level audit events\n- analytics:read: Read analytics aggregates (rankings, mentions, sources, SOV)\n- products:read: Read product metadata and competitor data\n- products:write: Update product settings and competitor lists","x-scopes":{"content:read":"Read site pages, markdown content, and llms.txt files","content:write":"Create, update, and delete site pages and content","prompts:read":"Read prompts, topics, and prompt analysis results","prompts:write":"Create, update, archive prompts","simulations:read":"Read agent-simulation tasks, runs, environments, and analytics","simulations:write":"Create and trigger simulation runs","logs:read":"Read AI-traffic logs and request-level audit events","analytics:read":"Read analytics aggregates (rankings, mentions, sources, SOV)","products:read":"Read product metadata and competitor data","products:write":"Update product settings and competitor lists"}},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer session or OAuth access token. Available OAuth scopes:\n- content:read: Read site pages, markdown content, and llms.txt files\n- content:write: Create, update, and delete site pages and content\n- prompts:read: Read prompts, topics, and prompt analysis results\n- prompts:write: Create, update, archive prompts\n- simulations:read: Read agent-simulation tasks, runs, environments, and analytics\n- simulations:write: Create and trigger simulation runs\n- logs:read: Read AI-traffic logs and request-level audit events\n- analytics:read: Read analytics aggregates (rankings, mentions, sources, SOV)\n- products:read: Read product metadata and competitor data\n- products:write: Update product settings and competitor lists","x-scopes":{"content:read":"Read site pages, markdown content, and llms.txt files","content:write":"Create, update, and delete site pages and content","prompts:read":"Read prompts, topics, and prompt analysis results","prompts:write":"Create, update, archive prompts","simulations:read":"Read agent-simulation tasks, runs, environments, and analytics","simulations:write":"Create and trigger simulation runs","logs:read":"Read AI-traffic logs and request-level audit events","analytics:read":"Read analytics aggregates (rankings, mentions, sources, SOV)","products:read":"Read product metadata and competitor data","products:write":"Update product settings and competitor lists"}},"cookieAuth":{"type":"apiKey","in":"cookie","name":"better-auth.session_token","description":"First-party browser session cookie."}},"schemas":{},"parameters":{}},"paths":{"/api/v1/analytics/sov":{"get":{"operationId":"getAnalyticsSov","summary":"Get share of voice analytics for a product","tags":["Visibility & Mentions"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Product ID to use as the primary SOV scope."},"required":false,"description":"Product ID to use as the primary SOV scope.","name":"productId","in":"query"},{"schema":{"type":"string","minLength":1,"deprecated":true,"description":"Deprecated. Use productId instead. Product ID to use as the primary SOV scope."},"required":false,"description":"Deprecated. Use productId instead. Product ID to use as the primary SOV scope.","deprecated":true,"name":"brandId","in":"query"},{"schema":{"type":"string","enum":["prompt","topic","engine"]},"required":false,"name":"by","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"promptId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"topicId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"engine","in":"query"},{"schema":{"type":"string"},"required":false,"name":"start","in":"query"},{"schema":{"type":"string"},"required":false,"name":"end","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","enum":["sov","mentions","runs","label"]},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortDirection","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"object","properties":{"product":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"required":["product"]},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"required":["page","pageSize","total","totalPages"]},"sort":{"type":"object","properties":{"sortBy":{"type":"string","enum":["sov","mentions","runs","label"]},"sortDirection":{"type":"string","enum":["asc","desc"]},"sortableDimensions":{"type":"array","items":{"type":"string","enum":["sov","mentions","runs","label"]}}},"required":["sortableDimensions"]},"timeSeries":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"sov":{"type":"number"},"mentions":{"type":"integer"},"runs":{"type":"integer"}},"required":["date","sov","mentions","runs"]}},"products":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string"},"product_name":{"type":"string"},"sov":{"type":"number"},"mentions":{"type":"integer"},"runs":{"type":"integer"},"date":{"type":"string"}},"required":["product_id","product_name","sov","mentions","runs"]}},"rows":{"type":"array","items":{"type":"object","properties":{"dimension":{"type":"string","enum":["product","prompt","topic","engine"]},"key":{"type":"string"},"label":{"type":"string"},"date":{"type":"string"},"sov":{"type":"number"},"mentions":{"type":"integer"},"runs":{"type":"integer"},"rank":{"type":"integer"}},"required":["dimension","key","label","sov","mentions","runs"]}}},"required":["scope","pagination","sort","timeSeries","products","rows"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/analytics/events":{"post":{"operationId":"postAnalyticsEvents","summary":"Ingest server-side SDK analytics event (page_visit)","tags":["Visibility & Mentions"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event":{"type":"string","enum":["page_visit"]},"occurredAt":{"type":"string","format":"date-time"},"eventId":{"type":"string","minLength":1},"sessionId":{"type":["string","null"]},"anonymousId":{"type":["string","null"]},"page":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"domain":{"type":"string"},"pathname":{"type":"string"},"title":{"type":["string","null"]},"canonicalUrl":{"type":["string","null"],"format":"uri"}},"required":["href"]},"request":{"type":"object","properties":{"referrer":{"type":["string","null"]},"userAgent":{"type":["string","null"]},"clientIp":{"type":["string","null"]},"method":{"type":["string","null"]}}},"sdk":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"runtime":{"type":"string"}}},"properties":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}},"required":["event","page"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"accepted":{"type":"boolean","enum":[true]},"eventId":{"type":"string"},"status":{"type":"string","enum":["accepted"]},"receivedAt":{"type":"string","format":"date-time"}},"required":["accepted","eventId","status","receivedAt"]}},"required":["ok","data"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/products/{productId}/knowledge/retrieve":{"post":{"operationId":"postProductsProductIdKnowledgeRetrieve","summary":"Retrieve product knowledge across documents and code","description":"Retrieves product-scoped knowledge through public source types. The request uses include values such as documents, generated, and code; raw corpus ids and storage backends are not part of the public contract.","tags":["Knowledge"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"productId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":2000},"include":{"type":"array","items":{"type":"string","enum":["documents","generated","code"]},"minItems":1,"maxItems":3},"limit":{"type":"integer","minimum":1,"maximum":50,"default":12}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"title":{"type":"string"},"snippet":{"type":"string"},"score":{"type":"number","minimum":0,"maximum":1},"kind":{"type":"string","enum":["document"]},"source":{"type":"object","properties":{"type":{"type":"string","enum":["document"]},"documentId":{"type":"string"},"sourceUrl":{"type":"string"},"documentType":{"type":"string"},"chunkId":{"type":"string"}},"required":["type"],"additionalProperties":false}},"required":["title","snippet","score","kind","source"],"additionalProperties":false},{"type":"object","properties":{"title":{"type":"string"},"snippet":{"type":"string"},"score":{"type":"number","minimum":0,"maximum":1},"kind":{"type":"string","enum":["generated"]},"source":{"type":"object","properties":{"type":{"type":"string","enum":["generated"]},"itemId":{"type":"string"},"itemRevisionId":{"type":"string"},"sourceUrl":{"type":"string"},"generatedKind":{"type":"string"},"status":{"type":"string"},"chunkId":{"type":"string"}},"required":["type"],"additionalProperties":false}},"required":["title","snippet","score","kind","source"],"additionalProperties":false},{"type":"object","properties":{"title":{"type":"string"},"snippet":{"type":"string"},"score":{"type":"number","minimum":0,"maximum":1},"kind":{"type":"string","enum":["code"]},"source":{"type":"object","properties":{"type":{"type":"string","enum":["code"]},"repositoryId":{"type":"string"},"repositoryFullName":{"type":"string"},"path":{"type":"string"},"startLine":{"type":"integer","exclusiveMinimum":0},"endLine":{"type":"integer","exclusiveMinimum":0},"language":{"type":"string"},"chunkId":{"type":"string"}},"required":["type","repositoryId","path","startLine","endLine"],"additionalProperties":false}},"required":["title","snippet","score","kind","source"],"additionalProperties":false}]}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["generated_knowledge_unavailable","code_repository_not_found","code_repository_not_enrolled","code_repository_not_indexed","code_repository_access_revoked","code_repository_index_failed","code_repository_retrieval_degraded"]},"message":{"type":"string"},"sourceType":{"type":"string","enum":["documents","generated","code"]},"repositoryId":{"type":"string"}},"required":["code","message"],"additionalProperties":false}}},"required":["items","warnings"],"additionalProperties":false}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/conversation-queries":{"get":{"operationId":"getConversationQueries","summary":"List conversation queries","description":"Requires at least one of `brandId`, `promptId`, or `promptIds`. Use `viewId` with `brandId` to limit results to a view.","tags":["Visibility & Mentions"],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"brandId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"viewId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"promptId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"promptIds","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":["string","null"]},"promptId":{"type":"string"},"userPersonaId":{"type":["string","null"]},"model":{"type":["string","null"]},"maxTurns":{"type":["integer","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"userPersona":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"prompt":{"type":["object","null"],"properties":{"id":{"type":"string"},"message":{"type":"string"}},"required":["id","message"]}},"required":["id","promptId","createdAt","updatedAt","deletedAt"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1},"total":{"type":"integer","minimum":0},"totalPages":{"type":"integer","minimum":0}},"required":["page","limit","total","totalPages"]}},"required":["data"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/views":{"get":{"operationId":"getViews","summary":"List views","tags":["Visibility & Mentions"],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"brandId","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"brandId":{"type":"string"},"organizationId":{"type":["string","null"]},"isDefault":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"conversationCount":{"type":"integer","minimum":0},"brand":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","name","description","brandId","organizationId","isDefault","createdAt","updatedAt","deletedAt"]}},"totalPages":{"type":"integer","minimum":0},"totalItems":{"type":"integer","minimum":0}},"required":["data","totalPages","totalItems"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"post":{"operationId":"postViews","summary":"Create a view","tags":["Visibility & Mentions"],"security":[{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":500},"brandId":{"type":"string","minLength":1},"conversationQueryIds":{"type":"array","items":{"type":"string"}}},"required":["name","brandId"]}}}},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"brandId":{"type":"string"},"organizationId":{"type":["string","null"]},"isDefault":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"conversationCount":{"type":"integer","minimum":0},"brand":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","name","description","brandId","organizationId","isDefault","createdAt","updatedAt","deletedAt"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/md/by-path":{"get":{"operationId":"getMdByPath","summary":"Get root public markdown content","description":"Retrieves the root public markdown content. Supports standard x-api-key authentication (productId/productSlug via query param or X-Tpc-Product-* headers as fallback) as well as the legacy X-Tpc-* header model.","tags":["Content"],"security":[{"apiKeyAuth":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"description":"Standard API key authentication (preferred). When present, X-Tpc-* headers are ignored.","schema":{"type":"string"}},{"name":"authorization","in":"header","required":false,"description":"Bearer API key (used with X-Tpc-* headers for legacy public access)","schema":{"type":"string"}},{"name":"x-tpc-organization-id","in":"header","required":false,"description":"Organization ID (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-organization-slug","in":"header","required":false,"description":"Organization slug (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-product-id","in":"header","required":false,"description":"Product ID (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-product-slug","in":"header","required":false,"description":"Product slug (used with legacy public auth)","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"filePath":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"sourceUrl":{"type":"string"},"isManual":{"type":"boolean"},"productId":{"type":"string"},"contentType":{"type":"string","enum":["markdown"]}},"required":["id","createdAt","updatedAt","filePath","title","content","sourceUrl","isManual","productId","contentType"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/md/{id}":{"get":{"operationId":"getMdId","summary":"Get public markdown content by ID","description":"Retrieves public markdown content by ID. Supports standard x-api-key authentication (productId/productSlug via query param or X-Tpc-Product-* headers as fallback) as well as the legacy X-Tpc-* header model.","tags":["Content"],"security":[{"apiKeyAuth":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"description":"Standard API key authentication (preferred). When present, X-Tpc-* headers are ignored.","schema":{"type":"string"}},{"name":"authorization","in":"header","required":false,"description":"Bearer API key (used with X-Tpc-* headers for legacy public access)","schema":{"type":"string"}},{"name":"x-tpc-organization-id","in":"header","required":false,"description":"Organization ID (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-organization-slug","in":"header","required":false,"description":"Organization slug (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-product-id","in":"header","required":false,"description":"Product ID (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-product-slug","in":"header","required":false,"description":"Product slug (used with legacy public auth)","schema":{"type":"string"}},{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"filePath":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"sourceUrl":{"type":"string"},"isManual":{"type":"boolean"},"productId":{"type":"string"},"contentType":{"type":"string","enum":["markdown"]}},"required":["id","createdAt","updatedAt","filePath","title","content","sourceUrl","isManual","productId","contentType"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/md/by-path/{path}":{"get":{"operationId":"getMdByPathPath","summary":"Get public markdown content by path","description":"Retrieves public markdown content by file path. Supports standard x-api-key authentication (productId/productSlug via query param or X-Tpc-Product-* headers as fallback) as well as the legacy X-Tpc-* header model.","tags":["Content"],"security":[{"apiKeyAuth":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"description":"Standard API key authentication (preferred). When present, X-Tpc-* headers are ignored.","schema":{"type":"string"}},{"name":"authorization","in":"header","required":false,"description":"Bearer API key (used with X-Tpc-* headers for legacy public access)","schema":{"type":"string"}},{"name":"x-tpc-organization-id","in":"header","required":false,"description":"Organization ID (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-organization-slug","in":"header","required":false,"description":"Organization slug (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-product-id","in":"header","required":false,"description":"Product ID (used with legacy public auth)","schema":{"type":"string"}},{"name":"x-tpc-product-slug","in":"header","required":false,"description":"Product slug (used with legacy public auth)","schema":{"type":"string"}},{"schema":{"type":"string","minLength":1},"required":true,"name":"path","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"filePath":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"sourceUrl":{"type":"string"},"isManual":{"type":"boolean"},"productId":{"type":"string"},"contentType":{"type":"string","enum":["markdown"]}},"required":["id","createdAt","updatedAt","filePath","title","content","sourceUrl","isManual","productId","contentType"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/agent-simulation/runs":{"get":{"operationId":"getAgentSimulationRuns","summary":"List agent simulation runs","tags":["Simulations"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"environmentId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"taskId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"experimentId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"iterationId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"integer"},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer"},"required":false,"name":"pageSize","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"environmentId":{"type":"string"},"taskId":{"type":["string","null"]},"organizationId":{"type":"string"},"status":{"type":"string"},"sandboxId":{"type":["string","null"]},"sandboxSnapshot":{"type":["string","null"]},"volumeIds":{},"logS3Keys":{},"overallScore":{"type":["number","null"]},"passed":{"type":["boolean","null"]},"tokensUsed":{"type":["integer","null"]},"costUsd":{"type":["number","null"]},"metadata":{},"startedAt":{"type":["string","null"],"format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"duration":{"type":["integer","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"environment":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"agentConfig":{},"task":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"}},"required":["id","name","category"]}},"required":["id","name"]},"task":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"}},"required":["id","name","category"]}},"required":["id","environmentId","taskId","organizationId","status","sandboxId","sandboxSnapshot","overallScore","passed","tokensUsed","costUsd","startedAt","completedAt","duration","createdAt","updatedAt","deletedAt"]}},"total":{"type":"integer","minimum":0}},"required":["runs","total"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/site/pages":{"get":{"operationId":"getSitePages","summary":"List site pages","description":"List pages for a product. You must provide exactly one of `productId` or `productSlug` as a query parameter to identify the target product.","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` (the server enforces this at runtime)."},"required":false,"description":"Product ID. Provide exactly one of `productId` or `productSlug` (the server enforces this at runtime).","name":"productId","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` (the server enforces this at runtime)."},"required":false,"description":"Product slug. Provide exactly one of `productId` or `productSlug` (the server enforces this at runtime).","name":"productSlug","in":"query"},{"schema":{"type":"integer"},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer"},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","enum":["createdAt","updatedAt","deletedAt"]},"required":false,"name":"orderBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"orderByDirection","in":"query"},{"schema":{"type":"string"},"required":false,"name":"query","in":"query"},{"schema":{"type":"string"},"required":false,"name":"q","in":"query"},{"schema":{"type":"string","enum":["draft","published"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"type","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"isManual","in":"query"},{"schema":{"type":"string"},"required":false,"name":"pathPrefix","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"hasContent","in":"query"},{"schema":{"type":"string"},"required":false,"name":"domainId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"domain","in":"query"},{"schema":{"type":"string","enum":["active","archived","all"]},"required":false,"name":"archivedStatus","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"object","properties":{"product":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"required":["product","organization"]},"page":{"type":"integer","exclusiveMinimum":0},"pageSize":{"type":"integer","exclusiveMinimum":0},"query":{"type":["string","null"]},"status":{"type":["string","null"]},"type":{"type":["string","null"]},"isManual":{"type":["boolean","null"]},"pathPrefix":{"type":["string","null"]},"hasContent":{"type":["boolean","null"]},"domainId":{"type":["string","null"]},"domain":{"type":["string","null"]},"archivedStatus":{"type":"string","enum":["active","archived","all"]},"orderBy":{"type":"string","enum":["createdAt","updatedAt","deletedAt"]},"orderByDirection":{"type":"string","enum":["asc","desc"]},"total":{"type":"integer","minimum":0},"totalPages":{"type":"integer","minimum":0},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"isManual":{"type":"boolean"},"metaTitle":{"type":["string","null"]},"metaDescription":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"},"isCanonical":{"type":"boolean"}},"required":["id","domain","isCanonical"]}}},"required":["id","title","filePath","sourceUrl","status","type","isManual","metaTitle","metaDescription","publishedAt","deletedAt","createdAt","updatedAt","domains"]}}},"required":["scope","page","pageSize","query","status","type","isManual","pathPrefix","hasContent","domainId","domain","archivedStatus","orderBy","orderByDirection","total","totalPages","items"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"post":{"operationId":"postSitePages","summary":"Create site pages","description":"Deprecated, will be removed in future versions. Please use the Apps equivalent.","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"productId":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"productSlug":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"pages":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"Page slug or file path, for example 'blog/my-post'"},"title":{"type":"string","description":"Page title"},"content":{"type":"string","description":"Markdown content for the page"},"description":{"type":"string","description":"Optional page description"},"metaTitle":{"type":"string","description":"Optional SEO meta title"},"metaDescription":{"type":"string","description":"Optional SEO meta description"},"domainIds":{"type":"array","items":{"type":"string"},"description":"Optional custom domain IDs to attach to the page. Domains must belong to the product and be active web domains."},"canonicalDomainId":{"type":"string","description":"Optional attached custom domain ID to mark as canonical and use for the page source URL."}},"required":["slug","title","content"]},"minItems":1,"maxItems":25}},"required":["productId","pages"]},{"type":"object","properties":{"productId":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"productSlug":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"pages":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"Page slug or file path, for example 'blog/my-post'"},"title":{"type":"string","description":"Page title"},"content":{"type":"string","description":"Markdown content for the page"},"description":{"type":"string","description":"Optional page description"},"metaTitle":{"type":"string","description":"Optional SEO meta title"},"metaDescription":{"type":"string","description":"Optional SEO meta description"},"domainIds":{"type":"array","items":{"type":"string"},"description":"Optional custom domain IDs to attach to the page. Domains must belong to the product and be active web domains."},"canonicalDomainId":{"type":"string","description":"Optional attached custom domain ID to mark as canonical and use for the page source URL."}},"required":["slug","title","content"]},"minItems":1,"maxItems":25}},"required":["productSlug","pages"]}]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"object","properties":{"product":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"required":["product","organization"]},"createdCount":{"type":"integer","minimum":0},"failedCount":{"type":"integer","minimum":0},"created":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"},"isCanonical":{"type":"boolean"}},"required":["id","domain","isCanonical"]}}},"required":["id","slug","title","sourceUrl","status","domains"]}},"failed":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"message":{"type":"string"}},"required":["slug","message"]}}},"required":["scope","createdCount","failedCount","created","failed"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"patch":{"operationId":"patchSitePages","summary":"Update site pages","description":"Deprecated, will be removed in future versions. Please use the Apps equivalent.","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"productId":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"productSlug":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"pages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The page ID to update"},"title":{"type":"string","description":"Optional replacement page title"},"content":{"type":"string","description":"Optional replacement markdown content"},"description":{"type":"string","description":"Optional replacement description"},"metaTitle":{"type":"string","description":"Optional replacement SEO meta title"},"metaDescription":{"type":"string","description":"Optional replacement SEO meta description"},"filePath":{"type":"string","description":"Optional replacement path or slug for the page"},"status":{"type":"string","enum":["draft","published"],"description":"Optional page status update"},"isManual":{"type":"boolean","description":"Optional override for whether the page is manual"},"noIndex":{"type":"boolean","description":"Optional SEO noindex flag"},"redirectToUrl":{"type":["string","null"],"description":"Optional redirect target URL, or null to clear it"},"attachDomainIds":{"type":"array","items":{"type":"string"},"description":"Optional custom domain IDs to attach to the page. Domains must belong to the product and be active web domains."},"detachDomainIds":{"type":"array","items":{"type":"string"},"description":"Optional custom domain IDs to detach from the page. Detached domains can no longer be canonical."},"canonicalDomainId":{"type":"string","description":"Optional attached custom domain ID to mark as canonical and use for the page source URL."}},"required":["id"]},"minItems":1,"maxItems":25}},"required":["productId","pages"]},{"type":"object","properties":{"productId":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"productSlug":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"pages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The page ID to update"},"title":{"type":"string","description":"Optional replacement page title"},"content":{"type":"string","description":"Optional replacement markdown content"},"description":{"type":"string","description":"Optional replacement description"},"metaTitle":{"type":"string","description":"Optional replacement SEO meta title"},"metaDescription":{"type":"string","description":"Optional replacement SEO meta description"},"filePath":{"type":"string","description":"Optional replacement path or slug for the page"},"status":{"type":"string","enum":["draft","published"],"description":"Optional page status update"},"isManual":{"type":"boolean","description":"Optional override for whether the page is manual"},"noIndex":{"type":"boolean","description":"Optional SEO noindex flag"},"redirectToUrl":{"type":["string","null"],"description":"Optional redirect target URL, or null to clear it"},"attachDomainIds":{"type":"array","items":{"type":"string"},"description":"Optional custom domain IDs to attach to the page. Domains must belong to the product and be active web domains."},"detachDomainIds":{"type":"array","items":{"type":"string"},"description":"Optional custom domain IDs to detach from the page. Detached domains can no longer be canonical."},"canonicalDomainId":{"type":"string","description":"Optional attached custom domain ID to mark as canonical and use for the page source URL."}},"required":["id"]},"minItems":1,"maxItems":25}},"required":["productSlug","pages"]}]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"object","properties":{"product":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"required":["product","organization"]},"updatedCount":{"type":"integer","minimum":0},"failedCount":{"type":"integer","minimum":0},"updated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"isManual":{"type":"boolean"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"},"isCanonical":{"type":"boolean"}},"required":["id","domain","isCanonical"]}}},"required":["id","title","filePath","sourceUrl","status","isManual","domains"]}},"failed":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"message":{"type":"string"}},"required":["id","message"]}}},"required":["scope","updatedCount","failedCount","updated","failed"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"delete":{"operationId":"deleteSitePages","summary":"Delete site pages","description":"Deprecated, will be removed in future versions. Please use the Apps equivalent.","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"productId":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"productSlug":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"pageIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50}},"required":["productId","pageIds"]},{"type":"object","properties":{"productId":{"type":"string","minLength":1,"description":"Product ID. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"productSlug":{"type":"string","minLength":1,"description":"Product slug. Provide exactly one of `productId` or `productSlug` in the request body (the server enforces this)."},"pageIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50}},"required":["productSlug","pageIds"]}]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scope":{"type":"object","properties":{"product":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"required":["product","organization"]},"deletedCount":{"type":"integer","minimum":0},"failedCount":{"type":"integer","minimum":0},"deleted":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"]}},"failed":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"message":{"type":"string"}},"required":["id","message"]}}},"required":["scope","deletedCount","failedCount","deleted","failed"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps":{"get":{"operationId":"getApps","summary":"List Apps","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"metadata":{},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","organizationId","name","slug","createdAt","updatedAt","deletedAt"]}}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"post":{"operationId":"postApps","summary":"Create App","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"metadata":{"type":["object","null"],"additionalProperties":{}},"config":{"type":"object","properties":{},"additionalProperties":{}}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"metadata":{},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"appConfig":{"type":["object","null"],"properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"config":{"type":"object","properties":{},"additionalProperties":{}},"organizationId":{"type":["string","null"]},"productId":{"type":["string","null"]},"appId":{"type":"string"}},"required":["config","appId"]}},"required":["id","organizationId","name","slug","createdAt","updatedAt","deletedAt","appConfig"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}":{"get":{"operationId":"getAppsAppId","summary":"Get App","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"metadata":{},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"resourceType":{"type":"string","enum":["product"]},"resourceId":{"type":"string"},"displayName":{"type":["string","null"]},"slug":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","appId","resourceType","resourceId","slug","createdAt","updatedAt","product"]}},"appConfig":{"type":["object","null"],"properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"config":{"type":"object","properties":{},"additionalProperties":{}},"organizationId":{"type":["string","null"]},"productId":{"type":["string","null"]},"appId":{"type":"string"}},"required":["config","appId"]}},"required":["id","organizationId","name","slug","createdAt","updatedAt","deletedAt","resources","appConfig"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"patch":{"operationId":"patchAppsAppId","summary":"Update App","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"metadata":{"type":["object","null"],"additionalProperties":{}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"metadata":{},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","organizationId","name","slug","createdAt","updatedAt","deletedAt"]}},"required":["ok"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"delete":{"operationId":"deleteAppsAppId","summary":"Delete App","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/resources":{"get":{"operationId":"getAppsAppIdResources","summary":"List App resources","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"resourceType":{"type":"string","enum":["product"]},"resourceId":{"type":"string"},"displayName":{"type":["string","null"]},"slug":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","appId","resourceType","resourceId","slug","createdAt","updatedAt","product"]}}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"post":{"operationId":"postAppsAppIdResources","summary":"Attach App resource","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string","enum":["product"],"default":"product"},"resourceId":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["resourceId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"resourceType":{"type":"string","enum":["product"]},"resourceId":{"type":"string"},"displayName":{"type":["string","null"]},"slug":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","appId","resourceType","resourceId","slug","createdAt","updatedAt"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"delete":{"operationId":"deleteAppsAppIdResources","summary":"Detach App resource","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string","enum":["product"],"default":"product"},"resourceId":{"type":"string","minLength":1},"deleteDependentRoutes":{"type":"boolean","default":false}},"required":["resourceId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"deletedDependentRouteCount":{"type":"integer","minimum":0}},"required":["id","deletedDependentRouteCount"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/resources/{resourceId}":{"patch":{"operationId":"patchAppsAppIdResourcesResourceId","summary":"Update App resource","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"resourceId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"resourceType":{"type":"string","enum":["product"]},"resourceId":{"type":"string"},"displayName":{"type":["string","null"]},"slug":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","appId","resourceType","resourceId","slug","createdAt","updatedAt"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/domains":{"get":{"operationId":"getAppsAppIdDomains","summary":"List App domains","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"domain":{"type":"string"},"scope":{"type":"string","enum":["app"]},"productId":{"type":"null"},"appId":{"type":"string"},"cloudflareId":{"type":["string","null"]},"type":{"type":"string","enum":["web","metric","redirect"]},"origin":{"type":["string","null"]}},"required":["id","createdAt","updatedAt","deletedAt","domain","scope","productId","appId","cloudflareId","type","origin"]}}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"post":{"operationId":"postAppsAppIdDomains","summary":"Create App domain","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"type":{"type":"string","enum":["web","metric","redirect"],"default":"web"},"origin":{"type":"string","minLength":1,"maxLength":2048}},"required":["domain"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"domain":{"type":"string"},"scope":{"type":"string","enum":["app"]},"productId":{"type":"null"},"appId":{"type":"string"},"cloudflareId":{"type":["string","null"]},"type":{"type":"string","enum":["web","metric","redirect"]},"origin":{"type":["string","null"]}},"required":["id","createdAt","updatedAt","deletedAt","domain","scope","productId","appId","cloudflareId","type","origin"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/domains/{domainId}":{"delete":{"operationId":"deleteAppsAppIdDomainsDomainId","summary":"Delete App domain","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"domainId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/domain/{id}/routing":{"get":{"operationId":"getDomainIdRouting","summary":"Get web-domain routing config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"config":{"type":"object","properties":{"version":{"type":"number","enum":[1]},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["id","pathPrefix","destination"]}}},"required":["version","hostname","mode"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"publishedHash":{"type":["string","null"]},"publishStatus":{"type":["string","null"],"enum":["pending","published","failed",null]},"publishError":{"type":["string","null"]}},"required":["config","publishedAt","publishedHash","publishStatus","publishError"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"put":{"operationId":"putDomainIdRouting","summary":"Save and publish web-domain routing config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["pathPrefix","destination"]},"maxItems":100}},"required":["mode"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"config":{"type":"object","properties":{"version":{"type":"number","enum":[1]},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["id","pathPrefix","destination"]}}},"required":["version","hostname","mode"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"publishedHash":{"type":["string","null"]},"publishStatus":{"type":["string","null"],"enum":["pending","published","failed",null]},"publishError":{"type":["string","null"]}},"required":["config","publishedAt","publishedHash","publishStatus","publishError"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"delete":{"operationId":"deleteDomainIdRouting","summary":"Reset web-domain routing config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"config":{"type":"object","properties":{"version":{"type":"number","enum":[1]},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["id","pathPrefix","destination"]}}},"required":["version","hostname","mode"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"publishedHash":{"type":["string","null"]},"publishStatus":{"type":["string","null"],"enum":["pending","published","failed",null]},"publishError":{"type":["string","null"]}},"required":["config","publishedAt","publishedHash","publishStatus","publishError"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/domain/{id}/routing/validate":{"post":{"operationId":"postDomainIdRoutingValidate","summary":"Validate web-domain routing config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["pathPrefix","destination"]},"maxItems":100}},"required":["mode"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"valid":{"type":"boolean","enum":[true]},"config":{"type":"object","properties":{"version":{"type":"number","enum":[1]},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["id","pathPrefix","destination"]}}},"required":["version","hostname","mode"]},"configHash":{"type":"string"},"kvKey":{"type":"string"}},"required":["valid","config","configHash","kvKey"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/domain/{id}/routing/publish":{"post":{"operationId":"postDomainIdRoutingPublish","summary":"Publish web-domain routing config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"config":{"type":"object","properties":{"version":{"type":"number","enum":[1]},"hostname":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$"},"mode":{"type":"string","enum":["full_shadow","path_routing"]},"fallbackOrigin":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"pathPrefix":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/[^?#\\s]*$"},"destination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["app"]},"appId":{"type":"string","minLength":1}},"required":["type","appId"]},{"type":"object","properties":{"type":{"type":"string","enum":["product"]},"productId":{"type":"string","minLength":1}},"required":["type","productId"]}]},"preservePathPrefix":{"type":"boolean","enum":[true],"default":true}},"required":["id","pathPrefix","destination"]}}},"required":["version","hostname","mode"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"publishedHash":{"type":["string","null"]},"publishStatus":{"type":["string","null"],"enum":["pending","published","failed",null]},"publishError":{"type":["string","null"]}},"required":["config","publishedAt","publishedHash","publishStatus","publishError"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/app-config":{"get":{"operationId":"getAppsAppIdAppConfig","summary":"Get App config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"config":{"type":"object","properties":{},"additionalProperties":{}},"organizationId":{"type":["string","null"]},"productId":{"type":["string","null"]},"appId":{"type":"string"}},"required":["config","appId"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"patch":{"operationId":"patchAppsAppIdAppConfig","summary":"Update App config","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"type":"object","properties":{},"additionalProperties":{}}},"required":["config"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"config":{"type":"object","properties":{},"additionalProperties":{}},"organizationId":{"type":["string","null"]},"productId":{"type":["string","null"]},"appId":{"type":"string"}},"required":["config","appId"]}},"required":["ok"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/route-candidates":{"get":{"operationId":"getAppsAppIdRouteCandidates","summary":"List App route candidates","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","minLength":1},"required":false,"name":"productId","in":"query"},{"schema":{"type":"string","enum":["draft","published"],"default":"published"},"required":false,"name":"status","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"includeRouted","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"appId":{"type":"string"},"candidateCount":{"type":"integer","minimum":0},"candidates":{"type":"array","items":{"type":"object","properties":{"targetType":{"type":"string","enum":["product_document"]},"targetId":{"type":"string"},"suggestedPath":{"type":"string"},"pathStatus":{"type":"string","enum":["already_routed","path_conflict","available"]},"existingRoute":{"type":["object","null"],"properties":{"id":{"type":"string"},"path":{"type":"string"}},"required":["id","path"]},"pathConflict":{"type":["object","null"],"properties":{"id":{"type":"string"},"path":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"}},"required":["id","path","targetType","targetId"]},"target":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"redirectToUrl":{"type":["string","null"]},"productId":{"type":"string"}},"required":["id","title","filePath","sourceUrl","status","type","redirectToUrl","productId"]},"product":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["targetType","targetId","suggestedPath","pathStatus","existingRoute","pathConflict","target","product"]}}},"required":["appId","candidateCount","candidates"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/routes":{"get":{"operationId":"getAppsAppIdRoutes","summary":"List App routes","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"path":{"type":"string"},"targetType":{"type":"string","enum":["product_document"]},"targetId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"target":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"redirectToUrl":{"type":["string","null"]},"productId":{"type":"string"}},"required":["id","title","filePath","sourceUrl","status","type","redirectToUrl","productId"]},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","appId","path","targetType","targetId","createdAt","updatedAt","target","product"]}}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"post":{"operationId":"postAppsAppIdRoutes","summary":"Create App route","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/?[^?#\\s]*$"},"targetType":{"type":"string","enum":["product_document"],"default":"product_document"},"targetId":{"type":"string","minLength":1}},"required":["path","targetId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"path":{"type":"string"},"targetType":{"type":"string","enum":["product_document"]},"targetId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"target":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"redirectToUrl":{"type":["string","null"]},"productId":{"type":"string"}},"required":["id","title","filePath","sourceUrl","status","type","redirectToUrl","productId"]},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","appId","path","targetType","targetId","createdAt","updatedAt","target","product"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/llms-txt":{"get":{"operationId":"getAppsAppIdLlmsTxt","summary":"Generate App llms.txt","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"pathPrefix","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/routes/{routeId}":{"patch":{"operationId":"patchAppsAppIdRoutesRouteId","summary":"Update App route","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"routeId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/?[^?#\\s]*$"},"targetType":{"type":"string","enum":["product_document"]},"targetId":{"type":"string","minLength":1}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"path":{"type":"string"},"targetType":{"type":"string","enum":["product_document"]},"targetId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"target":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"redirectToUrl":{"type":["string","null"]},"productId":{"type":"string"}},"required":["id","title","filePath","sourceUrl","status","type","redirectToUrl","productId"]},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","appId","path","targetType","targetId","createdAt","updatedAt","target","product"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"delete":{"operationId":"deleteAppsAppIdRoutesRouteId","summary":"Delete App route","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"routeId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/routes/import-preview":{"post":{"operationId":"postAppsAppIdRoutesImportPreview","summary":"Preview App route import","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"routes":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/?[^?#\\s]*$"},"targetType":{"type":"string","enum":["product_document"],"default":"product_document"},"targetId":{"type":"string","minLength":1}},"required":["path","targetId"]},"minItems":1,"maxItems":100}},"required":["routes"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"appId":{"type":"string"},"valid":{"type":"boolean"},"createCount":{"type":"integer","minimum":0},"conflictCount":{"type":"integer","minimum":0},"skipCount":{"type":"integer","minimum":0},"routes":{"type":"array","items":{"type":"object","properties":{"input":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/?[^?#\\s]*$"},"targetType":{"type":"string","enum":["product_document"],"default":"product_document"},"targetId":{"type":"string","minLength":1}},"required":["path","targetId"]},"action":{"type":"string","enum":["create","conflict","skip"]},"issues":{"type":"array","items":{"type":"string","enum":["already_routed","duplicate_input_path","path_conflict","product_not_available","target_not_found"]}},"existingRoute":{"type":["object","null"],"properties":{"id":{"type":"string"},"path":{"type":"string"}},"required":["id","path"]},"pathConflict":{"type":["object","null"],"properties":{"id":{"type":"string"},"path":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string"}},"required":["id","path","targetType","targetId"]},"target":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"redirectToUrl":{"type":["string","null"]},"productId":{"type":"string"}},"required":["id","title","filePath","sourceUrl","status","type","redirectToUrl","productId"]},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["input","action","issues","existingRoute","pathConflict","target","product"]}}},"required":["appId","valid","createCount","conflictCount","skipCount","routes"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/apps/{appId}/routes/batch":{"post":{"operationId":"postAppsAppIdRoutesBatch","summary":"Create App routes in batch","tags":["Apps & Publishing"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"appId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"routes":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^\\/?[^?#\\s]*$"},"targetType":{"type":"string","enum":["product_document"],"default":"product_document"},"targetId":{"type":"string","minLength":1}},"required":["path","targetId"]},"minItems":1,"maxItems":100}},"required":["routes"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"createdCount":{"type":"integer","minimum":0},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"path":{"type":"string"},"targetType":{"type":"string","enum":["product_document"]},"targetId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"target":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"redirectToUrl":{"type":["string","null"]},"productId":{"type":"string"}},"required":["id","title","filePath","sourceUrl","status","type","redirectToUrl","productId"]},"product":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":["string","null"]}},"required":["id","name","slug"]}},"required":["id","appId","path","targetType","targetId","createdAt","updatedAt","target","product"]}}},"required":["createdCount","routes"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/content/{id}":{"get":{"operationId":"getContentId","summary":"Get content","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"}},"required":["id","title","content"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"put":{"operationId":"putContentId","summary":"Replace content","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filePath":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"content":{"type":"string"},"sourceUrl":{"type":"string"},"cssSelector":{"type":["string","null"]},"cssExcludeSelector":{"type":["string","null"]},"redirectToUrl":{"type":["string","null"]},"tiptapJson":{},"description":{"type":["string","null"]},"descriptionForAgent":{"type":["string","null"]},"metaTitle":{"type":["string","null"]},"metaDescription":{"type":["string","null"]},"canonicalUrl":{"type":["string","null"]},"ogTitle":{"type":["string","null"]},"ogDescription":{"type":["string","null"]},"ogImage":{"type":["string","null"]},"twitterTitle":{"type":["string","null"]},"twitterDescription":{"type":["string","null"]},"twitterImage":{"type":["string","null"]},"noIndex":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}},"priority":{"type":["number","null"],"minimum":0,"maximum":100}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"filePath":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"sourceUrl":{"type":"string"},"cssSelector":{"type":["string","null"]},"sourceChecksum":{"type":["string","null"]},"brandId":{"type":"string"},"cssExcludeSelector":{"type":["string","null"]},"isManual":{"type":"boolean"},"lastIndexedAt":{"type":["string","null"],"format":"date-time"},"canonicalUrl":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"type":["string","null"]},"metaDescription":{"type":["string","null"]},"metaTitle":{"type":["string","null"]},"metadata":{},"noIndex":{"type":["boolean","null"]},"ogDescription":{"type":["string","null"]},"ogImage":{"type":["string","null"]},"ogTitle":{"type":["string","null"]},"twitterDescription":{"type":["string","null"]},"twitterImage":{"type":["string","null"]},"twitterTitle":{"type":["string","null"]},"tiptapJson":{},"descriptionForAgent":{"type":["string","null"]},"type":{"type":"string"},"tags":{"type":["array","null"],"items":{"type":"string"}},"currentDraftId":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"status":{"type":"string"},"priority":{"type":["integer","null"]},"promptId":{"type":["string","null"]},"redirectToUrl":{"type":["string","null"]}},"required":["id","createdAt","updatedAt","deletedAt","filePath","title","content","sourceUrl","cssSelector","sourceChecksum","brandId","cssExcludeSelector","isManual","lastIndexedAt","canonicalUrl","description","image","metaDescription","metaTitle","noIndex","ogDescription","ogImage","ogTitle","twitterDescription","twitterImage","twitterTitle","descriptionForAgent","type","tags","currentDraftId","publishedAt","status","priority","promptId","redirectToUrl"],"additionalProperties":{}}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"patch":{"operationId":"patchContentId","summary":"Update content","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priority":{"type":"number","minimum":0,"maximum":100}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":["string","null"],"format":"date-time"},"filePath":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"sourceUrl":{"type":"string"},"cssSelector":{"type":["string","null"]},"sourceChecksum":{"type":["string","null"]},"brandId":{"type":"string"},"cssExcludeSelector":{"type":["string","null"]},"isManual":{"type":"boolean"},"lastIndexedAt":{"type":["string","null"],"format":"date-time"},"canonicalUrl":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"type":["string","null"]},"metaDescription":{"type":["string","null"]},"metaTitle":{"type":["string","null"]},"metadata":{},"noIndex":{"type":["boolean","null"]},"ogDescription":{"type":["string","null"]},"ogImage":{"type":["string","null"]},"ogTitle":{"type":["string","null"]},"twitterDescription":{"type":["string","null"]},"twitterImage":{"type":["string","null"]},"twitterTitle":{"type":["string","null"]},"tiptapJson":{},"descriptionForAgent":{"type":["string","null"]},"type":{"type":"string"},"tags":{"type":["array","null"],"items":{"type":"string"}},"currentDraftId":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"status":{"type":"string"},"priority":{"type":["integer","null"]},"promptId":{"type":["string","null"]},"redirectToUrl":{"type":["string","null"]}},"required":["id","createdAt","updatedAt","deletedAt","filePath","title","content","sourceUrl","cssSelector","sourceChecksum","brandId","cssExcludeSelector","isManual","lastIndexedAt","canonicalUrl","description","image","metaDescription","metaTitle","noIndex","ogDescription","ogImage","ogTitle","twitterDescription","twitterImage","twitterTitle","descriptionForAgent","type","tags","currentDraftId","publishedAt","status","priority","promptId","redirectToUrl"],"additionalProperties":{}}},"required":["ok"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/products/{productId}/scraper":{"get":{"operationId":"getProductsProductIdScraper","summary":"Get a product scraper configuration","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"productId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scraper":{"type":["object","null"],"properties":{"id":{"type":"string"},"productId":{"type":"string"},"startUrls":{"type":"array","items":{"type":"string"}},"baseUrls":{"type":"array","items":{"type":"string"}},"cssSelector":{"type":["string","null"]},"cssExcludeSelector":{"type":["string","null"]},"customHeaders":{"type":"object","additionalProperties":{"type":"string"}},"frequencyType":{"type":"string"},"frequencyCount":{"type":"integer"},"pollingPaused":{"type":"boolean"},"lastRunAt":{"type":["string","null"]},"nextRunAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","productId","startUrls","baseUrls","cssSelector","cssExcludeSelector","customHeaders","frequencyType","frequencyCount","pollingPaused","lastRunAt","nextRunAt","createdAt","updatedAt"]}},"required":["scraper"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"put":{"operationId":"putProductsProductIdScraper","summary":"Create or update a product scraper configuration","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"productId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startUrls":{"type":"array","items":{"type":"string","maxLength":2000,"format":"uri"},"minItems":1,"maxItems":1000},"baseUrls":{"type":"array","items":{"type":"string","maxLength":2000,"format":"uri"},"minItems":1,"maxItems":1000},"cssSelector":{"type":"string","minLength":1,"maxLength":1000,"default":"body"},"cssExcludeSelector":{"type":["string","null"],"maxLength":2000},"customHeaders":{"type":"object","additionalProperties":{"type":"string","maxLength":4000},"default":{}},"frequencyType":{"type":"string","enum":["weekly","monthly"],"default":"weekly"},"frequencyCount":{"type":"integer","minimum":1,"maximum":2,"default":1},"pollingPaused":{"type":"boolean","default":false}},"required":["startUrls","baseUrls"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scraper":{"type":["object","null"],"properties":{"id":{"type":"string"},"productId":{"type":"string"},"startUrls":{"type":"array","items":{"type":"string"}},"baseUrls":{"type":"array","items":{"type":"string"}},"cssSelector":{"type":["string","null"]},"cssExcludeSelector":{"type":["string","null"]},"customHeaders":{"type":"object","additionalProperties":{"type":"string"}},"frequencyType":{"type":"string"},"frequencyCount":{"type":"integer"},"pollingPaused":{"type":"boolean"},"lastRunAt":{"type":["string","null"]},"nextRunAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","productId","startUrls","baseUrls","cssSelector","cssExcludeSelector","customHeaders","frequencyType","frequencyCount","pollingPaused","lastRunAt","nextRunAt","createdAt","updatedAt"]}},"required":["scraper"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}},"delete":{"operationId":"deleteProductsProductIdScraper","summary":"Delete a product scraper configuration","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"productId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"scraper":{"type":["object","null"],"properties":{"id":{"type":"string"},"productId":{"type":"string"},"startUrls":{"type":"array","items":{"type":"string"}},"baseUrls":{"type":"array","items":{"type":"string"}},"cssSelector":{"type":["string","null"]},"cssExcludeSelector":{"type":["string","null"]},"customHeaders":{"type":"object","additionalProperties":{"type":"string"}},"frequencyType":{"type":"string"},"frequencyCount":{"type":"integer"},"pollingPaused":{"type":"boolean"},"lastRunAt":{"type":["string","null"]},"nextRunAt":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","productId","startUrls","baseUrls","cssSelector","cssExcludeSelector","customHeaders","frequencyType","frequencyCount","pollingPaused","lastRunAt","nextRunAt","createdAt","updatedAt"]}},"required":["scraper"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/products/{productId}/scraper/runs":{"post":{"operationId":"postProductsProductIdScraperRuns","summary":"Queue a product scraping run","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"productId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startUrls":{"type":"array","items":{"type":"string","maxLength":2000,"format":"uri"},"minItems":1,"maxItems":1000},"baseUrls":{"type":"array","items":{"type":"string","maxLength":2000,"format":"uri"},"minItems":1,"maxItems":1000},"cssSelector":{"type":"string","minLength":1,"maxLength":1000},"cssExcludeSelector":{"type":["string","null"],"maxLength":2000},"customHeaders":{"type":"object","additionalProperties":{"type":"string","maxLength":4000},"default":{}},"saveConfig":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"jobId":{"type":"string"},"productId":{"type":"string"},"scraperId":{"type":["string","null"]},"enqueuedAt":{"type":"string"},"source":{"type":"string","enum":["configured","override"]}},"required":["jobId","productId","scraperId","enqueuedAt","source"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/content/by-path":{"get":{"operationId":"getContentByPath","summary":"Get content by path","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"brandId","in":"query"},{"schema":{"type":"string","minLength":1},"required":true,"name":"path","in":"query"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":["object","null"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"filePath":{"type":"string"},"sourceUrl":{"type":"string"},"description":{"type":["string","null"]}},"required":["id","title","content","filePath","sourceUrl","description"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/content/{id}/domains":{"patch":{"operationId":"patchContentIdDomains","summary":"Update content domains","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attach":{"type":"array","items":{"type":"string","format":"uuid"}},"detach":{"type":"array","items":{"type":"string","format":"uuid"}},"canonicalDomainId":{"type":"string","format":"uuid"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"},"isCanonical":{"type":"boolean"}},"required":["id","domain","isCanonical"]}}},"required":["id","domains"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/content/search/{orgId}":{"post":{"operationId":"postContentSearchOrgId","summary":"Search content","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"orgId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"distances":{"type":["array","null"],"items":{"type":"array","items":{"type":["number","null"]}}},"metadatas":{"type":["array","null"],"items":{"type":"array","items":{"type":["object","null"],"additionalProperties":{}}}},"embeddings":{},"documents":{"type":["array","null"],"items":{"type":"array","items":{"type":["string","null"]}}},"uris":{"type":["array","null"],"items":{"type":"array","items":{"type":["string","null"]}}},"data":{},"included":{"type":"array","items":{"type":"string"}}},"additionalProperties":{}}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}},"/api/v1/content/count/{orgId}":{"get":{"operationId":"getContentCountOrgId","summary":"Count content","tags":["Content"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]},{"cookieAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"orgId","in":"path"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"count":{"type":"integer","minimum":0}},"required":["count"]}},"required":["ok","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[false]},"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["ok","code","message"]}}}}}}}},"webhooks":{}}