{"openapi":"3.1.0","info":{"title":"Multi App AI Control Center API","version":"1.0.0-rc.1","description":"Public backend contract for future Android and iOS apps. This repository does not include a mobile client."},"servers":[{"url":"https://{appHost}/api/v1","variables":{"appHost":{"default":"app.api.example.com"}}}],"tags":[{"name":"Session"},{"name":"Bootstrap"},{"name":"Profile"},{"name":"Analytics"},{"name":"Agent"},{"name":"Plans"},{"name":"Billing"},{"name":"Content"}],"paths":{"/sessions/anonymous":{"post":{"summary":"Create or resume an anonymous app session","tags":["Session"],"security":[],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["installationId","device"],"properties":{"installationId":{"type":"string","minLength":16,"maxLength":160},"locale":{"type":"string"},"timezone":{"type":"string"},"device":{"type":"object","required":["osVersion","appVersion"],"properties":{"osVersion":{"type":"string"},"appVersion":{"type":"string"}}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/auth/email/challenge":{"post":{"summary":"Request a one-time code for an email address. Send the current anonymous access token to bind that address to the existing anonymous user and keep its data; omit it to sign in on a new device. The code is never returned in the response.","tags":["Session"],"security":[],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","maxLength":254}}}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/auth/email/verify":{"post":{"summary":"Exchange a one-time code for a session","tags":["Session"],"security":[],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["challengeId","code"],"properties":{"challengeId":{"type":"integer","minimum":1},"code":{"type":"string","pattern":"^\\d{6}$"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/sessions/refresh":{"post":{"summary":"Rotate a refresh token","tags":["Session"],"security":[],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["refreshToken"],"properties":{"refreshToken":{"type":"string","writeOnly":true}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/bootstrap":{"get":{"summary":"Get signed app configuration, entitlement, and quota state","tags":["Bootstrap"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/me":{"get":{"summary":"Get the current app user summary","tags":["Profile"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}},"delete":{"summary":"Queue scoped user data deletion","tags":["Profile"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/me/export":{"post":{"summary":"Queue scoped user data export","tags":["Profile"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/me/consents/ai":{"put":{"summary":"Record or withdraw AI data processing consent","tags":["Profile"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accepted","policyVersion"],"properties":{"accepted":{"type":"boolean"},"policyVersion":{"type":"string"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/me/profile":{"get":{"summary":"Get the structured AI profile","tags":["Profile"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}},"put":{"summary":"Create a new structured AI profile version","tags":["Profile"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProfileInput"},{"$ref":"#/components/schemas/HabitProfileV2"}]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/ai/quota":{"get":{"summary":"Get feature quota balances","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/analytics/events":{"post":{"summary":"Record one privacy-bounded product event","tags":["Analytics"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsEvent"}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["accepted","duplicate"],"properties":{"accepted":{"const":true},"duplicate":{"type":"boolean"}}},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/agent/goals/parse":{"post":{"summary":"Parse free text into a goal draft","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"},{"$ref":"#/components/parameters/PreferAsync"},{"$ref":"#/components/parameters/AsyncIdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":3,"maxLength":2000}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"202":{"description":"Accepted for asynchronous Agent execution","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"$ref":"#/components/schemas/AsyncJob"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/agent/plans/generate":{"post":{"summary":"Generate a validated, inactive plan proposal","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"},{"$ref":"#/components/parameters/PreferAsync"},{"$ref":"#/components/parameters/AsyncIdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["profileVersion","durationWeeks"],"properties":{"profileVersion":{"type":"integer","minimum":1},"durationWeeks":{"type":"integer","minimum":1,"maximum":52},"clarification":{"$ref":"#/components/schemas/ClarificationAnswerV2"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"$ref":"#/components/schemas/PlanGenerationResult"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"202":{"description":"Accepted for asynchronous Agent execution","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"$ref":"#/components/schemas/AsyncJob"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/agent/runs/{runId}":{"get":{"summary":"Get a scoped Agent run","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"runId","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/plans/current":{"get":{"summary":"Get the accepted active plan; proposals are excluded","tags":["Plans"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/plans/history":{"get":{"summary":"Get immutable plan version history","tags":["Plans"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/plan-proposals/{proposalId}":{"get":{"summary":"Get a scoped plan proposal","tags":["Plans"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"proposalId","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/plan-proposals/{proposalId}/accept":{"post":{"summary":"Accept a proposal and create one active immutable plan version","tags":["Plans"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"proposalId","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["expectedCurrentPlanVersion"],"properties":{"expectedCurrentPlanVersion":{"type":["integer","null"]}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/plan-proposals/{proposalId}/reject":{"post":{"summary":"Reject a proposal without changing the active plan","tags":["Plans"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"proposalId","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reasonCode"],"properties":{"reasonCode":{"type":"string"},"note":{"type":"string","maxLength":500}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/execution-summaries":{"post":{"summary":"Upload a deduplicated aggregate execution summary","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ExecutionSummary"},{"$ref":"#/components/schemas/ExecutionSummaryV2"}]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/agent/reviews/weekly":{"post":{"summary":"Generate or reuse a weekly review","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"},{"$ref":"#/components/parameters/PreferAsync"},{"$ref":"#/components/parameters/AsyncIdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["executionSummaryId"],"properties":{"executionSummaryId":{"type":"integer"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"202":{"description":"Accepted for asynchronous Agent execution","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"$ref":"#/components/schemas/AsyncJob"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/agent/plans/adjust":{"post":{"summary":"Generate a conservative adjustment proposal","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"},{"$ref":"#/components/parameters/PreferAsync"},{"$ref":"#/components/parameters/AsyncIdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["currentPlanVersion","executionSummaryId"],"properties":{"currentPlanVersion":{"type":"integer"},"executionSummaryId":{"type":"integer"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"202":{"description":"Accepted for asynchronous Agent execution","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"$ref":"#/components/schemas/AsyncJob"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/me/jobs/{jobId}":{"get":{"summary":"Poll an asynchronous job owned by the current app user","tags":["Agent"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"jobId","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"$ref":"#/components/schemas/AsyncJob"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/subscriptions/products":{"get":{"summary":"Get product identifiers and display metadata","tags":["Billing"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/subscriptions/verify":{"post":{"summary":"Verify and mirror a store purchase through IAPKit","tags":["Billing"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/subscriptions/restore":{"post":{"summary":"Restore active subscriptions and non-consumable purchases","tags":["Billing"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["platform","purchases"],"properties":{"platform":{"enum":["android","ios"]},"purchases":{"type":"array","maxItems":50,"items":{"type":"object","required":["productId","purchaseToken"],"properties":{"productId":{"type":"string"},"purchaseToken":{"type":"string","writeOnly":true}}}}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/subscriptions/entitlements":{"get":{"summary":"Get cached verified entitlement state","tags":["Billing"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/content/{slot}":{"get":{"summary":"Get published content for a configured slot","tags":["Content"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"slot","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/me/push-token":{"put":{"summary":"Register or refresh the device push token","tags":["Users"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["platform","token"],"properties":{"platform":{"type":"string","enum":["android","ios"]},"token":{"type":"string","minLength":16,"maxLength":4096}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}},"delete":{"summary":"Revoke every push token of the calling user","tags":["Users"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"$ref":"#/components/parameters/AppVersion"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/records/{recordType}":{"get":{"summary":"List the caller records of a registered App record type","tags":["App data"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"recordType","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}},"/records/{recordType}/{recordKey}":{"get":{"summary":"Read one App record","tags":["App data"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"recordType","in":"path","required":true,"schema":{"type":"string"}},{"name":"recordKey","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}},"put":{"summary":"Create or replace one App record. The body is validated against the JSON Schema the App registered for this record type. Supply expectedVersion to detect a concurrent write.","tags":["App data"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"recordType","in":"path","required":true,"schema":{"type":"string"}},{"name":"recordKey","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","additionalProperties":true},"expectedVersion":{"type":"integer","nullable":true,"minimum":0}}}}}}},"delete":{"summary":"Delete one App record","tags":["App data"],"security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/AppId"},{"name":"recordType","in":"path","required":true,"schema":{"type":"string"}},{"name":"recordKey","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","required":["data","requestId","serverTime"],"properties":{"data":{"type":"object"},"requestId":{"type":"string"},"serverTime":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Validation or context error","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"403":{"description":"Scope or policy denied","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"409":{"description":"Version, ownership, or idempotency conflict","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"429":{"description":"Rate, quota, or budget limit","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}},"503":{"description":"External provider temporarily unavailable","content":{"application/json":{"schema":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"AppId":{"name":"X-App-Id","in":"header","required":true,"schema":{"type":"string"},"description":"Public environment identifier; Host and token must match."},"AppVersion":{"name":"X-App-Version","in":"header","required":false,"schema":{"type":"string"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}},"AsyncIdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128},"description":"Required when Prefer is respond-async."},"PreferAsync":{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]}}},"schemas":{"Error":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","retryable","details"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":true}}},"requestId":{"type":"string"}}},"AnalyticsEvent":{"oneOf":[{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"onboarding_started"},"properties":{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"enum":["ai","local"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"onboarding_completed"},"properties":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"enum":["ai","template","manual"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"plan_generated"},"properties":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"enum":["ai","template","manual"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"plan_accepted"},"properties":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"enum":["ai","template","manual"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"check_in_recorded"},"properties":{"type":"object","additionalProperties":false,"required":["status","tier"],"properties":{"status":{"const":"completed"},"tier":{"enum":["standard","minimum","rescue"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"check_in_recorded"},"properties":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"enum":["skipped","rest"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"weekly_review_created"},"properties":{"type":"object","additionalProperties":false,"required":["source","actionDays","scheduledDays","recoveredWithin48h","hadSkip"],"properties":{"source":{"enum":["ai","template","manual"]},"actionDays":{"type":"integer","minimum":0,"maximum":7},"scheduledDays":{"type":"integer","minimum":0,"maximum":7},"recoveredWithin48h":{"type":"integer","minimum":0,"maximum":7},"hadSkip":{"type":"boolean"}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"plan_adjustment_proposed"},"properties":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"enum":["ai","template","manual"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"plan_adjustment_accepted"},"properties":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"enum":["ai","template","manual"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"plan_adjustment_rejected"},"properties":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"enum":["ai","template","manual"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"paywall_viewed"},"properties":{"type":"object","additionalProperties":false,"required":["surface"],"properties":{"surface":{"const":"settings"}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"purchase_started"},"properties":{"type":"object","additionalProperties":false,"required":["product"],"properties":{"product":{"enum":["pacenest_pro_monthly","pacenest_pro_yearly"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"purchase_result"},"properties":{"type":"object","additionalProperties":false,"required":["result"],"properties":{"result":{"enum":["verified","pending","cancelled","retrying","failed"]}}}}},{"type":"object","additionalProperties":false,"required":["eventId","eventName","properties"],"properties":{"eventId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"eventName":{"const":"purchase_restored"},"properties":{"type":"object","additionalProperties":false,"required":["result"],"properties":{"result":{"enum":["restored","none","expired","revoked","failed"]}}}}}]},"AsyncJob":{"type":"object","required":["status"],"properties":{"id":{"type":"integer","description":"Present when polling the job."},"jobId":{"type":"integer"},"status":{"enum":["queued","running","completed","dead"]},"result":{"type":"object","additionalProperties":true},"errorCode":{"type":"string"}}},"PlanV1":{"type":"object","required":["schemaVersion","goalSummary","durationWeeks","items","explanation"],"properties":{"schemaVersion":{"const":"plan.v1"},"goalSummary":{"type":"string","maxLength":240},"durationWeeks":{"type":"integer","minimum":1,"maximum":52},"items":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","required":["title","daysOfWeek","durationMinutes","timeWindow","minimumAction"],"properties":{"title":{"type":"string","maxLength":100},"daysOfWeek":{"type":"array","minItems":1,"maxItems":7,"items":{"type":"integer","minimum":1,"maximum":7}},"durationMinutes":{"type":"integer","minimum":1,"maximum":180},"timeWindow":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\\\d|2[0-3]):[0-5]\\\\d$"},"end":{"type":"string","pattern":"^([01]\\\\d|2[0-3]):[0-5]\\\\d$"}}},"minimumAction":{"type":"string","maxLength":160}}}},"explanation":{"type":"string","maxLength":1200}}},"HabitProfileV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"string","const":"habit-profile.v2"},"profileVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"goalPackId":{"type":"string","enum":["MOVE_MORE","READ_REGULARLY","LEARN_CONSISTENTLY","WIND_DOWN"]},"outcomeId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"baselineId":{"type":"string","enum":["NOT_STARTED","OCCASIONAL","RETURNING_AFTER_STOP","SOMEWHAT_REGULAR"]},"worstDayMinutes":{"anyOf":[{"type":"number","const":2},{"type":"number","const":5},{"type":"number","const":10},{"type":"number","const":20}]},"daysPerWeek":{"type":"integer","minimum":2,"maximum":5},"cueId":{"type":"string","enum":["AFTER_WAKING","AFTER_MEAL","AFTER_WORK_OR_STUDY","AFTER_GETTING_HOME","BEFORE_BED","CHANGES_OFTEN"]},"preferredWindow":{"type":"string","enum":["MORNING","AFTERNOON","EVENING","FLEXIBLE"]},"obstacleIds":{"maxItems":2,"type":"array","items":{"type":"string","enum":["FORGET","SCHEDULE_CHANGES","TOO_TIRED","HARD_TO_START","PLAN_TOO_BIG","MISSED_DAY_SPIRAL"]}},"preferenceIds":{"maxItems":2,"type":"array","items":{"type":"string","enum":["PRIVATE","CLEAR_INSTRUCTIONS","QUIET","SMALL_LIST","START_VERY_SMALL","RECOMMEND_FOR_ME"]}},"optionalNote":{"default":"","type":"string","maxLength":500},"locale":{"type":"string","minLength":2,"maxLength":20},"timezone":{"type":"string","minLength":1,"maxLength":80},"catalogVersion":{"type":"string","const":"pacenest.catalog.2026-07-25"}},"required":["schemaVersion","profileVersion","goalPackId","outcomeId","baselineId","worstDayMinutes","daysPerWeek","cueId","preferredWindow","obstacleIds","preferenceIds","optionalNote","locale","timezone","catalogVersion"],"additionalProperties":false},"PlanV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"string","const":"plan.v2"},"goalPackId":{"type":"string","enum":["MOVE_MORE","READ_REGULARLY","LEARN_CONSISTENTLY","WIND_DOWN"]},"outcomeId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"goalSummary":{"type":"string","minLength":1,"maxLength":240},"durationWeeks":{"type":"number","const":4},"currentWeek":{"default":1,"type":"integer","minimum":1,"maximum":4},"catalogVersion":{"type":"string","const":"pacenest.catalog.2026-07-25"},"items":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,80}$"},"actionTemplateId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"title":{"type":"string","minLength":1,"maxLength":100},"purpose":{"type":"string","minLength":1,"maxLength":240},"daysOfWeek":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"integer","minimum":1,"maximum":7}},"timeWindowStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"timeWindowEnd":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"cueId":{"type":"string","enum":["AFTER_WAKING","AFTER_MEAL","AFTER_WORK_OR_STUDY","AFTER_GETTING_HOME","BEFORE_BED","CHANGES_OFTEN"]},"cueLabel":{"type":"string","minLength":1,"maxLength":100},"standard":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":160},"estimatedMinutes":{"type":"integer","minimum":1,"maximum":60}},"required":["instruction","estimatedMinutes"],"additionalProperties":false},"minimum":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":160},"estimatedMinutes":{"type":"integer","minimum":1,"maximum":60}},"required":["instruction","estimatedMinutes"],"additionalProperties":false},"rescue":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":160},"estimatedMinutes":{"type":"integer","minimum":1,"maximum":60}},"required":["instruction","estimatedMinutes"],"additionalProperties":false},"fallbackConditionId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"fallbackInstruction":{"type":"string","minLength":1,"maxLength":160},"reminderSuggestedTime":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"reasonCodes":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"}},"reasonText":{"type":"string","minLength":1,"maxLength":400}},"required":["id","actionTemplateId","title","purpose","daysOfWeek","timeWindowStart","timeWindowEnd","cueId","cueLabel","standard","minimum","rescue","fallbackConditionId","fallbackInstruction","reminderSuggestedTime","reasonCodes","reasonText"],"additionalProperties":false}},"assumptions":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"explanation":{"type":"string","minLength":1,"maxLength":1200}},"required":["schemaVersion","goalPackId","outcomeId","goalSummary","durationWeeks","currentWeek","catalogVersion","items","assumptions","explanation"],"additionalProperties":false},"ClarificationV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"string","const":"clarification.v2"},"status":{"type":"string","const":"needs_clarification"},"questionId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"question":{"type":"string","minLength":1,"maxLength":240},"candidates":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9_]{1,80}$"},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["id","label"],"additionalProperties":false}}},"required":["schemaVersion","status","questionId","question","candidates"],"additionalProperties":false},"ClarificationAnswerV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"questionId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"answerId":{"type":"string","pattern":"^[a-z0-9_]{1,80}$"}},"required":["questionId","answerId"],"additionalProperties":false},"PlanGenerationResult":{"oneOf":[{"type":"object","required":["proposal"],"properties":{"proposal":{"type":"object"}}},{"type":"object","required":["clarification"],"properties":{"clarification":{"$ref":"#/components/schemas/ClarificationV2"}}}]},"ExecutionSummaryV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"string","const":"execution-summary.v2"},"periodStart":{"type":"string","format":"date","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])))$"},"periodEnd":{"type":"string","format":"date","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])))$"},"planVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scheduledDays":{"type":"integer","minimum":0,"maximum":31},"actionDays":{"type":"integer","minimum":0,"maximum":31},"completedStandard":{"type":"integer","minimum":0,"maximum":31},"completedMinimum":{"type":"integer","minimum":0,"maximum":31},"completedRescue":{"type":"integer","minimum":0,"maximum":31},"skipped":{"type":"integer","minimum":0,"maximum":31},"rest":{"type":"integer","minimum":0,"maximum":31},"obstacleCounts":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"integer","minimum":0,"maximum":31}},"recoveredWithin24h":{"type":"integer","minimum":0,"maximum":31},"recoveredWithin48h":{"type":"integer","minimum":0,"maximum":31},"recoveryHours":{"anyOf":[{"type":"integer","minimum":0,"maximum":744},{"type":"null"}]},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["schemaVersion","periodStart","periodEnd","planVersion","scheduledDays","actionDays","completedStandard","completedMinimum","completedRescue","skipped","rest","obstacleCounts","recoveredWithin24h","recoveredWithin48h","recoveryHours","sourceHash"],"additionalProperties":false},"WeeklyReviewV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"string","const":"weekly-review.v2"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"observedFacts":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"supportiveSummary":{"type":"string","minLength":1,"maxLength":600},"suggestedFocus":{"type":"string","minLength":1,"maxLength":240},"adjustmentRecommended":{"type":"boolean"},"reasonCodes":{"maxItems":6,"type":"array","items":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"}},"disclaimer":{"type":"string","maxLength":400}},"required":["schemaVersion","sourceHash","observedFacts","supportiveSummary","suggestedFocus","adjustmentRecommended","reasonCodes"],"additionalProperties":false},"PlanAdjustV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"string","const":"plan-adjust.v2"},"basePlanVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"changedField":{"type":"string","enum":["daysOfWeek","timeWindow","standard","minimum","rescue","cue"]},"reasonCode":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"proposedPlan":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"plan.v2"},"goalPackId":{"type":"string","enum":["MOVE_MORE","READ_REGULARLY","LEARN_CONSISTENTLY","WIND_DOWN"]},"outcomeId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"goalSummary":{"type":"string","minLength":1,"maxLength":240},"durationWeeks":{"type":"number","const":4},"currentWeek":{"default":1,"type":"integer","minimum":1,"maximum":4},"catalogVersion":{"type":"string","const":"pacenest.catalog.2026-07-25"},"items":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,80}$"},"actionTemplateId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"title":{"type":"string","minLength":1,"maxLength":100},"purpose":{"type":"string","minLength":1,"maxLength":240},"daysOfWeek":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"integer","minimum":1,"maximum":7}},"timeWindowStart":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"timeWindowEnd":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"cueId":{"type":"string","enum":["AFTER_WAKING","AFTER_MEAL","AFTER_WORK_OR_STUDY","AFTER_GETTING_HOME","BEFORE_BED","CHANGES_OFTEN"]},"cueLabel":{"type":"string","minLength":1,"maxLength":100},"standard":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":160},"estimatedMinutes":{"type":"integer","minimum":1,"maximum":60}},"required":["instruction","estimatedMinutes"],"additionalProperties":false},"minimum":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":160},"estimatedMinutes":{"type":"integer","minimum":1,"maximum":60}},"required":["instruction","estimatedMinutes"],"additionalProperties":false},"rescue":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":160},"estimatedMinutes":{"type":"integer","minimum":1,"maximum":60}},"required":["instruction","estimatedMinutes"],"additionalProperties":false},"fallbackConditionId":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"},"fallbackInstruction":{"type":"string","minLength":1,"maxLength":160},"reminderSuggestedTime":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"reasonCodes":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","pattern":"^[a-z0-9_]{3,80}$"}},"reasonText":{"type":"string","minLength":1,"maxLength":400}},"required":["id","actionTemplateId","title","purpose","daysOfWeek","timeWindowStart","timeWindowEnd","cueId","cueLabel","standard","minimum","rescue","fallbackConditionId","fallbackInstruction","reminderSuggestedTime","reasonCodes","reasonText"],"additionalProperties":false}},"assumptions":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}},"explanation":{"type":"string","minLength":1,"maxLength":1200}},"required":["schemaVersion","goalPackId","outcomeId","goalSummary","durationWeeks","currentWeek","catalogVersion","items","assumptions","explanation"],"additionalProperties":false}},"required":["schemaVersion","basePlanVersion","changedField","reasonCode","proposedPlan"],"additionalProperties":false},"ProfileInput":{"type":"object","required":["goals","availableTime","level","preferences","constraints"],"additionalProperties":false,"properties":{"goals":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object"}},"availableTime":{"type":"object"},"level":{"enum":["beginner","intermediate","advanced"]},"preferences":{"type":"array","items":{"type":"string"}},"constraints":{"type":"array","items":{"type":"string"}}}},"ExecutionSummary":{"type":"object","required":["periodStart","periodEnd","planVersion","completionRate","subjectiveDifficulty","items","missedReasonCodes","sourceHash"],"properties":{"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"planVersion":{"type":"integer","minimum":1},"completionRate":{"type":"number","minimum":0,"maximum":1},"subjectiveDifficulty":{"type":"integer","minimum":1,"maximum":5},"items":{"type":"array","items":{"type":"object"}},"missedReasonCodes":{"type":"array","items":{"type":"string"}},"sourceHash":{"type":"string"}}},"PurchaseInput":{"type":"object","required":["platform","productId","purchaseToken"],"properties":{"platform":{"enum":["android","ios"]},"productId":{"type":"string"},"purchaseToken":{"type":"string","writeOnly":true},"packageName":{"type":"string"},"bundleId":{"type":"string"}}}}}}