{"openapi":"3.1.0","info":{"title":"NexoToken Radar Business API","version":"1.0.0","description":"Private, site-scoped data. Times are ISO 8601; reports default to Asia/Shanghai. Amounts use explicit currency and integer minor units. API credentials cannot inherit main platform admin privileges."},"servers":[{"url":"https://radar.nexotoken.net"}],"paths":{"/api/v1/me":{"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read your Radar account"}},"/api/v1/me/sites":{"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"List your authorized sites"},"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Submit an AI website; data connection is optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":160},"websiteUrl":{"type":"string","maxLength":2048,"format":"uri"},"description":{"type":"string","minLength":2,"maxLength":2000},"category":{"type":"string","enum":["writing","chat","image","video","audio","developer","automation","search","api","education","productivity","other"]},"publicMetrics":{"default":false,"type":"boolean"}},"required":["name","websiteUrl","description","category","publicMetrics"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read site profile"},"patch":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Update site; public changes return to review","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":160},"websiteUrl":{"type":"string","maxLength":2048,"format":"uri"},"description":{"type":"string","minLength":2,"maxLength":2000},"category":{"type":"string","enum":["writing","chat","image","video","audio","developer","automation","search","api","education","productivity","other"]},"publicMetrics":{"type":"boolean"}},"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/credentials":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"List credential metadata"},"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Create a write-only ingestion or read-only credential; secret returned once","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"kind":{"type":"string","enum":["ingest","read"]},"scopes":{"minItems":1,"maxItems":25,"type":"array","items":{"type":"string","enum":["account:read","account:billing:read","sites:read","submissions:read","referrals:read","analytics:read","customers:read","events:read","finance:read","monitoring:read","reports:read","actions:read","exports:read","geo:read","geo:evidence:read","sites:write","credentials:manage","exports:create","geo:configure","geo:manage","geo:run","ingest:receipt:read","ingest:customers:write","ingest:events:write","ingest:orders:write","ingest:payments:write","ingest:refunds:write","ingest:subscriptions:write","ingest:costs:write","ingest:campaigns:write","ingest:expenses:write","ingest:observations:write","ingest:summaries:write"]}},"expiresInDays":{"default":90,"type":"integer","minimum":1,"maximum":365}},"required":["name","kind","scopes","expiresInDays"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/ingest/customers":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest customers; requires ingest:customers:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"customers.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"customer_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"status":{"type":"string","enum":["active","inactive","deleted"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["revision","source","occurred_at","customer_id","status","created_at"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/customers":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped customers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/events":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest events; requires ingest:events:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"events.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"event_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"event_type":{"type":"string","enum":["visit","registration_completed","activation_completed","usage","workflow_completed","order_paid","subscription_cancelled"]},"external_user_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"campaign_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"session_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"activation_definition":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"properties":{"type":"object","properties":{"product_category":{"type":"string","maxLength":160},"plan_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"feature":{"type":"string","maxLength":160},"channel":{"type":"string","maxLength":160},"device":{"type":"string","enum":["desktop","mobile","tablet","other"]},"country":{"type":"string","pattern":"^[A-Z]{2}$"},"quantity":{"type":"integer","minimum":0,"maximum":1000000}},"additionalProperties":false}},"required":["revision","source","occurred_at","event_id","event_type"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/events":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped events","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/orders":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest orders; requires ingest:orders:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"orders.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"order_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"external_user_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"amount_minor":{"type":"integer","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"status":{"type":"string","enum":["pending","paid","cancelled","expired"]},"plan_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"}},"required":["revision","source","occurred_at","order_id","amount_minor","currency","status"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/orders":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped orders","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/payments":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest payments; requires ingest:payments:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"payments.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"payment_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"order_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"external_user_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"amount_minor":{"type":"integer","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"status":{"type":"string","enum":["pending","succeeded","failed"]}},"required":["revision","source","occurred_at","payment_id","order_id","amount_minor","currency","status"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/payments":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped payments","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/refunds":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest refunds; requires ingest:refunds:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"refunds.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"refund_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"payment_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"amount_minor":{"type":"integer","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"status":{"type":"string","enum":["pending","succeeded","failed"]}},"required":["revision","source","occurred_at","refund_id","payment_id","amount_minor","currency","status"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/refunds":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped refunds","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/subscriptions":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest subscriptions; requires ingest:subscriptions:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"subscriptions.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"subscription_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"external_user_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"plan_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"status":{"type":"string","enum":["trialing","active","past_due","cancelled","expired"]},"period_start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"period_end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"amount_minor":{"type":"integer","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["revision","source","occurred_at","subscription_id","external_user_id","plan_id","status","period_start","period_end","amount_minor","currency"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/subscriptions":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped subscriptions","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/costs":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest costs; requires ingest:costs:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"costs.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"cost_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"amount_minor":{"type":"integer","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"period_start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"period_end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"category":{"type":"string","enum":["usage","infrastructure","operations","other"]},"event_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"}},"required":["revision","source","occurred_at","cost_id","amount_minor","currency","period_start","period_end","category"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/costs":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped costs","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/campaigns":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest campaigns; requires ingest:campaigns:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"campaigns.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"campaign_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"name":{"type":"string","maxLength":160},"channel":{"type":"string","enum":["search","social","email","referral","paid","direct","other"]},"content_ref":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"status":{"type":"string","enum":["active","paused","ended"]},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["revision","source","occurred_at","campaign_id","name","channel","status","starts_at"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/campaigns":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped campaigns","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/expenses":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest expenses; requires ingest:expenses:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"expenses.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expense_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"campaign_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"amount_minor":{"type":"integer","minimum":0,"maximum":1000000000000},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"period_start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"period_end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"cost_scope":{"type":"string","enum":["advertising","content","agency","other"]}},"required":["revision","source","occurred_at","expense_id","campaign_id","amount_minor","currency","period_start","period_end","cost_scope"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/expenses":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped expenses","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/observations":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest observations; requires ingest:observations:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"observations.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"observation_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"target_ref":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"target_type":{"type":"string","enum":["website","workflow","api"]},"status":{"type":"string","enum":["healthy","degraded","down","unknown"]},"latency_ms":{"anyOf":[{"type":"integer","minimum":0,"maximum":3600000},{"type":"null"}]},"region":{"type":"string","maxLength":160}},"required":["revision","source","occurred_at","observation_id","target_ref","target_type","status","latency_ms"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/observations":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/ingest/summaries":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Completed batch or identical retry with receipt"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"409":{"description":"Batch or revision conflict"},"422":{"description":"Invalid resource semantics"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Ingest summaries; requires ingest:summaries:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schema_version":{"type":"string","const":"summaries.v1"},"batch_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"records":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"revision":{"default":1,"type":"integer","minimum":1,"maximum":2147483647},"source":{"type":"string","enum":["site_backend","server_sdk","client_sdk","import","manual"]},"occurred_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"summary_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"metric":{"type":"string","enum":["visits","registrations","activations","active_users","receipts","refunds","costs"]},"period_start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"period_end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"value":{"type":"number","minimum":0,"maximum":1000000000000},"unit":{"type":"string","enum":["count","minor_currency"]},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"definition_version":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"},"dimensions":{"default":{},"type":"object","properties":{"channel":{"type":"string","maxLength":160},"campaign_id":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$"}},"additionalProperties":false}},"required":["revision","source","occurred_at","summary_id","metric","period_start","period_end","value","unit","definition_version","dimensions"],"additionalProperties":false}}},"required":["schema_version","batch_id","records"],"additionalProperties":false}}}}}},"/api/v1/sites/{siteId}/summaries":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read scoped summaries","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}}]}},"/api/v1/sites/{siteId}/analytics/overview":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read overview; observed coverage and currencies remain explicit"}},"/api/v1/sites/{siteId}/analytics/acquisition":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read acquisition; observed coverage and currencies remain explicit"}},"/api/v1/sites/{siteId}/analytics/timeseries":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read timeseries; observed coverage and currencies remain explicit"}},"/api/v1/sites/{siteId}/analytics/finance":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read finance; observed coverage and currencies remain explicit"}},"/api/v1/sites/{siteId}/analytics/funnel":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read funnel; observed coverage and currencies remain explicit"}},"/api/v1/sites/{siteId}/analytics/retention":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read retention; observed coverage and currencies remain explicit"}},"/api/v1/sites/{siteId}/geo/config":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO config; does not start a test"}},"/api/v1/sites/{siteId}/geo/prompts":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO prompts; does not start a test"}},"/api/v1/sites/{siteId}/geo/overview":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO overview; does not start a test"}},"/api/v1/sites/{siteId}/geo/reports":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO reports; does not start a test"}},"/api/v1/sites/{siteId}/geo/runs":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO runs; does not start a test"}},"/api/v1/sites/{siteId}/geo/site-checks":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO site-checks; does not start a test"}},"/api/v1/sites/{siteId}/geo/answers":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO answers; does not start a test"}},"/api/v1/sites/{siteId}/geo/citations":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO citations; does not start a test"}},"/api/v1/sites/{siteId}/geo/trends":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO trends; does not start a test"}},"/api/v1/sites/{siteId}/geo/traffic":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Read private GEO traffic; does not start a test"}},"/api/v1/sites/{siteId}/geo/audits":{"parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"radarCredential":[]},{"radarSession":[]}],"responses":{"200":{"description":"Authorized data with optional pagination/freshness metadata"},"401":{"description":"Login or credential required"},"403":{"description":"Insufficient scope"},"503":{"description":"Persistence or configuration unavailable"}},"summary":"Run bounded public-page audit; requires geo:run","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":100}}]}}},"components":{"securitySchemes":{"radarCredential":{"type":"http","scheme":"bearer","description":"Scoped rdr_read_* or rdr_ingest_* credential"},"radarSession":{"type":"apiKey","in":"cookie","name":"__Host-radar_session","description":"Opaque authenticated Radar session; mutations also require same-origin Origin header"}}}}