{"openapi":"3.1.0","paths":{"/v1/admin/users":{"get":{"operationId":"AdminUsersController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"role","required":false,"in":"query","schema":{"type":"string","enum":["ADMIN","SUPPORT","USER"]}},{"name":"state","required":false,"in":"query","schema":{"type":"string","enum":["active","invited"]}},{"name":"email","required":false,"in":"query","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":2,"maxLength":100,"type":"string"}},{"name":"createdFrom","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"name":"createdTo","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserListResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"List accounts with cursor pagination and optional role, state, email, text and creation date filters","tags":["User administration"]},"post":{"operationId":"AdminUsersController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserCreatedDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Invite an account; the user must set their password and record their own consent","tags":["User administration"]}},"/v1/admin/users/{id}":{"get":{"operationId":"AdminUsersController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]},"put":{"operationId":"AdminUsersController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserReplaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]},"patch":{"operationId":"AdminUsersController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]},"delete":{"operationId":"AdminUsersController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedVersion","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Deactivates the account, revokes sessions and schedules existing erasure."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]}},"/v1/admin/users/{id}/data":{"get":{"operationId":"AdminUsersController_fullData","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"The same explicit personal export available to the account owner. Media binaries and authentication secrets are excluded; stored objects are listed by reference.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalDataExportDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator role and authentication within the last five minutes are required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"413":{"description":"EXPORT_REQUIRES_BATCH: use POST /v1/admin/users/{id}/export/jobs."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Download all persisted account records, including health and exercise history","tags":["User administration"]}},"/v1/admin/users/{id}/export/jobs":{"post":{"operationId":"AdminUsersController_requestDataExport","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalExportJobDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Queue a complete account export when the synchronous response is too large","tags":["User administration"]}},"/v1/admin/users/{id}/export/jobs/{jobId}":{"get":{"operationId":"AdminUsersController_dataExportJob","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"jobId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalExportJobDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Check a complete account export and obtain its temporary download URL","tags":["User administration"]}},"/v1/admin/users/{id}/tokens":{"get":{"operationId":"AdminUsersController_tokens","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTokenListDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]},"post":{"operationId":"AdminUsersController_issueToken","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTokenIssueDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTokenIssuedDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Issue a single-use invitation or password recovery token; no access token is minted for another person","tags":["User administration"]},"delete":{"operationId":"AdminUsersController_revokeAllTokens","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Revokes sessions and outstanding invitation/recovery tokens."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]}},"/v1/admin/users/{id}/tokens/{sessionId}":{"delete":{"operationId":"AdminUsersController_revokeSession","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"sessionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Revokes one device session and its access/refresh tokens."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["User administration"]}},"/v1/auth/activate-invitation":{"post":{"operationId":"AdminInvitationController_activate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptAdminInvitationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokenResponseDto"}}}}},"tags":["Identity"]}},"/v1/admin/overview/platforms":{"get":{"operationId":"AdminOverviewController_platformSplit","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewPlatformsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"iOS and Android among active app accounts, from the devices registered for push notifications (ever and seen in the last 30 days). Accounts without a registered device are the gap to `accounts`; the OS of recorded activities is never inferred.","tags":["Admin overview"]}},"/v1/admin/overview":{"get":{"operationId":"AdminOverviewController_get","parameters":[{"name":"period","required":false,"in":"query","schema":{"default":"week","type":"string","enum":["week","month","year"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Live database aggregates for a rolling UTC window, compared with the preceding equally long elapsed window. Active means authentication, recording or community engagement.","tags":["Admin overview"]}},"/v1/admin/overview/presence":{"get":{"operationId":"AdminOverviewController_live","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewPresenceResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Current voluntary nearby presence in coarse regions with at least three people. No person identifiers or individual coordinates. Poll every 15 seconds; expired, private and withdrawn presence is excluded.","tags":["Admin overview"]}},"/v1/admin/overview/reports":{"get":{"operationId":"AdminOverviewController_listReports","parameters":[{"name":"period","required":false,"in":"query","schema":{"default":"week","type":"string","enum":["week","month","year"]}},{"name":"provider","required":false,"in":"query","schema":{"type":"string","enum":["apple_app_store","google_play","google_cloud","firebase","aws","mapbox","servers"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Daily provider reports in the selected UTC window; a missing report is unavailable, not zero. This does not fetch provider APIs.","tags":["Admin overview"]},"post":{"operationId":"AdminOverviewController_createReport","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Import one daily official provider report. Unique provider/day, integer monetary micros, original currency and provenance. Audited; recent authentication required.","tags":["Admin overview"]}},"/v1/admin/overview/reports/{id}":{"get":{"operationId":"AdminOverviewController_getReport","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin overview"]},"put":{"operationId":"AdminOverviewController_replaceReport","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportReplaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin overview"]},"patch":{"operationId":"AdminOverviewController_patchReport","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminOverviewReportResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin overview"]},"delete":{"operationId":"AdminOverviewController_deleteReport","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedVersion","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Deletes an incorrect imported report; retains the administrative audit event. Version and recent authentication required."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin overview"]}},"/v1/admin/integrations":{"get":{"operationId":"AdminConsoleController_integrations","parameters":[],"responses":{"200":{"description":"Supported credential slots with masked metadata. Configuration is not a successful provider probe. No secret values are returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminIntegrationsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/v1/admin/integrations/credentials":{"put":{"operationId":"AdminConsoleController_save","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationCredentialInputDto"}}}},"responses":{"200":{"description":"Create, replace, enable or disable an encrypted provider credential. Revision 0 creates; stale revisions conflict. Disabling blocks future server reads and environment fallback; external provider revocation remains separate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedCredentialResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/v1/admin/store-status":{"get":{"operationId":"AdminConsoleController_publicStoreStatus","parameters":[],"responses":{"200":{"description":"Official public Apple Developer and Google Play service incidents, checked at most every five minutes. No private publisher-account notices. Fetch or schema failures remain unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStoreStatusResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/v1/admin/files":{"get":{"operationId":"AdminConsoleController_listFiles","parameters":[{"name":"folder","required":false,"in":"query","schema":{"default":"all","type":"string","enum":["all","editorial","shop","achievements"]}},{"name":"search","required":false,"in":"query","schema":{"maxLength":120,"default":"","type":"string"}},{"name":"page","required":false,"in":"query","schema":{"minimum":1,"maximum":100000,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":24,"type":"integer"}}],"responses":{"200":{"description":"Paginated administrative catalogue assets with signed URLs and real size coverage. Excludes private user media.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminFilesResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Admin console"]}},"/v1/admin/access-origins":{"get":{"description":"Read-only administrator report for the requested UTC calendar-day window. Counts come from trusted proxy country data; ZZ represents an unavailable country. No IP address, session or user identifier is returned.","operationId":"AdminConsoleController_origins","parameters":[{"name":"days","required":false,"in":"query","description":"Inclusive number of UTC calendar days, ending today (1–365).","schema":{"minimum":1,"maximum":365,"default":30,"type":"integer"}}],"responses":{"200":{"description":"UTC daily aggregate of successful sign-ins by trusted proxy country. ZZ means unavailable. No IP address, session or user identifier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessOriginsResponseDto"},"example":{"days":30,"collectedAt":"2026-01-01T12:00:00.000Z","metric":"successful_sign_ins","source":"trusted_proxy_country","items":[{"country":"PT","count":3},{"country":"ZZ","count":1}],"total":4,"unknown":1}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Aggregate successful sign-ins by country","tags":["Admin console"]}},"/v1/admin/notifications":{"get":{"operationId":"AdminStaffController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"Durable authorized alerts, own read state and explicit external provider coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminInboxResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Administrative notifications and staff chat"]}},"/v1/admin/notifications/read-all":{"post":{"operationId":"AdminStaffController_readAll","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminReadReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Administrative notifications and staff chat"]}},"/v1/admin/notifications/{id}/read":{"patch":{"operationId":"AdminStaffController_read","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminReadReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Administrative notifications and staff chat"]}},"/v1/admin/internal-chat":{"get":{"operationId":"AdminStaffController_chat","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"Persistent shared staff channel, latest messages first with cursor history.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStaffChatResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Administrative notifications and staff chat"]},"post":{"operationId":"AdminStaffController_send","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffMessageInputDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStaffMessageReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Administrative notifications and staff chat"]}},"/v1/me/export":{"get":{"operationId":"PrivacyController_export","parameters":[],"responses":{"200":{"description":"Persisted personal records of the account. Stored objects, images and narration audio alike, are listed by reference; see storedObjects for where their bytes are fetched from. An account too large to build inside a request answers 413 EXPORT_REQUIRES_BATCH; ask for the same package through POST /v1/me/export/jobs instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalDataExportDto"}}}},"403":{"description":"RECENT_AUTHENTICATION_REQUIRED: sign in again with your password using POST /v1/auth/login or with a fresh Google challenge and POST /v1/auth/google/session, then retry within five minutes. Refreshing an existing session does not renew this window."}},"security":[{"bearer":[]}],"tags":["Privacy"]}},"/v1/me/export/jobs":{"post":{"operationId":"PrivacyController_requestExport","parameters":[],"responses":{"200":{"description":"Queues the same package the synchronous export produces and returns immediately. Poll this identifier, or GET /v1/me/export/jobs, until status is ready; the answer then carries a download link that expires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalExportJobDto"}}}},"403":{"description":"RECENT_AUTHENTICATION_REQUIRED: sign in again with your password using POST /v1/auth/login or with a fresh Google challenge and POST /v1/auth/google/session, then retry within five minutes. Refreshing an existing session does not renew this window."},"409":{"description":"EXPORT_IN_PROGRESS: one export at a time. Wait for the open one to finish."}},"security":[{"bearer":[]}],"tags":["Privacy"]},"get":{"operationId":"PrivacyController_latestExport","parameters":[],"responses":{"200":{"description":"The most recent export request of this account, or null. Needs no recent authentication: it carries progress, never a link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestPersonalExportDto"}}}}},"security":[{"bearer":[]}],"tags":["Privacy"]}},"/v1/me/export/jobs/{id}":{"get":{"operationId":"PrivacyController_exportJob","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalExportJobDto"}}}},"403":{"description":"RECENT_AUTHENTICATION_REQUIRED: sign in again with your password using POST /v1/auth/login or with a fresh Google challenge and POST /v1/auth/google/session, then retry within five minutes. Refreshing an existing session does not renew this window."},"404":{"description":"EXPORT_NOT_FOUND: no such export for this account."}},"security":[{"bearer":[]}],"tags":["Privacy"]}},"/v1/me/health-data":{"delete":{"operationId":"PrivacyController_eraseHealthData","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EraseHealthDataDto"}}}},"responses":{"200":{"description":"Erases every health record imported into this account — raw records, Health Connect parents, parts, projections, daily aggregates and sessions, and Apple Health versions — and clears what was derived from them. The account stays. Activities recorded with KYPACE, workouts that arrived from Apple Health as activities, hydration and meals are not touched; each has its own deletion path. Idempotent: a second request removes nothing and answers with zeros.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthErasureReceiptDto"}}}},"403":{"description":"RECENT_AUTHENTICATION_REQUIRED: sign in again with your password using POST /v1/auth/login or with a fresh Google challenge and POST /v1/auth/google/session, then retry within five minutes. Refreshing an existing session does not renew this window."}},"security":[{"bearer":[]}],"tags":["Privacy"]}},"/v1/legal/documents":{"get":{"operationId":"LegalController_list","parameters":[],"responses":{"200":{"description":"Current public legal documents with their full plain text and the path to the formatted HTML. The locale is pt-PT until another translation is published.","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["slug","locale","version","title","effectiveAt","sha256","path","text"],"properties":{"slug":{"type":"string"},"locale":{"type":"string"},"version":{"type":"string"},"title":{"type":"string"},"effectiveAt":{"type":"string"},"sha256":{"type":"string"},"path":{"type":"string"},"text":{"type":"string"}}}}}}}}}},"tags":["legal"]}},"/v1/legal/documents/{slug}":{"get":{"operationId":"LegalController_document","parameters":[{"name":"slug","required":true,"in":"path","schema":{"enum":["terms-of-service","privacy-policy","delete-account","community-guidelines"],"type":"string"}},{"name":"version","required":false,"in":"query","description":"Published document version; omit for the current one.","schema":{"pattern":"^\\d+(?:\\.\\d+)*$","type":"string"}}],"responses":{"200":{"description":"Published HTML document in pt-PT.","content":{"text/html":{"schema":{"type":"string"}}}}},"tags":["legal"]}},"/v1/admin/legal/documents":{"get":{"operationId":"AdminLegalDocumentsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"slug","required":false,"in":"query","schema":{"type":"string","enum":["terms-of-service","privacy-policy","delete-account","community-guidelines"]}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["draft","published","retired"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentListResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal administration"]},"post":{"description":"Send exactly one of text or html in the JSON body. The plain text limit is 500,000 characters. The backend stores both representations and derives path from slug and version; publication remains a separate PATCH.","operationId":"AdminLegalDocumentsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Create a draft legal document with long plain text or complete HTML","tags":["Legal administration"]}},"/v1/admin/legal/documents/{id}":{"get":{"operationId":"AdminLegalDocumentsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal administration"]},"put":{"description":"Send exactly one of text or html. Published versions cannot be edited.","operationId":"AdminLegalDocumentsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentReplaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Replace a draft legal document","tags":["Legal administration"]},"patch":{"description":"Text and HTML are mutually exclusive. Save a draft before publishing it; publication accepts status and expectedRevision only.","operationId":"AdminLegalDocumentsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalDocumentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Edit or publish a draft legal document","tags":["Legal administration"]},"delete":{"operationId":"AdminLegalDocumentsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Deletes a draft or retires a replaceable published version."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal administration"]}},"/v1/admin/legal/consents":{"get":{"operationId":"AdminLegalConsentsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"kind","required":false,"in":"query","schema":{"type":"string","enum":["terms","privacy"]}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["draft","published","retired"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentListResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal consent administration"]},"post":{"operationId":"AdminLegalConsentsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal consent administration"]}},"/v1/admin/legal/consents/{id}":{"get":{"operationId":"AdminLegalConsentsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal consent administration"]},"put":{"operationId":"AdminLegalConsentsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentReplaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal consent administration"]},"patch":{"operationId":"AdminLegalConsentsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalConsentResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal consent administration"]},"delete":{"operationId":"AdminLegalConsentsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Deletes an unpublished draft rule."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Legal consent administration"]}},"/v1/admin/security/incidents":{"post":{"operationId":"SecurityIncidentsController_record","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordIncidentDto"}}}},"responses":{"201":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Record a personal-data security incident for five-year retention","tags":["Security incident audit"]},"get":{"operationId":"SecurityIncidentsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}}],"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Security incident audit"]}},"/v1/admin/security/incidents/{id}/events":{"post":{"operationId":"SecurityIncidentsController_append","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentEventDto"}}}},"responses":{"201":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Append a finding, mitigation, notification or closure to the audit trail","tags":["Security incident audit"]}},"/v1/admin/security/incidents/{id}":{"get":{"operationId":"SecurityIncidentsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Security incident audit"]}},"/v1/auth/register":{"post":{"operationId":"IdentityController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokenResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"409":{"description":"Email already registered.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Create an email account and an authenticated device session","tags":["Identity"]}},"/v1/auth/login":{"post":{"description":"Returns an Ed25519 JWT (up to 15 minutes) and an opaque refresh token. A new password-authenticated session is created for the supplied deviceId.","operationId":"IdentityController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokenResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"Email or password is incorrect.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Sign in with email and password","tags":["Identity"]}},"/v1/auth/refresh":{"post":{"description":"Use the original deviceId and replace both tokens atomically. Concurrent refreshes with the same token count as reuse and revoke the session. Renewal does not extend the original session expiry or count as recent password authentication.","operationId":"IdentityController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokenResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"Expired, revoked, reused or wrong-device refresh token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Rotate a refresh token","tags":["Identity"]}},"/v1/auth/forgot-password":{"post":{"description":"For an existing account, queues an email with a single-use app reset link valid for 30 minutes. The response does not include the token or reveal whether the account exists.","operationId":"IdentityController_forgotPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"202":{"description":"Generic response for both existing and unknown accounts. Local recovery email is captured in Mailpit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMessageResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Request password recovery","tags":["Identity"]}},"/v1/auth/admin/forgot-password":{"post":{"description":"For an active ADMIN or SUPPORT account, queues an email whose button opens `<Admin Web>/reset-password#token=<token>`, single use and valid for 30 minutes. Complete the change with `POST /v1/auth/reset-password`. Other or unknown addresses get the same response and no email. Shares the recovery limits of `POST /v1/auth/forgot-password`.","operationId":"IdentityController_forgotAdminPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"202":{"description":"Generic response for staff, other and unknown accounts. Local recovery email is captured in Mailpit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMessageResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"ADMIN_PASSWORD_RECOVERY_UNAVAILABLE: the deployment has no Admin Web URL configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Request Admin Web password recovery","tags":["Identity"]}},"/v1/auth/reset-password":{"post":{"operationId":"IdentityController_resetPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordDto"}}}},"responses":{"200":{"description":"Password changed. All sessions and recovery tokens are invalidated; sign in again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMessageResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"tags":["Identity"]}},"/v1/auth/change-password":{"post":{"operationId":"IdentityController_changePassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordDto"}}}},"responses":{"200":{"description":"Password changed. All sessions, including the current one, are revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMessageResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"403":{"description":"CURRENT_PASSWORD_INVALID: the current password is incorrect.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Identity"]}},"/v1/auth/logout":{"post":{"operationId":"IdentityController_logout","parameters":[],"responses":{"204":{"description":"Current session revoked. Its access and refresh tokens are no longer accepted."},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Identity"]}},"/v1/auth/sessions":{"get":{"operationId":"IdentityController_sessions","parameters":[],"responses":{"200":{"description":"Up to 100 active sessions owned by the current user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthSessionsResponseDto"}}}},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Identity"]}},"/v1/auth/sessions/{id}":{"delete":{"operationId":"IdentityController_revokeSession","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"The selected session owned by the current user was revoked."},"400":{"description":"Invalid input or recovery token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"IP, account or user limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Identity"]}},"/v1/auth/google/status":{"get":{"operationId":"GoogleIdentityController_status","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleIdentityStatusDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read whether the authenticated account has a linked Google identity","tags":["Google identity"]}},"/v1/auth/google/challenges":{"post":{"description":"Pass nonce unchanged to Android Credential Manager setNonce or iOS GoogleSignIn nonce, and use serverClientId as the server OAuth client identifier. Send the resulting Google ID token to POST /auth/google/session. The nonce expires in five minutes.","operationId":"GoogleIdentityController_challenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleChallengeResponseDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Create a one-use Google nonce bound to the installation deviceId","tags":["Google identity"]}},"/v1/auth/google/session":{"post":{"description":"A new account requires registration.birthDate (age 16+) and accepted terms/privacy consents. Existing users are found by Google sub, never by email alone. Name and optional picture come from verified Google claims; GET /me returns the imported avatar using the existing avatar contract.","operationId":"GoogleIdentityController_session","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleSessionResponseDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"409":{"description":"GOOGLE_REGISTRATION_REQUIRED: provide age/consents with a new challenge; GOOGLE_ACCOUNT_LINK_REQUIRED: log into the existing account and explicitly link Google.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"summary":"Verify a Google ID token and return a local KYPACE session","tags":["Google identity"]}},"/v1/auth/google/link/challenge":{"post":{"operationId":"GoogleIdentityController_linkChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleChallengeResponseDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Google identity"]}},"/v1/auth/google/link":{"post":{"description":"Requires a fresh link-purpose challenge, a verified Google token and the current account password. No accounts or data are automatically merged.","operationId":"GoogleIdentityController_link","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleLinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleLinkedResponseDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"409":{"description":"GOOGLE_ALREADY_LINKED: the identity belongs to another account, or this account already has a different Google identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Explicitly link Google after confirming the current local account password","tags":["Google identity"]}},"/v1/auth/google/delete-account/challenge":{"post":{"operationId":"GoogleIdentityController_deleteChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleChallengeResponseDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Google identity"]}},"/v1/auth/google/delete-account":{"post":{"description":"Requires confirmation DELETE and a fresh delete-purpose challenge bound to this local session. Google sub must match the account identity. Revokes every session immediately and schedules the existing 30-day purge.","operationId":"GoogleIdentityController_deleteAccount","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleDeleteDto"}}}},"responses":{"202":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleDeleteResponseDto"}}}},"401":{"description":"Invalid Google ID token, expired/reused nonce, or revoked local session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"GOOGLE_AUTH_DISABLED until the Google OAuth client identifiers are configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete a Google-linked account using fresh Google reauthentication","tags":["Google identity"]}},"/v1/auth/apple/status":{"get":{"operationId":"AppleIdentityController_status","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Apple identity"]}},"/v1/auth/apple/challenges":{"post":{"operationId":"AppleIdentityController_challenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleChallengeDto"}}}},"responses":{"201":{"description":""}},"tags":["Apple identity"]}},"/v1/auth/apple/session":{"post":{"operationId":"AppleIdentityController_session","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleSessionDto"}}}},"responses":{"200":{"description":""}},"tags":["Apple identity"]}},"/v1/auth/apple/link/challenge":{"post":{"operationId":"AppleIdentityController_linkChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleChallengeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Apple identity"]}},"/v1/auth/apple/link":{"post":{"operationId":"AppleIdentityController_link","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleLinkDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Apple identity"]}},"/v1/auth/apple/delete-account/challenge":{"post":{"operationId":"AppleIdentityController_deleteChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleChallengeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Apple identity"]}},"/v1/auth/apple/delete-account":{"post":{"operationId":"AppleIdentityController_deleteAccount","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleDeleteDto"}}}},"responses":{"202":{"description":""}},"security":[{"bearer":[]}],"tags":["Apple identity"]}},"/v1/auth/apple/web/capabilities":{"get":{"operationId":"AppleWebIdentityController_capabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebCapabilityDto"}}}}},"tags":["Apple web identity"]}},"/v1/auth/apple/web/challenges":{"post":{"operationId":"AppleWebIdentityController_challenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeResponseDto"}}}}},"tags":["Apple web identity"]}},"/v1/auth/apple/web/link/challenge":{"post":{"operationId":"AppleWebIdentityController_linkChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Apple web identity"]}},"/v1/auth/apple/web/reauth/challenge":{"post":{"operationId":"AppleWebIdentityController_reauthChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Apple web identity"]}},"/v1/auth/apple/web/delete-account/challenge":{"post":{"operationId":"AppleWebIdentityController_deleteChallenge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebChallengeResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Apple web identity"]}},"/v1/auth/apple/web/callback":{"post":{"operationId":"AppleWebIdentityController_callback","parameters":[],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AppleWebCallbackDto"}}}},"responses":{"303":{"description":"Return only a one-time ticket or bounded error to the fixed Android URI."}},"tags":["Apple web identity"]}},"/v1/auth/apple/web/session":{"post":{"operationId":"AppleWebIdentityController_session","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebSessionResponseDto"}}}}},"tags":["Apple web identity"]}},"/v1/auth/apple/web/link":{"post":{"operationId":"AppleWebIdentityController_link","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebLinkDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebLinkResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Apple web identity"]}},"/v1/auth/apple/web/reauth":{"post":{"operationId":"AppleWebIdentityController_reauthenticate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebReauthDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebSessionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Apple web identity"]}},"/v1/auth/apple/web/delete-account":{"post":{"operationId":"AppleWebIdentityController_deleteAccount","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebDeleteDto"}}}},"responses":{"202":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWebDeleteResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Apple web identity"]}},"/v1/admin/mail/templates":{"get":{"operationId":"MailAdminController_catalogue","parameters":[],"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"List all 31 typed templates and allowed manual dispatches","tags":["Email administration"]}},"/v1/admin/mail/preview":{"post":{"operationId":"MailAdminController_preview","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MailPreviewDto"}}}},"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Render a preview using current user data and inline images; sends no email","tags":["Email administration"]}},"/v1/admin/mail/dispatch":{"post":{"operationId":"MailAdminController_dispatch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MailDispatchDto"}}}},"responses":{"202":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Queue one explicit editorial campaign or operational event; preferences are enforced again before SMTP","tags":["Email administration"]}},"/v1/admin/mail/deliveries/{id}":{"get":{"operationId":"MailAdminController_status","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Read sanitized delivery status; no recipient address, token or message payload","tags":["Email administration"]}},"/v1/mail/unsubscribe":{"get":{"operationId":"MailPublicController_confirmation","parameters":[{"name":"token","required":true,"in":"query","schema":{"minLength":30,"maxLength":2048,"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Display unsubscribe confirmation; GET never changes preferences","tags":["Email links"]},"post":{"operationId":"MailPublicController_unsubscribe","parameters":[{"name":"token","required":true,"in":"query","schema":{"minLength":30,"maxLength":2048,"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["List-Unsubscribe"],"properties":{"List-Unsubscribe":{"type":"string","enum":["One-Click"]}}}}}},"responses":{"200":{"description":""}},"summary":"RFC 8058 one-click unsubscribe; no authentication or cookie required","tags":["Email links"]}},"/v1/mail/local-app":{"get":{"operationId":"MailPublicController_localApp","parameters":[{"name":"screen","required":false,"in":"query","schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Local development destination for app links","tags":["Email links"]}},"/v1/mail/fonts/{file}":{"get":{"operationId":"MailPublicController_font","parameters":[{"name":"file","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Licensed Montserrat font for compatible email clients","tags":["Email links"]}},"/v1/me/email-verification":{"get":{"operationId":"MailVerificationController_status","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Read verification of the current email address","tags":["Email verification"]},"post":{"operationId":"MailVerificationController_request","parameters":[],"responses":{"202":{"description":""}},"security":[{"bearer":[]}],"summary":"Request a new six-digit email code (10 minutes, 5 attempts)","tags":["Email verification"]}},"/v1/me/email-verification/confirm":{"post":{"operationId":"MailVerificationController_confirm","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationCodeDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Confirm the code and verify the current account email","tags":["Email verification"]}},"/v1/admin/mail/incidents":{"post":{"operationId":"MailIncidentsController_open","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenMailIncidentDto"}}}},"responses":{"201":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Record an observed sync incident and its affected accounts","tags":["Email administration"]}},"/v1/admin/mail/incidents/{id}/resolve":{"post":{"operationId":"MailIncidentsController_resolve","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Mark a recorded sync incident resolved and queue notices for affected accounts","tags":["Email administration"]}},"/v1/activities/{id}/share-email":{"post":{"operationId":"MailSystemShareController_record","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemShareDto"}}}},"responses":{"202":{"description":""}},"security":[{"bearer":[]}],"summary":"Queue an email copy of an owned activity card selected in the system share sheet","tags":["activities"]}},"/v1/me":{"get":{"operationId":"ProfileController_get","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]},"patch":{"operationId":"ProfileController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]},"delete":{"operationId":"ProfileController_deleteAccount","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountDto"}}}},"responses":{"202":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]}},"/v1/me/preferences":{"patch":{"operationId":"ProfileController_preferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePreferencesDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]}},"/v1/me/daily-status":{"get":{"description":"Only the bearer account can read this plain-text status. A missing or expired status returns 204 without a body; expiry is checked on every read, with no cache or cleanup job.","operationId":"ProfileController_dailyStatus","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyStatusResponseDto"},"example":{"text":"Treino concluído 🏃‍♀️","updatedAt":"2026-11-04T12:00:00.000Z","expiresAt":"2026-11-05T12:00:00.000Z"}}}},"204":{"description":"No current status, including an expired one."},"401":{"description":"A valid bearer session is required."}},"security":[{"bearer":[]}],"summary":"Read your current daily status","tags":["Profile"]},"put":{"description":"Only the bearer account can write. Send plain text of 1–140 user-perceived characters; joined emoji count as one. The server sets updatedAt and expiresAt in UTC, 24 hours apart. No userId, version or expiry is accepted from the client. Content moderation is pending a separate policy.","operationId":"ProfileController_putDailyStatus","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutDailyStatusDto"},"examples":{"status":{"summary":"Short plain-text status","value":{"text":"Treino concluído 🏃‍♀️"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyStatusResponseDto"},"example":{"text":"Treino concluído 🏃‍♀️","updatedAt":"2026-11-04T12:00:00.000Z","expiresAt":"2026-11-05T12:00:00.000Z"}}}},"400":{"description":"VALIDATION_ERROR for empty, oversized, markup or control-character text."},"401":{"description":"A valid bearer session is required."}},"security":[{"bearer":[]}],"summary":"Create or replace your daily status","tags":["Profile"]},"delete":{"description":"Idempotent. The bearer account deletes only its own status; repeated calls return 204.","operationId":"ProfileController_deleteDailyStatus","parameters":[],"responses":{"204":{"description":"Status removed or already absent."},"401":{"description":"A valid bearer session is required."}},"security":[{"bearer":[]}],"summary":"Delete your daily status","tags":["Profile"]}},"/v1/me/goals":{"get":{"operationId":"ProfileController_goals","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]},"post":{"operationId":"ProfileController_createGoal","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]}},"/v1/me/goals/{id}":{"put":{"operationId":"ProfileController_updateGoal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]},"delete":{"operationId":"ProfileController_deleteGoal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]}},"/v1/me/consents":{"get":{"operationId":"ProfileController_consents","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]},"post":{"operationId":"ProfileController_recordConsent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordConsentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Profile"]}},"/v1/me/onboarding":{"get":{"description":"The goal is the current trainingIntent from Profile. Name, avatar and body data remain in /me. Optional answers are never inferred from consent, activity or catalogue availability.","operationId":"OnboardingController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingViewDto"}}}},"401":{"description":"An active authenticated session is required."}},"security":[{"bearer":[]}],"summary":"Read your private, resumable sports onboarding","tags":["Onboarding"]},"put":{"description":"Use expectedVersion=0 initially and the returned version thereafter. Lists replace only the supplied section. availability=null skips that question; [] means no days currently available. Changing trainingIntent also requires its current expectedTrainingIntent. Saving never implicitly completes onboarding. Completed onboarding remains revisable.","operationId":"OnboardingController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOnboardingDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingViewDto"}}}},"401":{"description":"An active authenticated session is required."},"409":{"description":"ONBOARDING_VERSION_CONFLICT or ONBOARDING_PROFILE_CONFLICT: reload before retrying."}},"security":[{"bearer":[]}],"summary":"Save supplied answers or move backwards/forwards without losing omitted answers","tags":["Onboarding"]}},"/v1/me/onboarding/complete":{"post":{"description":"Requires the current expectedVersion. Completion creates no activity, prescription, subscription, permission or plan. A repeat with the current version preserves the original completion timestamp.","operationId":"OnboardingController_complete","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteOnboardingDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingViewDto"}}}},"401":{"description":"An active authenticated session is required."},"409":{"description":"ONBOARDING_VERSION_CONFLICT: reload before completing."}},"security":[{"bearer":[]}],"summary":"Explicitly finish onboarding, including when optional answers are skipped","tags":["Onboarding"]}},"/v1/today":{"get":{"operationId":"TodayController_overview","parameters":[{"name":"date","required":false,"in":"query","schema":{"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])))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TodayOverviewResponse"}}}}},"security":[{"bearer":[]}],"tags":["Today"]}},"/v1/today/editorial":{"get":{"operationId":"TodayEditorialController_catalogue","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TodayEditorialCatalogueDto"}}}}},"security":[{"bearer":[]}],"tags":["Today"]}},"/v1/admin/today/editorial/{key}":{"put":{"operationId":"AdminTodayEditorialController_publish","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"type":"string","format":"binary"},"expectedSha256":{"type":"string","description":"Current SHA-256, required when replacing existing artwork with different content."}}}}}},"responses":{"200":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Today administration"]}},"/v1/me/score/friends-preview":{"get":{"operationId":"ScoreController_friendsPreview","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreFriendsPreviewResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score/methodology":{"get":{"operationId":"ScoreController_methodology","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreMethodologyResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score/preferences":{"get":{"operationId":"ScoreController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorePreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]},"put":{"operationId":"ScoreController_save","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorePreferencesInputDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorePreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score/history":{"get":{"operationId":"ScoreController_history","parameters":[{"name":"from","required":true,"in":"query","schema":{"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])))$","type":"string"}},{"name":"to","required":true,"in":"query","schema":{"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])))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score/month":{"get":{"operationId":"ScoreController_month","parameters":[{"name":"month","required":true,"in":"query","schema":{"pattern":"^\\d{4}-(0[1-9]|1[0-2])$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreMonthResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score/revisions":{"get":{"operationId":"ScoreController_revisions","parameters":[{"name":"date","required":true,"in":"query","schema":{"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])))$","type":"string"}},{"name":"beforeRevision","required":false,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreRevisionsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score/recalculate":{"post":{"operationId":"ScoreController_recalculate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreRangeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/me/score":{"get":{"operationId":"ScoreController_day","parameters":[{"name":"date","required":false,"in":"query","schema":{"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])))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreDayResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["score-beta"]}},"/v1/admin/score/leaderboard":{"get":{"operationId":"AdminScoreController_leaderboard","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":10,"type":"integer"}}],"responses":{"200":{"description":"Highest current-day Kypace Scores among people who chose to share their Score (social visibility \"friends\", current consent policy, health-data consent accepted). Name, avatar and value only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminScoreLeaderboardDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin score"]}},"/v1/me/social-identity":{"get":{"operationId":"SocialDiscoveryController_identity","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialIdentityResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["social-discovery"]},"put":{"description":"Use commandId and expectedVersion. ASCII 3–30, lowercase; reserved identifiers are rejected. handle=null removes the current name, preserving your historical claims until account purge. This never changes discoverability or an existing UUID.","operationId":"SocialDiscoveryController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSocialIdentityDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialIdentityResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Explicitly choose, rename or remove your public identifier","tags":["social-discovery"]}},"/v1/social/handles/availability":{"get":{"operationId":"SocialDiscoveryController_availability","parameters":[{"name":"handle","required":true,"in":"query","schema":{"maxLength":64,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialHandleAvailabilityDto"}}}}},"security":[{"bearer":[]}],"tags":["social-discovery"]}},"/v1/social/profiles":{"get":{"description":"At least two characters. No activity, location, health or private profile fields are searched. Stable UUID order; live cursor pages recheck discovery choices and blocks.","operationId":"SocialDiscoveryController_search","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"minLength":1,"maxLength":512,"type":"string"}},{"name":"q","required":true,"in":"query","schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialProfilesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Search explicitly discoverable profiles by name or handle prefix","tags":["social-discovery"]}},"/v1/social/profiles/by-handle/{handle}":{"get":{"operationId":"SocialDiscoveryController_byHandle","parameters":[{"name":"handle","required":true,"in":"path","schema":{"maxLength":64,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialProfileResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["social-discovery"]}},"/v1/social/profiles/{userId}":{"get":{"operationId":"SocialDiscoveryController_byId","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialProfileResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["social-discovery"]}},"/v1/me/followers":{"get":{"operationId":"SocialDiscoveryController_followers","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"minLength":1,"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialRelationsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["social-discovery"]}},"/v1/me/following":{"get":{"operationId":"SocialDiscoveryController_following","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"minLength":1,"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialRelationsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["social-discovery"]}},"/v1/social/profiles/{userId}/avatar/{mediaId}":{"get":{"operationId":"SocialDiscoveryController_avatar","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"mediaId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"description":""}},"security":[{"bearer":[]}],"tags":["social-discovery"]}},"/v1/me/support-requests/policy":{"get":{"operationId":"SupportController_policy","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportPolicyDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]}},"/v1/me/support-requests":{"post":{"operationId":"SupportController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]},"get":{"operationId":"SupportController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportListResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]}},"/v1/me/support-requests/{id}":{"get":{"operationId":"SupportController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportRequestDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]}},"/v1/me/support-requests/{id}/messages":{"get":{"operationId":"SupportController_messages","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"beforeSequence","required":false,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessagesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]},"post":{"operationId":"SupportController_reply","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageInputDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]}},"/v1/me/support-requests/{id}/state":{"post":{"operationId":"SupportController_state","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportOwnerStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]}},"/v1/me/support-requests/{id}/context":{"delete":{"operationId":"SupportController_removeContext","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportCommandDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}}},"security":[{"bearer":[]}],"tags":["support"]}},"/v1/admin/support-requests/summary":{"get":{"operationId":"SupportAdminController_summary","parameters":[],"responses":{"200":{"description":"Real queue counts, by status, excluding deleted account requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportSummaryResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/recipients":{"get":{"operationId":"SupportAdminController_recipients","parameters":[{"name":"search","required":true,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}}],"responses":{"200":{"description":"Up to twenty active app accounts matching a name, for starting a support conversation. No email or private profile fields.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportRecipientsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests":{"post":{"operationId":"SupportAdminController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportAdminCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]},"get":{"operationId":"SupportAdminController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportQueueResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/{id}":{"get":{"operationId":"SupportAdminController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportRequestDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]},"put":{"operationId":"SupportAdminController_replaceState","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]},"patch":{"operationId":"SupportAdminController_updateState","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]},"delete":{"operationId":"SupportAdminController_close","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportCommandDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/{id}/messages":{"get":{"operationId":"SupportAdminController_messages","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"beforeSequence","required":false,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessagesResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]},"post":{"operationId":"SupportAdminController_reply","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageInputDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/{id}/notes":{"get":{"operationId":"SupportAdminController_notes","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Latest 100 internal notes. Assigned staff only; never returned by user endpoints.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportNotesResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]},"post":{"operationId":"SupportAdminController_note","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageInputDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/{id}/claim":{"post":{"operationId":"SupportAdminController_claim","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportCommandDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/{id}/release":{"post":{"operationId":"SupportAdminController_release","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportCommandDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/admin/support-requests/{id}/state":{"post":{"operationId":"SupportAdminController_state","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReceiptDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["support-admin"]}},"/v1/health/meals":{"get":{"operationId":"MealsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"minLength":1,"maxLength":512,"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"name":"to","required":true,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealsViewDto"}}}}},"security":[{"bearer":[]}],"summary":"List your active meals within an explicit interval of at most 31 days","tags":["meal-diary"]},"post":{"operationId":"HealthController_meals","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/meals/{id}":{"get":{"operationId":"MealsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealViewDto"}}}}},"security":[{"bearer":[]}],"tags":["meal-diary"]},"put":{"description":"Requires clientId and expectedVersion. Every nutrient and items is explicit or null. Source, analysis and external identity cannot be replaced. Portions follow the existing confirmation rules; unknown does not mean zero.","operationId":"MealsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceMealDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealViewDto"}}}}},"security":[{"bearer":[]}],"summary":"Replace all editable meal content with explicit reviewed values","tags":["meal-diary"]},"delete":{"description":"Requires clientId and expectedVersion plus an active session; health consent is not required to withdraw. Keeps only identity metadata and a minimal deletion receipt. Does not delete the independent photo or analysis. Old creation/edit replays cannot restore or disclose removed content.","operationId":"MealsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMealDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemovedMealDto"}}}}},"security":[{"bearer":[]}],"summary":"Withdraw an owned meal and erase its previous content and revisions","tags":["meal-diary"]}},"/v1/health/meals/{id}/revisions":{"get":{"operationId":"MealsController_revisions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"minLength":1,"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealRevisionsDto"}}}}},"security":[{"bearer":[]}],"tags":["meal-diary"]}},"/v1/activities/{id}/navigation-intent":{"get":{"operationId":"ActivityNavigationIntentController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityNavigationIntentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]},"post":{"operationId":"ActivityNavigationIntentController_set","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityNavigationIntentInputDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityNavigationIntentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/environment-captures":{"post":{"operationId":"ActivityEnvironmentController_capture","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureActivityEnvironmentDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityEnvironmentSnapshotDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]},"get":{"operationId":"ActivityEnvironmentController_history","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityEnvironmentHistoryDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities":{"post":{"operationId":"ActivityController_create","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateActivityDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]},"get":{"operationId":"ActivityController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}":{"get":{"operationId":"ActivityController_detail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]},"patch":{"operationId":"ActivityController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateActivityDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]},"delete":{"operationId":"ActivityDeletionController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteActivityDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityDeletionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/state":{"patch":{"operationId":"ActivityController_transition","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionActivityDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/samples":{"post":{"operationId":"ActivityController_ingest","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivitySamplesDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]},"get":{"operationId":"ActivityController_samples","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"afterSequence","required":false,"in":"query","schema":{"minimum":-1,"maximum":9007199254740991,"default":-1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":1000,"default":500,"type":"integer"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/import.gpx":{"post":{"operationId":"ActivityController_importGpx","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportGpxDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/laps":{"post":{"operationId":"ActivityController_laps","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityLapsDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/swim-lengths":{"post":{"operationId":"ActivityController_lengths","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwimLengthsDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/export.gpx":{"get":{"operationId":"ActivityController_exportGpx","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/history-summary":{"get":{"operationId":"ActivityInsightsController_history","parameters":[{"name":"month","required":false,"in":"query","schema":{"pattern":"^[1-9]\\d{3}-(0[1-9]|1[0-2])$","type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/insights":{"get":{"operationId":"ActivityInsightsController_insights","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityInsightsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/share-preview":{"post":{"operationId":"ActivityInsightsController_preview","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivitySharePreviewDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityShareResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]},"get":{"operationId":"CommunityController_sessionPreview","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunitySessionPreviewResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/activities/{id}/sensor-totals":{"put":{"operationId":"ActivityInsightsController_totals","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivitySensorTotalsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivitySensorTotalsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/me/activity-sharing":{"get":{"operationId":"ActivitySharingController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]},"put":{"operationId":"ActivitySharingController_save","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivitySharingPreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/me/activity-sharing/private-zones":{"get":{"operationId":"ActivitySharingController_zones","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPrivateZonesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]},"post":{"operationId":"ActivitySharingController_addZone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPrivateZoneDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityZoneCreatedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/me/activity-sharing/private-zones/{id}":{"delete":{"operationId":"ActivitySharingController_removeZone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityZoneDeletedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/dashboard":{"get":{"operationId":"ActivityDashboardController_summary","parameters":[{"name":"period","required":false,"in":"query","schema":{"default":"month","type":"string","enum":["week","month","year"]}},{"name":"date","required":false,"in":"query","schema":{"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])))$","type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityDashboardResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Private performance totals, daily coverage and equivalent calendar-period comparison","tags":["activities"]}},"/v1/activities/{id}/swim-intervals":{"post":{"operationId":"ActivitySwimController_intervals","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwimIntervalsDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwimIntervalsResultDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/swim-plan":{"put":{"operationId":"ActivitySwimController_plan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwimPlanDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwimPlanResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/activities/{id}/records":{"get":{"operationId":"ActivityRecordsController_records","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRecordsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/maps/google/capabilities":{"get":{"operationId":"GoogleMapsController_capabilities","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Google Maps Platform"]}},"/v1/maps/google/environment":{"post":{"description":"Active session and precise_location choice required. Resource failures are explicit and have null data. Google content must be attributed and displayed only on a Google map. Solar describes building energy potential, not current UV or athlete exposure. No location or provider response is persisted.","operationId":"GoogleMapsController_environment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Google air, pollen, weather and building solar observations","tags":["Google Maps Platform"]}},"/v1/maps/google/tiles/{layer}/{zoom}/{x}/{y}":{"get":{"description":"PNG only. Validated tile grid, per-account and shared daily quotas. Weather EU/US precipitation tiles are experimental. A missing tile is an error, never an invented image. Server key is never returned.","operationId":"GoogleMapsController_tile","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Authenticated native Google environmental tile","tags":["Google Maps Platform"]}},"/v1/maps/google/routes":{"post":{"description":"Google Routes API geometry, steps and warnings; running uses WALK and labels the walking time estimate. Guidance never replaces recorded GPS, sensor speed or energy.","operationId":"GoogleMapsController_route","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRoutePlanDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRoutePlanResponseDto"}}}},"404":{"description":"Google returned no route (GOOGLE_NO_ROUTE)."},"429":{"description":"Google or the local quota refused the route request."},"503":{"description":"Google Routes is unavailable, disabled or cannot be reached."}},"security":[{"bearer":[]}],"summary":"Real walking or cycling route for an athlete","tags":["Google Maps Platform"]}},"/v1/maps/google/routes/guidance/speech":{"post":{"description":"Recebe o texto de uma etapa da rota atual e devolve MP3 privado. O cliente mantém a rota na sessão; o backend não armazena localização ou instruções. Limite de 30 pedidos por conta em 24 horas e quatro pedidos por minuto.","operationId":"GoogleMapsController_guidanceSpeech","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleGuidanceSpeechDto"}}}},"responses":{"200":{"description":"Áudio MP3 da orientação","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Ouvir uma instrução curta de navegação","tags":["Google Maps Platform"]}},"/v1/maps/google/catalog/places/search":{"post":{"description":"Requires precise_location consent. Google attribution is required; geographic bias is not a hard boundary.","operationId":"GoogleCatalogController_search","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlaceSearchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlacesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Search Google Places with a real geographic bias","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/places/nearby":{"post":{"operationId":"GoogleCatalogController_nearby","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlaceNearbyDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlacesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Find Google Places inside a bounded search area","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/places/autocomplete":{"post":{"description":"Generate a new UUID per search session and reuse it in the selected place details request. Never persist predictions or photo names.","operationId":"GoogleCatalogController_autocomplete","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlaceAutocompleteDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePredictionsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Autocomplete Google Places in one search session","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/places/details":{"post":{"description":"Only explicit bounded field sets are requested. Missing provider values remain absent. The API key stays on the server.","operationId":"GoogleCatalogController_details","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlaceDetailsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlaceDetailsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve a selected Google Place","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/places/photo":{"post":{"description":"Fresh metadata and a validated Google image URL without an API key. Client must display author attribution and discard expired metadata. Photo names and image URLs are not cached.","operationId":"GoogleCatalogController_photo","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlacePhotoDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlacePhotoResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resolve a current Google Place photograph and its authors","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/geocode":{"post":{"description":"Requires precise_location consent; addresses and provider responses are not persisted.","operationId":"GoogleCatalogController_geocode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleGeocodeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleGeocodeResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Geocode an address with Google","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/reverse-geocode":{"post":{"operationId":"GoogleCatalogController_reverseGeocode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleReverseGeocodeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleGeocodeResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Reverse-geocode a coordinate with Google","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/elevation":{"post":{"description":"Elevation model results do not replace measured altitude or recorded GPS.","operationId":"GoogleCatalogController_elevation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleElevationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleElevationResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Query Google model elevations","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/time-zone":{"post":{"operationId":"GoogleCatalogController_timeZone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTimeZoneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTimeZoneResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resolve time zone and offsets for a supplied timestamp","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/roads":{"post":{"description":"Derived road matching only. Does not overwrite accepted GPS/Geo/Track, verify pedestrian access or assert exact athlete position.","operationId":"GoogleCatalogController_roads","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRoadsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRoadsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Obtain a Google Roads reference for supplied points","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/route-matrix":{"post":{"description":"At most 25 pairs. Every element is charged to the shared daily request budget before contacting Google. Per-element routing errors remain explicit.","operationId":"GoogleCatalogController_routeMatrix","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRouteMatrixDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRouteMatrixResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Compute an actual Google route matrix","tags":["Google Maps catalog"]}},"/v1/maps/google/catalog/products":{"get":{"description":"An enabled API is not marked functional. Private previews, licensing, OAuth, IAM, native integrations and enterprise subscriptions remain explicit requirements.","operationId":"GoogleCatalogEnterpriseController_catalog","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleProductCatalogResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Complete Google product inventory with requirements and evidence","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/address-validation":{"post":{"description":"Does not submit an order or save a customer address.","operationId":"GoogleCatalogEnterpriseController_validateAddress","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAddressValidationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAddressValidationResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Validate an explicitly supplied postal address","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/places-aggregate":{"post":{"operationId":"GoogleCatalogEnterpriseController_aggregatePlaces","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlacesAggregateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePlacesAggregateResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Compute Google Places aggregate insight for an explicit area","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/aerial-view":{"post":{"description":"Existing video only; does not submit a rendering job. Coverage and media state come from Google.","operationId":"GoogleCatalogEnterpriseController_aerialView","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAerialViewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAerialViewResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Look up an existing Aerial View video","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/isochrones":{"post":{"operationId":"GoogleCatalogEnterpriseController_isochrone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleIsochroneDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleIsochroneResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Compute an isochrone from an explicit origin and travel mode","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/geolocation":{"post":{"description":"Requires real Wi-Fi/cell observations; IP fallback is forbidden. This does not replace authoritative device GPS.","operationId":"GoogleCatalogEnterpriseController_geolocate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleGeolocationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleGeolocationResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resolve actual radio observations through Google Geolocation","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/admin/route-optimization":{"post":{"description":"Requires dedicated project OAuth/IAM. Calculation only; does not dispatch drivers or persist a route plan.","operationId":"GoogleCatalogEnterpriseController_optimizeTours","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRouteOptimizationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRouteOptimizationResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Calculate or validate an administrator-supplied fleet plan","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/admin/datasets/list":{"post":{"operationId":"GoogleCatalogEnterpriseController_listDatasets","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnterpriseListDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleDatasetListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read datasets owned by the configured Google Cloud project","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/admin/datasets/get":{"post":{"description":"Project identifiers are selected by the server. This endpoint does not import, update or delete datasets.","operationId":"GoogleCatalogEnterpriseController_getDataset","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleDatasetGetDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleDatasetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read one dataset from the configured project","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/street-view/photos/list":{"post":{"description":"Requires owner-bound OAuth and the streetviewpublish scope. Does not publish or alter any photograph.","operationId":"GoogleCatalogEnterpriseController_listOwnedStreetViewPhotos","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnterpriseListDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleStreetViewOwnedPhotosResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read photos of the currently authorized Street View owner","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/map-tiles/sessions":{"post":{"description":"Provider tokens stay on the server. Read viewport copyright before requesting image tiles.","operationId":"GoogleCatalogEnterpriseController_createTileSession","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTileSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTileSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a short-lived map tile lease for the current account","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/map-tiles/viewport":{"post":{"operationId":"GoogleCatalogEnterpriseController_tileViewport","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMapTileViewportDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMapTileViewportResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read viewport copyright and zoom coverage for an owned tile lease","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/map-tiles/tile":{"post":{"operationId":"GoogleCatalogEnterpriseController_tile","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMapTileDto"}}}},"responses":{"200":{"description":"","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Read a validated raster tile for an owned, attributed map viewport","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/navigation/trips/get":{"post":{"description":"Ownership is revalidated by the server on each request. Trip tokens and app identifiers are excluded from the response.","operationId":"GoogleCatalogEnterpriseController_navigationTrip","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleNavigationTripDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleNavigationTripResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read an existing consented Navigation Connect trip","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/grounding/resolve-names":{"post":{"description":"Up to twenty explicit queries. Per-index resolution failures remain present; no generated claim or place is substituted.","operationId":"GoogleCatalogEnterpriseController_resolveNames","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleResolveNamesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleResolveNamesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resolve supplied place names using Google Maps Grounding Lite","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/grounding/resolve-urls":{"post":{"description":"Only validated Google Maps URLs are submitted as data to a fixed provider endpoint. This is not an arbitrary URL proxy.","operationId":"GoogleCatalogEnterpriseController_resolveMapsUrls","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleResolveMapsUrlsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleResolveMapsUrlsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resolve supported Google Maps URLs with the provider","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/enterprise/admin/roads-speed-limits":{"post":{"description":"Requires a verified Asset Tracking license and explicit server enablement. At most twenty-five road segment place IDs; each consumes shared budget. Values are not real-time and never replace measured athlete speed.","operationId":"GoogleCatalogEnterpriseController_speedLimits","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRoadSpeedLimitsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleRoadSpeedLimitsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read licensed posted automobile speed limits","tags":["Google Maps enterprise catalog"]}},"/v1/maps/google/catalog/static/map":{"post":{"description":"Preserve original image dimensions and embedded Google attribution. The server never returns the signed URL or API key. Recorded route gaps remain separate paths.","operationId":"GoogleCatalogStaticController_staticMap","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleStaticMapRequestDto"}}}},"responses":{"200":{"description":"","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/gif":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Read an actual Google Static Map with bounded geometry","tags":["Google Maps static imagery"]}},"/v1/maps/google/catalog/static/street-view/metadata":{"post":{"description":"Capture date, panorama and copyright come from Google. Missing coverage is explicit.","operationId":"GoogleCatalogStaticController_streetViewMetadata","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleStreetViewMetadataRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleStreetViewStaticMetadataResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Check Street View imagery coverage and source metadata","tags":["Google Maps static imagery"]}},"/v1/maps/google/catalog/static/street-view/image":{"post":{"description":"Fresh metadata is validated before retrieving its panorama. Error images and provider warnings are rejected. Preserve the embedded attribution.","operationId":"GoogleCatalogStaticController_streetViewImage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleStreetViewImageRequestDto"}}}},"responses":{"200":{"description":"","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Read a verified Google Street View image","tags":["Google Maps static imagery"]}},"/v1/maps/google/catalog/environment/air/history":{"post":{"description":"Choose hours, dateTime or inclusive period. Page size is bounded to 168. Requires precise_location consent. The nextCursor belongs to this account and unchanged query, and expires within five minutes.","operationId":"GoogleCatalogEnvironmentController_airHistory","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentAirHistoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentAirHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve up to 720 hours of Google air-quality history","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/air/forecast":{"post":{"description":"Choose dateTime or inclusive period, beginning with the next hour. At most 24 records per page. Forecasts retain their provider timestamps and never become measured athlete exposure.","operationId":"GoogleCatalogEnvironmentController_airForecast","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentAirForecastDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentAirForecastResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve Google hourly air-quality forecasts within the next 96 hours","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/weather/forecast-hours":{"post":{"description":"Metric units, at most 24 hours per page. Every requested page passes consent, account throttle and the shared daily provider budget.","operationId":"GoogleCatalogEnvironmentController_weatherForecastHours","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherForecastHoursDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherForecastHoursResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve up to 240 hours of Google weather forecasts","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/weather/forecast-days":{"post":{"description":"Includes available day/night conditions, temperatures and astronomical events. Dates use the provider time zone; daylight-saving days retain their actual intervals.","operationId":"GoogleCatalogEnvironmentController_weatherForecastDays","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherForecastDaysDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherForecastDaysResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve up to ten days of Google weather forecasts","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/weather/history-hours":{"post":{"description":"Historical regional observations remain separate from real-time sensor readings. Missing fields are not replaced with zero.","operationId":"GoogleCatalogEnvironmentController_weatherHistory","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherHistoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve the previous 24 complete hours of Google weather history","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/weather/alerts":{"post":{"description":"Preserves issuer, instructions, severity and expiration. A query is limited to 100 records with at most 20 per page. An empty result is not a guarantee that no danger exists.","operationId":"GoogleCatalogEnvironmentController_weatherAlerts","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherAlertsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentWeatherAlertsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Retrieve official public weather alerts intersecting the supplied location","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/solar/data-layers":{"post":{"description":"Returns imagery dates, quality and available layers without provider URLs or credentials. Solar data is a building energy model, not current UV, shade or athlete exposure. Render Google imagery only on Google maps with attribution.","operationId":"GoogleCatalogEnvironmentController_solarDataLayers","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentSolarDataLayersDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentSolarDataLayersResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resolve available Google Solar GeoTIFF layers for a bounded area","tags":["Google environmental catalog"]}},"/v1/maps/google/catalog/environment/solar/geo-tiff":{"post":{"description":"Accepts coordinates and a layer, with month 1–12 for hourly shade. No client-supplied asset ID or URL is accepted. Each call rechecks consent, resolves data layers and charges both provider requests. Maximum 32 MiB, two simultaneous downloads and one per account.","operationId":"GoogleCatalogEnvironmentController_solarGeoTiff","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleEnvironmentSolarGeoTiffDto"}}}},"responses":{"200":{"description":"","content":{"image/tiff":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Download one freshly resolved, verified Google Solar GeoTIFF","tags":["Google environmental catalog"]}},"/v1/admin/maps/google/tiles/sessions":{"post":{"operationId":"AdminGoogleTilesController_session","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTileSessionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTileSessionResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"summary":"Create a short-lived Google map tile lease for the admin web","tags":["Admin maps"],"security":[{"bearer":[]}]}},"/v1/admin/maps/google/tiles/viewport":{"post":{"operationId":"AdminGoogleTilesController_viewport","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMapTileViewportDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMapTileViewportResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"summary":"Read the copyright to show for an admin map viewport","tags":["Admin maps"],"security":[{"bearer":[]}]}},"/v1/admin/maps/google/tiles/tile":{"post":{"operationId":"AdminGoogleTilesController_tile","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMapTileDto"}}}},"responses":{"200":{"description":"","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"summary":"Read one raster tile of an admin map lease","tags":["Admin maps"],"security":[{"bearer":[]}]}},"/v1/me/voice-preferences":{"get":{"description":"The locale follows the existing account app-language preference. Revision zero returns defaults without writing data.","operationId":"AiVoicePreferencesController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get account voice choices for the Coach and activity guidance","tags":["Voice preferences"]},"patch":{"operationId":"AiVoicePreferencesController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoicePreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreferencesResponseDto"}}}},"409":{"description":"VOICE_PREFERENCES_CONFLICT: reload preferences before applying the change again."}},"security":[{"bearer":[]}],"tags":["Voice preferences"]}},"/v1/voice/catalogue":{"get":{"description":"Voice names come from the configured provider account. Unavailable voices are explicit; provider identifiers and credentials are never returned. Equalizer is unsupported.","operationId":"AiVoicePreferencesController_catalogue","parameters":[{"name":"locale","required":false,"in":"query","schema":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCatalogueResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Discover available masculine and feminine voices and supported controls","tags":["Voice preferences"]}},"/v1/voice/preview":{"post":{"description":"Requires an active account, accepts a supported app locale, returns private MP3, and consumes a separate preview quota. It never records a conversation or changes preferences.","operationId":"AiVoicePreferencesController_preview","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePreviewDto"}}}},"responses":{"200":{"description":"","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Listen to a fixed sample without saving the voice choice","tags":["Voice preferences"]}},"/v1/voice/cues/catalogue":{"get":{"description":"The backend owns the eight-language catalogue. The selected map voice profile applies to these cues. No arbitrary speech or health measurements are accepted.","operationId":"AiVoiceCuesController_catalogue","parameters":[{"name":"locale","required":true,"in":"query","schema":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCueCatalogueResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Discover fixed activity guidance and bounded numeric parameters","tags":["Activity voice cues"]}},"/v1/voice/cues/prepare":{"post":{"description":"Idempotent by account, selected voice profile, locale and cue list. At most 64 cues, 100 characters per cue and 4000 per pack. Only cache misses consume the separate 128 cues / 8000 characters budget per rolling 24-hour window. Generation runs off the request path with global concurrency two. Poll while pending and download ready audio before use. Failed attempts remain visible for at least 60 seconds before an explicit new prepare can try again. Neither polling nor playback invokes the provider.","operationId":"AiVoiceCuesController_prepare","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareVoiceCuesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCuePackResponseDto"}}}},"429":{"description":"VOICE_CUE_QUOTA_EXCEEDED; already cached cues remain available."},"503":{"description":"VOICE_CUES_DISABLED, VOICE_CUE_QUEUE_BUSY or provider unavailable. Use explicit device guidance."}},"security":[{"bearer":[]}],"summary":"Prepare a private pack before the activity","tags":["Activity voice cues"]}},"/v1/voice/cues/packs/{id}":{"get":{"description":"Use serverTime to anchor expiresAt on a monotonic clock. Cache on device only for this account, API origin, locale and voice revision; clear it on logout and preference changes. Device speech is an explicit fallback, never described as the selected provider timbre.","operationId":"AiVoiceCuesController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCuePackResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Recover the authoritative private voice pack","tags":["Activity voice cues"]}},"/v1/voice/cues/packs/{id}/audio/{cueId}":{"get":{"description":"JWT required on each read. Private MP3, at most 512 KiB, no redirects. Downloads do not synthesize audio. Prepare and download during setup; playback during countdowns and repetitions needs no network.","operationId":"AiVoiceCuesController_audio","parameters":[{"name":"id","required":true,"in":"path","schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}},{"name":"cueId","required":true,"in":"path","schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}}],"responses":{"200":{"description":"","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Download an authorized cue without a public or signed media URL","tags":["Activity voice cues"]}},"/v1/weather/forecast":{"post":{"description":"Authenticated point forecast. Coordinates are rounded to two decimals before the external call, never written to a user profile, and not used for advertising. Current conditions, daily high/low, wind and hourly forecasts feed deterministic English-UK copy. A stale cache is explicitly labelled. This is not a route, terrain or mountain-safety assessment. The Android app obtains OS location permission and displays the provider attribution.","operationId":"WeatherController_forecast","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeatherRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeatherResponseDto"}}}},"400":{"description":"VALIDATION_ERROR. Invalid coordinates, units or additional request fields.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"401":{"description":"AUTHENTICATION_REQUIRED, INVALID_ACCESS_TOKEN or SESSION_REVOKED. An active local bearer session is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"429":{"description":"AUTH_RATE_LIMITED for account limits, including 12 weather requests per minute, or RATE_LIMITED for the HTTP IP limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}},"503":{"description":"WEATHER_DISABLED or WEATHER_UNAVAILABLE. Hide the card or show an unavailable state; do not invent weather.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get local weather and the Figma WeatherBand for a location supplied by the app","tags":["Weather"]}},"/v1/me/achievements":{"get":{"operationId":"AchievementsController_summary","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Distance milestones and personal longest activities, with the first supporting activity per sport","tags":["achievements"]}},"/v1/me/achievements/history":{"get":{"description":"Paginated award, revocation, restoration and supporting-evidence transitions for the authenticated account. No other user history is exposed.","operationId":"AchievementsController_history","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"awardId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"event","required":false,"in":"query","schema":{"type":"string","enum":["earned","revoked","restored","support_updated"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar histórico privado de conquistas","tags":["achievements"]}},"/v1/me/achievements/{id}":{"get":{"description":"The ID identifies an award, not a catalogue definition. Only its owner can read the historical snapshot and supporting record identifiers.","operationId":"AchievementsController_detail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementAwardDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar uma conquista recebida pelo usuário","tags":["achievements"]}},"/v1/achievements":{"get":{"description":"Only enabled publications and their private signed images are returned. This editorial catalogue does not imply that the user has earned an achievement.","operationId":"AchievementCatalogueController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]}},{"name":"metric","required":false,"in":"query","schema":{"type":"string","enum":["single_activity_distance","training_plan_completion"]}},{"name":"planId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementCatalogueDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar catálogo de conquistas disponíveis","tags":["achievements"]}},"/v1/achievements/{id}":{"get":{"operationId":"AchievementCatalogueController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementDefinitionDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar objetivo e imagem de uma conquista disponível","tags":["achievements"]}},"/v1/admin/achievements":{"get":{"operationId":"AdminAchievementsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]}},{"name":"metric","required":false,"in":"query","schema":{"type":"string","enum":["single_activity_distance","training_plan_completion"]}},{"name":"planId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAchievementCatalogueDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, immutable publication, duplicate code/version or invalid catalogue reference."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar definições versionadas de conquistas","tags":["achievement administration"]},"post":{"description":"Select an existing image asset. Published definitions are immutable; create an explicit new version to change their objective or image.","operationId":"AdminAchievementsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAchievementDefinitionDto"},"examples":{"distance":{"value":{"code":"distance:running:2000","version":1,"name":"Primeiros 2 km","description":"Conclua uma única corrida de pelo menos 2 km com distância elegível registrada.","metric":"single_activity_distance","sport":"running","targetValue":2000,"planId":null,"assetId":"00000000-0000-4000-8000-000000000001","objective":null,"enabled":true,"published":false}},"trainingPlan":{"value":{"code":"training:hypertrophy:beginner:v1","version":1,"name":"Força: iniciante","description":"Conclua todas as sessões deste plano com uma atividade elegível distinta vinculada a cada sessão.","metric":"training_plan_completion","sport":null,"targetValue":null,"planId":"00000000-0000-4000-8000-000000000002","assetId":"00000000-0000-4000-8000-000000000001","objective":"all_sessions_with_eligible_activity","enabled":true,"published":false}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAchievementDefinitionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, immutable publication, duplicate code/version or invalid catalogue reference."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar uma conquista por distância ou conclusão de plano","tags":["achievement administration"]}},"/v1/admin/achievements/{id}":{"get":{"operationId":"AdminAchievementsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAchievementDefinitionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, immutable publication, duplicate code/version or invalid catalogue reference."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar definição de conquista","tags":["achievement administration"]},"put":{"description":"Full editorial replacement with expectedRevision. Code and version cannot change. A published definition requires a new version.","operationId":"AdminAchievementsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceAchievementDefinitionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAchievementDefinitionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, immutable publication, duplicate code/version or invalid catalogue reference."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir rascunho de conquista","tags":["achievement administration"]},"patch":{"description":"expectedRevision is mandatory. After publication only enabled may change. Disabling prevents new awards and preserves the existing award history.","operationId":"AdminAchievementsController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAchievementDefinitionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAchievementDefinitionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, immutable publication, duplicate code/version or invalid catalogue reference."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Editar, publicar, ativar ou desativar conquista","tags":["achievement administration"]},"delete":{"description":"Requires expectedRevision. Existing user awards and their audit trail remain available.","operationId":"AdminAchievementsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, immutable publication, duplicate code/version or invalid catalogue reference."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente conquista","tags":["achievement administration"]}},"/v1/admin/achievements/assets":{"get":{"operationId":"AdminAchievementAssetsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementAssetsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate key or ACHIEVEMENT_ASSET_IMMUTABLE: create a new asset for artwork already published or awarded."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar imagens de conquistas","tags":["achievement asset administration"]},"post":{"description":"Send metadata JSON and image. The backend decodes the raster, strips metadata and stores a sanitized PNG plus a lossless WebP with transparency.","operationId":"AdminAchievementAssetsController_create","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","image"],"properties":{"metadata":{"type":"string","description":"JSON with key, name, optional source and enabled.","example":"{\"key\":\"running-emblem-01\",\"name\":\"Emblema de corrida\",\"source\":{\"provider\":\"figma\",\"fileKey\":\"YSk9ZEJOeFF9In9ygoX06C\",\"nodeId\":\"108:3872\"},\"enabled\":true}"},"image":{"type":"string","format":"binary","description":"One PNG, JPEG or WebP, at most 10 MiB. Alpha is retained. SVG and animated images are not accepted."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementAssetDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate key or ACHIEVEMENT_ASSET_IMMUTABLE: create a new asset for artwork already published or awarded."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar imagem de conquista no armazenamento privado","tags":["achievement asset administration"]}},"/v1/admin/achievements/assets/{id}":{"get":{"operationId":"AdminAchievementAssetsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementAssetDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate key or ACHIEVEMENT_ASSET_IMMUTABLE: create a new asset for artwork already published or awarded."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar imagem de conquista com URLs temporárias privadas","tags":["achievement asset administration"]},"put":{"description":"Send complete metadata with expectedRevision; image is optional. Referenced published images are immutable and require a new asset ID.","operationId":"AdminAchievementAssetsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata"],"properties":{"metadata":{"type":"string","description":"JSON with key, name, optional source and enabled. expectedRevision is required. Omitted source is cleared.","example":"{\"key\":\"running-emblem-01\",\"name\":\"Emblema de corrida\",\"source\":{\"provider\":\"figma\",\"fileKey\":\"YSk9ZEJOeFF9In9ygoX06C\",\"nodeId\":\"108:3872\"},\"enabled\":true,\"expectedRevision\":1}"},"image":{"type":"string","format":"binary","description":"One PNG, JPEG or WebP, at most 10 MiB. Alpha is retained. SVG and animated images are not accepted."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementAssetDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate key or ACHIEVEMENT_ASSET_IMMUTABLE: create a new asset for artwork already published or awarded."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir imagem ainda não publicada","tags":["achievement asset administration"]},"patch":{"operationId":"AdminAchievementAssetsController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAchievementAssetDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementAssetDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate key or ACHIEVEMENT_ASSET_IMMUTABLE: create a new asset for artwork already published or awarded."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Atualizar metadados de imagem ainda não publicada","tags":["achievement asset administration"]},"delete":{"description":"Requires expectedRevision. Image bytes are retained for storage reconciliation; images referenced by published definitions or awards cannot be deleted.","operationId":"AdminAchievementAssetsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate key or ACHIEVEMENT_ASSET_IMMUTABLE: create a new asset for artwork already published or awarded."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente imagem ainda não publicada","tags":["achievement asset administration"]}},"/v1/activity/modality-images":{"get":{"operationId":"ActivityModalityImagesController_catalogue","parameters":[],"responses":{"200":{"description":"Enabled modality images, with private signed URLs valid for expiresIn seconds. The client renders a neutral placeholder when a modality has no published image.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModalityImageCatalogueDto"}}}}},"security":[{"bearer":[]}],"tags":["activity modality images"]}},"/v1/admin/activity/modality-images":{"get":{"operationId":"AdminActivityModalityImagesController_list","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModalityImageCatalogueDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity modality image administration"]},"post":{"operationId":"AdminActivityModalityImagesController_create","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","image"],"properties":{"metadata":{"type":"string","description":"JSON: key (running, walking, cycling, gym, swimming or trail) and enabled (optional).","example":"{\"key\":\"running\",\"enabled\":true}"},"image":{"type":"string","format":"binary","description":"Portrait JPEG, PNG or WebP, at least 1080 × 1600 px and at most 10 MiB. Generates the 1080 × 1920 full-screen WebP crop and, without a separate card, the 1200 × 600 card crop."},"card":{"type":"string","format":"binary","description":"Optional separate landscape JPEG, PNG or WebP for the card, at least 1200 × 600 px and at most 10 MiB. Preserves its composition in the 1200 × 600 WebP output."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModalityImageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity modality image administration"]}},"/v1/admin/activity/modality-images/{key}":{"get":{"operationId":"AdminActivityModalityImagesController_get","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModalityImageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity modality image administration"]},"put":{"operationId":"AdminActivityModalityImagesController_replace","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","image"],"properties":{"metadata":{"type":"string","description":"JSON: enabled and expectedRevision.","example":"{\"enabled\":true,\"expectedRevision\":1}"},"image":{"type":"string","format":"binary","description":"Portrait JPEG, PNG or WebP, at least 1080 × 1600 px and at most 10 MiB. Generates the 1080 × 1920 full-screen WebP crop and, without a separate card, the 1200 × 600 card crop."},"card":{"type":"string","format":"binary","description":"Optional separate landscape JPEG, PNG or WebP for the card, at least 1200 × 600 px and at most 10 MiB. Preserves its composition in the 1200 × 600 WebP output."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModalityImageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity modality image administration"]},"patch":{"operationId":"AdminActivityModalityImagesController_patch","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModalityImagePatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModalityImageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity modality image administration"]},"delete":{"operationId":"AdminActivityModalityImagesController_remove","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity modality image administration"]}},"/v1/activities/{id}/explanation":{"get":{"operationId":"ActivityExplanationController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"locale","required":false,"in":"query","schema":{"default":"en-GB","type":"string","enum":["en-GB","pt-PT"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations"]}},"/v1/activities/{id}/explanation/generations":{"post":{"operationId":"ActivityExplanationController_generate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationGenerationDto"}}}},"responses":{"202":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations"]}},"/v1/activities/{id}/explanation/revisions/{revisionId}/feedback":{"put":{"operationId":"ActivityExplanationController_feedback","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationFeedbackDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationFeedbackResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations"]}},"/v1/me/activity-explanations/preferences":{"get":{"operationId":"ActivityExplanationPreferencesController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations"]},"put":{"operationId":"ActivityExplanationPreferencesController_put","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationPreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations"]}},"/v1/admin/activity-explanation-reports":{"get":{"operationId":"ActivityExplanationReportsController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationReportsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations-admin"]}},"/v1/admin/activity-explanation-reports/{revisionId}":{"put":{"operationId":"ActivityExplanationReportsController_review","parameters":[{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplanationReviewResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["activity-explanations-admin"]}},"/v1/me/activity-recordings/by-activity/{activityId}":{"get":{"operationId":"ActivityRecordingController_metadata","parameters":[{"name":"activityId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingMetadataResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recordings/{clientActivityId}":{"get":{"operationId":"ActivityRecordingController_byClient","parameters":[{"name":"clientActivityId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordedActivityResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recording-contexts":{"get":{"operationId":"ActivityRecordingController_contexts","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingContextsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recording-contexts/{contextId}":{"get":{"operationId":"ActivityRecordingController_context","parameters":[{"name":"contextId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingContextResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recording-contexts/{contextId}/reserve":{"post":{"operationId":"ActivityRecordingController_reserve","parameters":[{"name":"contextId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReserveRecordingDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingCommandResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recording-contexts/{contextId}/confirm-start":{"post":{"operationId":"ActivityRecordingController_confirm","parameters":[{"name":"contextId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmRecordingDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingCommandResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recording-contexts/{contextId}/cancel-reservation":{"post":{"operationId":"ActivityRecordingController_cancel","parameters":[{"name":"contextId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelRecordingDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingCommandResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/me/activity-recording-contexts/{contextId}/resolve":{"post":{"operationId":"ActivityRecordingController_resolve","parameters":[{"name":"contextId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveRecordingDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingCommandResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["activity-recording"]}},"/v1/routes/search":{"get":{"operationId":"RoutesSearchController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"minLength":3,"maxLength":120,"type":"string"}},{"name":"origin","required":false,"in":"query","schema":{"default":"manual","type":"string","enum":["manual","device_location"]}},{"name":"lat","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"lon","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteSearchResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/preview":{"post":{"operationId":"RoutesController_preview","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutePreviewDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutePreviewResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/suggestions":{"post":{"operationId":"RoutesController_suggestions","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteSuggestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteSuggestionsResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/import.gpx":{"post":{"operationId":"RoutesController_importGpx","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteGpxImportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutePreviewResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes":{"post":{"operationId":"RoutesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]},"get":{"operationId":"RoutesController_list","parameters":[{"name":"scope","required":false,"in":"query","schema":{"default":"mine","type":"string","enum":["mine","saved","nearby","friends"]}},{"name":"q","required":false,"in":"query","schema":{"maxLength":120,"type":"string"}},{"name":"lat","required":false,"in":"query","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"lon","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"radius","required":false,"in":"query","schema":{"minimum":100,"maximum":50000,"default":5000,"type":"integer"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","walking","cycling"]}},{"name":"favouritesOnly","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"minLength":1,"maxLength":1024,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteListResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}":{"get":{"operationId":"RoutesController_detail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]},"patch":{"operationId":"RoutesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteUpdateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]},"delete":{"operationId":"RoutesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}/revisions/{revisionId}":{"get":{"operationId":"RoutesController_revision","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}/saved":{"put":{"operationId":"RoutesController_save","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]},"delete":{"operationId":"RoutesController_unsave","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}/favourite":{"put":{"operationId":"RoutesController_favourite","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteFavouriteDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}/share":{"get":{"operationId":"RoutesController_share","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteShareResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}/offline":{"get":{"operationId":"RoutesController_offline","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOfflineResponse"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/routes/{id}/export.gpx":{"get":{"operationId":"RoutesController_gpx","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/gpx+xml":{"schema":{"type":"string"}}}}},"security":[{"bearer":[]}],"tags":["Routes"]}},"/v1/maps/destinations":{"get":{"operationId":"MapboxDestinationsController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"minLength":3,"maxLength":120,"type":"string"}},{"name":"language","required":false,"in":"query","schema":{"default":"pt","type":"string","enum":["pt","en","es","fr","nl","de"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapboxDestinationSearchResponse"}}}}},"security":[{"bearer":[]}],"tags":["Maps"]}},"/v1/segments":{"post":{"operationId":"SegmentController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSegmentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["segments"]},"get":{"operationId":"SegmentController_list","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["segments"]}},"/v1/segments/{id}":{"delete":{"operationId":"SegmentController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["segments"]}},"/v1/activities/{id}/segment-matches":{"get":{"operationId":"SegmentActivityController_matches","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["activities"]}},"/v1/radar/preferences":{"get":{"operationId":"RadarController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]},"put":{"operationId":"RadarController_updatePreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/presence":{"get":{"operationId":"RadarController_status","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarStatusResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]},"put":{"operationId":"RadarController_publish","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPresenceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPublishResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]},"delete":{"operationId":"RadarController_leave","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarLeaveResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/areas":{"get":{"operationId":"RadarController_areas","parameters":[{"name":"q","required":true,"in":"query","schema":{"minLength":2,"maxLength":80,"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarAreasResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/explore":{"post":{"operationId":"RadarController_explore","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarExploreDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarExploreResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/list":{"get":{"operationId":"RadarController_list","parameters":[{"name":"areaId","required":false,"in":"query","schema":{"pattern":"^osm:(node|way):[1-9]\\d{0,18}$","type":"string"}},{"name":"radiusM","required":false,"in":"query","schema":{"minimum":300,"maximum":10000,"default":3000,"type":"integer"}},{"name":"afterId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarListResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/alerts":{"get":{"description":"Reciprocal: without your own accepted precise_location choice (Show on KYRadar) the answer is 200 with status reciprocity_required and no items. One areaId or one coordinate pair; the origin is approximated and never stored. Same visibility rules as explore; approximate distance bands and area labels only, never coordinates. Poll again after pollAfterSeconds.","operationId":"RadarController_alerts","parameters":[{"name":"latitude","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"accuracyM","required":false,"in":"query","schema":{"minimum":0,"maximum":5000,"type":"number"}},{"name":"areaId","required":false,"in":"query","schema":{"pattern":"^osm:(node|way):[1-9]\\d{0,18}$","type":"string"}},{"name":"radiusM","required":false,"in":"query","schema":{"minimum":300,"maximum":10000,"default":3000,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarAlertsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Poll LiveAlerts about followed people doing an activity nearby","tags":["Radar"]}},"/v1/radar/private-zones":{"get":{"operationId":"RadarController_zones","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPrivateZonesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]},"post":{"operationId":"RadarController_createZone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarPrivateZoneDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarZoneCreatedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/private-zones/{id}":{"delete":{"operationId":"RadarController_removeZone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarZoneDeletedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/nearby":{"get":{"operationId":"RadarController_nearby","parameters":[{"name":"radiusM","required":false,"in":"query","schema":{"minimum":300,"maximum":10000,"default":2000,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarNearbyResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/invites":{"post":{"operationId":"RadarSocialController_createInvite","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Ask a mutual follower on KyRadar to train together (30 s to answer)","tags":["Radar"]},"get":{"description":"Use status=accepted on reconnect to recover an active accepted request; status=all also includes terminal results from the last day.","operationId":"RadarSocialController_invites","parameters":[{"name":"direction","required":false,"in":"query","schema":{"default":"incoming","type":"string","enum":["incoming","outgoing"]}},{"name":"status","required":false,"in":"query","schema":{"default":"pending","type":"string","enum":["pending","accepted","all"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"","tags":["Radar"]}},"/v1/radar/invites/{id}":{"get":{"operationId":"RadarSocialController_invite","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/invites/{id}/accept":{"post":{"description":"Idempotent for the same recipient and invite. The accepted meetup is committed with the invite before the response or event.","operationId":"RadarSocialController_accept","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteResponseDto"}}}},"409":{"description":"Invite expired or another terminal result won the race (RADAR_INVITE_CLOSED)."}},"security":[{"bearer":[]}],"summary":"","tags":["Radar"]}},"/v1/radar/invites/{id}/decline":{"post":{"operationId":"RadarSocialController_decline","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/invites/{id}/cancel":{"post":{"operationId":"RadarSocialController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarInviteResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/live":{"put":{"operationId":"RadarSocialController_startLive","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarLiveStartDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Share the recording activity live with mutual followers","tags":["Radar"]},"delete":{"operationId":"RadarSocialController_stopLive","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/live/points":{"post":{"operationId":"RadarSocialController_publishLive","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarLivePublishDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/live/{userId}":{"get":{"operationId":"RadarSocialController_live","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/meetups/{id}":{"get":{"description":"Authoritative state after reconnect: active, ended or expired. Two private fixes within 20 m, each at most 20 m accurate and 30 s old, persist proximityRecognizedAt and phase=met without setting manual arrivalConfirmedAt. Positions are null when missing, stale or unavailable; positionState distinguishes them.","operationId":"RadarSocialController_meetup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"","tags":["Radar"]}},"/v1/radar/meetups/{id}/on-the-way":{"post":{"description":"Inviter only. Persists the notice without starting an activity. meetup:updated carries the inviter name and temporary avatar URL to the invited participant; GET /meetups/:id recovers it after reconnect.","operationId":"RadarSocialController_onTheWay","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Tell the invited participant that the inviter is on the way","tags":["Radar"]}},"/v1/radar/meetups/{id}/arrival/confirm":{"post":{"description":"Records this participant’s manual confirmation. The phase becomes met after both confirmations or qualifying GPS proximity; automatic recognition leaves arrivalConfirmedAt unchanged and never starts exercise.","operationId":"RadarSocialController_confirmArrival","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Explicitly confirm this participant has reached the meeting point","tags":["Radar"]}},"/v1/radar/meetups/{id}/training/start":{"post":{"description":"Requires recognized proximity or both manual arrival confirmations. The phase becomes training after both participants confirm this action. No activity is created or started by the backend.","operationId":"RadarSocialController_confirmTraining","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Explicitly confirm this participant chose to start training","tags":["Radar"]}},"/v1/radar/meetups/{id}/renew":{"post":{"description":"Either participant may renew during the last 30 minutes of the current lease. A fresh position update also renews it. Each lease is two hours, with an absolute twelve-hour limit from acceptance. A closed meetup cannot be revived.","operationId":"RadarSocialController_renew","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Renew an active private-location meetup within its bounded lifetime","tags":["Radar"]}},"/v1/radar/voice/capabilities":{"get":{"operationId":"RadarSocialController_voiceCapabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarVoiceCapabilityDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/meetups/{id}/voice/join":{"post":{"description":"Issues this participant a Chime token for the meetup room; it does not ring or notify the other participant. For an incoming call, create a direct conversation voice call and have both participants join that callId.","operationId":"RadarSocialController_joinVoice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarVoiceJoinResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Join a private audio call for the two participants of an active accepted meetup","tags":["Radar"]}},"/v1/radar/meetups/{id}/voice/leave":{"post":{"operationId":"RadarSocialController_leaveVoice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/radar/meetups/{id}/location":{"post":{"description":"An accepted current fix may recognize proximity when both participants are within 20 m geographically, each fix is at most 20 m accurate, at most 30 s old and measured after acceptance. Recognition persists phase=met and emits meetup:updated to both users; it does not start training.","operationId":"RadarSocialController_meetupLocation","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupLocationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupLocationResultDto"}}}},"409":{"description":"The meetup ended or expired (RADAR_MEETUP_CLOSED)."},"503":{"description":"The position store is unavailable (RADAR_MEETUP_LOCATION_UNAVAILABLE)."}},"security":[{"bearer":[]}],"summary":"Publish a private GPS fix to the other meetup participant","tags":["Radar"]}},"/v1/radar/meetups/{id}/end":{"post":{"operationId":"RadarSocialController_endMeetup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarMeetupEndResultDto"}}}}},"security":[{"bearer":[]}],"tags":["Radar"]}},"/v1/me/notifications":{"get":{"description":"QuickTips usam type health_reminder e target { type: quick_tip, id: UUID da própria notificação, path: /today/quick-tips }. Ao abrir, o app relê GET /v1/today/tips com a sessão do destinatário; o aviso não contém fatos de saúde. O destino é uma orientação de navegação, sem conceder acesso a dados.","operationId":"NotificationsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"unreadOnly","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Notificações da conta","tags":["Notifications"]}},"/v1/me/notifications/{id}/read":{"patch":{"operationId":"NotificationsController_markRead","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]}},"/v1/me/notifications/{id}/unread":{"patch":{"operationId":"NotificationsController_markUnread","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]}},"/v1/me/notifications/{id}":{"delete":{"operationId":"NotificationsController_removeNotification","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]}},"/v1/me/notifications/read-all":{"post":{"operationId":"NotificationsController_markAllRead","parameters":[],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]}},"/v1/me/push-devices":{"post":{"operationId":"NotificationsController_registerDevice","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPushDeviceDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]},"get":{"operationId":"NotificationsController_devices","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]}},"/v1/me/push-devices/{id}":{"delete":{"operationId":"NotificationsController_removeDevice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Notifications"]}},"/v1/admin/community/reports":{"get":{"operationId":"ModerationController_queue","parameters":[{"name":"status","required":false,"in":"query","schema":{"default":"pending","type":"string","enum":["pending","reviewed","appealed"]}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":100000,"default":0,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationQueueResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/admin/community/reports/{id}":{"get":{"operationId":"ModerationController_detail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationDetailResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/admin/community/reports/{id}/triage":{"post":{"operationId":"ModerationController_triage","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationTriageDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationCommandResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/admin/community/reports/{id}/decision":{"post":{"operationId":"ModerationController_decision","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationDecisionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationCommandResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/admin/community/reports/{id}/appeal-decision":{"post":{"operationId":"ModerationController_appealDecision","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationAppealDecisionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationCommandResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/me/moderation-decisions":{"get":{"operationId":"ModerationController_decisions","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationDecisionsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/moderation-decisions/{id}/appeal":{"post":{"operationId":"ModerationController_appeal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationAppealDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationAppealResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Community moderation"]}},"/v1/users/{id}/profile":{"get":{"operationId":"CommunityController_profile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/users/{id}/follow":{"put":{"operationId":"CommunityController_follow","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_unfollow","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/users/{id}/block":{"put":{"operationId":"CommunityController_block","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_unblock","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/posts":{"get":{"operationId":"CommunityController_feed","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"authorId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"order","required":false,"in":"query","schema":{"type":"string","enum":["chronological","discover"]}},{"name":"seed","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityFeedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"post":{"operationId":"CommunityController_createPost","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePostDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityPostResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/posts/{id}":{"get":{"operationId":"CommunityController_post","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityPostResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_deletePost","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/posts/{id}/media/{mediaId}":{"get":{"operationId":"CommunityController_postImage","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"mediaId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/posts/{id}/like":{"put":{"operationId":"CommunityController_like","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_unlike","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/posts/{id}/comments":{"get":{"operationId":"CommunityController_comments","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]},"post":{"operationId":"CommunityController_comment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/comments/{id}":{"delete":{"operationId":"CommunityController_deleteComment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/reports":{"post":{"operationId":"CommunityController_report","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityReportCreatedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/me/reports":{"get":{"operationId":"CommunityController_reports","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityReportsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups":{"get":{"operationId":"CommunityController_groups","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"maxLength":30,"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"maxLength":80,"type":"string"}},{"name":"region","required":false,"in":"query","schema":{"maxLength":120,"type":"string"}},{"name":"view","required":false,"in":"query","schema":{"type":"string","enum":["all","yours","discover"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"post":{"operationId":"CommunityController_createGroup","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupDto"},"examples":{"beginners":{"value":{"name":"Corrida em Lisboa","sport":"running","region":"Lisboa","audience":"open_to_beginners","joinModel":"request"}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/near-me":{"get":{"operationId":"CommunityController_nearMe","parameters":[{"name":"lat","required":true,"in":"query","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"lng","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"radiusKm","required":false,"in":"query","schema":{"maximum":10,"exclusiveMinimum":0,"default":10,"type":"number"}},{"name":"sport","required":false,"in":"query","schema":{"maxLength":30,"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"maxLength":80,"type":"string"}},{"name":"region","required":false,"in":"query","schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupsNearMeResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/discover":{"post":{"operationId":"CommunityController_discover","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDiscoveryDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupDiscoveryResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/area":{"put":{"operationId":"CommunityController_groupArea","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupAreaDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/discovery/decisions":{"post":{"operationId":"CommunityController_chooseGroup","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChoiceDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupChoiceResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/discovery/decisions/{id}/undo":{"post":{"operationId":"CommunityController_undoGroup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupUndoResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/ownership":{"post":{"operationId":"CommunityController_transferGroup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupTransferDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupTransferResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/with-art":{"post":{"operationId":"CommunityController_createGroupWithCover","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["group","cover"],"properties":{"group":{"type":"string","description":"JSON com name, sport, region, description?, areaId?, joinModel? e audience? (open_to_all, open_to_beginners, open_to_women_60_plus, open_to_ages_60_plus ou open_to_all_paces). audience indica o público do KyClub e usa open_to_all por padrão, sem alterar a admissão. areaId é necessário para aparecer em groups/discover.","example":"{\"name\":\"Corrida em Lisboa\",\"description\":\"Treinos em grupo.\",\"sport\":\"running\",\"region\":\"Lisboa\",\"joinModel\":\"open\",\"audience\":\"open_to_all\"}"},"cover":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}":{"get":{"operationId":"CommunityController_group","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_archiveGroup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/cover":{"put":{"operationId":"CommunityController_setGroupCover","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupCoverDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/membership":{"put":{"operationId":"CommunityController_join","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityMembershipResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_leave","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupLeftResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/members":{"get":{"operationId":"CommunityController_members","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityGroupMembersResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/members/{userId}":{"patch":{"operationId":"CommunityController_manage","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MembershipDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityMemberActionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/events":{"get":{"operationId":"CommunityController_events","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"upcoming","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"post":{"operationId":"CommunityController_createEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/groups/{id}/events/with-art":{"post":{"operationId":"CommunityController_createEventWithCover","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["event","cover"],"properties":{"event":{"type":"string","description":"JSON com title, area, publicMeetingPlace, publicPlaceConfirmed=true, latitude, longitude, startsAt, endsAt e description?, sport?, timezone?. Sem timezone, usa o fuso do perfil do criador ou UTC.","example":"{\"title\":\"Corrida no parque\",\"description\":\"Encontro do grupo.\",\"area\":\"Lisboa\",\"publicMeetingPlace\":\"Entrada do parque\",\"publicPlaceConfirmed\":true,\"latitude\":38.72,\"longitude\":-9.14,\"startsAt\":\"2030-01-01T09:00:00+00:00\",\"endsAt\":\"2030-01-01T10:00:00+00:00\",\"sport\":\"running\",\"timezone\":\"Europe/Lisbon\"}"},"cover":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/with-art":{"put":{"operationId":"CommunityController_updateEventWithCover","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"JSON completo do evento com title, description, area, publicMeetingPlace, publicPlaceConfirmed=true, latitude, longitude, startsAt, endsAt, sport, timezone e expectedRevision. O local e os horários ficam congelados após a resposta de outro participante."},"cover":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP opcional, até 10 MiB. Omitir conserva a capa atual."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/with-art":{"post":{"operationId":"CommunityController_createPublicEvent","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["event","cover"],"properties":{"event":{"type":"string","description":"JSON de evento público: clientId UUID idempotente, title, description, area, publicMeetingPlace, publicPlaceConfirmed=true, latitude, longitude, startsAt, endsAt, sport e timezone IANA.","example":"{\"clientId\":\"0f53cf8f-5eaf-4ab7-8f3e-cf28eae50e19\",\"title\":\"Caminhada no parque\",\"description\":\"Encontro aberto para uma caminhada de uma hora.\",\"area\":\"Lisboa\",\"publicMeetingPlace\":\"Entrada principal do parque\",\"publicPlaceConfirmed\":true,\"latitude\":38.72,\"longitude\":-9.14,\"sport\":\"walking\",\"timezone\":\"Europe/Lisbon\",\"startsAt\":\"2030-01-01T09:00:00Z\",\"endsAt\":\"2030-01-01T10:00:00Z\"}"},"cover":{"type":"string","format":"binary","description":"Capa obrigatória: JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/nearby":{"get":{"operationId":"CommunityController_nearbyEvents","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"latitude","required":true,"in":"query","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"longitude","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"radiusM","required":false,"in":"query","schema":{"minimum":300,"maximum":200000,"default":25000,"type":"integer"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},{"name":"locationSource","required":false,"in":"query","schema":{"default":"device","type":"string","enum":["device","manual"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}":{"get":{"operationId":"CommunityController_event","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/attendance":{"get":{"operationId":"CommunityController_eventAttendees","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventAttendeesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/rsvp":{"put":{"operationId":"CommunityController_rsvp","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RsvpDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"post":{"operationId":"CommunityController_postRsvp","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RsvpDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"delete":{"operationId":"CommunityController_clearRsvp","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/calendar.ics":{"get":{"operationId":"CommunityController_calendarIcs","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/cancel":{"post":{"operationId":"CommunityController_cancelEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/finish":{"post":{"operationId":"CommunityController_finishEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/attendance/{userId}":{"put":{"operationId":"CommunityController_attendance","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAttendanceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventAttendanceResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/events/{id}/feedback":{"post":{"operationId":"CommunityController_feedback","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventFeedbackDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityEventFeedbackResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/me/calendar":{"get":{"description":"Use upcoming=true for confirmed (going), scheduled events that have not ended and whose source remains current, ordered by (startsAt,id) ascending. Includes public and accessible group events independently of location consent, saved area or discovery radius. Omit upcoming or use false for the existing history, ordered by (createdAt,id) descending. Keep the same filters when following nextCursor. Both modes enforce membership, blocks, moderation and account visibility.","operationId":"CommunityController_calendar","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"upcoming","required":false,"in":"query","description":"When true, only confirmed (going), scheduled events that have not ended and whose source is current, ordered by startsAt then id ascending. Omit or use false for the existing calendar history ordered by creation time descending. Independent of location and discovery radius.","schema":{"type":"string","enum":["true","false"]}},{"name":"month","required":false,"in":"query","schema":{"pattern":"^[1-9]\\d{3}-(0[1-9]|1[0-2])$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityCalendarResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read the current user calendar or confirmed upcoming events","tags":["community"]}},"/v1/conversations":{"post":{"operationId":"CommunityController_conversation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConversationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]},"get":{"operationId":"CommunityController_conversations","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityConversationsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/conversations/{id}/messages":{"get":{"operationId":"CommunityController_messages","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityMessagesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]},"post":{"description":"Send text or a ready owned voice recording. Voice notes use audioMediaId with body empty or omitted; the response persists a localized Voice message label in body for older clients, with kind=audio and authenticated playback metadata. No transcription is performed. Retrying clientId returns the same message; a media ID cannot attach to another message.","operationId":"CommunityController_message","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityMessageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"","tags":["community"]}},"/v1/conversations/{id}/messages/{messageId}/audio":{"get":{"description":"Requires current conversation access and an active bearer session for every request. Supports a single byte range; responds 200 or 206, never returns an unprotected storage URL.","operationId":"CommunityController_audio","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"messageId","required":true,"in":"path","schema":{"type":"string"}},{"name":"Range","in":"header","required":false,"schema":{"type":"string","example":"bytes=0-262143"}}],"responses":{"200":{"description":"AAC audio in a seekable M4A container","content":{"audio/mp4":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"Requested bytes. Includes Content-Range, Content-Length, Accept-Ranges: bytes and Cache-Control: no-store.","content":{"audio/mp4":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"CHAT_AUDIO_UNAVAILABLE: recording absent, removed or no longer authorized."},"416":{"description":"CHAT_AUDIO_RANGE_INVALID: invalid or unsatisfiable single byte range."},"503":{"description":"CHAT_AUDIO_UNAVAILABLE: transient storage failure; retry the same path."}},"security":[{"bearer":[]}],"summary":"Play a private voice message","tags":["community"]}},"/v1/conversations/{id}/messages/{messageId}/delivered":{"put":{"operationId":"CommunityController_delivered","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"messageId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityMessageDeliveredResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/conversations/{id}/read":{"put":{"operationId":"CommunityController_read","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["community"]}},"/v1/stories/music-tracks":{"get":{"operationId":"StoriesController_musicTracks","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/mention-suggestions":{"get":{"operationId":"StoriesController_mentionSuggestions","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"q","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/feed":{"get":{"operationId":"StoriesController_feed","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories":{"get":{"operationId":"StoriesController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"authorId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]},"post":{"operationId":"StoriesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStoryDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/{id}":{"get":{"operationId":"StoriesController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]},"delete":{"operationId":"StoriesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/{id}/views":{"post":{"operationId":"StoriesController_viewed","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]},"get":{"operationId":"StoriesController_viewers","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/{id}/reactions":{"post":{"operationId":"StoriesController_react","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryReactionDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]},"delete":{"operationId":"StoriesController_removeReaction","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/{id}/replies":{"post":{"operationId":"StoriesController_reply","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/{id}/media":{"get":{"description":"Authenticated image/video bytes. Rechecks story visibility and expiration on every request; supports one byte Range, never a public signed URL. Cache-Control: no-store.","operationId":"StoriesController_media","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"","tags":["Stories"]}},"/v1/stories/{id}/thumbnail":{"get":{"operationId":"StoriesController_thumbnail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/assistance/configuration":{"get":{"operationId":"StoryAssistanceController_configuration","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/assistance":{"post":{"operationId":"StoryAssistanceController_request","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryAssistanceRequestDto"}}}},"responses":{"202":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/stories/assistance/{id}":{"get":{"operationId":"StoryAssistanceController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]},"delete":{"operationId":"StoryAssistanceController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Stories"]}},"/v1/admin/community/stories":{"get":{"operationId":"AdminCommunityController_activeStories","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}}],"responses":{"200":{"description":"Authors with active public stories, most recent first, with their avatar. Private and followers-only stories are never included.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminStoryAuthorsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]}},"/v1/admin/community/groups":{"get":{"operationId":"AdminCommunityController_groups","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGroupPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"post":{"operationId":"AdminCommunityController_createGroup","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["group"],"properties":{"group":{"type":"string","description":"JSON de grupo. Use areaId de um local público ou discoveryArea para aparecer no Discover.","example":"{\"name\":\"Corrida em Lisboa\",\"description\":\"Treinos em grupo.\",\"sport\":\"running\",\"region\":\"Lisboa\",\"joinModel\":\"open\",\"discoveryArea\":{\"id\":\"admin:lisboa\",\"name\":\"Lisboa\",\"label\":\"Lisboa, Portugal\",\"latitude\":38.72,\"longitude\":-9.14}}"},"cover":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]}},"/v1/admin/community/groups/{id}":{"get":{"operationId":"AdminCommunityController_group","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"put":{"operationId":"AdminCommunityController_replaceGroup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["group"],"properties":{"group":{"type":"string","description":"JSON de grupo. Use areaId de um local público ou discoveryArea para aparecer no Discover.","example":"{\"name\":\"Corrida em Lisboa\",\"description\":\"Treinos em grupo.\",\"sport\":\"running\",\"region\":\"Lisboa\",\"joinModel\":\"open\",\"discoveryArea\":{\"id\":\"admin:lisboa\",\"name\":\"Lisboa\",\"label\":\"Lisboa, Portugal\",\"latitude\":38.72,\"longitude\":-9.14}}"},"cover":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"patch":{"operationId":"AdminCommunityController_patchGroup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCommunityStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"delete":{"operationId":"AdminCommunityController_deleteGroup","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]}},"/v1/admin/community/events":{"get":{"operationId":"AdminCommunityController_events","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEventPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"post":{"operationId":"AdminCommunityController_createEvent","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"JSON com groupId e dados do encontro; publicPlaceConfirmed deve ser true.","example":"{\"groupId\":\"00000000-0000-4000-8000-000000000001\",\"title\":\"Corrida no parque\",\"description\":\"Encontro do grupo.\",\"area\":\"Lisboa\",\"publicMeetingPlace\":\"Entrada do parque\",\"publicPlaceConfirmed\":true,\"latitude\":38.72,\"longitude\":-9.14,\"startsAt\":\"2030-01-01T09:00:00+00:00\",\"endsAt\":\"2030-01-01T10:00:00+00:00\"}"},"cover":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEventDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]}},"/v1/admin/community/events/{id}":{"get":{"operationId":"AdminCommunityController_event","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEventDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"put":{"operationId":"AdminCommunityController_replaceEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"JSON com groupId e dados do encontro; publicPlaceConfirmed deve ser true.","example":"{\"groupId\":\"00000000-0000-4000-8000-000000000001\",\"title\":\"Corrida no parque\",\"description\":\"Encontro do grupo.\",\"area\":\"Lisboa\",\"publicMeetingPlace\":\"Entrada do parque\",\"publicPlaceConfirmed\":true,\"latitude\":38.72,\"longitude\":-9.14,\"startsAt\":\"2030-01-01T09:00:00+00:00\",\"endsAt\":\"2030-01-01T10:00:00+00:00\"}"},"cover":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEventDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"patch":{"operationId":"AdminCommunityController_patchEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCommunityStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEventDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]},"delete":{"operationId":"AdminCommunityController_deleteEvent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin community catalogue"]}},"/v1/me/voice-calls":{"get":{"operationId":"ChatVoiceController_inbox","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceInboxResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read current direct-chat voice invitations and joined calls","tags":["community voice"]}},"/v1/conversations/{id}/voice-calls":{"post":{"operationId":"ChatVoiceController_start","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceCallResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Ring a mutual friend in a direct conversation","tags":["community voice"]}},"/v1/voice-calls/{id}":{"get":{"operationId":"ChatVoiceController_detail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceCallResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read an invited or joined voice call without receiving a Chime token","tags":["community voice"]}},"/v1/voice-calls/{id}/join":{"post":{"operationId":"ChatVoiceController_join","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceJoinResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Join as an invited mutual friend; issues only this account a Chime token","tags":["community voice"]}},"/v1/voice-calls/{id}/eligible-friends":{"get":{"operationId":"ChatVoiceController_eligible","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"maxLength":80,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceFriendsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List friends mutually connected to both people in the direct chat","tags":["community voice"]}},"/v1/voice-calls/{id}/invite":{"post":{"operationId":"ChatVoiceController_invite","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteChatVoiceGuestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceCallResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Invite one additional mutual friend after both original participants join","tags":["community voice"]}},"/v1/voice-calls/{id}/decline":{"post":{"operationId":"ChatVoiceController_decline","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceLeaveResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community voice"]}},"/v1/voice-calls/{id}/leave":{"post":{"operationId":"ChatVoiceController_leave","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatVoiceLeaveResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community voice"]}},"/v1/health/sync":{"post":{"operationId":"HealthController_sync","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthSyncDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/records":{"get":{"operationId":"HealthController_records","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"kind","required":false,"in":"query","schema":{"type":"string","enum":["steps","sleep","heart_rate","resting_heart_rate","active_energy","exercise"]}},{"name":"from","required":true,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"name":"to","required":true,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/summary":{"get":{"operationId":"HealthController_summary","parameters":[{"name":"date","required":true,"in":"query","schema":{"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])))$","type":"string"}},{"name":"timezone","required":false,"in":"query","schema":{"minLength":1,"maxLength":80,"default":"UTC","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/summaries":{"get":{"operationId":"HealthController_summaries","parameters":[{"name":"timezone","required":false,"in":"query","schema":{"minLength":1,"maxLength":80,"default":"UTC","type":"string"}},{"name":"from","required":true,"in":"query","schema":{"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])))$","type":"string"}},{"name":"to","required":true,"in":"query","schema":{"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])))$","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/sync-state":{"get":{"operationId":"HealthController_syncState","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/hydration":{"post":{"operationId":"HealthController_hydration","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/apple/library":{"post":{"operationId":"HealthLibraryController_sync","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthLibrarySyncDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]},"get":{"operationId":"HealthLibraryController_history","parameters":[{"name":"typeIdentifier","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":256,"type":"string"}},{"name":"from","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"name":"to","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/apple/library/types":{"get":{"operationId":"HealthLibraryController_types","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/apple/library/{type}/{id}":{"get":{"operationId":"HealthLibraryController_record","parameters":[{"name":"type","required":true,"in":"path","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers":{"get":{"operationId":"HealthProviderController_connections","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers/{provider}/authorize":{"post":{"operationId":"HealthProviderController_begin","parameters":[{"name":"provider","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderBeginDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers/{provider}/exchange":{"post":{"operationId":"HealthProviderController_exchange","parameters":[{"name":"provider","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderExchangeDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers/{provider}/history":{"get":{"operationId":"HealthProviderController_history","parameters":[{"name":"provider","required":true,"in":"path","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","schema":{"maxLength":80,"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"minimum":1,"maximum":10000,"default":1,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":4096,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers/{provider}":{"delete":{"operationId":"HealthProviderController_disconnect","parameters":[{"name":"provider","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers/oauth/{provider}/callback":{"get":{"operationId":"HealthProviderController_callback","parameters":[{"name":"provider","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/providers/strava/webhook":{"get":{"operationId":"HealthProviderController_verify","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]},"post":{"operationId":"HealthProviderController_webhook","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/apple/sync":{"post":{"operationId":"AppleHealthController_sync","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleHealthSyncDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/apple/workouts":{"post":{"operationId":"AppleWorkoutsController_sync","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleWorkoutsDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/hydration/reconcile":{"post":{"description":"Accepts 1–100 external UUIDs and returns one item per unique UUID, normalized to lowercase, in request order. Only the authenticated account is queried. Missing includes unknown identities and identities from other accounts; it is not a deletion. Deleted is an explicit tombstone with no recordedAt or volumeMl. Current health-data consent is not required to read already stored identities and withdrawals. This operation never creates, edits or restores hydration entries.","operationId":"HydrationEditController_reconcile","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationReconcileDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationReconciliationResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Reconcile known hydration identities across devices","tags":["health"]}},"/v1/health/hydration/{id}":{"patch":{"operationId":"HydrationEditController_edit","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationEditDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationEntryResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["health"]},"delete":{"operationId":"HydrationEditController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationRemoveDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HydrationRemovedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/meals/analysis":{"post":{"operationId":"MealAnalysisController_analyse","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMealAnalysisDto"}}}},"responses":{"202":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/meals/analysis/{id}":{"get":{"operationId":"MealAnalysisController_result","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/meals/analysis/{id}/cancellation":{"post":{"operationId":"MealAnalysisController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealAnalysisCancellationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealAnalysisReceiptDto"}}}}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/meals/analysis/{id}/replacements":{"post":{"operationId":"MealAnalysisController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealAnalysisReplacementDto"}}}},"responses":{"202":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealAnalysisReceiptDto"}}}}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/connect/records":{"post":{"operationId":"HealthConnectController_snapshot","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthConnectSnapshotDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/connect/deletions":{"post":{"operationId":"HealthConnectController_deletions","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthConnectDeletionsDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/connect/steps":{"post":{"operationId":"HealthConnectController_steps","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthConnectStepDaysDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["health"]}},"/v1/health/consent-policy":{"get":{"description":"Available before registration and without an existing health consent. New health_data acceptances must send this version to POST /me/consents. Previously recorded decisions are preserved; withdrawing does not require the latest policy version.","operationId":"HealthConsentPolicyController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthConsentPolicyDto"}}}}},"summary":"Read the health-data policy before giving consent","tags":["health"]}},"/v1/devices":{"post":{"operationId":"DevicesController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDeviceDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["devices"]},"get":{"operationId":"DevicesController_list","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["devices"]}},"/v1/devices/integrations":{"get":{"operationId":"DevicesController_integrations","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["devices"]}},"/v1/devices/{id}":{"patch":{"operationId":"DevicesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeviceDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["devices"]},"delete":{"operationId":"DevicesController_unlink","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["devices"]}},"/v1/media/uploads":{"post":{"operationId":"MediaController_upload","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadTicketDto"}}}}},"security":[{"bearer":[]}],"tags":["Media"]}},"/v1/media/{id}/completion":{"post":{"description":"Idempotently queues validation of uploaded bytes. For chat_audio poll GET /media/:id until ready before sending audioMediaId. Polling reconciles interrupted queue dispatch or a failed job. pending/queued/ready/failed describe processing; failureCode is stable. Confirmed missing bytes return 409 UPLOAD_MISSING; transient storage/queue outages return 503 CHAT_AUDIO_UNAVAILABLE or MEDIA_PROCESSING_UNAVAILABLE and must retry the same media ID. A rejected upload requires a new ticket; cancelled media returns 404 MEDIA_NOT_FOUND.","operationId":"MediaController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaCompletionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"","tags":["Media"]}},"/v1/media/{id}/story-preview":{"get":{"operationId":"MediaController_storyPreview","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Media"]}},"/v1/media/{id}/story-thumbnail":{"get":{"operationId":"MediaController_storyThumbnail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Media"]}},"/v1/media/{id}/audio-preview":{"get":{"description":"Owner-only preview of a ready voice recording. Requires Bearer authentication for every read; supports single byte Range, with no-store and no signed storage URL.","operationId":"MediaController_audioPreview","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Range","in":"header","required":false,"schema":{"type":"string","example":"bytes=0-262143"}}],"responses":{"200":{"content":{"audio/mp4":{"schema":{"type":"string","format":"binary"}}},"description":""},"206":{"description":"Requested bytes, with Content-Range, Content-Length, Accept-Ranges: bytes and Cache-Control: no-store.","content":{"audio/mp4":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"MEDIA_NOT_FOUND or CHAT_AUDIO_UNAVAILABLE: absent, cancelled or unauthorized recording."},"409":{"description":"MEDIA_NOT_READY: wait for GET /media/:id to report ready."},"416":{"description":"CHAT_AUDIO_RANGE_INVALID: invalid or unsatisfiable single byte range."},"503":{"description":"CHAT_AUDIO_UNAVAILABLE: transient storage failure; retry the same path."}},"security":[{"bearer":[]}],"summary":"","tags":["Media"]}},"/v1/media/{id}":{"get":{"operationId":"MediaController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaAssetResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Media"]},"delete":{"description":"Cancels an owned, unattached story or voice upload. Repetition is idempotent; media attached to a message or story returns 409 MEDIA_IN_USE.","operationId":"MediaController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"summary":"","tags":["Media"]}},"/v1/breathe/patterns":{"get":{"operationId":"BreatheController_catalog","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Breathe"]}},"/v1/breathe/sessions":{"post":{"operationId":"BreatheController_complete","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteBreathingDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["Breathe"]},"get":{"operationId":"BreatheController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Breathe"]}},"/v1/me/event-discovery-area":{"get":{"operationId":"EventDiscoveryController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDiscoveryAreaResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["events"]},"put":{"operationId":"EventDiscoveryController_put","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDiscoveryAreaDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDiscoveryAreaResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Save an approximate event search area for 30 days. Device source requires location consent.","tags":["events"]},"delete":{"operationId":"EventDiscoveryController_remove","parameters":[],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["events"]}},"/v1/admin/events/imports/capabilities":{"get":{"operationId":"EventImportsController_capabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventImportCapabilitiesDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar configuração da fonte OpenAgenda, sem expor chaves","tags":["admin event imports"]}},"/v1/admin/events/imports/sync":{"post":{"description":"Persiste eventos e capas no catálogo privado. Informa unavailable sem configuração e partial se o orçamento ou o provedor impedir a leitura completa. Não inscreve o usuário no organizador externo.","operationId":"EventImportsController_sync","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventImportAreaDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventImportResultDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Sincronizar eventos participativos das agendas autorizadas em uma área","tags":["admin event imports"]}},"/v1/community/missions/nearby":{"post":{"operationId":"CommunityChallengesController_nearby","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionNearbyDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionNearbyResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/rankings":{"get":{"operationId":"CommunityChallengesController_rankings","parameters":[{"name":"scope","required":false,"in":"query","schema":{"default":"friends","type":"string","enum":["friends","city","everyone"]}},{"name":"exercise","required":false,"in":"query","schema":{"default":"all","type":"string","enum":["all","run","walk","ride","gym","swim"]}},{"name":"metric","required":false,"in":"query","schema":{"default":"distance","type":"string","enum":["distance","time","sessions","elevation"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":10000,"default":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/rankings/preferences":{"get":{"operationId":"CommunityChallengesController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingPreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]},"put":{"operationId":"CommunityChallengesController_setPreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingPreferenceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingPreferencesSavedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/missions":{"get":{"operationId":"CommunityChallengesController_missions","parameters":[{"name":"period","required":false,"in":"query","schema":{"default":"current","type":"string","enum":["current","past"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":10000,"default":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/missions/{id}":{"get":{"operationId":"CommunityChallengesController_mission","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/missions/{id}/accept":{"post":{"operationId":"CommunityChallengesController_accept","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/missions/{id}/participation":{"delete":{"operationId":"CommunityChallengesController_leave","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionLeftResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/missions/{id}/claim":{"post":{"operationId":"CommunityChallengesController_claim","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionRewardResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/mission-zones/help":{"get":{"operationId":"CommunityChallengesController_zoneHelp","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneHelpResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/mission-zones/{id}":{"get":{"operationId":"CommunityChallengesController_zone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/mission-zones/{id}/reports":{"post":{"operationId":"CommunityChallengesController_report","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneReportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneReportReceivedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/rewards":{"get":{"operationId":"CommunityChallengesController_rewards","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionRewardsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/rewards/{id}":{"get":{"operationId":"CommunityChallengesController_reward","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionRewardResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/community/rewards/{id}/visibility":{"put":{"operationId":"CommunityChallengesController_visibility","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewardVisibilityDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionRewardResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["community-challenges"]}},"/v1/admin/community/challenges/catalogue":{"get":{"operationId":"AdminCommunityChallengesController_catalogue","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeCatalogueResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/missions":{"get":{"operationId":"AdminCommunityChallengesController_missions","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMissionPageResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"post":{"operationId":"AdminCommunityChallengesController_createMission","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionCreateDto"},"examples":{"sessions":{"summary":"Missão de sessões","value":{"code":"corridas-outubro-2026","name":"Desafio de corrida de outubro","goal":"Concluir quatro corridas durante o mês.","ruleDescription":"Cada corrida deve durar pelo menos 20 minutos.","difficulty":"easy","startsAt":"2026-10-01T00:00:00.000Z","endsAt":"2026-11-01T00:00:00.000Z","timezone":"Europe/Lisbon","rule":{"kind":"sessions","targetSessions":4,"minimumDurationS":1200,"sports":["running"]},"reward":{"badgeCode":"corridas-outubro-2026","name":"Corredor de outubro","description":"Concluiu quatro corridas válidas em outubro.","xp":100,"iconMediaId":null}}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionCreatedResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/missions/{id}":{"get":{"operationId":"AdminCommunityChallengesController_mission","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMissionResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"put":{"operationId":"AdminCommunityChallengesController_replaceMission","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionCreateDto"},"examples":{"sessions":{"summary":"Missão de sessões","value":{"code":"corridas-outubro-2026","name":"Desafio de corrida de outubro","goal":"Concluir quatro corridas durante o mês.","ruleDescription":"Cada corrida deve durar pelo menos 20 minutos.","difficulty":"easy","startsAt":"2026-10-01T00:00:00.000Z","endsAt":"2026-11-01T00:00:00.000Z","timezone":"Europe/Lisbon","rule":{"kind":"sessions","targetSessions":4,"minimumDurationS":1200,"sports":["running"]},"reward":{"badgeCode":"corridas-outubro-2026","name":"Corredor de outubro","description":"Concluiu quatro corridas válidas em outubro.","xp":100,"iconMediaId":null}}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMissionResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"patch":{"operationId":"AdminCommunityChallengesController_setMissionEnabled","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMissionResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"delete":{"operationId":"AdminCommunityChallengesController_deleteMission","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/mission-zones":{"get":{"operationId":"AdminCommunityChallengesController_zones","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminZonePageResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"post":{"operationId":"AdminCommunityChallengesController_createZone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/mission-zones/{id}":{"get":{"operationId":"AdminCommunityChallengesController_zone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminZoneResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"put":{"operationId":"AdminCommunityChallengesController_replaceZone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneCreateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminZoneResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"patch":{"operationId":"AdminCommunityChallengesController_setZoneEnabled","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminZoneResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]},"delete":{"operationId":"AdminCommunityChallengesController_deleteZone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/mission-zone-reports":{"get":{"operationId":"AdminCommunityChallengesController_reports","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneReportsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/mission-zone-reports/{id}/review":{"put":{"operationId":"AdminCommunityChallengesController_reviewReport","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneReportReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionZoneReportReviewResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/missions/with-icon":{"post":{"operationId":"AdminCommunityChallengesController_createMissionWithIcon","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["mission"],"properties":{"mission":{"type":"string","description":"JSON completo de MissionCreateDto. Ajuste code, badgeCode e datas. Use reward.iconMediaId=null ao enviar icon.","example":"{\"code\":\"corridas-outubro-2026\",\"name\":\"Desafio de corrida de outubro\",\"goal\":\"Concluir quatro corridas durante o mês.\",\"ruleDescription\":\"Cada corrida deve durar pelo menos 20 minutos.\",\"difficulty\":\"easy\",\"startsAt\":\"2026-10-01T00:00:00.000Z\",\"endsAt\":\"2026-11-01T00:00:00.000Z\",\"timezone\":\"Europe/Lisbon\",\"rule\":{\"kind\":\"sessions\",\"targetSessions\":4,\"minimumDurationS\":1200,\"sports\":[\"running\"]},\"reward\":{\"badgeCode\":\"corridas-outubro-2026\",\"name\":\"Corredor de outubro\",\"description\":\"Concluiu quatro corridas válidas em outubro.\",\"xp\":100,\"iconMediaId\":null}}"},"icon":{"type":"string","format":"binary","description":"Ícone opcional JPEG, PNG ou WebP de até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionCreatedResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/missions/{id}/with-icon":{"put":{"operationId":"AdminCommunityChallengesController_replaceMissionWithIcon","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["mission"],"properties":{"mission":{"type":"string","description":"JSON completo de MissionCreateDto. Ajuste code, badgeCode e datas. Use reward.iconMediaId=null ao enviar icon.","example":"{\"code\":\"corridas-outubro-2026\",\"name\":\"Desafio de corrida de outubro\",\"goal\":\"Concluir quatro corridas durante o mês.\",\"ruleDescription\":\"Cada corrida deve durar pelo menos 20 minutos.\",\"difficulty\":\"easy\",\"startsAt\":\"2026-10-01T00:00:00.000Z\",\"endsAt\":\"2026-11-01T00:00:00.000Z\",\"timezone\":\"Europe/Lisbon\",\"rule\":{\"kind\":\"sessions\",\"targetSessions\":4,\"minimumDurationS\":1200,\"sports\":[\"running\"]},\"reward\":{\"badgeCode\":\"corridas-outubro-2026\",\"name\":\"Corredor de outubro\",\"description\":\"Concluiu quatro corridas válidas em outubro.\",\"xp\":100,\"iconMediaId\":null}}"},"icon":{"type":"string","format":"binary","description":"Ícone opcional JPEG, PNG ou WebP de até 10 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMissionResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/admin/community/activities/{id}/competition-validation":{"put":{"operationId":"AdminCommunityChallengesController_reviewActivity","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityCompetitionReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionActivityReviewResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin-community-challenges"]}},"/v1/challenges/capabilities":{"get":{"description":"This check verifies configuration and STS identity only. It does not invoke a paid model or certify inference permissions, availability, latency or recognition accuracy. Photo analysis failures remain eligible for explicit administrator review. Posture sessions require a configured and authorized SageMaker body-keypoint model.","operationId":"ChallengesCapabilitiesController_capabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeCapabilitiesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read challenge analysis configuration and authenticated AWS identity readiness","tags":["Kypace challenges"]}},"/v1/challenges/programs":{"get":{"operationId":"ChallengesController_programs","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeProgramPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List published daily challenge programs","tags":["Kypace challenges"]}},"/v1/challenges/programs/{id}":{"get":{"operationId":"ChallengesController_program","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeProgramResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/terms/{id}":{"get":{"operationId":"ChallengesController_terms","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeTermsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read published or previously accepted challenge terms","tags":["Kypace challenges"]}},"/v1/challenges/programs/{id}/enroll":{"post":{"description":"The timezone, task rules, rewards and terms are frozen at acceptance. AWS image/posture processing requires an explicit choice and current health-data consent. Reuse the same clientId for retries. Leaderboard sharing is off by default.","operationId":"ChallengesController_enroll","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Accept a program and its versioned terms","tags":["Kypace challenges"]}},"/v1/challenges/enrollments":{"get":{"operationId":"ChallengesController_enrollments","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollmentPageResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/enrollments/{id}":{"get":{"operationId":"ChallengesController_enrollment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]},"patch":{"description":"Revoking AWS consent immediately prevents new analysis and completion from in-flight analysis. The accepted terms and task definitions remain in history.","operationId":"ChallengesController_updateEnrollment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollmentUpdateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change leaderboard or AWS processing choices","tags":["Kypace challenges"]},"delete":{"description":"Cancels unfinished tasks and sessions, stops future daily assignments and removes leaderboard exposure. Earned results and accepted terms remain in private history.","operationId":"ChallengesController_withdraw","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Withdraw participation","tags":["Kypace challenges"]}},"/v1/challenges/current":{"get":{"operationId":"ChallengesController_current","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeCurrentResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get today’s assignments and authoritative server time","tags":["Kypace challenges"]}},"/v1/challenges/history":{"get":{"operationId":"ChallengesController_history","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"enrollmentId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAssignmentPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read completed, missed, cancelled and pending daily challenges","tags":["Kypace challenges"]}},"/v1/challenges/assignments":{"get":{"operationId":"ChallengesController_assignments","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"enrollmentId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAssignmentPageResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/assignments/{id}":{"get":{"operationId":"ChallengesController_assignment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAssignmentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/assignments/{id}/actions":{"post":{"description":"sourceId identifies a persisted post, Story or the other account. The backend checks author, visibility, mutual follow, blocks and server timestamps. A source cannot earn points twice in the same program.","operationId":"ChallengesController_action","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeActionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Verify a published post, Story or new mutual friendship","tags":["Kypace challenges"]}},"/v1/challenges/assignments/{id}/breathing-sessions":{"post":{"description":"Send heartbeats every 15 seconds. Gaps above 30 seconds do not count. This measures the recorded session time; it does not measure physical breathing.","operationId":"ChallengesController_startBreathing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingStartDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Start a server-timed breathing session","tags":["Kypace challenges"]},"get":{"operationId":"ChallengesController_breathingSessions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingPageResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]},"delete":{"operationId":"ChallengesController_cancelAssignmentBreathing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Cancel active breathing attempts of a task","tags":["Kypace challenges"]}},"/v1/challenges/breathing-sessions/{id}":{"get":{"operationId":"ChallengesController_breathingSession","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]},"delete":{"operationId":"ChallengesController_cancelBreathing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/breathing-sessions/{id}/heartbeat":{"post":{"operationId":"ChallengesController_heartbeat","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingHeartbeatDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/breathing-sessions/{id}/completion":{"post":{"operationId":"ChallengesController_finishBreathing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBreathingResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Complete an observed session and award the task once","tags":["Kypace challenges"]}},"/v1/challenges/points":{"get":{"operationId":"ChallengesController_points","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePointsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/badges":{"get":{"operationId":"ChallengesController_badges","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeBadgesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenges"]}},"/v1/challenges/leaderboard":{"get":{"description":"Only accounts that opted into this program’s leaderboard appear. Blocks in either direction and deleted accounts are excluded. Evidence, health details and analysis results remain private.","operationId":"ChallengesController_leaderboard","parameters":[{"name":"programId","required":true,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":10000,"default":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeLeaderboardResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read shared challenge progress","tags":["Kypace challenges"]}},"/v1/admin/challenges/enrollments":{"get":{"operationId":"AdminChallengeParticipationController_enrollments","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"programId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["active","withdrawn","completed"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAdminEnrollmentPageResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"List participants and progress by program, account or state","tags":["Kypace challenge participation administration"]}},"/v1/admin/challenges/enrollments/{id}":{"get":{"operationId":"AdminChallengeParticipationController_enrollment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAdminProgressResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenge participation administration"]}},"/v1/admin/challenges/enrollments/{id}/progress":{"get":{"operationId":"AdminChallengeParticipationController_progress","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAdminProgressResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Kypace challenge participation administration"]}},"/v1/admin/challenges/terms":{"get":{"description":"Lista paginada por UUID. includeDeleted=true inclui registros excluídos logicamente.","operationId":"ChallengesAdminController_listTerms","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTermsPageDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar: regulamento versionado","tags":["Kypace challenge administration"]},"post":{"description":"O cadastro começa em draft. Publique por PATCH com expectedRevision e status: published.","operationId":"ChallengesAdminController_createTerms","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChallengeTermsDto"},"examples":{"catalogue":{"value":{"key":"kypace-daily-rules","version":1,"title":"Regras dos desafios diários","text":"Leia as instruções de cada desafio e envie a evidência dentro do prazo."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTermsDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar: regulamento versionado","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/terms/{id}":{"get":{"operationId":"ChallengesAdminController_getTerms","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTermsDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar: regulamento versionado","tags":["Kypace challenge administration"]},"put":{"description":"Substitui todos os campos editoriais com expectedRevision. Chave e versão são imutáveis. Histórico de participantes é preservado por snapshot.","operationId":"ChallengesAdminController_replaceTerms","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceChallengeTermsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTermsDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir: regulamento versionado","tags":["Kypace challenge administration"]},"patch":{"description":"Publicar exige referências válidas; termos e programas publicados só podem ser arquivados. Para alterações editoriais, cadastre uma nova versão.","operationId":"ChallengesAdminController_patchTerms","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchChallengeTermsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTermsDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar: regulamento versionado","tags":["Kypace challenge administration"]},"delete":{"description":"Exclusão lógica com expectedRevision na query. Preserva aceite, evidências, pontuação e histórico existentes.","operationId":"ChallengesAdminController_removeTerms","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir: regulamento versionado","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/templates":{"get":{"description":"Lista paginada por UUID. includeDeleted=true inclui registros excluídos logicamente.","operationId":"ChallengesAdminController_listTemplate","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTemplatePageDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar: desafio editorial","tags":["Kypace challenge administration"]},"post":{"operationId":"ChallengesAdminController_createTemplate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChallengeTemplateDto"},"examples":{"catalogue":{"value":{"key":"drink-water","title":"Hora de beber água","description":"Faça uma pausa para hidratar.","instructions":"Envie uma selfie durante sua pausa para beber água.","kind":"water_selfie","points":10,"windowMinutes":1440,"attemptLimit":3,"verification":{"minConfidence":0.85},"enabled":true}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTemplateDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar: desafio editorial","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/templates/{id}":{"get":{"operationId":"ChallengesAdminController_getTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTemplateDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar: desafio editorial","tags":["Kypace challenge administration"]},"put":{"description":"Substitui todos os campos editoriais com expectedRevision. Chave e versão são imutáveis. Histórico de participantes é preservado por snapshot.","operationId":"ChallengesAdminController_replaceTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceChallengeTemplateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTemplateDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir: desafio editorial","tags":["Kypace challenge administration"]},"patch":{"description":"Altera os campos enviados com expectedRevision; o histórico dos participantes preserva o snapshot aceito.","operationId":"ChallengesAdminController_patchTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchChallengeTemplateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeTemplateDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar: desafio editorial","tags":["Kypace challenge administration"]},"delete":{"description":"Exclusão lógica com expectedRevision na query. Preserva aceite, evidências, pontuação e histórico existentes.","operationId":"ChallengesAdminController_removeTemplate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir: desafio editorial","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/programs":{"get":{"description":"Lista paginada por UUID. includeDeleted=true inclui registros excluídos logicamente.","operationId":"ChallengesAdminController_listProgram","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeProgramPageDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar: programa de desafios","tags":["Kypace challenge administration"]},"post":{"description":"O cadastro começa em draft. Publique por PATCH com expectedRevision e status: published.","operationId":"ChallengesAdminController_createProgram","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChallengeProgramDto"},"examples":{"catalogue":{"value":{"key":"daily-wellbeing","version":1,"title":"Bem-estar diário","description":"Uma rotina de desafios diários.","termsId":"00000000-0000-4000-8000-000000000001","durationDays":30,"tasksPerDay":1,"templateIds":["00000000-0000-4000-8000-000000000002"]}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeProgramDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar: programa de desafios","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/programs/{id}":{"get":{"operationId":"ChallengesAdminController_getProgram","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeProgramDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar: programa de desafios","tags":["Kypace challenge administration"]},"put":{"description":"Substitui todos os campos editoriais com expectedRevision. Chave e versão são imutáveis. Histórico de participantes é preservado por snapshot.","operationId":"ChallengesAdminController_replaceProgram","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceChallengeProgramDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeProgramDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir: programa de desafios","tags":["Kypace challenge administration"]},"patch":{"description":"Publicar exige referências válidas; termos e programas publicados só podem ser arquivados. Para alterações editoriais, cadastre uma nova versão.","operationId":"ChallengesAdminController_patchProgram","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchChallengeProgramDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeProgramDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar: programa de desafios","tags":["Kypace challenge administration"]},"delete":{"description":"Exclusão lógica com expectedRevision na query. Preserva aceite, evidências, pontuação e histórico existentes.","operationId":"ChallengesAdminController_removeProgram","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir: programa de desafios","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/badges":{"get":{"description":"Lista paginada por UUID. includeDeleted=true inclui registros excluídos logicamente.","operationId":"ChallengesAdminController_listBadge","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeBadgePageDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar: emblema","tags":["Kypace challenge administration"]},"post":{"operationId":"ChallengesAdminController_createBadge","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChallengeBadgeDto"},"examples":{"catalogue":{"value":{"key":"first-challenge","name":"Primeiro desafio","description":"Conclua seu primeiro desafio.","pointsThreshold":0,"requiredCompletions":1,"enabled":true}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeBadgeDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar: emblema","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/badges/{id}":{"get":{"operationId":"ChallengesAdminController_getBadge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeBadgeDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar: emblema","tags":["Kypace challenge administration"]},"put":{"description":"Substitui todos os campos editoriais com expectedRevision. Chave e versão são imutáveis. Histórico de participantes é preservado por snapshot.","operationId":"ChallengesAdminController_replaceBadge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceChallengeBadgeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeBadgeDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir: emblema","tags":["Kypace challenge administration"]},"patch":{"description":"Altera os campos enviados com expectedRevision; o histórico dos participantes preserva o snapshot aceito.","operationId":"ChallengesAdminController_patchBadge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchChallengeBadgeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeBadgeDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar: emblema","tags":["Kypace challenge administration"]},"delete":{"description":"Exclusão lógica com expectedRevision na query. Preserva aceite, evidências, pontuação e histórico existentes.","operationId":"ChallengesAdminController_removeBadge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir: emblema","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/pose-exercises":{"get":{"description":"Lista paginada por UUID. includeDeleted=true inclui registros excluídos logicamente.","operationId":"ChallengesAdminController_listPoseExercise","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengePoseExercisePageDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar: exercício de postura versionado","tags":["Kypace challenge administration"]},"post":{"operationId":"ChallengesAdminController_createPoseExercise","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChallengePoseExerciseDto"},"examples":{"catalogue":{"value":{"key":"arms-raised","version":1,"name":"Braços elevados","instructions":"Eleve os braços suavemente dentro de uma amplitude confortável.","view":"front","rule":{"angles":[{"key":"left-elbow","joints":["left_shoulder","left_elbow","left_wrist"],"minAngle":150,"maxAngle":180,"message":"Ajuste o alinhamento do braço esquerdo suavemente."}]},"minimumConfidence":0.7,"holdSeconds":10,"enabled":true}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengePoseExerciseDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar: exercício de postura versionado","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/pose-exercises/{id}":{"get":{"operationId":"ChallengesAdminController_getPoseExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengePoseExerciseDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar: exercício de postura versionado","tags":["Kypace challenge administration"]},"put":{"description":"Substitui todos os campos editoriais com expectedRevision. Chave e versão são imutáveis. Histórico de participantes é preservado por snapshot.","operationId":"ChallengesAdminController_replacePoseExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceChallengePoseExerciseDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengePoseExerciseDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir: exercício de postura versionado","tags":["Kypace challenge administration"]},"patch":{"description":"Altera os campos enviados com expectedRevision; o histórico dos participantes preserva o snapshot aceito.","operationId":"ChallengesAdminController_patchPoseExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchChallengePoseExerciseDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengePoseExerciseDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar: exercício de postura versionado","tags":["Kypace challenge administration"]},"delete":{"description":"Exclusão lógica com expectedRevision na query. Preserva aceite, evidências, pontuação e histórico existentes.","operationId":"ChallengesAdminController_removePoseExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir: exercício de postura versionado","tags":["Kypace challenge administration"]}},"/v1/admin/challenges/badges/{id}/icon":{"put":{"operationId":"ChallengesAdminController_putBadgeIcon","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","icon"],"properties":{"metadata":{"type":"string","description":"JSON com expectedRevision.","example":"{\"expectedRevision\":1}"},"icon":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP estático, até 2 MiB. Convertido para WebP 512 × 512 sem EXIF; armazenamento privado."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminChallengeBadgeDto"}}}},"400":{"description":"CHALLENGE_CATALOGUE_INVALID: catalogue fields or verification rules are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator account required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"CHALLENGE_CATALOGUE_NOT_FOUND: catalogue record unavailable."},"409":{"description":"Revision conflict, duplicate key/version, immutable publication or unavailable catalogue reference. Reload the record before retrying."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar ou substituir o ícone privado de um emblema","tags":["Kypace challenge administration"]}},"/v1/challenges/badges/{id}/icon":{"get":{"description":"Leitura autenticada do ícone privado de um emblema disponível ou já conquistado pela conta.","operationId":"ChallengeBadgeIconsController_icon","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Imagem WebP 512 × 512.","content":{"image/webp":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"CHALLENGE_BADGE_ICON_NOT_FOUND"}},"security":[{"bearer":[]}],"summary":"Ler ícone de emblema","tags":["Kypace challenges"]}},"/v1/challenges/assignments/{id}/evidence":{"post":{"description":"Requires active enrollment and explicit AWS/health-data consent. The server enforces the assignment window, attempt limit and duplicate image protection. Processing is asynchronous; inspect evidence details for the final decision. A repeated clientId with the same request returns the original evidence.","operationId":"ChallengesEvidenceController_submit","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","image"],"properties":{"metadata":{"type":"string","description":"JSON containing clientId (UUID) and optional capturedAt (ISO 8601, client-reported). Reuse clientId only to retry exactly the same request.","example":"{\"clientId\":\"20aa37d1-7cff-4a21-b6ab-e40ff44a6f8e\",\"capturedAt\":\"2026-10-10T12:00:00Z\"}"},"image":{"type":"string","format":"binary","description":"One JPEG, PNG or WebP photo, 320 × 320 px minimum, 16 million pixels and 8 MiB maximum. Stored privately as a metadata-stripped JPEG, up to 1600 × 1600 px."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidenceResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Submit a private photo for an assigned challenge","tags":["Kypace challenge evidence"]},"get":{"description":"Lists evidence IDs, decisions, provenance and private authenticated file paths with cursor pagination. Includes deleted evidence with minimal history, allowing recovery after reinstalling the app. Results belong exclusively to the authenticated owner; optional status filters do not expand access.","operationId":"ChallengesEvidenceController_listForAssignment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAssignmentEvidencePageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Recover the evidence history for an owned assigned challenge","tags":["Kypace challenge evidence"]}},"/v1/challenges/gallery":{"get":{"description":"Newest first with cursor pagination, across every program or one enrollmentId. Each item carries the frozen task, the server decision (verified is true only for approved proof) and authenticated private media paths. Deleted evidence never appears.","operationId":"ChallengesEvidenceController_gallery","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"enrollmentId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeGalleryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List the owner’s challenge photos and recordings","tags":["Kypace challenge evidence"]}},"/v1/challenges/evidence/{id}/video":{"post":{"description":"Attaches one private MP4 to owned evidence the server already approved, within 24 hours of the decision, while participation is not withdrawn. The recording never changes the decision, points or badges and is not sent to AWS. A repeated clientId with the same file returns the original evidence. Deleting the evidence or erasing challenge data removes the recording.","operationId":"ChallengesEvidenceController_attachVideo","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","video"],"properties":{"metadata":{"type":"string","description":"JSON containing clientId (UUID) and optional capturedAt (ISO 8601, client-reported). Reuse clientId only to retry exactly the same request.","example":"{\"clientId\":\"5d0c7c5e-6c43-4c0c-9a63-0b3c7d4f4e21\",\"capturedAt\":\"2026-10-10T12:00:00Z\"}"},"video":{"type":"string","format":"binary","description":"One MP4 (H.264, optional AAC), 60 seconds and 50 MiB maximum. Stored privately with an upright JPEG preview frame."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidenceResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Keep the recording of an approved posture or Story task","tags":["Kypace challenge evidence"]},"get":{"description":"Supports one byte Range for players. Requires a current session; Cache-Control: no-store.","operationId":"ChallengesEvidenceController_video","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Private MP4.","content":{"video/mp4":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Stream the owner’s challenge recording","tags":["Kypace challenge evidence"]}},"/v1/challenges/evidence/{id}/poster":{"get":{"operationId":"ChallengesEvidenceController_poster","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Private JPEG. Requires a current session; Cache-Control: no-store.","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Read the upright preview frame of the owner’s recording","tags":["Kypace challenge evidence"]}},"/v1/challenges/evidence/{id}/details":{"get":{"operationId":"ChallengesEvidenceController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidenceResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read the decision and provenance of owned challenge evidence","tags":["Kypace challenge evidence"]}},"/v1/challenges/evidence/{id}/file":{"get":{"operationId":"ChallengesEvidenceController_file","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Private JPEG. Requires a current session; Cache-Control: no-store.","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Read the private photo belonging to the current user","tags":["Kypace challenge evidence"]}},"/v1/challenges/evidence/{id}":{"delete":{"description":"Immediately blocks file access and invalidates processing. Private object deletion is retried durably by the worker. Earned completion, points and badge history remain; a minimal duplicate-protection checksum is retained.","operationId":"ChallengesEvidenceController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"summary":"Delete owned challenge evidence","tags":["Kypace challenge evidence"]}},"/v1/admin/challenges/evidence":{"get":{"description":"Supports status, userId and assignmentId filters and cursor pagination. Each returned evidence access is audited.","operationId":"AdminChallengesEvidenceController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"assignmentId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidencePageResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"List challenge evidence for administrative review","tags":["Kypace challenge evidence administration"]}},"/v1/admin/challenges/evidence/{id}":{"get":{"operationId":"AdminChallengesEvidenceController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAdminEvidenceResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Inspect challenge evidence and verification provenance","tags":["Kypace challenge evidence administration"]}},"/v1/admin/challenges/evidence/{id}/file":{"get":{"description":"Revalidates administrator access and records an audit event.","operationId":"AdminChallengesEvidenceController_file","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Private JPEG. Requires a current session; Cache-Control: no-store.","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Read a private challenge photo for administrative review","tags":["Kypace challenge evidence administration"]}},"/v1/admin/challenges/evidence/{id}/review":{"post":{"description":"Requires expectedRevision, decision and a reason of at least 10 characters. Approval requires a timely submission, active enrollment and current analysis consent. The decision, reviewer and provenance are audited; already approved or deleted evidence cannot be reviewed again.","operationId":"AdminChallengesEvidenceController_review","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidenceReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeAdminEvidenceResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Record an explicit administrative decision","tags":["Kypace challenge evidence administration"]}},"/v1/challenges/assignments/{id}/posture-sessions":{"post":{"description":"Requires an open posture assignment, current health-data consent and explicit AWS analysis consent. The exercise and angular rules come from the accepted program snapshot. Reuse clientId for retries. A session lasts at most 15 minutes and cannot outlive the challenge deadline.","operationId":"ChallengesPoseController_start","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseStartDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Start an AWS-assisted posture challenge","tags":["Kypace challenge posture"]},"get":{"description":"Owner-only cursor pagination, newest startedAt and ID first. Recovers session IDs after a reinstall or a lost creation response. Includes active, completed, cancelled and expired sessions; measurements erased by the owner remain explicit tombstones with null metrics. The private nonce and nextSequence allow continuation of an active session. No current AWS availability or renewed analysis consent is required to read historical sessions.","operationId":"ChallengesPoseController_sessions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseSessionPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Find the owner’s posture sessions for a challenge","tags":["Kypace challenge posture"]}},"/v1/challenges/posture-sessions/{id}":{"get":{"description":"Only the owner can read the session. nextSequence and nonce allow recovery after reconnecting; currentHoldMs and bestHoldMs count only consecutive observed valid frames, with at most a two-second observation gap.","operationId":"ChallengesPoseController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read posture session progress and its frozen exercise","tags":["Kypace challenge posture"]},"delete":{"description":"Cancellation also prevents an in-flight inference from recording another frame. Historical metrics are retained; evidence erasure is available on the enrollment.","operationId":"ChallengesPoseController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Cancel an active posture session","tags":["Kypace challenge posture"]}},"/v1/challenges/posture-sessions/{id}/frames":{"post":{"description":"JPEG base64 up to 40 KiB decoded. Images are normalized to at most 640 px and discarded after inference; only joints, angles, confidence, model version and server timestamps persist. Wait for this response before sending another frame. Rate, global inference concurrency, nonce, sequence and image reuse checks apply. The configured inferenceTimeoutMs is the inference deadline; observation gaps above maximumObservationGapMs do not count toward the hold, even when a slower inference is within its deadline. capturedAt is informational and never credits time. Invalid, unavailable or inconclusive inference cannot award completion. Socket.IO /challenges offers the equivalent posture:frame event after posture:subscribe.","operationId":"ChallengesPoseController_frame","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseFrameDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseFrameResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Analyze one ephemeral camera frame and receive posture feedback","tags":["Kypace challenge posture"]},"get":{"description":"Owner-only cursor pagination, newest first. Returns the server-observed joints, angles, confidence, feedback and inference latency. Camera images are never persisted or returned.","operationId":"ChallengesPoseController_frames","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseFramePageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read measured posture history","tags":["Kypace challenge posture"]}},"/v1/challenges/posture-sessions/{id}/completion":{"post":{"description":"Requires the frozen continuous hold duration from valid frames, an open session and assignment, active participation and current consent. Completion, approved evidence, points and badges commit atomically. Repeated completion cannot award points again.","operationId":"ChallengesPoseController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengePoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Complete a measured hold and award the challenge once","tags":["Kypace challenge posture"]}},"/v1/challenges/enrollments/{id}/evidence-data":{"delete":{"description":"Withdraws this enrollment, disables its AWS analysis and leaderboard visibility, and cancels unfinished tasks. Erases photo analysis, camera observations and action-session measurements. Images become immediately unavailable; their private objects are removed by the durable cleanup worker. Accepted terms, completed task facts, earned points, badges and audit receipts are retained. This operation does not delete the account and does not require renewed health consent. Requires a password or Google login from the last five minutes.","operationId":"ChallengePrivacyController_erase","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidenceErasureDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeEvidenceErasureReceiptDto"}}}},"403":{"description":"RECENT_AUTHENTICATION_REQUIRED: sign in again before erasing challenge evidence."},"404":{"description":"CHALLENGE_ENROLLMENT_NOT_FOUND: no enrollment for this account."}},"security":[{"bearer":[]}],"summary":"Erase private challenge evidence and posture observations","tags":["Kypace Challenges Privacy"]}},"/v1/strength/capabilities":{"get":{"description":"devicePosture descreve a análise com pontos corporais estimados no aparelho: nenhuma imagem sai do telefone, não exige aceite AWS e exige consentimento de saúde vigente. A disponibilidade da postura verifica configuração e identidade STS. Não invoca o modelo nem certifica permissão de inferência, latência ou precisão. A cadência e os limites controlam admissão, sem prometer uma taxa efetiva de reconhecimento. O catálogo precisa conter uma regra específica para a análise do exercício selecionado. Frequência cardíaca exige um sensor BLE registrado; calorias mantêm a origem do dispositivo conectado ou da estimativa. Carga, repetições declaradas e percepção de esforço são informações do usuário. Esforço cardíaco exige cobertura elegível e frequência máxima configurada. A geometria da câmera representa apenas o plano visível da imagem.","operationId":"StrengthCapabilitiesController_capabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthCapabilitiesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar recursos e origem das métricas do treino de força","tags":["Strength training"]}},"/v1/strength/exercises":{"get":{"description":"Catálogo autenticado de movimentos específicos, filtrável por grupo muscular, equipamento e texto no nome ou chave. Retorna apenas exercícios ativos. Cada seleção em um treino conserva uma cópia da revisão escolhida. motionRule=null permite registro manual, sem contagem pela câmera.","operationId":"StrengthCatalogueController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"muscleGroup","required":false,"in":"query","schema":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]}},{"name":"equipment","required":false,"in":"query","schema":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExercisePageResponseDto"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."}},"security":[{"bearer":[]}],"summary":"Listar exercícios com pesos e repetições","tags":["Strength training"]}},"/v1/strength/exercises/{id}":{"get":{"operationId":"StrengthCatalogueController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExerciseResponseDto"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."}},"security":[{"bearer":[]}],"summary":"Consultar instruções e regra de movimento de um exercício ativo","tags":["Strength training"]}},"/v1/admin/strength/exercises":{"get":{"description":"Inclui exercícios ativos e desativados. includeDeleted=true acrescenta excluídos logicamente. Filtros por grupo muscular, equipamento e texto; paginação por UUID.","operationId":"StrengthCatalogueAdminController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"muscleGroup","required":false,"in":"query","schema":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]}},{"name":"equipment","required":false,"in":"query","schema":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExercisePageResponseDto"}}}},"400":{"description":"STRENGTH_EXERCISE_INVALID: metadados ou regra de movimento inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."},"409":{"description":"STRENGTH_REVISION_CONFLICT, STRENGTH_EXERCISE_SLUG_IMMUTABLE ou chave já cadastrada. Consulte a revisão atual antes de repetir a edição."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar o catálogo administrativo de exercícios","tags":["Strength training administration"]},"post":{"description":"A chave slug é normalizada para minúsculas e permanece única e imutável. muscleGroup organiza o catálogo; a regra pertence ao movimento concreto. O administrador deve revisar instruções, vista da câmera e limites geométricos antes de publicar uma regra. O cadastro não cria treinos ou métricas de usuários.","operationId":"StrengthCatalogueAdminController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStrengthExerciseDto"},"examples":{"dumbbellCurl":{"value":{"slug":"dumbbell-biceps-curl","name":"Rosca de bíceps com halteres","muscleGroup":"biceps","equipment":"dumbbell","description":"Flexão controlada dos cotovelos com halteres.","instructions":["Fique em pé com os pés estáveis e os braços ao lado do corpo.","Flexione os cotovelos mantendo os braços próximos ao tronco.","Retorne de forma controlada sem balançar o tronco."],"safetyNote":"Use uma carga que permita manter o controle do movimento.","motionRule":null,"enabled":false}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExerciseResponseDto"}}}},"400":{"description":"STRENGTH_EXERCISE_INVALID: metadados ou regra de movimento inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."},"409":{"description":"STRENGTH_REVISION_CONFLICT, STRENGTH_EXERCISE_SLUG_IMMUTABLE ou chave já cadastrada. Consulte a revisão atual antes de repetir a edição."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar um movimento específico para treino de força","tags":["Strength training administration"]}},"/v1/admin/strength/exercises/{id}":{"get":{"operationId":"StrengthCatalogueAdminController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExerciseResponseDto"}}}},"400":{"description":"STRENGTH_EXERCISE_INVALID: metadados ou regra de movimento inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."},"409":{"description":"STRENGTH_REVISION_CONFLICT, STRENGTH_EXERCISE_SLUG_IMMUTABLE ou chave já cadastrada. Consulte a revisão atual antes de repetir a edição."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar um exercício administrativo e sua revisão atual","tags":["Strength training administration"]},"put":{"description":"Exige expectedRevision e o cadastro completo mantendo o slug. Incrementa a revisão; treinos existentes conservam a cópia selecionada anteriormente. Campos opcionais omitidos recebem os valores padrão do cadastro.","operationId":"StrengthCatalogueAdminController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceStrengthExerciseDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExerciseResponseDto"}}}},"400":{"description":"STRENGTH_EXERCISE_INVALID: metadados ou regra de movimento inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."},"409":{"description":"STRENGTH_REVISION_CONFLICT, STRENGTH_EXERCISE_SLUG_IMMUTABLE ou chave já cadastrada. Consulte a revisão atual antes de repetir a edição."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir os dados e a regra de um exercício","tags":["Strength training administration"]},"patch":{"description":"Exige expectedRevision e pelo menos um campo alterado. Campos omitidos são preservados. A regra completa é substituída quando motionRule é enviado; motionRule=null desativa a contagem por câmera para novas seleções.","operationId":"StrengthCatalogueAdminController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchStrengthExerciseDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthExerciseResponseDto"}}}},"400":{"description":"STRENGTH_EXERCISE_INVALID: metadados ou regra de movimento inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."},"409":{"description":"STRENGTH_REVISION_CONFLICT, STRENGTH_EXERCISE_SLUG_IMMUTABLE ou chave já cadastrada. Consulte a revisão atual antes de repetir a edição."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar metadados, disponibilidade ou regra de um exercício","tags":["Strength training administration"]},"delete":{"description":"Exige expectedRevision na query. Retira o exercício de novas seleções e preserva o histórico dos treinos com suas revisões e regras originais.","operationId":"StrengthCatalogueAdminController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"STRENGTH_EXERCISE_INVALID: metadados ou regra de movimento inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"STRENGTH_EXERCISE_NOT_FOUND: exercício indisponível."},"409":{"description":"STRENGTH_REVISION_CONFLICT, STRENGTH_EXERCISE_SLUG_IMMUTABLE ou chave já cadastrada. Consulte a revisão atual antes de repetir a edição."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente um exercício do catálogo","tags":["Strength training administration"]}},"/v1/strength/workouts":{"post":{"description":"Uses clientId for idempotency. Loads and targets are user reports. Freezes the exercise rules. Requires current health consent; AWS opt-in is separate.","operationId":"StrengthWorkoutsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStrengthWorkoutDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a strength workout with one canonical activity","tags":["Strength training"]},"get":{"operationId":"StrengthWorkoutsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"state","required":false,"in":"query","schema":{"type":"string","enum":["recording","paused","completed","discarded"]}},{"name":"muscleGroup","required":false,"in":"query","schema":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]}},{"name":"from","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","type":"string"}},{"name":"to","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List private strength workouts with their exercise and set history","tags":["Strength training"]}},"/v1/strength/history":{"get":{"description":"Reported load/repetitions, observed camera cycles, device heart rate and calorie estimates remain explicitly identified. Private retained history remains readable after health consent withdrawal.","operationId":"StrengthWorkoutsController_history","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"state","required":false,"in":"query","schema":{"type":"string","enum":["recording","paused","completed","discarded"]}},{"name":"muscleGroup","required":false,"in":"query","schema":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]}},{"name":"from","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","type":"string"}},{"name":"to","required":false,"in":"query","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthMetricsPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List strength metrics and load progression","tags":["Strength training"]}},"/v1/strength/workouts/{id}":{"get":{"operationId":"StrengthWorkoutsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Recover a private workout, its revisions and set states","tags":["Strength training"]},"patch":{"description":"The commandId is idempotent and expectedRevision must match the workout. Withdrawing AWS consent cancels live camera sessions.","operationId":"StrengthWorkoutsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStrengthWorkoutDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change a workout title or explicit AWS consent","tags":["Strength training"]},"delete":{"description":"The canonical activity and minimal idempotency identity remain. Use the existing activity deletion endpoint to erase the canonical activity as well. Available after withdrawing health consent.","operationId":"StrengthWorkoutsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"commandId","required":true,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthDeletedResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Erase strength details after the activity ends","tags":["Strength training"]}},"/v1/strength/workouts/{id}/state":{"patch":{"description":"Timing comes from the database clock. Pausing interrupts sets and camera sessions. Resuming the activity leaves an interrupted set paused until its explicit resume. Completion preserves the existing activity summary, Score and recap pipeline. Discard removes strength details.","operationId":"StrengthWorkoutsController_state","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Pause, resume, complete or discard a canonical strength activity","tags":["Strength training"]}},"/v1/strength/workouts/{id}/metrics":{"get":{"description":"Reuses the canonical activity samples and watch totals. Missing sensor values stay null. Camera geometry never supplies heart rate, load or energy.","operationId":"StrengthWorkoutsController_workoutMetrics","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthMetricsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read current strength, heart-rate, effort and energy metrics","tags":["Strength training"]}},"/v1/strength/workouts/{id}/exercises":{"post":{"description":"expectedRevision refers to the workout. Up to 40 exercises and 200 sets are permitted.","operationId":"StrengthWorkoutsController_addExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddStrengthWorkoutExerciseDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Append an exercise and its planned sets","tags":["Strength training"]}},"/v1/strength/workout-exercises/{id}":{"put":{"description":"expectedRevision refers to the workout exercise. Started exercises retain their frozen rules and recorded sets.","operationId":"StrengthWorkoutsController_replaceExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceStrengthWorkoutExerciseDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthWorkoutResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Replace an exercise before its sets start","tags":["Strength training"]},"delete":{"description":"expectedRevision refers to the workout exercise. The same commandId can be replayed after deletion.","operationId":"StrengthWorkoutsController_removeExercise","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"commandId","required":true,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthDeletedResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Remove an exercise while all its sets remain planned","tags":["Strength training"]}},"/v1/strength/sets/{id}":{"get":{"operationId":"StrengthWorkoutsController_getSet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Recover a private set and its latest revision","tags":["Strength training"]},"patch":{"operationId":"StrengthWorkoutsController_updateSet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStrengthSetDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Adjust reported load and target repetitions before starting a set","tags":["Strength training"]}},"/v1/strength/sets/{id}/start":{"post":{"description":"Only one active or paused set is allowed per workout. expectedRevision refers to the set.","operationId":"StrengthWorkoutsController_start","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthCommandDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Start a planned set using server time","tags":["Strength training"]}},"/v1/strength/sets/{id}/pause":{"post":{"operationId":"StrengthWorkoutsController_pause","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthCommandDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Pause a set and cancel its live camera session","tags":["Strength training"]}},"/v1/strength/sets/{id}/resume":{"post":{"description":"A new camera session is required. Partial motion cycles from before the pause cannot complete a repetition.","operationId":"StrengthWorkoutsController_resume","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthCommandDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resume a paused set after the workout resumes","tags":["Strength training"]}},"/v1/strength/sets/{id}/completion":{"post":{"description":"reportedReps and reportedRpe are explicit user reports. They never overwrite observedReps, qualifiedReps or observed posture quality. load and loadUnit optionally correct the external load the person reports having lifted in this set; it stays a user report and is normalized to loadKg.","operationId":"StrengthWorkoutsController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteStrengthSetDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Complete a set and optionally record repetitions and perceived exertion","tags":["Strength training"]}},"/v1/strength/sets/{id}/skip":{"post":{"operationId":"StrengthWorkoutsController_skip","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthCommandDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthSetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Skip a planned or interrupted set without claiming completion","tags":["Strength training"]}},"/v1/strength/sets/{id}/pose-sessions":{"post":{"description":"Requires an owned recording strength workout, an active set and current health-data consent. source=aws (default) sends camera JPEGs and also requires the workout AWS opt-in and a configured pose provider. source=device sends normalized body landmarks estimated on the phone: no image leaves the device and no AWS opt-in is needed. Freezes the exercise movement rule. Use the same clientId to retry. Only one camera session is active per set; each lasts at most 30 minutes. The combined observation budget is 1800 frames and 20 camera sessions per set.","operationId":"StrengthPoseController_start","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseStartDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Start camera observations for the active strength set","tags":["Strength camera"]},"get":{"description":"Cursor pagination, newest first. Recovers sessions after reconnect or a lost start response. Active sessions expose nonce and nextSequence. Historical aggregates remain after normal session closure; erased measurements are null.","operationId":"StrengthPoseController_sessions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseSessionPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List private camera sessions for a strength set","tags":["Strength camera"]}},"/v1/strength/pose-sessions/{id}":{"get":{"description":"Private to the owner. Historical progress remains readable after health-data consent withdrawal; new frames require current consent. observedMovementMs describes sampled, observable movement; it does not measure muscle tension. No heartbeat, calorie value or external load is inferred from body points.","operationId":"StrengthPoseController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read current camera progress and its frozen movement rule","tags":["Strength camera"]},"delete":{"description":"Idempotently cancels collection and invalidates in-flight frames, without deleting confirmed observations or repetitions. Cancellation remains available after consent withdrawal. Measurement erasure is a separate user operation.","operationId":"StrengthPoseController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Cancel a strength camera session","tags":["Strength camera"]}},"/v1/strength/pose-sessions/{id}/frames":{"post":{"description":"Send canonical base64 JPEG up to 40 KiB decoded, then wait for the response and minimumFrameIntervalMs. AWS receives a sanitized image of at most 640 px; camera bytes are discarded. The backend stores model version, points, angles, timing and deterministic feedback. A complete cycle requires stable start and end ranges, hysteresis, sufficient frames and bounded gaps. Invisible required points, multiple people and long gaps reset the incomplete cycle. Feedback-only posture checks do not invalidate a repetition; invalid checks do. Identical committed sequence and payload is idempotent; sequence conflicts and reused images are rejected. Frame, repetition, session and set aggregates commit atomically. capturedAt is informational. Equivalent Socket.IO events are strength:subscribe and strength:frame in /strength.","operationId":"StrengthPoseController_frame","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseFrameDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseFrameResultDto"}}}}},"security":[{"bearer":[]}],"summary":"Analyze one camera frame and advance the observed repetition cycle","tags":["Strength camera"]},"get":{"description":"Cursor pagination, newest server observation first. Includes joints, image-plane angles, confidence, feedback and latency. Camera images are never returned or persisted.","operationId":"StrengthPoseController_frames","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseFramePageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read private frame measurements for a strength camera session","tags":["Strength camera"]}},"/v1/strength/pose-sessions/{id}/observations":{"post":{"description":"Only for source=device sessions. pose follows the COCO-17 contract of the hosted model: anatomical joint names, coordinates normalized to the analysed image with the origin at its top-left corner, the image dimensions and the number of people found; keypoints only when exactly one person is reported. No image or video is accepted or stored. The server applies the frozen movement rule with its own clock, persists landmarks, angles and feedback with the same 30-day retention as camera frames, and commits frame, repetition, session and set aggregates atomically. Wait for the response and minimumFrameIntervalMs before the next observation. Identical committed sequence and payload is idempotent. Equivalent Socket.IO event: strength:observation in /strength.","operationId":"StrengthPoseController_observe","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseObservationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthPoseFrameResultDto"}}}}},"security":[{"bearer":[]}],"summary":"Evaluate on-device body landmarks and advance the observed repetition cycle","tags":["Strength camera"]}},"/v1/strength/sets/{id}/repetitions":{"get":{"description":"Cursor pagination, newest completed cycle first. observed repetitions and qualified repetitions are distinct. Each item identifies duration, observed angular amplitude, evidence coverage, posture qualification and deterministic rule-method version. This is an image-plane movement estimate, not a clinical or biomechanical assessment.","operationId":"StrengthPoseController_repetitions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthRepetitionPageResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Read confirmed observed repetitions across camera sessions for a set","tags":["Strength camera"]}},"/v1/reels/music-catalog":{"get":{"operationId":"ReelsMusicController_tracks","parameters":[{"name":"mode","required":false,"in":"query","schema":{"default":"for_clip","type":"string","enum":["for_clip","trending"]}},{"name":"clipDurationMs","required":false,"in":"query","schema":{"minimum":1,"maximum":180000,"default":15000,"type":"integer"}},{"name":"startMs","required":false,"in":"query","schema":{"minimum":0,"maximum":3600000,"default":0,"type":"integer"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]}},{"name":"mood","required":false,"in":"query","schema":{"minLength":1,"maxLength":60,"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":80,"type":"string"}},{"name":"playlistId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":10000,"default":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelMusicCatalogResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel music"]}},"/v1/reels/music-playlists":{"get":{"operationId":"ReelsMusicController_playlists","parameters":[{"name":"clipDurationMs","required":false,"in":"query","schema":{"minimum":1,"maximum":180000,"default":15000,"type":"integer"}},{"name":"startMs","required":false,"in":"query","schema":{"minimum":0,"maximum":3600000,"default":0,"type":"integer"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]}},{"name":"mood","required":false,"in":"query","schema":{"minLength":1,"maxLength":60,"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":80,"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":10000,"default":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelMusicPlaylistsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel music"]}},"/v1/reels/music-tracks/{id}/beat-map":{"get":{"operationId":"ReelsMusicController_beats","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelBeatMapResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel music"]}},"/v1/admin/reels/music-tracks/{id}/analysis":{"post":{"operationId":"ReelsMusicAdminController_analyse","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelBeatMapResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/admin/reels/music-tracks/{id}/beat-map":{"post":{"operationId":"ReelsMusicAdminController_import","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportReelBeatMapDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelBeatMapResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/reels/feed":{"get":{"operationId":"ReelsSocialController_feed","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"mode","required":false,"in":"query","schema":{"default":"for_you","type":"string","enum":["for_you","following","nearby"]}},{"name":"latitude","required":false,"in":"query","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"radiusKm","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"number"}},{"name":"viewportReelId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsFeedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/latest":{"get":{"operationId":"ReelsSocialController_latest","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":12,"default":6,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsLatestResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/creators/{userId}":{"get":{"operationId":"ReelsSocialController_creator","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsFeedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/saved":{"get":{"operationId":"ReelsSocialController_saved","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"collectionId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsFeedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/collections":{"get":{"operationId":"ReelsSocialController_collections","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCollectionsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"post":{"operationId":"ReelsSocialController_collection","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCollectionCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCollectionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/collections/{collectionId}":{"patch":{"operationId":"ReelsSocialController_rename","parameters":[{"name":"collectionId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCollectionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCollectionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"delete":{"operationId":"ReelsSocialController_deleteCollection","parameters":[{"name":"collectionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/events":{"post":{"operationId":"ReelsSocialController_events","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsEventsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationEventsResultDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/reports":{"get":{"operationId":"ReelsSocialController_reports","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsReportsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/appeals":{"get":{"operationId":"ReelsSocialController_appeals","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAppealsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/like":{"put":{"operationId":"ReelsSocialController_like","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsLikedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"delete":{"operationId":"ReelsSocialController_unlike","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsLikedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/saved":{"put":{"operationId":"ReelsSocialController_save","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsSaveDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsSavedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"delete":{"operationId":"ReelsSocialController_unsave","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsUnsavedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/not-interested":{"put":{"operationId":"ReelsSocialController_hide","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsHiddenResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"delete":{"operationId":"ReelsSocialController_unhide","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsHiddenResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/comments":{"get":{"operationId":"ReelsSocialController_comments","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"parentId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCommentsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"post":{"operationId":"ReelsSocialController_comment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCommentDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsCommentCreatedDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/comments/{commentId}":{"delete":{"operationId":"ReelsSocialController_deleteComment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"commentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/comments/{commentId}/like":{"put":{"operationId":"ReelsSocialController_commentLike","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"commentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsLikedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]},"delete":{"operationId":"ReelsSocialController_commentUnlike","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"commentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsLikedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/comments/{commentId}/pin":{"put":{"operationId":"ReelsSocialController_pin","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"commentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsPinnedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/pinned-comment":{"delete":{"operationId":"ReelsSocialController_unpin","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsPinnedResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/reports":{"post":{"operationId":"ReelsSocialController_report","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsReportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsReportCreatedDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/reels/{id}/appeals":{"post":{"operationId":"ReelsSocialController_appeal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAppealDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAppealCreatedDto"}}}}},"security":[{"bearer":[]}],"tags":["Reels social"]}},"/v1/admin/reels/moderation":{"get":{"operationId":"ReelsSocialAdminController_queue","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsModerationQueueResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/admin/reels/{id}/moderation":{"post":{"operationId":"ReelsSocialAdminController_moderate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsModerationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsModeratedResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/admin/reels/reports":{"get":{"operationId":"ReelsSocialAdminController_reports","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAdminReportsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/admin/reels/reports/{reportId}/review":{"post":{"operationId":"ReelsSocialAdminController_reviewReport","parameters":[{"name":"reportId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsReportReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsReportReviewedResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/admin/reels/appeals":{"get":{"operationId":"ReelsSocialAdminController_appeals","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAppealsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/admin/reels/appeals/{appealId}/review":{"post":{"operationId":"ReelsSocialAdminController_reviewAppeal","parameters":[{"name":"appealId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAppealReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelsAppealReviewedResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Reels administration"]}},"/v1/reels/drafts":{"get":{"operationId":"ReelsController_drafts","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelDraftPageResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/music-tracks":{"get":{"operationId":"ReelsController_music","parameters":[{"name":"mode","required":false,"in":"query","schema":{"default":"for_clip","type":"string","enum":["for_clip","trending"]}},{"name":"clipDurationMs","required":false,"in":"query","schema":{"minimum":1,"maximum":180000,"default":15000,"type":"integer"}},{"name":"startMs","required":false,"in":"query","schema":{"minimum":0,"maximum":3600000,"default":0,"type":"integer"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]}},{"name":"mood","required":false,"in":"query","schema":{"minLength":1,"maxLength":60,"type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":80,"type":"string"}},{"name":"playlistId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"maximum":10000,"default":0,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelMusicCatalogResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels":{"post":{"operationId":"ReelsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReelDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}":{"get":{"operationId":"ReelsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]},"patch":{"operationId":"ReelsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReelDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]},"delete":{"operationId":"ReelsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/uploads":{"post":{"operationId":"ReelsController_upload","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReelUploadDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelUploadResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/uploads/{revisionId}":{"get":{"operationId":"ReelsController_uploadStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelUploadResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]},"delete":{"operationId":"ReelsController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/uploads/{revisionId}/parts":{"post":{"operationId":"ReelsController_part","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignReelPartDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelPartResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/uploads/{revisionId}/complete":{"post":{"operationId":"ReelsController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"revisionId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteReelUploadDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelUploadResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/publish":{"post":{"operationId":"ReelsController_publish","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishReelDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/playback":{"post":{"description":"Apply the session Bearer header to manifest, variant, segment, cover and caption requests. A grant does not bypass current visibility, moderation, blocks or music rights. Offline copies remain in private app storage and require revalidation.","operationId":"ReelsController_grant","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelPlaybackDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelPlaybackResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a short session-bound playback/download authorisation","tags":["KYReel"]}},"/v1/reels/{id}/playback/{grantId}/files/{name}":{"get":{"operationId":"ReelsController_file","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"grantId","required":true,"in":"path","schema":{"type":"string"}},{"name":"name","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Protected media bytes; the bearer session is required on every request.","content":{"application/vnd.apple.mpegurl":{"schema":{"type":"string","format":"binary"}},"video/iso.segment":{"schema":{"type":"string","format":"binary"}},"video/mp2t":{"schema":{"type":"string","format":"binary"}},"video/mp4":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"text/vtt":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"Requested byte range, with Content-Range and Accept-Ranges headers.","content":{"application/vnd.apple.mpegurl":{"schema":{"type":"string","format":"binary"}},"video/iso.segment":{"schema":{"type":"string","format":"binary"}},"video/mp2t":{"schema":{"type":"string","format":"binary"}},"video/mp4":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"text/vtt":{"schema":{"type":"string","format":"binary"}}}},"307":{"description":"Video segments, MP4 downloads and covers redirect to a short-lived private S3 or CDN URL."}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/share":{"get":{"operationId":"ReelsController_share","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelShareResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/offline/revalidate":{"post":{"operationId":"ReelsController_revalidateOffline","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelOfflineRevalidateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelOfflineValidityResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/reels/{id}/thumbnail":{"get":{"operationId":"ReelsController_thumbnail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"307":{"description":"An authorised cover redirects to a short-lived private object URL."}},"security":[{"bearer":[]}],"tags":["KYReel"]}},"/v1/admin/reels/{id}/playback":{"post":{"operationId":"ReelsReviewPlaybackController_review","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelPlaybackResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYReel moderation"]}},"/v1/me/personalisation/preferences":{"get":{"operationId":"PersonalisationController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationPreferencesViewDto"}}}}},"security":[{"bearer":[]}],"tags":["Personalisation"]},"put":{"description":"All choices default to false. Use expectedVersion=0 for the first choice and the current policyVersion. Revocation clears collected signals; consent is never inferred from registration or marketing consent.","operationId":"PersonalisationController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationPreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationPreferencesViewDto"}}}},"403":{"description":"Personalised advertising requires an eligible adult account."},"409":{"description":"PERSONALISATION_VERSION_CONFLICT: reload before saving."}},"security":[{"bearer":[]}],"summary":"Explicitly choose recommendation, advertising, model and social processing","tags":["Personalisation"]}},"/v1/me/personalisation/profile":{"get":{"description":"Bounded to the latest 5000 retained events within 30 days. Confidence labels describe evidence volume, not predictive accuracy. No health, private message, exact location or demographic inference is included.","operationId":"PersonalisationController_profile","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationProfileDto"}}}}},"security":[{"bearer":[]}],"summary":"Inspect your declared and observed interests and client-reported engagement","tags":["Personalisation"]},"delete":{"description":"Requires confirmation RESET and the latest preference version. Clears events, receipts and model output; previous offline batches cannot recreate the old profile. Consent choices remain available for future interactions.","operationId":"PersonalisationController_reset","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationResetDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationPreferencesViewDto"}}}}},"security":[{"bearer":[]}],"summary":"Reset your observed and declared interests","tags":["Personalisation"]}},"/v1/me/personalisation/events":{"post":{"description":"Use the login deviceId. Content tags are resolved by the server after visibility checks. No arbitrary properties, free text, GPS, raw touch coordinates or health fields. Duration and scroll are client-reported engagement heartbeats; the server cannot observe the device itself.","operationId":"PersonalisationController_events","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationEventsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationEventsResultDto"}}}}},"security":[{"bearer":[]}],"summary":"Ingest a consented, idempotent batch of up to 50 app interactions","tags":["Personalisation"]}},"/v1/recommendations/tracks":{"get":{"operationId":"RecommendationsController_tracks","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationRecommendationsDto"}}}}},"security":[{"bearer":[]}],"tags":["Recommendations"]}},"/v1/recommendations/groups":{"get":{"description":"excludeDecided=true also leaves out groups with a current keep or pass decision from discovery; an undone decision no longer excludes the group. Without it the catalogue is unchanged.","operationId":"RecommendationsController_groups","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}},{"name":"excludeDecided","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationRecommendationsDto"}}}}},"security":[{"bearer":[]}],"summary":"Recommend visible groups the account has not joined","tags":["Recommendations"]}},"/v1/recommendations/connections":{"get":{"description":"After social-suggestion consent, uses shared connections and sport affinity from visible shared groups. Other users must opt in to discovery; their private interests and messages are never read or exposed.","operationId":"RecommendationsController_connections","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationRecommendationsDto"}}}}},"security":[{"bearer":[]}],"summary":"Recommend explicitly discoverable accounts, respecting blocks and existing follows","tags":["Recommendations"]}},"/v1/recommendations/events":{"get":{"description":"Excludes archived groups, blocked or deleted organisers, own events, events already answered and groups currently passed in discovery. Without recommendation consent, returns the general eligible catalogue. Locations and attendee identities do not enter the ranking.","operationId":"RecommendationsController_events","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationRecommendationsDto"}}}}},"security":[{"bearer":[]}],"summary":"Recommend visible upcoming events using consented interests","tags":["Recommendations"]}},"/v1/recommendations/training-plans":{"get":{"description":"Applies the training catalogue publication policy and excludes active or completed enrolments. Without recommendation consent, returns the general eligible catalogue. Difficulty, health data and fitness readiness are not inferred; review the plan before enrolling.","operationId":"RecommendationsController_trainingPlans","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationRecommendationsDto"}}}}},"security":[{"bearer":[]}],"summary":"Recommend visible training plans using consented sport interests","tags":["Recommendations"]}},"/v1/recommendations/advertising":{"get":{"description":"General delivery remains available without profiling. Personalised ordering uses allowed interests only, preserves the fixed sponsored badge and Figma placement policy, and never uses health, precise location or the friendship graph.","operationId":"RecommendationsController_ads","parameters":[{"name":"placement","required":true,"in":"query","schema":{"type":"string","enum":["today_sponsored","community_feed"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":10,"default":5,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationAdvertisingDto"}}}}},"security":[{"bearer":[]}],"summary":"Order eligible advertising units using separate advertising consent","tags":["Recommendations"]}},"/v1/admin/personalisation/metrics":{"get":{"operationId":"AdminPersonalisationController_metrics","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalisationMetricsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Aggregate opt-in, event and model-processing counters without individual profiles","tags":["Personalisation administration"]}},"/v1/advertising/placements":{"get":{"description":"Dimensions are density-independent pixels. Text scaling may grow card height. Community inserts one unit after three organic posts, never first and never consecutively. Existing /feed responses are unchanged.","operationId":"AdvertisingController_placements","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingPlacementsDto"}}}}},"security":[{"bearer":[]}],"summary":"Advertising formats, mandatory badges and placement policy from Figma","tags":["Advertising"]}},"/v1/advertising/placements/{placement}/ads":{"get":{"description":"Requires an active advertiser and all campaign image snapshots. Only advertiser id/displayName reach the app. Images are private signed URLs lasting 900 seconds. Cards without an action have null actionLabel and actionUrl. Other action URLs are public HTTPS links opened by the client, never fetched by this server.","operationId":"AdvertisingController_ads","parameters":[{"name":"placement","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":20,"default":10,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingDeliveryDto"}}}}},"security":[{"bearer":[]}],"summary":"Deliver active scheduled advertising units for one placement","tags":["Advertising"]}},"/v1/admin/advertising/metrics":{"get":{"operationId":"AdminAdvertisingController_metrics","parameters":[{"name":"advertiserId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingMetricsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Counts stored advertisers, campaign states and moderation decisions","tags":["Advertising administration"]}},"/v1/admin/advertising/advertisers":{"get":{"operationId":"AdminAdvertisingController_advertisers","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["active","archived"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"post":{"operationId":"AdminAdvertisingController_createAdvertiser","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdvertiserDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Register an advertiser company and private administrative contact details","tags":["Advertising administration"]}},"/v1/admin/advertising/advertisers/{id}":{"get":{"operationId":"AdminAdvertisingController_advertiser","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"patch":{"operationId":"AdminAdvertisingController_updateAdvertiser","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAdvertiserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"put":{"operationId":"AdminAdvertisingController_replaceAdvertiser","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceAdvertiserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"delete":{"operationId":"AdminAdvertisingController_archiveAdvertiser","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedVersion","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Advertiser archived; its campaigns stop being delivered. Company/campaign history remains available to administrators."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]}},"/v1/admin/advertising/campaigns":{"get":{"operationId":"AdminAdvertisingController_campaigns","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"advertiserId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"placement","required":false,"in":"query","schema":{"type":"string","enum":["today_sponsored","community_feed"]}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["draft","active","paused","archived"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"post":{"description":"Each new imageMediaId must be a ready post, cover or artwork uploaded by this administrator. Processed image bytes are copied into permanent advertising storage; removing the original uploader does not remove the advert. A carousel requires 2–10 ordered cards, single mode exactly one.","operationId":"AdminAdvertisingController_createCampaign","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdvertisingCampaignDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Create an advertising campaign with campaign-owned image snapshots","tags":["Advertising administration"]}},"/v1/admin/advertising/campaigns/{id}":{"get":{"operationId":"AdminAdvertisingController_campaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"patch":{"description":"Omitted values remain unchanged. Replacing cards is an atomic replacement of the ordered list; previously attached image snapshots can be reused by any authorised administrator.","operationId":"AdminAdvertisingController_updateCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAdvertisingCampaignDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Update selected campaign fields using expectedVersion","tags":["Advertising administration"]},"put":{"operationId":"AdminAdvertisingController_replaceCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceAdvertisingCampaignDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]},"delete":{"operationId":"AdminAdvertisingController_archiveCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedVersion","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Campaign archived, preserving its record and image snapshots. Archived campaigns cannot be reactivated."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]}},"/v1/admin/advertising/campaigns/with-media":{"post":{"operationId":"AdminAdvertisingController_createCampaignWithMedia","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["campaign"],"properties":{"campaign":{"type":"string","description":"JSON da campanha. Cada card usa imageField (image0 a image9) ou imageMediaId; no PUT inclua expectedVersion.","example":"{\"advertiserId\":\"00000000-0000-4000-8000-000000000001\",\"name\":\"Campanha exemplo\",\"placement\":\"today_sponsored\",\"format\":\"today_wide\",\"mode\":\"single\",\"status\":\"draft\",\"cards\":[{\"imageField\":\"image0\",\"title\":\"Treine hoje\",\"body\":null,\"actionLabel\":null,\"actionUrl\":null,\"altText\":\"Pessoa praticando atividade física\"}]}"},"image0":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image1":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image2":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image3":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image4":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image5":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image6":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image7":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image8":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image9":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]}},"/v1/admin/advertising/campaigns/{id}/with-media":{"put":{"operationId":"AdminAdvertisingController_replaceCampaignWithMedia","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["campaign"],"properties":{"campaign":{"type":"string","description":"JSON da campanha. Cada card usa imageField (image0 a image9) ou imageMediaId; no PUT inclua expectedVersion.","example":"{\"advertiserId\":\"00000000-0000-4000-8000-000000000001\",\"name\":\"Campanha exemplo\",\"placement\":\"today_sponsored\",\"format\":\"today_wide\",\"mode\":\"single\",\"status\":\"draft\",\"cards\":[{\"imageField\":\"image0\",\"title\":\"Treine hoje\",\"body\":null,\"actionLabel\":null,\"actionUrl\":null,\"altText\":\"Pessoa praticando atividade física\"}]}"},"image0":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image1":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image2":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image3":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image4":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image5":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image6":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image7":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image8":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."},"image9":{"type":"string","format":"binary","description":"JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]}},"/v1/admin/advertising/campaigns/{id}/moderation":{"post":{"operationId":"AdminAdvertisingController_moderateCampaign","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingModerationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertisingCampaignDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: the current account must have the administrator role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"ADVERTISING_VERSION_CONFLICT: reload the current version before retrying; CAMPAIGN_ARCHIVED: archived campaigns are immutable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["Advertising administration"]}},"/v1/kyzone/config":{"get":{"operationId":"KyzoneController_config","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneConfigurationResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/preferences":{"get":{"operationId":"KyzoneController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"put":{"operationId":"KyzoneController_setPreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePreferencesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/claims":{"post":{"operationId":"KyzoneController_start","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneStartDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneClaimResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"get":{"operationId":"KyzoneController_claims","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneClaimsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/claims/{id}":{"get":{"operationId":"KyzoneController_claim","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneClaimResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"delete":{"operationId":"KyzoneController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneClaimResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/claims/{id}/complete":{"post":{"operationId":"KyzoneController_complete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneCompleteDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneClaimResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/claims/{id}/finish":{"post":{"operationId":"KyzoneController_finish","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneFinishDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneClaimResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/claims/{id}/laps":{"post":{"operationId":"KyzoneController_lap","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneLapDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneLapResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"get":{"operationId":"KyzoneController_laps","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneLapsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/map":{"get":{"operationId":"KyzoneController_map","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"west","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"south","required":true,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"east","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"north","required":true,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneMapResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/map/overview":{"get":{"operationId":"KyzoneController_overview","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"west","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"south","required":true,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"east","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"north","required":true,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneMapOverviewResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/places":{"get":{"operationId":"KyzoneController_places","parameters":[{"name":"west","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"south","required":true,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"east","required":true,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"north","required":true,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePlacesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/territory":{"get":{"operationId":"KyzoneController_territory","parameters":[{"name":"cellId","required":true,"in":"query","schema":{"maxLength":32,"type":"string"}},{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneTerritoryResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/cells/{cellId}":{"get":{"operationId":"KyzoneController_detail","parameters":[{"name":"cellId","required":true,"in":"path","schema":{"type":"string"}},{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneCellResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/leaderboard":{"get":{"operationId":"KyzoneController_leaderboard","parameters":[{"name":"scope","required":false,"in":"query","schema":{"default":"season","type":"string","enum":["season","all_time"]}},{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneLeaderboardResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/private-zones":{"get":{"operationId":"KyzoneController_privateZones","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePrivateZonesResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"post":{"operationId":"KyzoneController_createPrivateZone","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePrivateZoneDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePrivateZoneResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/private-zones/{id}":{"patch":{"operationId":"KyzoneController_renamePrivateZone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePrivateZoneRenameDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePrivateZoneResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"delete":{"operationId":"KyzoneController_deletePrivateZone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/share":{"get":{"operationId":"KyzoneController_share","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneShareResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/admin/kyzone/policies":{"get":{"operationId":"KyzoneAdminController_policies","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminPoliciesResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"post":{"operationId":"KyzoneAdminController_policy","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePolicyDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]}},"/v1/admin/kyzone/policies/{version}":{"get":{"operationId":"KyzoneAdminController_getPolicy","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"put":{"operationId":"KyzoneAdminController_replacePolicy","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzonePolicyReplaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"patch":{"operationId":"KyzoneAdminController_setPolicyEnabled","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"delete":{"operationId":"KyzoneAdminController_deletePolicy","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]}},"/v1/admin/kyzone/seasons":{"get":{"operationId":"KyzoneAdminController_seasons","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminSeasonsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"post":{"operationId":"KyzoneAdminController_season","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneSeasonDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneSeasonResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]}},"/v1/admin/kyzone/seasons/{id}":{"get":{"operationId":"KyzoneAdminController_getSeason","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminSeasonResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"put":{"operationId":"KyzoneAdminController_replaceSeason","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneSeasonDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminSeasonResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"patch":{"operationId":"KyzoneAdminController_setSeasonEnabled","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminSeasonResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"delete":{"operationId":"KyzoneAdminController_deleteSeason","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]}},"/v1/admin/kyzone/ranking-policies":{"get":{"operationId":"KyzoneAdminController_rankingPolicies","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminRankingPoliciesResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"post":{"operationId":"KyzoneAdminController_createRankingPolicy","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneRankingPolicyDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminRankingPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]}},"/v1/admin/kyzone/ranking-policies/{version}":{"get":{"operationId":"KyzoneAdminController_getRankingPolicy","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminRankingPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"put":{"operationId":"KyzoneAdminController_replaceRankingPolicy","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneRankingPolicyReplaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminRankingPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"patch":{"operationId":"KyzoneAdminController_setRankingPolicyEnabled","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminStateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAdminRankingPolicyResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]},"delete":{"operationId":"KyzoneAdminController_deleteRankingPolicy","parameters":[{"name":"version","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE administration"]}},"/v1/kyzone/insights/me":{"get":{"operationId":"KyzoneInsightsController_summary","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneInsightsSummaryResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/nearby":{"get":{"operationId":"KyzoneInsightsController_nearby","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"areaCellId","required":false,"in":"query","schema":{"pattern":"^[0-9a-f]{15}$","type":"string"}},{"name":"latitude","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"scope","required":false,"in":"query","schema":{"default":"nearby","type":"string","enum":["nearby","wider"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneNearbyResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/areas":{"get":{"operationId":"KyzoneInsightsController_areas","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"areaCellId","required":false,"in":"query","schema":{"pattern":"^[0-9a-f]{15}$","type":"string"}},{"name":"latitude","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"scope","required":false,"in":"query","schema":{"type":"string","enum":["nearby","wider"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneAreasResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/ranking-watch":{"get":{"operationId":"KyzoneInsightsController_watches","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneRankWatchesResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]},"put":{"operationId":"KyzoneInsightsController_watch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneRankWatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneRankWatchResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/rank-changes":{"get":{"operationId":"KyzoneInsightsController_changes","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneRankChangesResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/territories":{"get":{"operationId":"KyzoneInsightsController_territories","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"areaCellId","required":false,"in":"query","schema":{"pattern":"^[0-9a-f]{15}$","type":"string"}},{"name":"latitude","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"scope","required":false,"in":"query","schema":{"type":"string","enum":["nearby","wider"]}},{"name":"state","required":false,"in":"query","schema":{"default":"all","type":"string","enum":["all","safe","contested","decaying"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneInsightsTerritoriesResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/leaderboard":{"get":{"operationId":"KyzoneInsightsController_leaderboard","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"areaCellId","required":false,"in":"query","schema":{"pattern":"^[0-9a-f]{15}$","type":"string"}},{"name":"latitude","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"metric","required":false,"in":"query","schema":{"default":"held","type":"string","enum":["held","taken","distance","points"]}},{"name":"scope","required":false,"in":"query","schema":{"default":"global","type":"string","enum":["global","friends","nearby","wider"]}},{"name":"period","required":false,"in":"query","schema":{"default":"season","type":"string","enum":["season","all_time"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":50,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneInsightsLeaderboardResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/lost":{"get":{"operationId":"KyzoneInsightsController_lost","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneInsightsLostResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/events":{"get":{"operationId":"KyzoneInsightsController_events","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneInsightsEventsResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/kyzone/insights/territory-groups":{"get":{"operationId":"KyzoneInsightsController_territoryGroups","parameters":[{"name":"arena","required":false,"in":"query","schema":{"type":"string","enum":["foot","cycling"]}},{"name":"areaCellId","required":false,"in":"query","schema":{"pattern":"^[0-9a-f]{15}$","type":"string"}},{"name":"latitude","required":false,"in":"query","schema":{"minimum":-85,"maximum":85,"type":"number"}},{"name":"longitude","required":false,"in":"query","schema":{"minimum":-180,"maximum":180,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KyzoneTerritoryGroupsResponse"}}}}},"security":[{"bearer":[]}],"tags":["KYZONE"]}},"/v1/training/videos":{"get":{"operationId":"TrainingController_videos","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},{"name":"difficulty","required":false,"in":"query","schema":{"type":"string","enum":["beginner","intermediate","advanced","expert"]}},{"name":"category","required":false,"in":"query","schema":{"type":"string","enum":["mobility","strength"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingVideosResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/plans":{"get":{"operationId":"TrainingController_plans","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},{"name":"difficulty","required":false,"in":"query","schema":{"type":"string","enum":["beginner","intermediate","advanced","expert"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingPlansResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/plans/{id}":{"get":{"operationId":"TrainingController_plan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingPlanResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/plans/{id}/sessions":{"get":{"operationId":"TrainingController_sessions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingSessionsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/sessions/{id}":{"get":{"operationId":"TrainingController_session","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingSessionResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/plans/{id}/enrollment":{"put":{"operationId":"TrainingController_enroll","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingEnrollmentDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments":{"get":{"operationId":"TrainingController_enrollments","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingEnrollmentsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments/{id}/metrics":{"get":{"operationId":"TrainingController_metrics","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingMetricsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments/{id}/insights":{"post":{"operationId":"TrainingController_insights","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingInsightsResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/calendar":{"get":{"operationId":"TrainingController_calendar","parameters":[{"name":"from","required":true,"in":"query","schema":{"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])))$","type":"string"}},{"name":"to","required":true,"in":"query","schema":{"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])))$","type":"string"}},{"name":"timezone","required":false,"in":"query","schema":{"maxLength":80,"default":"UTC","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingCalendarResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/schedule/{id}":{"patch":{"operationId":"TrainingController_completion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingCompletionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingScheduleResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments/{id}":{"delete":{"operationId":"TrainingController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments/{id}/pause":{"post":{"operationId":"TrainingController_pause","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments/{id}/resume":{"post":{"operationId":"TrainingController_resume","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/enrollments/{id}/finish":{"post":{"operationId":"TrainingController_finish","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingEnrollmentResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/training/schedule/{id}/date":{"patch":{"operationId":"TrainingController_reschedule","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingRescheduleDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingScheduleResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["training"]}},"/v1/admin/training/plans":{"get":{"operationId":"AdminTrainingController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]},"post":{"operationId":"AdminTrainingController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCreateTrainingPlanDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"TRAINING_PLAN_ALREADY_EXISTS"},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]}},"/v1/admin/training/plans/{id}":{"get":{"operationId":"AdminTrainingController_plan","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]},"put":{"operationId":"AdminTrainingController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["plan"],"properties":{"plan":{"type":"string","description":"Complete plan JSON including sessions and blocks."},"cover":{"type":"string","format":"binary","description":"Optional JPEG, PNG or WebP, up to 10 MiB."},"instructionVideo":{"type":"string","format":"binary","description":"Optional MP4, up to 50 MiB and 30 minutes."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]},"patch":{"operationId":"AdminTrainingController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]},"delete":{"operationId":"AdminTrainingController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]}},"/v1/admin/training/plans/with-media":{"post":{"operationId":"AdminTrainingController_createWithMedia","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["plan","cover"],"properties":{"plan":{"type":"string","description":"JSON matching the training import plan, including all sessions and blocks.","example":"{\"slug\":\"plano-exemplo\",\"version\":1,\"title\":\"Plano exemplo\",\"description\":\"Plano de sete dias.\",\"sport\":\"strength_training\",\"difficulty\":\"beginner\",\"goal\":\"mobility\",\"durationDays\":7,\"author\":\"KYPACE\",\"published\":true,\"sessions\":[{\"key\":\"dia-1\",\"dayOffset\":0,\"title\":\"Sessão inicial\",\"description\":\"Mobilidade e força.\",\"blocks\":[{\"title\":\"Agachamento\",\"instructions\":\"Execute com controle.\",\"role\":\"main\",\"repetitions\":10}]}]}"},"cover":{"type":"string","format":"binary","description":"JPEG, PNG or WebP, at most 10 MiB."},"instructionVideo":{"type":"string","format":"binary","description":"Optional MP4 with H.264 video and optional AAC audio, at most 50 MiB and 30 minutes."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"TRAINING_PLAN_ALREADY_EXISTS"},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]}},"/v1/admin/training/plans/{id}/media":{"put":{"operationId":"AdminTrainingController_updateMedia","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"cover":{"type":"string","format":"binary","description":"JPEG, PNG or WebP, at most 10 MiB."},"instructionVideo":{"type":"string","format":"binary","description":"MP4 with H.264 video and optional AAC audio, at most 50 MiB and 30 minutes."}},"description":"Provide a cover, an instructionVideo, or both."}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]}},"/v1/admin/training/plans/{id}/instruction-videos":{"put":{"operationId":"AdminTrainingController_replaceInstructions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Replace the ordered library videos and per-session selections. The plan keeps private copies of each video and thumbnail. Enrolled plans require a new version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceTrainingInstructionVideosDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingPlanWriteDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"TRAINING_PLAN_HAS_ENROLLMENTS, TRAINING_INSTRUCTION_REQUIRED or TRAINING_INSTRUCTION_MEDIA_CHANGED"},"422":{"description":"TRAINING_INSTRUCTION_METADATA_LIMIT: combined snapshot metadata must not exceed 128 KiB per plan."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: media is preserved and details.planId identifies the plan to read before retrying an uncertain write."}},"security":[{"bearer":[]}],"tags":["admin training"]}},"/v1/admin/training/plans/{id}/enrollments":{"get":{"description":"Administrator only. Includes active, paused, completed and cancelled enrollment records, including earlier attempts by the same account. Participant counts classify distinct non-deleted accounts by their latest enrollment and are not affected by the page filters. Unpublished or retired plan history remains available. User IDs are not exposed by the app catalogue.","operationId":"AdminTrainingEnrollmentsController_enrollments","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["active","paused","completed","cancelled"]}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTrainingEnrollmentsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"TRAINING_PLAN_NOT_FOUND"},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"List enrollment history and participant counts for a plan version","tags":["admin training"]}},"/v1/admin/training/plans/{id}/achievements":{"get":{"description":"Includes unavailable definitions for editorial review. Each objective requires every scheduled session to be completed with an eligible activity owned by the participant. A manually completed or skipped session, or manually finishing an enrollment, does not qualify. This response describes rewards; it does not grant them.","operationId":"AdminTrainingAchievementRewardsController_list","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingAchievementRewardsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"TRAINING_PLAN_NOT_FOUND"},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Read the ordered achievements offered by a training plan version","tags":["admin training"]},"put":{"description":"Accepts up to ten unique published and enabled achievement IDs whose metric is training_plan_completion and whose planId equals this plan. Their images must be available. Any enrollment history freezes the selection; publish a new plan version to change it. Repeating the same ordered selection is idempotent.","operationId":"AdminTrainingAchievementRewardsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceTrainingAchievementRewardsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingAchievementRewardsResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"TRAINING_PLAN_NOT_FOUND"},"409":{"description":"TRAINING_PLAN_ALREADY_ENROLLED"},"422":{"description":"TRAINING_ACHIEVEMENT_NOT_READY"},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN: details.planId identifies the plan to consult before retrying a write whose commit could not be confirmed. TRAINING_ACHIEVEMENTS_BUSY: retry a transient database failure."}},"security":[{"bearer":[]}],"summary":"Replace a plan version’s ordered achievement rewards","tags":["admin training"]},"delete":{"description":"Clears the editorial selection without deleting achievements or awards. Any enrollment history prevents changing the selection. An already empty selection is idempotent.","operationId":"AdminTrainingAchievementRewardsController_clear","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"TRAINING_PLAN_NOT_FOUND"},"409":{"description":"TRAINING_PLAN_ALREADY_ENROLLED"},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"503":{"description":"TRAINING_WRITE_OUTCOME_UNKNOWN or TRAINING_ACHIEVEMENTS_BUSY"}},"security":[{"bearer":[]}],"summary":"Remove a plan version’s achievement selection before enrollment","tags":["admin training"]}},"/v1/exercises/instructions":{"get":{"operationId":"ExerciseVideosController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"lang","required":false,"in":"query","schema":{"maxLength":10,"pattern":"^[a-zA-Z]{2,3}(?:[-_][a-zA-Z]{2})?$","type":"string"}},{"name":"category","required":false,"in":"query","schema":{"type":"string","enum":["mobility","strength"]}},{"name":"difficulty","required":false,"in":"query","schema":{"type":"string","enum":["beginner","intermediate","advanced"]}},{"name":"maxDurationSeconds","required":false,"in":"query","schema":{"minimum":1,"maximum":3600,"type":"integer"}},{"name":"noEquipment","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseVideoPageResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["exercise instructions"]}},"/v1/exercises/instructions/{id}":{"get":{"operationId":"ExerciseVideosController_byId","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"lang","required":false,"in":"query","schema":{"maxLength":10,"pattern":"^[a-zA-Z]{2,3}(?:[-_][a-zA-Z]{2})?$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseVideoResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["exercise instructions"]}},"/v1/admin/exercises/instructions":{"get":{"operationId":"AdminExerciseVideosController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]},"post":{"operationId":"AdminExerciseVideosController_create","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata"],"properties":{"metadata":{"type":"string","description":"JSON with slug, category, difficulty, equipment, tags, published and translations.","example":"{\"slug\":\"agachamento-exemplo\",\"category\":\"strength\",\"difficulty\":\"beginner\",\"equipment\":[],\"tags\":[\"pernas\"],\"published\":false,\"translations\":{\"pt-BR\":{\"title\":\"Agachamento\",\"description\":\"Exercício de pernas.\",\"steps\":[\"Flexione os joelhos.\",\"Volte à posição inicial.\"]},\"en-US\":{\"title\":\"Squat\",\"description\":\"Leg exercise.\",\"steps\":[\"Bend your knees.\",\"Return to the start.\"]}}}"},"video":{"type":"string","format":"binary","description":"Optional MP4 with H.264 video and optional AAC audio, at most 50 MiB and 30 minutes. Without it, a cover is required and published must be false."},"cover":{"type":"string","format":"binary","description":"JPEG, PNG or WebP cover, at most 10 MiB. Required for a draft without video. Stored as 1280 × 720 WebP. Without it, a frame from the video is used."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]}},"/v1/admin/exercises/instructions/{id}":{"get":{"operationId":"AdminExerciseVideosController_byId","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]},"put":{"operationId":"AdminExerciseVideosController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata"],"properties":{"metadata":{"type":"string","description":"Complete instruction JSON, including translations and published."},"video":{"type":"string","format":"binary","description":"Optional replacement MP4, at most 50 MiB."},"cover":{"type":"string","format":"binary","description":"Optional JPEG, PNG or WebP cover, at most 10 MiB. Can be replaced without a video."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]},"patch":{"operationId":"AdminExerciseVideosController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateExerciseInstructionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]},"delete":{"operationId":"AdminExerciseVideosController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]}},"/v1/admin/exercises/instructions/{id}/video":{"put":{"operationId":"AdminExerciseVideosController_replaceVideo","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["video"],"properties":{"video":{"type":"string","format":"binary","description":"Replacement MP4 video."},"cover":{"type":"string","format":"binary","description":"Optional JPEG, PNG or WebP cover, at most 10 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]}},"/v1/admin/exercises/instructions/{id}/cover":{"put":{"operationId":"AdminExerciseVideosController_replaceCover","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["cover"],"properties":{"cover":{"type":"string","format":"binary","description":"JPEG, PNG or WebP cover, at most 10 MiB. Stored as 1280 × 720 WebP."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminExerciseInstructionDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin exercise instructions"]}},"/v1/kyplay/session-music":{"get":{"operationId":"SessionMusicController_suggestion","parameters":[{"name":"scheduledSessionId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionMusicResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Published music matched to an owned pending training session; today uses the enrolment timezone","tags":["KYPLAY music"]}},"/v1/kyplay/narrations":{"post":{"operationId":"KyplayController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNarrationDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["KYPLAY"]},"get":{"operationId":"KyplayController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["KYPLAY"]}},"/v1/kyplay/narrations/{id}":{"get":{"operationId":"KyplayController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["KYPLAY"]},"delete":{"operationId":"KyplayController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"tags":["KYPLAY"]}},"/v1/kyplay/catalog":{"get":{"operationId":"KyplayMusicController_catalog","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicCatalogDto"}}}}},"security":[{"bearer":[]}],"summary":"Published music, featured playlist and server-owned taxonomy","tags":["KYPLAY music"]}},"/v1/kyplay/tracks":{"get":{"description":"BPM filtering prefers measured BPM and falls back to requested BPM. bpmSource preserves that distinction. Cursor order is createdAt descending, then id descending.","operationId":"KyplayMusicController_tracks","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"q","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}},{"name":"mood","required":false,"in":"query","schema":{"minLength":1,"maxLength":60,"type":"string"}},{"name":"sport","required":false,"in":"query","schema":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]}},{"name":"bpmMin","required":false,"in":"query","schema":{"minimum":20,"maximum":300,"type":"number"}},{"name":"bpmMax","required":false,"in":"query","schema":{"minimum":20,"maximum":300,"type":"number"}},{"name":"frequencyKind","required":false,"in":"query","schema":{"type":"string","enum":["tempo_only","tuning","binaural"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicTrackPageDto"}}}}},"security":[{"bearer":[]}],"summary":"Filter published instrumentals by mood, sport, tempo and frequency kind","tags":["KYPLAY music"]}},"/v1/kyplay/tracks/{id}":{"get":{"operationId":"KyplayMusicController_track","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicTrackDto"}}}},"404":{"description":"KYPLAY_TRACK_NOT_FOUND"}},"security":[{"bearer":[]}],"tags":["KYPLAY music"]}},"/v1/kyplay/playlists":{"get":{"operationId":"KyplayMusicController_playlists","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"q","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicPlaylistPageDto"}}}}},"security":[{"bearer":[]}],"tags":["KYPLAY music"]}},"/v1/kyplay/playlists/{id}":{"get":{"operationId":"KyplayMusicController_playlist","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicPlaylistDetailDto"}}}},"404":{"description":"KYPLAY_PLAYLIST_NOT_FOUND"}},"security":[{"bearer":[]}],"tags":["KYPLAY music"]}},"/v1/kyplay/tracks/{id}/playback":{"post":{"description":"The private storage URL expires after 900 seconds. Refresh this authorisation if a later range request receives an expired-URL response. Do not send the API Bearer token to storage.","operationId":"KyplayMusicController_playback","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicPlaybackDto"}}}},"503":{"description":"KYPLAY_ASSET_UNAVAILABLE: object missing or metadata mismatch"}},"security":[{"bearer":[]}],"summary":"Authorise progressive playback with HTTP Range","tags":["KYPLAY music"]}},"/v1/kyplay/tracks/{id}/download-manifest":{"post":{"description":"The URL expires after 900 seconds; offlineExpiresAt=null means this catalogue licence has no offline expiry. Store audio privately inside the app, verify SHA-256 before committing the file, and remove local files on logout. This is not DRM. Progress and completion are client-reported.","operationId":"KyplayMusicController_manifest","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicDeviceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicDownloadManifestDto"}}}},"403":{"description":"KYPLAY_DEVICE_MISMATCH or KYPLAY_OFFLINE_UNAVAILABLE"}},"security":[{"bearer":[]}],"summary":"Issue an offline manifest for the authenticated session device","tags":["KYPLAY music"]}},"/v1/kyplay/downloads":{"get":{"operationId":"KyplayMusicController_downloads","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicDownloadPageDto"}}}}},"security":[{"bearer":[]}],"summary":"List download records belonging to this account and session device","tags":["KYPLAY music"]}},"/v1/kyplay/downloads/{id}":{"patch":{"description":"A downloaded report requires the exact manifest version, SHA-256 and byte count. The server validates the report but cannot inspect the device filesystem.","operationId":"KyplayMusicController_acknowledge","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicDownloadAckDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicDownloadDto"}}}},"404":{"description":"KYPLAY_DOWNLOAD_NOT_FOUND on this account/device"},"409":{"description":"KYPLAY_DOWNLOAD_MISMATCH, KYPLAY_DOWNLOAD_STATE_CONFLICT or KYPLAY_TRACK_VERSION_CHANGED (renew the manifest)"}},"security":[{"bearer":[]}],"summary":"Report download progress or completion","tags":["KYPLAY music"]},"delete":{"operationId":"KyplayMusicController_removeDownload","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"This device record was removed. The app must remove its local audio file."},"404":{"description":"KYPLAY_DOWNLOAD_NOT_FOUND on this account/device"}},"security":[{"bearer":[]}],"tags":["KYPLAY music"]}},"/v1/kyplay/preferences":{"get":{"operationId":"KyplayMusicController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicPreferencesDto"}}}}},"security":[{"bearer":[]}],"tags":["KYPLAY music"]},"patch":{"description":"Defaults are Wi-Fi-only downloads, 2 GiB storage budget, ducking and headset-removal pause enabled. The Android player and download worker enforce these preferences.","operationId":"KyplayMusicController_updatePreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicPreferencesPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MusicPreferencesDto"}}}}},"security":[{"bearer":[]}],"summary":"Persist audio and download preferences for this device","tags":["KYPLAY music"]}},"/v1/admin/kyplay/tracks":{"get":{"operationId":"AdminMusicController_tracks","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicTrackPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"post":{"operationId":"AdminMusicController_createTrack","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["track","audio"],"properties":{"track":{"type":"string","description":"JSON com metadados, direitos e published.","example":"{\"slug\":\"corrida-ritmo\",\"title\":\"Corrida Ritmo\",\"artist\":\"KYPACE\",\"description\":\"Instrumental para corrida.\",\"bpmTarget\":120,\"bpmMeasured\":null,\"bpmSource\":\"target\",\"mood\":\"focused\",\"sports\":[\"running\"],\"frequencyProfile\":{\"kind\":\"tempo_only\",\"tuningHz\":null,\"carrierHz\":null,\"beatHz\":null,\"verified\":false,\"method\":null},\"loudnessLufs\":null,\"published\":false,\"rights\":{\"licenseId\":\"licenca-revisada\",\"licenseUrl\":\"https://example.com/licence\",\"attribution\":\"Créditos da faixa.\",\"commercialUseAllowed\":true,\"streamingAllowed\":true,\"offlineAllowed\":true}}"},"audio":{"type":"string","format":"binary","description":"MP3 de 30 a 600 segundos e até 64 MiB; obrigatório na criação."},"artwork":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 8 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicTrackDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]}},"/v1/admin/kyplay/tracks/{id}":{"get":{"operationId":"AdminMusicController_track","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicTrackDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"put":{"operationId":"AdminMusicController_replaceTrack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["track"],"properties":{"track":{"type":"string","description":"JSON com metadados, direitos e published.","example":"{\"slug\":\"corrida-ritmo\",\"title\":\"Corrida Ritmo\",\"artist\":\"KYPACE\",\"description\":\"Instrumental para corrida.\",\"bpmTarget\":120,\"bpmMeasured\":null,\"bpmSource\":\"target\",\"mood\":\"focused\",\"sports\":[\"running\"],\"frequencyProfile\":{\"kind\":\"tempo_only\",\"tuningHz\":null,\"carrierHz\":null,\"beatHz\":null,\"verified\":false,\"method\":null},\"loudnessLufs\":null,\"published\":false,\"rights\":{\"licenseId\":\"licenca-revisada\",\"licenseUrl\":\"https://example.com/licence\",\"attribution\":\"Créditos da faixa.\",\"commercialUseAllowed\":true,\"streamingAllowed\":true,\"offlineAllowed\":true}}"},"audio":{"type":"string","format":"binary","description":"MP3 de 30 a 600 segundos e até 64 MiB; obrigatório na criação."},"artwork":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 8 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicTrackDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"patch":{"operationId":"AdminMusicController_patchTrack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicTrackPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicTrackDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"delete":{"operationId":"AdminMusicController_deleteTrack","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]}},"/v1/admin/kyplay/playlists":{"get":{"operationId":"AdminMusicController_playlists","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"includeDeleted","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicPlaylistPageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"post":{"operationId":"AdminMusicController_createPlaylist","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["playlist"],"properties":{"playlist":{"type":"string","description":"JSON com metadados, published e trackIds em ordem.","example":"{\"slug\":\"corrida\",\"title\":\"Corrida\",\"description\":\"Faixas para corrida.\",\"mood\":\"focused\",\"sport\":\"running\",\"featured\":false,\"sort\":0,\"published\":false,\"trackIds\":[\"00000000-0000-4000-8000-000000000001\"]}"},"artwork":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 8 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicPlaylistDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]}},"/v1/admin/kyplay/playlists/{id}":{"get":{"operationId":"AdminMusicController_playlist","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicPlaylistDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"put":{"operationId":"AdminMusicController_replacePlaylist","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["playlist"],"properties":{"playlist":{"type":"string","description":"JSON com metadados, published e trackIds em ordem.","example":"{\"slug\":\"corrida\",\"title\":\"Corrida\",\"description\":\"Faixas para corrida.\",\"mood\":\"focused\",\"sport\":\"running\",\"featured\":false,\"sort\":0,\"published\":false,\"trackIds\":[\"00000000-0000-4000-8000-000000000001\"]}"},"artwork":{"type":"string","format":"binary","description":"Capa opcional JPEG, PNG ou WebP, até 8 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicPlaylistDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"patch":{"operationId":"AdminMusicController_patchPlaylist","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicPlaylistPatchDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMusicPlaylistDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]},"delete":{"operationId":"AdminMusicController_deletePlaylist","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["admin KYPLAY music"]}},"/v1/coach/capabilities":{"get":{"description":"Reports configured and available text, vision and audio capabilities, domain scope and transport limits. Image replies may contain authorised catalogue artwork.","operationId":"CoachController_capabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachCapabilitiesDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar capacidades atuais do Kypace Coach","tags":["Kypace Coach"]}},"/v1/coach/knowledge":{"get":{"description":"Returns only enabled editorial knowledge. These are the reference articles linked by Coach answers.","operationId":"CoachController_publicKnowledge","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgePageDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar artigos oficiais disponíveis para o Coach","tags":["Kypace Coach"]}},"/v1/coach/knowledge/{id}":{"get":{"operationId":"CoachController_publicKnowledgeArticle","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgeDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar um artigo oficial citado pelo Coach","tags":["Kypace Coach"]}},"/v1/coach/threads":{"get":{"operationId":"CoachController_threads","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachThreadsDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Listar o histórico privado de conversas do titular","tags":["Kypace Coach"]},"post":{"description":"clientId makes a repeated creation request idempotent for the same account.","operationId":"CoachController_createThread","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCoachThreadDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachThreadDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Criar uma conversa privada","tags":["Kypace Coach"]}},"/v1/coach/threads/{id}":{"get":{"operationId":"CoachController_thread","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachThreadDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar uma conversa própria","tags":["Kypace Coach"]},"patch":{"description":"expectedRevision protects against concurrent conversation edits.","operationId":"CoachController_patchThread","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCoachThreadDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachThreadDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."},"409":{"description":"The conversation changed since expectedRevision."}},"security":[{"bearer":[]}],"summary":"Renomear, arquivar ou reabrir uma conversa própria","tags":["Kypace Coach"]},"delete":{"description":"Stops active generation and removes the conversation history and associated private attachments.","operationId":"CoachController_deleteThread","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Excluir uma conversa própria e seus dados privados","tags":["Kypace Coach"]}},"/v1/coach/threads/{id}/messages":{"get":{"description":"Use the decimal sequence cursor after to read subsequent messages. Messages include their current state, cited sources and authorised images. eventCursor is the latest event ID read before the page: resume GET events, SSE or Socket.IO after it to follow a reply still in progress. A delta event repeated by that resumption is identified by its offset, the UTF-16 position of its text in the reply.","operationId":"CoachController_messages","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"after","required":false,"in":"query","schema":{"pattern":"^(0|[1-9][0-9]{0,17})$","default":"0","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMessagesDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar mensagens de uma conversa própria","tags":["Kypace Coach"]},"post":{"description":"Accepts an idempotent clientId and up to three uploaded attachments belonging to this conversation. Returns the user message and queued assistant message. Follow persisted events through SSE, Socket.IO or GET events. includeHealth requires current health consent; location is optional and short lived.","operationId":"CoachController_send","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendCoachMessageDto"}}}},"responses":{"202":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachSendResponseDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."},"409":{"description":"The conversation is archived, another generation is active or the idempotency key has conflicting content."}},"security":[{"bearer":[]}],"summary":"Enviar texto, imagem ou áudio para o Coach","tags":["Kypace Coach"]}},"/v1/coach/messages/{id}":{"get":{"operationId":"CoachController_message","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMessageDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar o estado e o conteúdo atual de uma mensagem própria","tags":["Kypace Coach"]}},"/v1/coach/messages/{id}/speech":{"post":{"description":"Áudio MP3 privado transmitido progressivamente para uma mensagem própria. O servidor valida o provedor e o primeiro cabeçalho MP3 antes de responder e cancela a síntese quando o cliente desconecta. Limite de dez respostas por conta em 24 horas e quatro pedidos por minuto.","operationId":"CoachController_speech","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Áudio MP3 da resposta","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Ouvir uma resposta concluída do Coach","tags":["Kypace Coach"]}},"/v1/coach/messages/{id}/cancel":{"post":{"operationId":"CoachController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMessageDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Cancelar a geração de uma resposta do Coach","tags":["Kypace Coach"]}},"/v1/coach/messages/{id}/retry":{"post":{"description":"Provide a new clientId. The existing attempt remains in history and the retry produces its own persisted events.","operationId":"CoachController_retry","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryCoachMessageDto"}}}},"responses":{"202":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMessageDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Tentar novamente uma resposta interrompida","tags":["Kypace Coach"]}},"/v1/coach/threads/{id}/attachments":{"post":{"description":"Send metadata JSON and one file. Images and audio are validated by the backend and stored privately. Send the returned attachment ID with the message; a conversation cannot use another conversation's attachment.","operationId":"CoachController_upload","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","file"],"properties":{"metadata":{"type":"string","description":"JSON with clientId (UUID) and kind (image or audio).","example":"{\"clientId\":\"00000000-0000-4000-8000-000000000001\",\"kind\":\"image\"}"},"file":{"type":"string","format":"binary","description":"One supported image or audio file. Consult capabilities for the maximum audio duration."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachAttachmentDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Enviar um anexo privado de imagem ou áudio","tags":["Kypace Coach"]}},"/v1/coach/attachments/{id}":{"get":{"operationId":"CoachController_attachment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachAttachmentDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Obter um anexo próprio com URL temporária privada","tags":["Kypace Coach"]},"delete":{"description":"Cancel a reply that is actively using the attachment before removing it.","operationId":"CoachController_deleteAttachment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Remover um anexo próprio","tags":["Kypace Coach"]}},"/v1/coach/threads/{id}/events":{"get":{"description":"after is the last received decimal event ID, represented as a string to avoid integer precision loss. The response includes ordered events and the cursor for the next request. Access is private to the owner.","operationId":"CoachController_events","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"after","required":false,"in":"query","schema":{"pattern":"^(0|[1-9][0-9]{0,17})$","default":"0","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":100,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachEventsDto"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."}},"security":[{"bearer":[]}],"summary":"Consultar eventos persistidos e retomar uma resposta","tags":["Kypace Coach"]}},"/v1/coach/threads/{id}/stream":{"get":{"description":"Bearer-authenticated text/event-stream. Each frame has id (decimal cursor), event (queued, started, delta, sources, completed, failed, cancelled or refused) and data (the full event JSON object). Last-Event-ID overrides query after when reconnecting. Heartbeat comments are sent after 15 seconds without data; the stream closes after 10 minutes and may be resumed. Each account may have four SSE or Socket.IO connections combined. Slow consumers are disconnected and can resume from their last received ID. Access tokens and sessions are rechecked throughout the stream. Native clients must send Authorization, including on reconnect.","operationId":"CoachController_stream","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"after","required":false,"in":"query","schema":{"pattern":"^(0|[1-9][0-9]{0,17})$","default":"0","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":100,"type":"integer"}},{"name":"Last-Event-ID","in":"header","description":"Last received decimal event ID, with no sign, whitespace or leading zeroes.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private resumable event stream. Failures after headers use an error event with a stable code and message.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"404":{"description":"The requested conversation, message or attachment is unavailable to this account."},"429":{"description":"COACH_CONNECTION_LIMIT: four active streams/sockets for this account, or connection rate exceeded."}},"security":[{"bearer":[]}],"summary":"Receber eventos do Coach em tempo real por SSE","tags":["Kypace Coach"]}},"/v1/admin/coach/knowledge":{"get":{"operationId":"CoachKnowledgeController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgePageDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar a base editorial de conhecimento do Coach","tags":["Kypace Coach administration"]},"post":{"description":"Published knowledge supplies grounded Kypace information to the Coach. It does not grant access to private conversations or change the Coach domain policy.","operationId":"CoachKnowledgeController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCoachKnowledgeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar conhecimento editorial da Kypace","tags":["Kypace Coach administration"]}},"/v1/admin/coach/knowledge/{id}":{"get":{"operationId":"CoachKnowledgeController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar um artigo da base editorial do Coach","tags":["Kypace Coach administration"]},"put":{"operationId":"CoachKnowledgeController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceCoachKnowledgeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"The knowledge article changed since expectedRevision or the slug is already in use."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir um artigo editorial com controle de revisão","tags":["Kypace Coach administration"]},"patch":{"operationId":"CoachKnowledgeController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCoachKnowledgeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachKnowledgeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"The knowledge article changed since expectedRevision."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Editar, ativar ou desativar um artigo editorial","tags":["Kypace Coach administration"]},"delete":{"description":"Requires expectedRevision. Existing messages retain their cited source references.","operationId":"CoachKnowledgeController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":9007199254740991,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Retirar um artigo editorial da consulta pelo Coach","tags":["Kypace Coach administration"]}},"/v1/coach/threads/{id}/calls":{"post":{"description":"Exige consentimento explícito para transcrição pela ElevenLabs. includeHealth é opcional e requer consentimento atual de saúde; cada resposta revalida esse acesso. O áudio PCM e os resultados parciais são efêmeros no backend. Transcrições finais, respostas e eventos ficam cifrados temporariamente durante a chamada para recuperar o estado interno. Com rememberTranscript=false, não aparecem no histórico HTTP/SSE do chat e são removidos ao encerrar, expirar ou reconciliar uma sessão interrompida; true mantém as mensagens neste histórico privado. A retenção da ElevenLabs segue a conta e a política do provedor; o backend não declara zero retention. Repetir clientId preserva o prazo original de 120 segundos. Memória entre conversas exige adesão separada e confirmação de fatos. Socket.IO /coach-call recebe PCM16 mono 16 kHz e entrega PCM16 mono 24 kHz; as chaves do provedor nunca chegam ao app.","operationId":"CoachCallController_create","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCoachCallDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachCallSessionDto"}}}}},"security":[{"bearer":[]}],"summary":"Iniciar uma conversa por voz de até dois minutos","tags":["Kypace Coach"]}},"/v1/coach/calls/{id}":{"get":{"operationId":"CoachCallController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachCallSessionDto"}}}}},"security":[{"bearer":[]}],"summary":"Recuperar o estado e o prazo original de uma chamada própria","tags":["Kypace Coach"]}},"/v1/coach/calls/{id}/end":{"post":{"operationId":"CoachCallController_end","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachCallSessionDto"}}}}},"security":[{"bearer":[]}],"summary":"Encerrar a chamada, cancelar a resposta e descartar transcrições não consentidas para histórico","tags":["Kypace Coach"]}},"/v1/coach/memory/preferences":{"get":{"description":"Disabled by default (revision 0). This separate opt-in only permits continuity of Coach conversations from facts explicitly confirmed by the holder. It does not enable transcript retention, health processing, notifications, engagement personalisation or advertising.","operationId":"CoachMemoryController_preferences","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMemoryPreferencesDto"}}}},"409":{"description":"COACH_MEMORY_CONFLICT: reload after a concurrent preference or fact change."}},"security":[{"bearer":[]}],"summary":"Consultar a escolha de memória pessoal do Coach","tags":["Kypace Coach"]},"patch":{"description":"Send the last revision. Disabling atomically removes every saved fact and invalidates in-flight responses that relied on it. A later opt-in starts empty; pre-revocation write commands cannot restore prior facts. Conversation history and call transcript retention have separate controls.","operationId":"CoachMemoryController_patchPreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCoachMemoryPreferencesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMemoryPreferencesDto"}}}},"409":{"description":"COACH_MEMORY_CONFLICT: reload after a concurrent preference or fact change."}},"security":[{"bearer":[]}],"summary":"Ativar ou revogar a memória pessoal do Coach","tags":["Kypace Coach"]}},"/v1/coach/memories":{"get":{"description":"Up to 40 current facts, newest updates first. Disabled memory returns an empty list. Only the account holder can read or manage these encrypted records; raw conversations are not copied into them.","operationId":"CoachMemoryController_list","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMemoriesDto"}}}},"409":{"description":"COACH_MEMORY_CONFLICT: reload after a concurrent preference or fact change."}},"security":[{"bearer":[]}],"summary":"Listar os fatos pessoais confirmados para continuidade do Coach","tags":["Kypace Coach"]},"post":{"description":"The holder must confirm the exact fact and the current memory preference revision. Use a new clientId for each new confirmation and reuse it only for a retry. Allowed facts concern the holder’s routine, activity or nutrition preferences and motivation, such as \"I prefer short morning walks\". Do not save diagnoses, clinical records, passwords or information about third parties. Suggestions are only previews: no fact from a conversation or transcript is saved automatically. Optional sourceMessageId must be a completed user message owned by the holder; ephemeral calls with transcript retention off cannot be a source. A fact stays until it is removed, its source conversation is deleted, memory is disabled or personal data is erased.","operationId":"CoachMemoryController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCoachMemoryDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMemoryDto"}}}},"403":{"description":"COACH_MEMORY_DISABLED: the holder has not enabled memory."},"404":{"description":"COACH_NOT_FOUND: source unavailable, not owned or not eligible."},"409":{"description":"COACH_MEMORY_CONFLICT, COACH_MEMORY_REMOVED or COACH_MEMORY_LIMIT (40 current facts)."}},"security":[{"bearer":[]}],"summary":"Salvar um fato explicitamente confirmado pelo titular","tags":["Kypace Coach"]}},"/v1/coach/threads/{id}/memory-suggestions":{"get":{"description":"On-demand, read-only preview outside the voice-call path. Optionally filter by callId or messageId (mutually exclusive). Reads at most ten completed user messages from the last 30 days in the owned thread; calls must retain their transcript. Disabled personal memory returns an empty preview without reading message content. Up to three literal affirmative first-person routine/preference statements are offered, conservatively excluding ambiguous, clinical, sensitive or third-party statements. No model inference, automatic save or background extraction. Confirm or edit a preview using POST /coach/memories with a new clientId, confirmed=true, sourceMessageId and the returned preference revision; ignoring it stores nothing. Already saved literal facts are omitted. A source removed or consent revoked before confirmation is rejected by the save endpoint.","operationId":"CoachMemoryController_suggestions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"callId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"messageId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMemorySuggestionsDto"}}}},"404":{"description":"COACH_NOT_FOUND: thread, source message or retained call unavailable to this account."},"409":{"description":"COACH_MEMORY_CONFLICT: reload after a concurrent preference or fact change."}},"security":[{"bearer":[]}],"summary":"Rever sugestões de fatos explícitos de uma conversa própria","tags":["Kypace Coach"]}},"/v1/coach/memories/{id}":{"patch":{"description":"Send both the fact revision and the memory preference revision. The category is immutable. The update invalidates any response still using the previous fact.","operationId":"CoachMemoryController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCoachMemoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachMemoryDto"}}}},"403":{"description":"COACH_MEMORY_DISABLED."},"404":{"description":"COACH_NOT_FOUND."},"409":{"description":"COACH_MEMORY_CONFLICT: reload after a concurrent preference or fact change."}},"security":[{"bearer":[]}],"summary":"Corrigir e confirmar novamente um fato próprio","tags":["Kypace Coach"]},"delete":{"description":"Requires the last active fact revision. Repeating that deletion succeeds. The ciphertext and source reference are removed; a content-free idempotency tombstone prevents a delayed create retry from restoring the fact. The preference revision does not change.","operationId":"CoachMemoryController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483646,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"404":{"description":"COACH_NOT_FOUND."},"409":{"description":"COACH_MEMORY_CONFLICT: reload after a concurrent preference or fact change."}},"security":[{"bearer":[]}],"summary":"Apagar um fato pessoal do Coach","tags":["Kypace Coach"]}},"/v1/places/today-preview":{"post":{"operationId":"PlacesController_todayPreview","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesTodayQueryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesTodayPreviewResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Nearby catalogue places with verified Google, Mapbox or Wikimedia photo bytes; environmental condition is good, mixed or explicitly unknown; poor is excluded","tags":["Places"]}},"/v1/places/details":{"get":{"operationId":"PlacesController_details","parameters":[{"name":"placeId","required":true,"in":"query","schema":{"pattern":"^(?:osm:)?(?:node|way|relation):[1-9]\\d{0,18}$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceDetailsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Temporary Mapbox Search Box + Places details for the same public place; historical busyness is explicitly labelled","tags":["Places"]}},"/v1/places/travel-times":{"post":{"operationId":"PlacesController_travelTimes","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesTravelTimesDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesTravelTimesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Consented walking/cycling Mapbox matrix to at most ten nearby catalogue places; no straight-line fallback or persistence","tags":["Places"]}},"/v1/places/context":{"get":{"operationId":"PlacesController_context","parameters":[{"name":"placeId","required":true,"in":"query","schema":{"pattern":"^(?:osm:)?(?:node|way|relation):[1-9]\\d{0,18}$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceContextResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Temporary Mapbox street context for a public catalogue place; no device coordinates or track","tags":["Places"]}},"/v1/places/photo":{"get":{"operationId":"PlacesController_photo","parameters":[{"name":"placeId","required":true,"in":"query","schema":{"pattern":"^(?:osm:)?(?:node|way|relation):[1-9]\\d{0,18}$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacePhotoResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Attributed linked or nearby name-matched Commons photo for a catalogue OSM place","tags":["Places"]}},"/v1/places/photo/image":{"get":{"operationId":"PlacesController_photoImage","parameters":[{"name":"placeId","required":true,"in":"query","schema":{"pattern":"^(?:osm:)?(?:node|way|relation):[1-9]\\d{0,18}$","type":"string"}}],"responses":{"200":{"description":"","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"bearer":[]}],"summary":"Authenticated image bytes with verified type and bounded size","tags":["Places"]}},"/v1/places/areas":{"get":{"operationId":"PlacesController_areas","parameters":[{"name":"q","required":true,"in":"query","schema":{"minLength":3,"maxLength":100,"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":10,"default":8,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesAreasResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Search a named area without supplying device location","tags":["Places"]}},"/v1/places/query":{"post":{"description":"Coordinates are rounded before external lookup and cached only by public geographic cell. No account location, activity, route or human density is stored. Unknown environmental factors remain null. No safety score is produced.","operationId":"PlacesController_query","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesQueryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Find nearby mapped features with attributed air quality readings","tags":["Places"]}},"/v1/places/recommendations":{"post":{"description":"An explicit activity takes precedence. When omitted, the authenticated account may receive an activity chosen from its current consented interests; absent consent or supported evidence, no activity is invented. Own valid routine windows are returned as generic local-time hints, with their timezone, and do not change the requested forecast instant. Personalised results are not cached. Only dated OpenStreetMap tag values mapped to the selected activity are candidates. A bounded shortlist takes at most 50 nearest points from each of four distance bands (200 total), scores them, and returns 10. A truncated band is reported. Outdoor context uses regional air, tree cover, weather and green features; mapped pools and fitness facilities are ordered only by approximate distance. Tag match does not verify access, suitability or safety. Traffic, noise, terrain and user presence are not inferred. Stable reasonCodes are for client localisation.","operationId":"PlacesController_recommendations","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesRecommendationsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesRecommendationsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Recommend mapped places for a chosen or consented interest-based activity","tags":["Places"]}},"/v1/places/density":{"post":{"description":"Returns up to 4000 nearest dated leisure/natural places from the imported OSM catalogue. Each point has equal weight. Truncation and geographic coverage are explicit. Contains no user presence or environmental score.","operationId":"PlacesController_density","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesDensityDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesDensityResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Actual mapped places for native concentration heatmaps","tags":["Places"]}},"/v1/places/heatmap":{"post":{"description":"Scores each H3 resolution-6 cell from its configured air quality source, satellite tree cover, an hourly weather source and mapped green features. Traffic, noise and terrain have no data source and are reported in unavailableFactors, never as a value. A cell without an air reading has no score and must not be drawn. Coordinates are rounded and the grid is cached by public cell; no account position is stored.","operationId":"PlacesController_heatmap","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesHeatmapDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacesHeatmapResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Environmental conditions on a hexagonal grid around a position, 10-50 km","tags":["Places"]}},"/v1/shop/categories":{"get":{"operationId":"ShopCatalogueController_categories","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCategoriesDto"}}}}},"security":[{"bearer":[]}],"summary":"Listar categorias disponíveis da Kypace Shop","tags":["shop catalogue"]}},"/v1/shop/products":{"get":{"description":"Only published Kypace products in enabled categories are shown. Showcase products can have no commercial data and return purchaseAvailable=false with explicit reasons. Prices are integer minor units in the selected currency; no exchange rate is inferred. All gallery and advertising image URLs are private and expire after 900 seconds.","operationId":"ShopCatalogueController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"categoryId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}},{"name":"featured","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"currency","required":false,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"onSale","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar produtos, destaques e preços por moeda","tags":["shop catalogue"]}},"/v1/shop/products/{id}":{"get":{"operationId":"ShopCatalogueController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar detalhes, variantes, disponibilidade e avaliações de um produto","tags":["shop catalogue"]}},"/v1/shop/products/{id}/views":{"post":{"description":"At most one view per account/product/minute and 1000 per UTC day. These are bounded client-reported counts, not verified impressions or conversions. The GET catalogue does not create views.","operationId":"ShopCatalogueController_view","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopViewResultDto"}}}}},"security":[{"bearer":[]}],"summary":"Registrar visualização autenticada de produto","tags":["shop catalogue"]}},"/v1/admin/shop/categories":{"get":{"operationId":"AdminShopCatalogueController_categories","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCategoriesDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar categorias administrativas da loja","tags":["shop catalogue administration"]},"post":{"operationId":"AdminShopCatalogueController_createCategory","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShopCategoryDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCategoryDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar categoria de produtos Kypace","tags":["shop catalogue administration"]}},"/v1/admin/shop/categories/{id}":{"get":{"operationId":"AdminShopCatalogueController_category","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCategoryDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar categoria administrativa","tags":["shop catalogue administration"]},"put":{"description":"Requires expectedRevision. The slug is immutable. Disabling a category requires first unpublishing its products.","operationId":"AdminShopCatalogueController_replaceCategory","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceShopCategoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCategoryDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir dados de categoria","tags":["shop catalogue administration"]},"patch":{"description":"Only supplied fields change; expectedRevision is mandatory.","operationId":"AdminShopCatalogueController_patchCategory","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchShopCategoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCategoryDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Editar ou ativar categoria","tags":["shop catalogue administration"]},"delete":{"operationId":"AdminShopCatalogueController_removeCategory","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente categoria sem produtos ativos","tags":["shop catalogue administration"]}},"/v1/admin/shop/products":{"get":{"operationId":"AdminShopCatalogueController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"categoryId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}},{"name":"featured","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"currency","required":false,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"onSale","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["draft","published","archived"]}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar catálogo completo, rascunhos e produtos arquivados","tags":["shop catalogue administration"]},"post":{"description":"No price, SKU, stock or shipping weight is invented. Create a draft, upload its image, then publish the showcase. Variants and commercial prices are configured by their dedicated routes.","operationId":"AdminShopCatalogueController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShopProductDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar produto Kypace como rascunho","tags":["shop catalogue administration"]}},"/v1/admin/shop/products/{id}":{"get":{"operationId":"AdminShopCatalogueController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar produto administrativo com estoque e origem das imagens","tags":["shop catalogue administration"]},"put":{"description":"Requires expectedRevision; slug is immutable. Existing order item snapshots retain the purchased product description and price.","operationId":"AdminShopCatalogueController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceShopProductDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir dados editoriais de um produto","tags":["shop catalogue administration"]},"patch":{"description":"Publication requires an enabled category and a gallery image. A published showcase can remain unavailable for purchase until variants, prices, stock and payment configuration are present. Only supplied fields change.","operationId":"AdminShopCatalogueController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchShopProductDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Editar, destacar, publicar ou arquivar produto","tags":["shop catalogue administration"]},"delete":{"operationId":"AdminShopCatalogueController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente produto preservando pedidos anteriores","tags":["shop catalogue administration"]}},"/v1/admin/shop/products/{id}/variants":{"post":{"description":"A variant starts with zero stock. Register real inventory using an audited inventory adjustment.","operationId":"AdminShopCatalogueController_createVariant","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShopVariantDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopVariantDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar variante, SKU e peso de entrega","tags":["shop catalogue administration"]}},"/v1/admin/shop/variants/{id}":{"put":{"description":"SKU is immutable; stock is changed only by the inventory route.","operationId":"AdminShopCatalogueController_replaceVariant","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceShopVariantDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopVariantDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir metadados de variante","tags":["shop catalogue administration"]},"patch":{"description":"Only supplied fields change; expectedRevision is mandatory.","operationId":"AdminShopCatalogueController_patchVariant","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchShopVariantDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopVariantDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Editar ou desativar variante","tags":["shop catalogue administration"]},"delete":{"operationId":"AdminShopCatalogueController_removeVariant","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente variante sem reservas de estoque","tags":["shop catalogue administration"]}},"/v1/admin/shop/variants/{id}/prices/{currency}":{"put":{"description":"amountMinor and compareAtMinor are integer cents, separately configured for each currency. Use expectedRevision=0 for a new currency price and the current revision for an existing price. compareAtMinor is optional and cannot be smaller than amountMinor.","operationId":"AdminShopCatalogueController_setPrice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetShopPriceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPriceDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar ou substituir preço em EUR ou BRL","tags":["shop catalogue administration"]},"delete":{"operationId":"AdminShopCatalogueController_removePrice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Desativar preço de uma moeda preservando seu histórico","tags":["shop catalogue administration"]}},"/v1/admin/shop/variants/{id}/inventory":{"get":{"operationId":"AdminShopCatalogueController_inventory","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopInventoryHistoryDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar lançamentos de estoque da variante","tags":["shop catalogue administration"]},"post":{"description":"clientId identifies one command. A retry with identical contents returns the existing movement without changing stock. expectedRevision protects concurrent edits. Stock cannot become negative or smaller than units reserved by existing orders.","operationId":"AdminShopCatalogueController_adjustInventory","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustShopInventoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopInventoryAdjustmentDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Registrar ajuste auditado e idempotente de estoque","tags":["shop catalogue administration"]}},"/v1/admin/shop/products/{id}/analytics":{"get":{"description":"Views and sales use a 30-day window. Reviews summarize the moderated verified-purchase history. Reported views do not prove impressions or conversion attribution.","operationId":"AdminShopCatalogueController_analytics","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopProductAnalyticsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar visualizações, vendas e avaliações do produto","tags":["shop catalogue administration"]}},"/v1/admin/shop/customers":{"get":{"description":"Returns userId linked to the existing Kypace account. Paid, refunded and net totals remain separate per currency. Use /admin/users/:id for account management. Only real orders create a customer record.","operationId":"AdminShopCatalogueController_customers","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"search","required":false,"in":"query","schema":{"minLength":1,"maxLength":100,"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCustomersDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar clientes com pedidos e totais por moeda","tags":["shop catalogue administration"]}},"/v1/admin/shop/customers/{id}":{"get":{"operationId":"AdminShopCatalogueController_customer","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCustomerDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"Revision conflict, duplicate identifier, reference in use or reserved inventory conflict."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar resumo comercial de um cliente Kypace","tags":["shop catalogue administration"]}},"/v1/admin/shop/products/{id}/images":{"get":{"operationId":"AdminShopAssetsController_list","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAssetsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar galeria e imagens de publicidade do produto","tags":["shop images administration"]},"post":{"description":"Send metadata JSON and image. The product revision increments after each successful upload. Exact image bytes are sanitized and rendered without enlarging the source.","operationId":"AdminShopAssetsController_create","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata","image"],"properties":{"metadata":{"type":"string","description":"JSON with product expectedRevision, role (gallery or advertisement), position (0–24), altText and optional source provenance.","example":"{\"expectedRevision\":1,\"role\":\"gallery\",\"position\":0,\"altText\":\"Viseira Kypace preta com símbolo laranja\",\"source\":{\"provider\":\"figma\",\"fileKey\":\"eP4m5kgzU7yYRAwEX9LYFn\",\"nodeId\":\"71:3\"}}"},"image":{"type":"string","format":"binary","description":"One PNG, JPEG or WebP of at most 10 MiB. Raster is decoded and stored as sanitized PNG plus WebP in the private shop bucket. Alpha is preserved."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAssetDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar imagem privada de produto ou publicidade","tags":["shop images administration"]}},"/v1/admin/shop/products/{id}/images/{assetId}":{"put":{"description":"Requires the current product expectedRevision. Omit image to retain its bytes; source omitted from metadata becomes null. Historical object keys remain available to existing order snapshots.","operationId":"AdminShopAssetsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"assetId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["metadata"],"properties":{"metadata":{"type":"string","description":"JSON with product expectedRevision, role (gallery or advertisement), position (0–24), altText and optional source provenance.","example":"{\"expectedRevision\":1,\"role\":\"gallery\",\"position\":0,\"altText\":\"Viseira Kypace preta com símbolo laranja\",\"source\":{\"provider\":\"figma\",\"fileKey\":\"eP4m5kgzU7yYRAwEX9LYFn\",\"nodeId\":\"71:3\"}}"},"image":{"type":"string","format":"binary","description":"One PNG, JPEG or WebP of at most 10 MiB. Raster is decoded and stored as sanitized PNG plus WebP in the private shop bucket. Alpha is preserved."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAssetDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir imagem, posição ou metadados de produto","tags":["shop images administration"]},"delete":{"description":"Requires product expectedRevision. Unpublish first when removing the last gallery image. Historical object keys are retained for orders.","operationId":"AdminShopAssetsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"assetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Retirar imagem da galeria ou publicidade","tags":["shop images administration"]}},"/v1/shop/products/{id}/reviews":{"get":{"operationId":"ShopReviewsController_list","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReviewsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar avaliações publicadas de compras verificadas","tags":["shop reviews"]},"post":{"description":"Requires an actual paid and delivered order item owned by the caller. One review per user/product. Reviews start pending moderation; repeated identical submissions return the same record.","operationId":"ShopReviewsController_create","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShopReviewDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReviewDto"}}}}},"security":[{"bearer":[]}],"summary":"Avaliar produto recebido em uma compra própria","tags":["shop reviews"]}},"/v1/shop/reviews/mine":{"get":{"operationId":"ShopReviewsController_mine","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReviewsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar minhas avaliações e situação de moderação","tags":["shop reviews"]}},"/v1/shop/reviews/{id}":{"put":{"description":"Requires expectedRevision. Editing the text or rating always returns the review to pending moderation.","operationId":"ShopReviewsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceShopReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReviewDto"}}}}},"security":[{"bearer":[]}],"summary":"Substituir minha avaliação e reenviar à moderação","tags":["shop reviews"]},"delete":{"operationId":"ShopReviewsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"summary":"Excluir minha avaliação","tags":["shop reviews"]}},"/v1/admin/shop/reviews":{"get":{"operationId":"AdminShopReviewsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["pending","published","rejected"]}},{"name":"productId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReviewsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar avaliações, feedback e fila de moderação","tags":["shop reviews administration"]}},"/v1/admin/shop/reviews/{id}":{"patch":{"description":"Requires expectedRevision and a reason when rejecting. The administrator cannot change the customer’s text, rating or verified-purchase evidence.","operationId":"AdminShopReviewsController_moderate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerateShopReviewDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReviewDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Publicar, rejeitar ou reabrir avaliação para moderação","tags":["shop reviews administration"]}},"/v1/shop/cart":{"get":{"description":"Mantém um carrinho ativo por conta e moeda. A primeira consulta inicializa o carrinho vazio. Preços e disponibilidade são recalculados; adicionar um item não reserva estoque.","operationId":"ShopCommerceController_cart","parameters":[{"name":"currency","required":false,"in":"query","schema":{"default":"EUR","type":"string","enum":["EUR","BRL"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Consultar o carrinho privado em EUR ou BRL","tags":["Kypace Shop commerce"]},"delete":{"operationId":"ShopCommerceController_clear","parameters":[{"name":"currency","required":true,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Esvaziar o carrinho e retirar o cupom selecionado","tags":["Kypace Shop commerce"]}},"/v1/shop/cart/items/{variantId}":{"put":{"description":"Exige expectedRevision e quantidade absoluta. Até 50 variantes e 99 unidades por variante. Valores monetários vêm do catálogo do servidor.","operationId":"ShopCommerceController_item","parameters":[{"name":"variantId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartItemDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Adicionar uma variante ou substituir sua quantidade no carrinho","tags":["Kypace Shop commerce"]},"delete":{"operationId":"ShopCommerceController_removeItem","parameters":[{"name":"variantId","required":true,"in":"path","schema":{"type":"string"}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Remover uma variante do carrinho com revisão otimista","tags":["Kypace Shop commerce"]}},"/v1/shop/cart/promotion":{"put":{"description":"Avalia validade, moeda, mínimo e limites de uso. A utilização é reservada apenas no checkout. A cotação pode aplicar a melhor promoção automática quando não há cupom explícito.","operationId":"ShopCommerceController_promotion","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopApplyPromotionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Aplicar um cupom ao carrinho","tags":["Kypace Shop commerce"]},"delete":{"operationId":"ShopCommerceController_removePromotion","parameters":[{"name":"currency","required":true,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCartResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Remover o cupom explícito do carrinho","tags":["Kypace Shop commerce"]}},"/v1/shop/addresses":{"get":{"operationId":"ShopCommerceController_addresses","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAddressPageResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Listar os endereços privados do cliente","tags":["Kypace Shop commerce"]},"post":{"description":"Até 20 endereços por cliente. A alteração de um endereço não reescreve os snapshots de pedidos existentes.","operationId":"ShopCommerceController_createAddress","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCreateAddressDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAddressResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Salvar um endereço cifrado de entrega ou faturamento","tags":["Kypace Shop commerce"]}},"/v1/shop/addresses/{id}":{"get":{"operationId":"ShopCommerceController_address","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAddressResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Consultar um endereço próprio","tags":["Kypace Shop commerce"]},"put":{"operationId":"ShopCommerceController_replaceAddress","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReplaceAddressDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAddressResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Substituir um endereço próprio e sua preferência padrão","tags":["Kypace Shop commerce"]},"delete":{"operationId":"ShopCommerceController_removeAddress","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"minimum":1,"maximum":2147483647,"type":"integer"}}],"responses":{"204":{"description":""},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Remover um endereço salvo preservando os recibos dos pedidos","tags":["Kypace Shop commerce"]}},"/v1/shop/shipping-quotes":{"post":{"description":"Usa tarifas cadastradas pelo administrador: base + ceil(peso em gramas/1000) × preço por kg, com frete gratuito conforme mínimo configurado após desconto. Imposto inclusivo ou exclusivo e alíquota são explícitos. A cotação congela os valores por até 15 minutos e identifica a origem configured_tariff; não consulta uma transportadora. Mudanças de preço, tarifa ou carrinho exigem nova cotação.","operationId":"ShopCommerceController_quote","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingQuoteDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopQuoteResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Calcular uma cotação de entrega, desconto e imposto","tags":["Kypace Shop commerce"]}},"/v1/shop/shipping-quotes/{id}":{"get":{"operationId":"ShopCommerceController_getQuote","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopQuoteResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Consultar a cotação própria, valores e prazo de validade","tags":["Kypace Shop commerce"]}},"/v1/shop/checkout":{"post":{"description":"Exige Stripe explicitamente ativa e configurada. clientId identifica o comando: repetir o mesmo corpo retorna o mesmo pedido; reutilizá-lo com outro corpo resulta em conflito. O servidor revalida preço, tarifa, promoção, dono, validade e revisão e reserva o estoque por 30 minutos. A chamada Stripe ocorre após a transação. Em falha de rede, o pedido persiste e pode retomar POST /shop/orders/:id/payment. O app confirma o PaymentIntent; apenas confirmação autenticada do provedor marca o pedido pago.","operationId":"ShopCommerceController_checkout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCheckoutDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopCheckoutResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."},"503":{"description":"SHOP_PAYMENTS_DISABLED ou provedor indisponível. Pagamento desativado impede a criação do pedido e a reserva de estoque."}},"security":[{"bearer":[]}],"summary":"Criar pedido, reservar estoque e preparar o pagamento Stripe","tags":["Kypace Shop commerce"]}},"/v1/shop/orders":{"get":{"operationId":"ShopCommerceController_orders","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderPageResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Listar os pedidos da conta e seus snapshots de compra","tags":["Kypace Shop commerce"]}},"/v1/shop/orders/{id}":{"get":{"operationId":"ShopCommerceController_order","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Consultar itens, pagamento, entregas e histórico de um pedido próprio","tags":["Kypace Shop commerce"]}},"/v1/shop/orders/{id}/cancel":{"post":{"description":"Confirma o cancelamento junto à Stripe antes de liberar o estoque e a reserva do cupom. Pedidos pagos usam o fluxo de devolução e reembolso. Eventos e notificações são idempotentes.","operationId":"ShopCommerceController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRevisionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"404":{"description":"O recurso não existe ou pertence a outra conta."},"409":{"description":"SHOP_REVISION_CONFLICT, SHOP_CART_CHANGED, SHOP_QUOTE_CHANGED, SHOP_PRODUCT_UNAVAILABLE ou transição inválida. Consulte o estado atual antes de reenviar."}},"security":[{"bearer":[]}],"summary":"Cancelar um pedido ainda não pago","tags":["Kypace Shop commerce"]}},"/v1/admin/shop/orders":{"get":{"operationId":"AdminShopCommerceController_orders","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderPageResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar pedidos administrativos por usuário e estado","tags":["Kypace Shop commerce administration"]}},"/v1/admin/shop/orders/{id}":{"get":{"operationId":"AdminShopCommerceController_order","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar o histórico completo de venda e entrega do pedido","tags":["Kypace Shop commerce administration"]}},"/v1/admin/shop/orders/{id}/cancel":{"post":{"operationId":"AdminShopCommerceController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRevisionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cancelar administrativamente um pedido não pago","tags":["Kypace Shop commerce administration"]}},"/v1/admin/shop/orders/{id}/processing":{"post":{"operationId":"AdminShopCommerceController_processing","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRevisionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Iniciar a preparação de um pedido pago","tags":["Kypace Shop commerce administration"]}},"/v1/admin/shop/orders/{id}/shipments":{"post":{"description":"items identifica as quantidades físicas expedidas. O total cumulativo não pode exceder as unidades compradas. clientId evita duplicar a mesma expedição; a transportadora e o rastreio são informados pelo operador.","operationId":"AdminShopCommerceController_ship","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShipmentDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Registrar uma expedição total ou parcial do pedido","tags":["Kypace Shop commerce administration"]}},"/v1/admin/shop/orders/{id}/shipments/{shipmentId}":{"patch":{"description":"Exige a revisão da expedição. A marca entregue do pedido exige que todas as quantidades estejam entregues. Marcar transporte retornado não repõe estoque; o fluxo de devolução registra a inspeção e a decisão de reposição.","operationId":"AdminShopCommerceController_updateShipment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"shipmentId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShipmentUpdateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Atualizar o transporte, a entrega ou o retorno de uma expedição","tags":["Kypace Shop commerce administration"]}},"/v1/admin/shop/statistics":{"get":{"operationId":"AdminShopCommerceController_statistics","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopStatisticsResponseDto"}}}},"400":{"description":"Campos e quantidades devem seguir os limites do contrato.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: exige uma conta administradora.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Pedido ou entrega não encontrado."},"409":{"description":"Revisão, quantidade ou transição de pedido inválida."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar totais operacionais da loja, carrinhos e vendas por moeda","tags":["Kypace Shop commerce administration"]}},"/v1/shop/shipping-methods":{"get":{"description":"Returns enabled administrator-configured tariffs. provider=configured and estimatedDelivery=true identify internal pricing and delivery estimates. This is not a carrier quote; request a cart shipping quote before checkout. Amounts use integer cents, perKgMinor follows the shipping quote weight rule, and taxMode/taxRateBps are explicit administrator settings.","operationId":"ShopRulesController_shipping","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"country","required":false,"in":"query","schema":{"pattern":"^[A-Z]{2}$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingMethodsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar modalidades de entrega configuradas para a moeda e o país","tags":["shop"]}},"/v1/shop/promotions":{"get":{"description":"Returns enabled automatic offers in the selected currency, within their configured validity window and global usage limit. Coupon codes are not disclosed. eligibilityEvaluated=false means cart minimums, account usage limits, stock and final discount are checked when applying the promotion and checking out. Offers cannot be combined in the same cart.","operationId":"ShopRulesController_promotions","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"currency","required":true,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPromotionsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar ofertas automáticas vigentes da loja","tags":["shop"]}},"/v1/admin/shop/shipping-methods":{"get":{"description":"Use includeDeleted=true to include logically deleted historical records. Pagination uses an exclusive UUID cursor.","operationId":"AdminShopShippingMethodsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"enabled","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingMethodsDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid monetary values, countries, tax configuration or delivery estimate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_SHIPPING_METHOD_NOT_FOUND: the shipping method does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate key; SHOP_RULE_IDENTITY_IMMUTABLE: key and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar tarifas de entrega, inclusive desativadas","tags":["shop administration"]},"post":{"description":"EUR and BRL prices are configured independently in integer cents. Countries use ISO 3166-1 alpha-2 codes. taxMode and taxRateBps are required, including an explicit zero tax rate where applicable. minBusinessDays/maxBusinessDays are estimates, not carrier commitments. No tariffs are seeded automatically.","operationId":"AdminShopShippingMethodsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShopShippingMethodDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingMethodDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid monetary values, countries, tax configuration or delivery estimate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_SHIPPING_METHOD_NOT_FOUND: the shipping method does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate key; SHOP_RULE_IDENTITY_IMMUTABLE: key and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar tarifa de entrega e configuração fiscal explícita","tags":["shop administration"]}},"/v1/admin/shop/shipping-methods/{id}":{"get":{"operationId":"AdminShopShippingMethodsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingMethodDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid monetary values, countries, tax configuration or delivery estimate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_SHIPPING_METHOD_NOT_FOUND: the shipping method does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate key; SHOP_RULE_IDENTITY_IMMUTABLE: key and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar tarifa de entrega e sua revisão","tags":["shop administration"]},"put":{"description":"expectedRevision is mandatory. Send the same key and currency. Existing order and quote snapshots are retained; checkout revalidates the selected tariff.","operationId":"AdminShopShippingMethodsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceShopShippingMethodDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingMethodDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid monetary values, countries, tax configuration or delivery estimate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_SHIPPING_METHOD_NOT_FOUND: the shipping method does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate key; SHOP_RULE_IDENTITY_IMMUTABLE: key and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir tarifa de entrega","tags":["shop administration"]},"patch":{"description":"expectedRevision and at least one editable field are required. Fields omitted from the body retain their previous values. The complete resulting delivery window is validated.","operationId":"AdminShopShippingMethodsController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchShopShippingMethodDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopShippingMethodDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid monetary values, countries, tax configuration or delivery estimate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_SHIPPING_METHOD_NOT_FOUND: the shipping method does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate key; SHOP_RULE_IDENTITY_IMMUTABLE: key and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar tarifa ou disponibilidade da entrega","tags":["shop administration"]},"delete":{"description":"Requires expectedRevision as a query parameter. Disables the tariff and preserves historical quote/order references.","operationId":"AdminShopShippingMethodsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Shipping method logically deleted."},"400":{"description":"SHOP_RULE_INVALID: invalid monetary values, countries, tax configuration or delivery estimate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_SHIPPING_METHOD_NOT_FOUND: the shipping method does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate key; SHOP_RULE_IDENTITY_IMMUTABLE: key and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente uma tarifa de entrega","tags":["shop administration"]}},"/v1/admin/shop/promotions":{"get":{"description":"Reserved usages count toward quotas until the corresponding checkout is paid, cancelled or expired. Released usages do not consume the quota.","operationId":"AdminShopPromotionsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"type":"string","enum":["EUR","BRL"]}},{"name":"enabled","required":false,"in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"includeDeleted","required":false,"in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminShopPromotionsDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid discount, validity window or redemption limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_PROMOTION_NOT_FOUND: the promotion does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate code; SHOP_RULE_IDENTITY_IMMUTABLE: code and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Listar promoções e quantidade de usos reservados e concluídos","tags":["shop administration"]},"post":{"description":"Percentage discounts use percentBps (1500 = 15%) and amountMinor=null. Fixed discounts use amountMinor in cents and percentBps=null. Non-automatic offers require a unique code. Currency, subtotal, discount cap, global/per-account usage limits and validity window are validated by the backend.","operationId":"AdminShopPromotionsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShopPromotionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPromotionDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid discount, validity window or redemption limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_PROMOTION_NOT_FOUND: the promotion does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate code; SHOP_RULE_IDENTITY_IMMUTABLE: code and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Cadastrar cupom ou promoção automática","tags":["shop administration"]}},"/v1/admin/shop/promotions/{id}":{"get":{"operationId":"AdminShopPromotionsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPromotionDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid discount, validity window or redemption limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_PROMOTION_NOT_FOUND: the promotion does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate code; SHOP_RULE_IDENTITY_IMMUTABLE: code and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar uma promoção e seus limites de uso","tags":["shop administration"]},"put":{"description":"expectedRevision is required. Currency and code remain stable. Existing order snapshots and redemption records are preserved.","operationId":"AdminShopPromotionsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceShopPromotionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPromotionDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid discount, validity window or redemption limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_PROMOTION_NOT_FOUND: the promotion does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate code; SHOP_RULE_IDENTITY_IMMUTABLE: code and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Substituir as regras de uma promoção","tags":["shop administration"]},"patch":{"description":"expectedRevision and at least one field are required. When switching kind, explicitly clear the old discount field with null and provide the new one. Validation applies to the complete resulting rule.","operationId":"AdminShopPromotionsController_patch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchShopPromotionDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPromotionDto"}}}},"400":{"description":"SHOP_RULE_INVALID: invalid discount, validity window or redemption limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_PROMOTION_NOT_FOUND: the promotion does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate code; SHOP_RULE_IDENTITY_IMMUTABLE: code and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Alterar desconto, janela, limites ou disponibilidade de uma promoção","tags":["shop administration"]},"delete":{"description":"Requires expectedRevision as a query parameter. Disables future use and retains completed order and redemption history.","operationId":"AdminShopPromotionsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"expectedRevision","required":true,"in":"query","schema":{"maximum":2147483647,"exclusiveMinimum":0,"type":"integer"}}],"responses":{"204":{"description":"Promotion logically deleted."},"400":{"description":"SHOP_RULE_INVALID: invalid discount, validity window or redemption limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"SHOP_PROMOTION_NOT_FOUND: the promotion does not exist or is deleted for a mutation."},"409":{"description":"SHOP_REVISION_CONFLICT: reload the latest revision; SHOP_CONFLICT: duplicate code; SHOP_RULE_IDENTITY_IMMUTABLE: code and currency cannot be changed."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Excluir logicamente uma promoção","tags":["shop administration"]}},"/v1/shop/payments/capabilities":{"get":{"description":"Disabled by default. No provider call or payment is performed by this endpoint.","operationId":"ShopPaymentsController_capabilities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentCapabilitiesDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar disponibilidade de pagamento, moedas e configuração pública Stripe","tags":["Kypace Shop payments"]}},"/v1/shop/orders/{id}/payment":{"post":{"description":"The amount and currency come from the immutable server order. Repeats reuse its durable PaymentIntent. clientSecret is private to this owner, must never be logged and is null when the order is no longer payable. Final payment confirmation is reconciled from Stripe.","operationId":"ShopPaymentsController_payment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderPaymentDto"}}}},"503":{"description":"SHOP_PAYMENTS_DISABLED or provider unavailable. No financial success is implied."}},"security":[{"bearer":[]}],"summary":"Criar ou retomar a tentativa de pagamento do próprio pedido","tags":["Kypace Shop payments"]}},"/v1/shop/orders/{id}/refunds":{"get":{"operationId":"ShopPaymentsController_refunds","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRefundsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar histórico dos reembolsos do próprio pedido","tags":["Kypace Shop payments"]}},"/v1/shop/payment-methods":{"get":{"description":"Only redisplay-approved methods owned by this account are returned. The backend stores no PAN or CVC. Disabled payments return enabled:false with an empty list.","operationId":"ShopPaymentsController_methods","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentMethodsDto"}}}}},"security":[{"bearer":[]}],"summary":"Consultar meios de pagamento salvos com consentimento na Stripe","tags":["Kypace Shop payments"]}},"/v1/shop/payment-methods/setup":{"post":{"description":"Confirm the SetupIntent in the Stripe client SDK after explicit save consent. This endpoint does not charge the customer. Reuse clientId for the same setup attempt.","operationId":"ShopPaymentsController_setup","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentSetupRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentSetupDto"}}}}},"security":[{"bearer":[]}],"summary":"Preparar inclusão de meio de pagamento para uso com o usuário presente","tags":["Kypace Shop payments"]}},"/v1/shop/payment-methods/customer-session":{"post":{"description":"A short-lived Stripe CustomerSession for this account only; do not persist or log its clientSecret.","operationId":"ShopPaymentsController_session","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentCustomerSessionDto"}}}}},"security":[{"bearer":[]}],"summary":"Abrir sessão privada de meios de pagamento no PaymentSheet","tags":["Kypace Shop payments"]}},"/v1/shop/payment-methods/{id}":{"delete":{"operationId":"ShopPaymentsController_detach","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearer":[]}],"summary":"Remover da Stripe um meio de pagamento do titular","tags":["Kypace Shop payments"]}},"/v1/admin/shop/orders/{id}/refunds":{"get":{"operationId":"AdminShopPaymentsController_refunds","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRefundsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar solicitações e resultados de reembolso do pedido","tags":["Kypace Shop administration"]},"post":{"description":"Requires recent administrator login. clientId is idempotent per order; pending refunds reserve the balance. Provider outages preserve a pending request and the worker retries. A refund does not restore physical stock; receive a return explicitly for that.","operationId":"AdminShopPaymentsController_refund","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRefundRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRefundDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Solicitar reembolso integral ou parcial sem exceder o saldo disponível","tags":["Kypace Shop administration"]}},"/v1/admin/shop/orders/{id}/payments":{"get":{"operationId":"AdminShopPaymentsController_paymentsForOrder","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderPaymentsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar tentativas de pagamento sem segredos do cliente","tags":["Kypace Shop administration"]}},"/v1/admin/shop/orders/{id}/refunds/{refundId}/reconciliation":{"post":{"description":"Requires recent administrator login. Retrieves the provider refund and verifies the original payment, order, amount, currency and durable refund request before changing local state.","operationId":"AdminShopPaymentsController_reconcileRefund","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"refundId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRefundReconciliationRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopRefundDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Reconciliar reembolso existente após resposta incerta da Stripe","tags":["Kypace Shop administration"]}},"/v1/admin/shop/orders/{id}/payment-reconciliation":{"post":{"description":"For uncertain provider outcomes, including attempts older than the provider idempotency window. The server retrieves Stripe and validates account, mode, order, local attempt, amount and currency; supplying an ID does not mark the order paid.","operationId":"AdminShopPaymentsController_reconcile","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentReconciliationRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopOrderPaymentsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Conferir e reconciliar um PaymentIntent existente com seu pedido","tags":["Kypace Shop administration"]}},"/v1/admin/shop/payments/reconciliation":{"post":{"operationId":"AdminShopPaymentsController_maintain","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPaymentMaintenanceDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"Required role or resource assignment missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Processar lote limitado de webhooks, pagamentos e reembolsos pendentes","tags":["Kypace Shop administration"]}},"/v1/shop/webhooks/stripe":{"post":{"description":"Public only for provider delivery: the SDK validates the raw bytes and signature before persistence. Merchant account scope, test/live mode and event replay are checked. HTTP 200 acknowledges durable receipt, not fulfillment or payment success. Configure snapshot payment_intent.succeeded, payment_intent.payment_failed, payment_intent.processing, payment_intent.canceled, payment_intent.requires_action, refund.created, refund.updated and refund.failed.","operationId":"ShopStripeWebhookController_webhook","parameters":[{"name":"Stripe-Signature","in":"header","description":"Official Stripe raw-body signature with a timestamp no more than 300 seconds old.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Stripe snapshot event JSON. Send the exact signed bytes; never re-serialize between signing and sending.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopWebhookReceiptDto"}}}}},"summary":"Receber evento autenticado da Stripe e registrar reconciliação durável","tags":["Kypace Shop webhooks"]}},"/v1/shop/orders/{orderId}/support":{"post":{"description":"Accepts the existing support request contract, including clientId, category, subject and message. The order link and ticket commit together. A repeated clientId with identical content and order returns its original receipt; changing the order or content returns a conflict. Cancelled or refunded orders remain eligible for support. The returned supportPath and messagesPath reuse the private support conversation, assignment and state endpoints. Optional technical context retains its existing explicit consent. Attachments are currently unavailable in the support channel.","operationId":"ShopSupportController_request","parameters":[{"name":"orderId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestShopSupportDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopSupportReceiptDto"}}}},"404":{"description":"SHOP_ORDER_NOT_FOUND: order not found for this account."},"409":{"description":"SUPPORT_COMMAND_REUSED: clientId was used with different content or order."}},"security":[{"bearer":[]}],"summary":"Abrir solicitação privada de suporte para um pedido próprio","tags":["shop support"]},"get":{"description":"Lists private ticket summaries by creation time, with optional status and cursor pagination. Message bodies and optional technical context remain in the existing authenticated support routes. A different account cannot enumerate the order or its support tickets.","operationId":"ShopSupportController_list","parameters":[{"name":"orderId","required":true,"in":"path","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":512,"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopSupportListDto"}}}},"404":{"description":"SHOP_ORDER_NOT_FOUND: order not found for this account."}},"security":[{"bearer":[]}],"summary":"Consultar solicitações de suporte vinculadas ao próprio pedido","tags":["shop support"]}},"/v1/shop/orders/{orderId}/returns":{"post":{"description":"Choose purchased items and quantities after dispatch. Reusing clientId with the same content returns the existing request. Non-rejected requests reserve the corresponding returnable quantities. Merchandise credit uses the original discounted order amounts and the tax allocated to those items at purchase; inclusive prices do not add that tax twice. Shipping and its tax are not refunded automatically and can be handled through the separate administrative order refund policy. Approval remains an administrative decision.","operationId":"ShopReturnsController_request","parameters":[{"name":"orderId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestShopReturnDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"404":{"description":"The return or order does not belong to this account."},"409":{"description":"Stale revision, incompatible state, conflicting clientId or quantities exceeding the purchased units."}},"security":[{"bearer":[]}],"summary":"Solicitar devolução de itens do próprio pedido","tags":["shop returns"]}},"/v1/shop/returns":{"get":{"operationId":"ShopReturnsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"orderId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["requested","approved","rejected","received","refund_pending","refunded","cancelled"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnsDto"}}}},"404":{"description":"The return or order does not belong to this account."},"409":{"description":"Stale revision, incompatible state, conflicting clientId or quantities exceeding the purchased units."}},"security":[{"bearer":[]}],"summary":"Consultar histórico de devoluções da própria conta","tags":["shop returns"]}},"/v1/shop/returns/{id}":{"get":{"operationId":"ShopReturnsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"404":{"description":"The return or order does not belong to this account."},"409":{"description":"Stale revision, incompatible state, conflicting clientId or quantities exceeding the purchased units."}},"security":[{"bearer":[]}],"summary":"Consultar itens, inspeção e reembolso de uma devolução própria","tags":["shop returns"]}},"/v1/shop/returns/{id}/cancel":{"post":{"operationId":"ShopReturnsController_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelShopReturnDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"404":{"description":"The return or order does not belong to this account."},"409":{"description":"Stale revision, incompatible state, conflicting clientId or quantities exceeding the purchased units."}},"security":[{"bearer":[]}],"summary":"Cancelar solicitação própria antes da aprovação","tags":["shop returns"]}},"/v1/admin/shop/returns":{"get":{"operationId":"AdminShopReturnsController_list","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":30,"type":"integer"}},{"name":"cursor","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"orderId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["requested","approved","rejected","received","refund_pending","refunded","cancelled"]}},{"name":"userId","required":false,"in":"query","schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnsDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Return not found."},"409":{"description":"Stale revision, incompatible state, duplicate command or an invalid refund or stock quantity."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Administrar devoluções por pedido, cliente e estado","tags":["shop administration"]}},"/v1/admin/shop/returns/{id}":{"get":{"operationId":"AdminShopReturnsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Return not found."},"409":{"description":"Stale revision, incompatible state, duplicate command or an invalid refund or stock quantity."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Consultar devolução, inspeção e estado financeiro","tags":["shop administration"]}},"/v1/admin/shop/returns/{id}/decision":{"post":{"description":"A requested return can be approved. A requested or approved return can be rejected before inspection. The approved merchandise refund may be reduced explicitly but cannot exceed the original return item credit, including its allocated tax. Shipping and its tax require the separate administrative order refund action. Zero credit requires no payment operation.","operationId":"AdminShopReturnsController_decide","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideShopReturnDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Return not found."},"409":{"description":"Stale revision, incompatible state, duplicate command or an invalid refund or stock quantity."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Aprovar ou rejeitar devolução com resposta ao cliente","tags":["shop administration"]}},"/v1/admin/shop/returns/{id}/receive":{"post":{"description":"Send every item of the approved return and explicitly select restockQuantity for each. The whole requested parcel is recorded as received; a quantity of zero keeps damaged or unsuitable units out of sellable stock. Inventory movements and the receipt commit together. Repeating clientId with the same inspection never adds stock twice. Request the financial refund in the separate refund action after receipt.","operationId":"AdminShopReturnsController_receive","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiveShopReturnDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Return not found."},"409":{"description":"Stale revision, incompatible state, duplicate command or an invalid refund or stock quantity."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Confirmar recebimento integral e inspeção da devolução","tags":["shop administration"]}},"/v1/admin/shop/returns/{id}/refund":{"post":{"description":"Requires an approved, received return with positive credit and configured Stripe credentials for the original payment. Existing purchases remain refundable when accepting new payments is disabled. The command is durable and uses clientId as the payment idempotency key. Provider confirmation alone changes the status to refunded. Pending attempts are retried by maintenance; a terminal failed or cancelled attempt requires a new clientId. This action never changes physical stock.","operationId":"AdminShopReturnsController_refund","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundShopReturnDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopReturnDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator access is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"404":{"description":"Return not found."},"409":{"description":"Stale revision, incompatible state, duplicate command or an invalid refund or stock quantity."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Solicitar reembolso da devolução recebida","tags":["shop administration"]}},"/v1/today/tips":{"get":{"operationId":"TipsController_tips","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Today"]}},"/v1/today/tips/{id}":{"patch":{"operationId":"TipsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQuickTipDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["Today"]}},"/v1/themes":{"get":{"operationId":"ThemesController_list","parameters":[],"responses":{"200":{"description":"Themes the app may offer, ordered by group sort/key and then theme sort/key. Each item includes groupId and group; groups lists enabled groups in display order. artUrl is a presigned GET valid for artExpiresIn seconds, or null when the theme has no artwork.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeCatalogueDto"}}}}},"security":[{"bearer":[]}],"tags":["themes"]}},"/v1/admin/themes/groups":{"get":{"operationId":"AdminThemeGroupsController_list","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeGroupCatalogueDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator accounts only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["theme group administration"]},"post":{"operationId":"AdminThemeGroupsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThemeGroupDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator accounts only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_GROUP_ALREADY_EXISTS: the key is already registered."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["theme group administration"]}},"/v1/admin/themes/groups/{id}":{"get":{"operationId":"AdminThemeGroupsController_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator accounts only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["theme group administration"]},"put":{"operationId":"AdminThemeGroupsController_replace","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThemeGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator accounts only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_DEFAULT_GROUP_PROTECTED: the default group must remain enabled."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["theme group administration"]},"patch":{"operationId":"AdminThemeGroupsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateThemeGroupDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeGroupDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator accounts only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_DEFAULT_GROUP_PROTECTED: the default group must remain enabled."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["theme group administration"]},"delete":{"operationId":"AdminThemeGroupsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Theme group deleted; historical relationships are retained."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: administrator accounts only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_GROUP_IN_USE: move or delete its themes first."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["theme group administration"]}},"/v1/admin/themes":{"get":{"operationId":"AdminThemesController_list","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeCatalogueDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]},"post":{"operationId":"AdminThemesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThemeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_ALREADY_EXISTS: a theme with this key is registered."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]}},"/v1/admin/themes/{key}":{"get":{"operationId":"AdminThemesController_byKey","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]},"put":{"operationId":"AdminThemesController_replace","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["theme"],"properties":{"theme":{"type":"string","description":"JSON completo do tema, incluindo key, cores, enabled e isDefault.","example":"{\"key\":\"trail\",\"name\":\"Trail & mountain\",\"sort\":1,\"groupId\":\"e22bcf6f-8acb-4c30-a5e1-2efbca540dab\",\"enabled\":true,\"accentLight\":\"#4F6F52\",\"accentDark\":\"#8FB894\",\"artMediaId\":null,\"usesBrandGradient\":false,\"isDefault\":false}"},"image":{"type":"string","format":"binary","description":"Imagem opcional JPEG, PNG ou WebP, até 10 MiB."}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]},"patch":{"operationId":"AdminThemesController_update","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateThemeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_DEFAULT_REQUIRED: clear the default by making another theme the default instead."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]},"delete":{"operationId":"AdminThemesController_remove","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"The theme is gone."},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_DEFAULT_PROTECTED: the default theme is not deletable."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]}},"/v1/admin/themes/with-art":{"post":{"operationId":"AdminThemesController_createWithArt","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["key","name","accentLight","accentDark","image"],"properties":{"key":{"type":"string","example":"trail"},"groupId":{"type":"string","format":"uuid","description":"Theme group UUID. Omit to use Kypace for compatibility.","example":"e22bcf6f-8acb-4c30-a5e1-2efbca540dab"},"name":{"type":"string","example":"Trail & mountain"},"accentLight":{"type":"string","example":"#4F6F52"},"accentDark":{"type":"string","example":"#8FB894"},"sort":{"type":"string","example":"1","description":"Integer from 0 to 10000; defaults to 0."},"enabled":{"type":"string","enum":["true","false"],"description":"Defaults to true."},"isDefault":{"type":"string","enum":["true","false"],"description":"Defaults to false."},"image":{"type":"string","format":"binary","description":"JPEG, PNG or WebP; up to 10 MiB."}}}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"409":{"description":"THEME_ALREADY_EXISTS: the key is already registered."},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]}},"/v1/admin/themes/{key}/art":{"put":{"operationId":"AdminThemesController_setArt","parameters":[{"name":"key","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeArtDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminThemeDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED: this route is reserved for administrator accounts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"tags":["themes"]}},"/v1/maps/friends/activity-routes":{"post":{"description":"Reads protected snapshots of completed activities from visible publications. Rechecks reciprocal friendship, blocks, moderation, consent and revocation on each read. Segments and original kilometre markers retain privacy gaps. Never returns live peer GPS or private activity samples. Results expire after 30 seconds and must be cleared on logout or expiry.","operationId":"FriendsActivityRoutesController_list","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendsActivityRoutesQueryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendsActivityRoutesResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Nearby recorded activity routes deliberately shared by reciprocal friends","tags":["Maps"]}},"/v1/health/live":{"get":{"operationId":"SystemController_live","parameters":[],"responses":{"200":{"description":""}},"tags":["System"]}},"/v1/maps/config":{"get":{"operationId":"SystemController_mapsConfig","parameters":[],"responses":{"200":{"description":""}},"tags":["System"]}},"/v1/health/ready":{"get":{"operationId":"SystemController_ready","parameters":[],"responses":{"200":{"description":""}},"tags":["System"]}},"/v1/system/metrics":{"get":{"operationId":"SystemController_systemMetrics","parameters":[],"responses":{"200":{"description":""}},"tags":["System"]}},"/v1/capabilities":{"get":{"operationId":"SystemController_capabilities","parameters":[],"responses":{"200":{"description":""}},"tags":["System"]}},"/v1/admin/catalog/import":{"post":{"description":"The manifest may contain themes, plans, videos, tracks, playlists, groups and events. Files are named file1 through file30 and referenced once by their form field name. Tracks precede playlists, and groups precede events. A track ref or groupRef links items created in this request. Each item commits independently; inspect created, failed, skipped and unknown before retrying. An unknown outcome requires a catalogue lookup. The response has no atomic rollback across items or storage.","operationId":"AdminBulkImportController_import","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["manifest"],"properties":{"manifest":{"type":"string","description":"JSON with arrays themes, plans, videos, tracks, playlists, groups and events. Each item has data matching its individual admin POST and optional media field names. See postman/README.md for the complete example.","example":"{\"themes\":[{\"data\":{\"key\":\"trail\",\"groupId\":\"e22bcf6f-8acb-4c30-a5e1-2efbca540dab\",\"name\":\"Trail & mountain\",\"accentLight\":\"#4F6F52\",\"accentDark\":\"#8FB894\",\"enabled\":true},\"image\":\"file1\"}]}"},"file1":{"type":"string","format":"binary","description":"Example media file; add file2 ... file30 as referenced."}},"additionalProperties":{"type":"string","format":"binary"}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminBulkImportResponseDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"401":{"description":"Authentication required or session revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"403":{"description":"ADMIN_ROLE_REQUIRED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminApiError"}}}}},"security":[{"bearer":[]}],"summary":"Create up to 20 editorial catalogue items in one multipart request","tags":["admin bulk catalogue import"]}}},"info":{"title":"KYPACE API","description":"Backend local. Consulte /v1/capabilities e docs/IMPLEMENTACAO.md para cobertura e integrações.","version":"0.1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"AdminUserListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string"},"locale":{"type":"string"},"units":{"type":"string","enum":["metric","imperial"]},"role":{"type":"string","enum":["ADMIN","SUPPORT","USER"]},"state":{"type":"string","enum":["active","invited"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","email","displayName","locale","units","role","state","version","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"AdminUserResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string"},"locale":{"type":"string"},"units":{"type":"string","enum":["metric","imperial"]},"role":{"type":"string","enum":["ADMIN","SUPPORT","USER"]},"state":{"type":"string","enum":["active","invited"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","email","displayName","locale","units","role","state","version","createdAt","updatedAt"],"additionalProperties":false},"PersonalDataExportDto":{"type":"object","properties":{"formatVersion":{"type":"number","const":3},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"scope":{"type":"string","const":"personal_records_and_media_manifest"},"mediaDownloadEndpoint":{"type":"string","const":"/v1/media/{id}"},"includesMediaBinary":{"type":"boolean","const":false},"storedObjects":{"type":"array","items":{"type":"object","properties":{"section":{"type":"string"},"endpoint":{"type":"string"},"note":{"type":"string"}},"required":["section","endpoint","note"]}},"excluded":{"type":"array","items":{"type":"string"}},"data":{"type":"object","properties":{"mealPhotoAnalyses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"media_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","ready","failed"]},"expect":{"type":"string","enum":["plate","label","auto"]},"escalated":{"type":"boolean"},"model":{"type":["string","null"]},"confidence":{"type":["number","null"]},"payload":{"anyOf":[{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":["string","null"]},"grams":{"type":["number","null"]},"confidence":{"type":["number","null"]},"caloriesKcal":{"type":["number","null"]},"proteinG":{"type":["number","null"]},"carbohydratesG":{"type":["number","null"]},"fatG":{"type":["number","null"]}},"required":["name","quantity","caloriesKcal","proteinG","carbohydratesG","fatG"]}},"totals":{"type":"object","properties":{"caloriesKcal":{"type":["number","null"]},"proteinG":{"type":["number","null"]},"carbohydratesG":{"type":["number","null"]},"fatG":{"type":["number","null"]},"basis":{"type":"string","enum":["model","sum_of_items","unknown"]}},"required":["caloriesKcal","proteinG","carbohydratesG","fatG","basis"]},"notes":{"type":["string","null"]}},"required":["items","totals","notes"]},{"type":"null"}]},"ocr_text":{"type":["string","null"]},"failure_reason":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completed_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","media_id","status","expect","escalated","model","confidence","payload","ocr_text","failure_reason","created_at","completed_at"]}},"narrations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":["string","null"]},"locale":{"type":"string"},"voice":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"content_type":{"type":"string"},"duration_seconds_estimate":{"type":["number","null"]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","locale","voice","bytes","content_type","duration_seconds_estimate","created_at"]}}},"required":["mealPhotoAnalyses","narrations"],"additionalProperties":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"required":["formatVersion","generatedAt","scope","mediaDownloadEndpoint","includesMediaBinary","storedObjects","excluded","data"]},"PersonalExportJobDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","running","ready","failed","expired"]},"formatVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requestedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rows":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sections":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"type":"null"}]},"failureCode":{"type":"array","items":{"type":"string"}},"download":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]},{"type":"null"}]}},"required":["id","status","formatVersion","requestedAt","completedAt","expiresAt","bytes","rows","sections","failureCode","download"]},"AdminUserCreateDto":{"type":"object","properties":{"email":{"type":"string"},"displayName":{"type":"string","minLength":2,"maxLength":100},"locale":{"default":"en-GB","type":"string","maxLength":35},"units":{"default":"metric","type":"string","enum":["metric","imperial"]},"role":{"default":"USER","type":"string","enum":["ADMIN","SUPPORT","USER"]}},"required":["email","displayName"],"additionalProperties":false},"AdminUserCreatedDto":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string"},"locale":{"type":"string"},"units":{"type":"string","enum":["metric","imperial"]},"role":{"type":"string","enum":["ADMIN","SUPPORT","USER"]},"state":{"type":"string","enum":["active","invited"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","email","displayName","locale","units","role","state","version","createdAt","updatedAt"],"additionalProperties":false},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["user","token","expiresAt"],"additionalProperties":false},"AdminUserReplaceDto":{"type":"object","properties":{"email":{"type":"string"},"displayName":{"type":"string","minLength":2,"maxLength":100},"locale":{"type":"string","maxLength":35},"units":{"type":"string","enum":["metric","imperial"]},"role":{"type":"string","enum":["ADMIN","SUPPORT","USER"]},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["email","displayName","locale","units","role","expectedVersion"],"additionalProperties":false},"AdminUserPatchDto":{"type":"object","properties":{"email":{"type":"string"},"displayName":{"type":"string","minLength":2,"maxLength":100},"locale":{"type":"string","maxLength":35},"units":{"type":"string","enum":["metric","imperial"]},"role":{"type":"string","enum":["ADMIN","SUPPORT","USER"]},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false},"AdminTokenListDto":{"type":"object","properties":{"sessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","deviceId","createdAt","expiresAt"],"additionalProperties":false}},"pendingInvitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","expiresAt"],"additionalProperties":false}},"pendingPasswordResets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","expiresAt"],"additionalProperties":false}}},"required":["sessions","pendingInvitations","pendingPasswordResets"],"additionalProperties":false},"AdminTokenIssueDto":{"type":"object","properties":{"purpose":{"type":"string","enum":["invitation","password_reset"]}},"required":["purpose"],"additionalProperties":false},"AdminTokenIssuedDto":{"type":"object","properties":{"purpose":{"type":"string","enum":["invitation","password_reset"]},"token":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["purpose","token","expiresAt"],"additionalProperties":false},"AcceptAdminInvitationDto":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"password":{"type":"string","minLength":10,"maxLength":128},"birthDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"locale":{"type":"string","maxLength":35},"units":{"type":"string","enum":["metric","imperial"]},"consents":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy","marketing","health_data","precise_location"]},"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean"}},"required":["kind","version","accepted"],"additionalProperties":false}}},"required":["token","password","birthDate","deviceId","consents"],"additionalProperties":false},"AuthTokenResponseDto":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string"},"locale":{"type":"string"},"units":{"type":"string","enum":["metric","imperial"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"emailVerified":{"description":"Whether the current account email has a confirmed OTP or matching verified Google claim.","type":"boolean"}},"required":["id","email","displayName","locale","units","createdAt"],"additionalProperties":false},"accessToken":{"type":"string","description":"Ed25519-signed JWT. Send as Authorization: Bearer <accessToken>."},"refreshToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","description":"Opaque, single-use secret bound to deviceId. Store securely and replace after every successful refresh."},"expiresIn":{"type":"integer","minimum":60,"maximum":900,"description":"Access token lifetime in seconds."},"tokenType":{"type":"string","const":"Bearer"}},"required":["user","accessToken","refreshToken","expiresIn","tokenType"],"additionalProperties":false},"AdminOverviewPlatformsResponseDto":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"accounts":{"type":"integer","minimum":0,"maximum":9007199254740991},"registered":{"type":"object","properties":{"ios":{"type":"integer","minimum":0,"maximum":9007199254740991},"android":{"type":"integer","minimum":0,"maximum":9007199254740991},"both":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ios","android","both"],"additionalProperties":false},"activeLast30Days":{"type":"object","properties":{"ios":{"type":"integer","minimum":0,"maximum":9007199254740991},"android":{"type":"integer","minimum":0,"maximum":9007199254740991},"both":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ios","android","both"],"additionalProperties":false}},"required":["asOf","accounts","registered","activeLast30Days"],"additionalProperties":false},"AdminOverviewResponseDto":{"type":"object","properties":{"period":{"type":"string","enum":["week","month","year"]},"start":{"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])))$"},"end":{"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])))$"},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"comparison":{"type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["start","end"],"additionalProperties":false},"activeUsers":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"recordedActivities":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"newUsers":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"activeSubscriptions":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"snapshotAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","snapshotAt"],"additionalProperties":false},"granularity":{"type":"string","enum":["day","month"]},"activity":{"type":"array","items":{"type":"object","properties":{"date":{"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])))$"},"value":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["date","value"],"additionalProperties":false}},"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"demographics":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"gender":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["key","count"],"additionalProperties":false}},"age":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["key","count"],"additionalProperties":false}}},"required":["total","gender","age"],"additionalProperties":false},"community":{"type":"object","properties":{"groups":{"type":"integer","minimum":0,"maximum":9007199254740991},"memberships":{"type":"integer","minimum":0,"maximum":9007199254740991},"openReports":{"type":"integer","minimum":0,"maximum":9007199254740991},"newGroups":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"posts":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"comments":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"likes":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false},"messages":{"type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"previous":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["value","previous"],"additionalProperties":false}},"required":["groups","memberships","openReports","newGroups","posts","comments","likes","messages"],"additionalProperties":false},"usage":{"type":"object","properties":{"bySport":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["key","count"],"additionalProperties":false}},"bySource":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["key","count"],"additionalProperties":false}}},"required":["bySport","bySource"],"additionalProperties":false}},"required":["period","start","end","generatedAt","comparison","activeUsers","recordedActivities","newUsers","activeSubscriptions","granularity","activity","totalUsers","demographics","community","usage"],"additionalProperties":false},"AdminOverviewPresenceResponseDto":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"refreshAfterSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAfterSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"available":{"type":"boolean"},"sharingUsers":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"mappedUsers":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"truncated":{"type":"boolean"},"minimumCellUsers":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cells":{"type":"array","items":{"type":"object","properties":{"cell":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["cell","latitude","longitude","count"],"additionalProperties":false}}},"required":["generatedAt","refreshAfterSeconds","expiresAfterSeconds","available","sharingUsers","mappedUsers","truncated","minimumCellUsers","cells"],"additionalProperties":false},"AdminOverviewReportsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"provider":{"type":"string","enum":["apple_app_store","google_play","google_cloud","firebase","aws","mapbox","servers"]},"date":{"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])))$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"source":{"type":"string","enum":["provider_api","provider_export","invoice"]},"sourceReference":{"type":"string","minLength":1,"maxLength":200},"reportedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"costItems":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"service":{"type":"string","minLength":1,"maxLength":120},"resource":{"default":"","type":"string","maxLength":200},"region":{"default":"","type":"string","maxLength":80},"amountMicros":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000}},"required":["service","amountMicros"],"additionalProperties":false}},"storeMetrics":{"anyOf":[{"type":"object","properties":{"downloads":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"sessions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"crashes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeSubscriptions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"proceedsMicros":{"anyOf":[{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},{"type":"null"}]}},"required":["downloads","sessions","crashes","activeSubscriptions","proceedsMicros"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","provider","date","currency","source","sourceReference","reportedAt","costItems","storeMetrics"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"AdminOverviewReportResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"provider":{"type":"string","enum":["apple_app_store","google_play","google_cloud","firebase","aws","mapbox","servers"]},"date":{"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])))$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"source":{"type":"string","enum":["provider_api","provider_export","invoice"]},"sourceReference":{"type":"string","minLength":1,"maxLength":200},"reportedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"costItems":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"service":{"type":"string","minLength":1,"maxLength":120},"resource":{"default":"","type":"string","maxLength":200},"region":{"default":"","type":"string","maxLength":80},"amountMicros":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000}},"required":["service","amountMicros"],"additionalProperties":false}},"storeMetrics":{"anyOf":[{"type":"object","properties":{"downloads":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"sessions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"crashes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeSubscriptions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"proceedsMicros":{"anyOf":[{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},{"type":"null"}]}},"required":["downloads","sessions","crashes","activeSubscriptions","proceedsMicros"],"additionalProperties":false},{"type":"null"}]}},"required":["id","version","provider","date","currency","source","sourceReference","reportedAt","costItems","storeMetrics"],"additionalProperties":false},"AdminOverviewReportCreateDto":{"type":"object","properties":{"provider":{"type":"string","enum":["apple_app_store","google_play","google_cloud","firebase","aws","mapbox","servers"]},"date":{"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])))$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"source":{"type":"string","enum":["provider_api","provider_export","invoice"]},"sourceReference":{"type":"string","minLength":1,"maxLength":200},"reportedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"costItems":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"service":{"type":"string","minLength":1,"maxLength":120},"resource":{"default":"","type":"string","maxLength":200},"region":{"default":"","type":"string","maxLength":80},"amountMicros":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000}},"required":["service","amountMicros"],"additionalProperties":false}},"storeMetrics":{"anyOf":[{"type":"object","properties":{"downloads":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"sessions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"crashes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeSubscriptions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"proceedsMicros":{"anyOf":[{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},{"type":"null"}]}},"required":["downloads","sessions","crashes","activeSubscriptions","proceedsMicros"],"additionalProperties":false},{"type":"null"}]}},"required":["provider","date","currency","source","sourceReference","reportedAt","costItems","storeMetrics"],"additionalProperties":false},"AdminOverviewReportReplaceDto":{"type":"object","properties":{"provider":{"type":"string","enum":["apple_app_store","google_play","google_cloud","firebase","aws","mapbox","servers"]},"date":{"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])))$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"source":{"type":"string","enum":["provider_api","provider_export","invoice"]},"sourceReference":{"type":"string","minLength":1,"maxLength":200},"reportedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"costItems":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"service":{"type":"string","minLength":1,"maxLength":120},"resource":{"default":"","type":"string","maxLength":200},"region":{"default":"","type":"string","maxLength":80},"amountMicros":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000}},"required":["service","amountMicros"],"additionalProperties":false}},"storeMetrics":{"anyOf":[{"type":"object","properties":{"downloads":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"sessions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"crashes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"activeSubscriptions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"proceedsMicros":{"anyOf":[{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},{"type":"null"}]}},"required":["downloads","sessions","crashes","activeSubscriptions","proceedsMicros"],"additionalProperties":false},{"type":"null"}]},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["provider","date","currency","source","sourceReference","reportedAt","costItems","storeMetrics","expectedVersion"],"additionalProperties":false},"AdminOverviewReportPatchDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sourceReference":{"type":"string","minLength":1,"maxLength":200}},"required":["expectedVersion","sourceReference"],"additionalProperties":false},"AdminIntegrationsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"provider":{"type":"string","enum":["mapbox","google_maps"]},"label":{"type":"string"},"hint":{"type":"string"},"enabled":{"type":"boolean"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","provider","label","hint","enabled","version","expiresAt","createdAt","updatedAt","lastUsedAt"],"additionalProperties":false}},"providers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["mapbox","google_maps"]},"name":{"type":"string"},"description":{"type":"string"},"environment":{"type":"string"},"public":{"type":"boolean"},"environmentConfigured":{"type":"boolean"},"configured":{"type":"boolean"},"source":{"type":"string","enum":["vault","environment"]},"verified":{"type":"boolean"}},"required":["id","name","description","environment","public","environmentConfigured","configured","source","verified"],"additionalProperties":false}}},"required":["items","providers"],"additionalProperties":false},"IntegrationCredentialInputDto":{"type":"object","properties":{"provider":{"type":"string","enum":["mapbox","google_maps"]},"label":{"type":"string","minLength":1,"maxLength":120},"secret":{"type":"string","minLength":8,"maxLength":8192,"pattern":"^[^\\s\\x00-\\x1f]+$"},"enabled":{"type":"boolean"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["provider","label","enabled","expiresAt","expectedVersion"],"additionalProperties":false},"ManagedCredentialResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"provider":{"type":"string","enum":["mapbox","google_maps"]},"label":{"type":"string"},"hint":{"type":"string"},"enabled":{"type":"boolean"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","provider","label","hint","enabled","version","expiresAt","createdAt","updatedAt","lastUsedAt"],"additionalProperties":false},"AdminStoreStatusResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["apple_store","google_play"]},"name":{"type":"string"},"available":{"type":"boolean"},"activeIncidents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"checkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sourceUrl":{"type":"string","format":"uri"}},"required":["provider","name","available","activeIncidents","checkedAt","sourceUrl"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"AdminFilesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"folder":{"type":"string","enum":["editorial","shop","achievements"]},"contentType":{"type":"string","const":"image/webp"},"bytes":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"url":{"type":"string","format":"uri"}},"required":["id","name","folder","contentType","bytes","width","height","updatedAt","url"],"additionalProperties":false}},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"folders":{"type":"array","items":{"type":"object","properties":{"folder":{"type":"string","enum":["editorial","shop","achievements"]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"measured":{"type":"integer","minimum":0,"maximum":9007199254740991},"bytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["folder","count","measured","bytes"],"additionalProperties":false}},"scope":{"type":"string","const":"administrative_catalogue_assets"},"collectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["items","page","limit","total","folders","scope","collectedAt"],"additionalProperties":false},"AccessOriginsResponseDto":{"type":"object","properties":{"days":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Inclusive UTC calendar-day window requested."},"collectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"UTC timestamp when this aggregate was read."},"metric":{"type":"string","const":"successful_sign_ins","description":"Counts successful sign-ins only."},"source":{"type":"string","const":"trusted_proxy_country","description":"Country supplied by a trusted proxy."},"items":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"Two-letter country code; ZZ means unavailable."},"count":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Successful sign-ins in the selected window."}},"required":["country","count"],"additionalProperties":false},"description":"Countries ordered by descending count, then country code."},"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Sum of all country counts."},"unknown":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Count attributed to ZZ; included in total."}},"required":["days","collectedAt","metric","source","items","total","unknown"],"additionalProperties":false},"AdminInboxResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"source":{"type":"string"},"severity":{"type":"string","enum":["info","warning","danger","success"]},"title":{"type":"string"},"body":{"type":"string"},"href":{"type":"string","pattern":"^\\/[^/]"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"readAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","source","severity","title","body","href","createdAt","readAt"],"additionalProperties":false}},"unreadCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextCursor":{"type":"array","items":{"type":"string"}},"coverage":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["items","unreadCount","nextCursor","coverage"],"additionalProperties":false},"AdminReadReceiptDto":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false},"AdminStaffChatResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string"},"authorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"authorName":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","body","authorId","authorName","createdAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"StaffMessageInputDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"message":{"type":"string","minLength":1,"maxLength":4000}},"required":["clientId","message"],"additionalProperties":false},"AdminStaffMessageReceiptDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"],"additionalProperties":false},"LatestPersonalExportDto":{"type":"object","properties":{"export":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","running","ready","failed","expired"]},"formatVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requestedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"bytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rows":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sections":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"type":"null"}]},"failureCode":{"type":["string","null"]},"download":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]},{"type":"null"}]}},"required":["id","status","formatVersion","requestedAt","completedAt","expiresAt","bytes","rows","sections","failureCode","download"]},{"type":"null"}]}},"required":["export"]},"EraseHealthDataDto":{"type":"object","properties":{"confirm":{"type":"string","const":"DELETE_HEALTH_DATA"}},"required":["confirm"],"additionalProperties":false},"HealthErasureReceiptDto":{"type":"object","properties":{"deletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deleted":{"type":"object","properties":{"healthRecords":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthConnectProjections":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthConnectStepDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthConnectSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthConnectParents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthConnectParts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"appleHealthVersions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthLibraryRecords":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthLibraryParts":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthProviderCache":{"type":"integer","minimum":0,"maximum":9007199254740991},"healthProviderConnections":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["healthRecords","healthConnectProjections","healthConnectStepDays","healthConnectSessions","healthConnectParents","healthConnectParts","appleHealthVersions"]},"derivativesInvalidated":{"type":"array","items":{"type":"string"}},"healthConsent":{"type":"object","properties":{"accepted":{"type":"boolean"},"unchanged":{"type":"boolean","const":true}},"required":["accepted","unchanged"]}},"required":["deletedAt","deleted","derivativesInvalidated","healthConsent"]},"LegalDocumentListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string","enum":["terms-of-service","privacy-policy","delete-account","community-guidelines"]},"locale":{"type":"string","pattern":"^[a-z]{2,3}-[A-Z]{2}$"},"version":{"type":"string","maxLength":64,"pattern":"^\\d+(?:\\.\\d+)*$"},"title":{"type":"string","minLength":2,"maxLength":200},"effectiveAt":{"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])))$"},"path":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["draft","published","retired"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","slug","locale","version","title","effectiveAt","path","sha256","status","revision","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"LegalDocumentResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string","enum":["terms-of-service","privacy-policy","delete-account","community-guidelines"]},"locale":{"type":"string","pattern":"^[a-z]{2,3}-[A-Z]{2}$"},"version":{"type":"string","maxLength":64,"pattern":"^\\d+(?:\\.\\d+)*$"},"title":{"type":"string","minLength":2,"maxLength":200},"effectiveAt":{"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])))$"},"path":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["draft","published","retired"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"html":{"type":"string","minLength":30,"maxLength":3500000},"text":{"type":"string"}},"required":["id","slug","locale","version","title","effectiveAt","path","sha256","status","revision","createdAt","updatedAt","html","text"],"additionalProperties":false},"LegalDocumentCreateDto":{"type":"object","properties":{"slug":{"type":"string","enum":["terms-of-service","privacy-policy","delete-account","community-guidelines"]},"locale":{"type":"string","pattern":"^[a-z]{2,3}-[A-Z]{2}$"},"version":{"type":"string","maxLength":64,"pattern":"^\\d+(?:\\.\\d+)*$"},"title":{"type":"string","minLength":2,"maxLength":200},"effectiveAt":{"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])))$"},"html":{"type":"string","minLength":30,"maxLength":500000,"description":"Complete self-contained HTML document."},"text":{"type":"string","minLength":30,"maxLength":500000,"description":"Plain legal text, up to 500,000 characters. Send text or html, never both."}},"required":["slug","locale","version","title","effectiveAt"],"additionalProperties":false},"LegalDocumentReplaceDto":{"type":"object","properties":{"title":{"type":"string","minLength":2,"maxLength":200},"effectiveAt":{"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])))$"},"html":{"type":"string","minLength":30,"maxLength":500000,"description":"Complete self-contained HTML document."},"text":{"type":"string","minLength":30,"maxLength":500000,"description":"Plain legal text, up to 500,000 characters. Send text or html, never both."},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["title","effectiveAt","expectedRevision"],"additionalProperties":false},"LegalDocumentPatchDto":{"type":"object","properties":{"title":{"type":"string","minLength":2,"maxLength":200},"effectiveAt":{"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])))$"},"html":{"type":"string","minLength":30,"maxLength":500000,"description":"Complete self-contained HTML document."},"text":{"type":"string","minLength":30,"maxLength":500000,"description":"Plain legal text, up to 500,000 characters. Send text or html, never both."},"status":{"type":"string","const":"published"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"LegalConsentListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["terms","privacy"]},"documentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":{"type":"boolean","const":true},"status":{"type":"string","enum":["draft","published","retired"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","kind","documentId","required","status","revision","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"LegalConsentResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["terms","privacy"]},"documentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":{"type":"boolean","const":true},"status":{"type":"string","enum":["draft","published","retired"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","kind","documentId","required","status","revision","createdAt","updatedAt"],"additionalProperties":false},"LegalConsentCreateDto":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy"]},"documentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":{"type":"boolean","const":true}},"required":["kind","documentId","required"],"additionalProperties":false},"LegalConsentReplaceDto":{"type":"object","properties":{"documentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":{"type":"boolean","const":true},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["documentId","required","expectedRevision"],"additionalProperties":false},"LegalConsentPatchDto":{"type":"object","properties":{"documentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","const":"published"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"RecordIncidentDto":{"type":"object","properties":{"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"discoveredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"summary":{"type":"string","minLength":10,"maxLength":4000},"dataCategories":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["identification","contact","authentication","location","health","financial","other"]}},"affectedSubjectsEstimate":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]}},"required":["occurredAt","discoveredAt","summary","dataCategories"],"additionalProperties":false},"IncidentEventDto":{"type":"object","properties":{"type":{"type":"string","enum":["assessment","mitigation","anpd_notification","subjects_notification","closure"]},"details":{"type":"string","minLength":5,"maxLength":4000}},"required":["type","details"],"additionalProperties":false},"AuthErrorResponseDto":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"traceId":{"type":"string"},"details":{}},"required":["code","message","traceId"]},"RegisterDto":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":10,"maxLength":128},"displayName":{"type":"string","minLength":2,"maxLength":100},"birthDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"locale":{"default":"en-GB","type":"string","maxLength":35},"units":{"default":"metric","type":"string","enum":["metric","imperial"]},"consents":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy","marketing","health_data","precise_location"]},"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean"}},"required":["kind","version","accepted"],"additionalProperties":false}}},"required":["email","password","displayName","birthDate","deviceId","consents"],"additionalProperties":false},"LoginDto":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string","minLength":1,"maxLength":128},"deviceId":{"type":"string","minLength":1,"maxLength":128}},"required":["email","password","deviceId"],"additionalProperties":false},"RefreshDto":{"type":"object","properties":{"refreshToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"deviceId":{"type":"string","minLength":1,"maxLength":128}},"required":["refreshToken","deviceId"],"additionalProperties":false},"ForgotPasswordDto":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false},"AuthMessageResponseDto":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false},"ResetPasswordDto":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"password":{"type":"string","minLength":10,"maxLength":128}},"required":["token","password"],"additionalProperties":false},"ChangePasswordDto":{"type":"object","properties":{"currentPassword":{"type":"string","minLength":1,"maxLength":128},"password":{"type":"string","minLength":10,"maxLength":128}},"required":["currentPassword","password"],"additionalProperties":false},"AuthSessionsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string"},"userAgent":{"type":["string","null"]},"current":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"lastUsedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","deviceId","userAgent","current","createdAt","lastUsedAt","expiresAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"GoogleIdentityStatusDto":{"type":"object","properties":{"linked":{"type":"boolean"}},"required":["linked"]},"GoogleChallengeDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128}},"required":["deviceId"],"additionalProperties":false},"GoogleChallengeResponseDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"nonce":{"type":"string"},"expiresIn":{"type":"number","const":300},"serverClientId":{"type":"string"}},"required":["challengeId","nonce","expiresIn","serverClientId"]},"GoogleSessionDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"idToken":{"type":"string","minLength":100,"maxLength":16000},"registration":{"type":"object","properties":{"birthDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"locale":{"default":"en-GB","type":"string","maxLength":35},"units":{"default":"metric","type":"string","enum":["metric","imperial"]},"consents":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy","marketing","health_data","precise_location"]},"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean"}},"required":["kind","version","accepted"],"additionalProperties":false}}},"required":["birthDate","consents"],"additionalProperties":false}},"required":["challengeId","deviceId","idToken"],"additionalProperties":false},"GoogleSessionResponseDto":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string"},"locale":{"type":"string"},"units":{"type":"string","enum":["metric","imperial"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"emailVerified":{"description":"Whether the current account email has a confirmed OTP or matching verified Google claim.","type":"boolean"}},"required":["id","email","displayName","locale","units","createdAt"],"additionalProperties":false},"accessToken":{"type":"string","description":"Ed25519-signed JWT. Send as Authorization: Bearer <accessToken>."},"refreshToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","description":"Opaque, single-use secret bound to deviceId. Store securely and replace after every successful refresh."},"expiresIn":{"type":"integer","minimum":60,"maximum":900,"description":"Access token lifetime in seconds."},"tokenType":{"type":"string","const":"Bearer"},"isNewUser":{"type":"boolean","description":"True only when this exchange created the account; returning accounts skip onboarding."}},"required":["user","accessToken","refreshToken","expiresIn","tokenType","isNewUser"],"additionalProperties":false},"GoogleLinkDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"idToken":{"type":"string","minLength":100,"maxLength":16000},"currentPassword":{"type":"string","minLength":1,"maxLength":128}},"required":["challengeId","deviceId","idToken","currentPassword"],"additionalProperties":false},"GoogleLinkedResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"linked":{"type":"boolean","const":true}},"required":["provider","linked"]},"GoogleDeleteDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"idToken":{"type":"string","minLength":100,"maxLength":16000},"confirmation":{"type":"string","const":"DELETE"}},"required":["challengeId","deviceId","idToken","confirmation"],"additionalProperties":false},"GoogleDeleteResponseDto":{"type":"object","properties":{"status":{"type":"string","const":"deactivated"},"sessionsRevoked":{"type":"boolean","const":true},"permanentDeletion":{"type":"string","const":"scheduled"},"retentionDays":{"type":"number","const":30}},"required":["status","sessionsRevoked","permanentDeletion","retentionDays"]},"AppleChallengeDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128}},"required":["deviceId"],"additionalProperties":false},"AppleSessionDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"idToken":{"type":"string","minLength":100,"maxLength":16000},"authorizationCode":{"type":"string","minLength":10,"maxLength":4096},"registration":{"type":"object","properties":{"displayName":{"type":"string","minLength":2,"maxLength":100},"birthDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"locale":{"default":"en-GB","type":"string","maxLength":35},"units":{"default":"metric","type":"string","enum":["metric","imperial"]},"consents":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy","marketing","health_data","precise_location"]},"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean"}},"required":["kind","version","accepted"],"additionalProperties":false}}},"required":["displayName","birthDate","consents"],"additionalProperties":false}},"required":["challengeId","deviceId","idToken","authorizationCode"],"additionalProperties":false},"AppleLinkDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"idToken":{"type":"string","minLength":100,"maxLength":16000},"authorizationCode":{"type":"string","minLength":10,"maxLength":4096},"currentPassword":{"type":"string","minLength":1,"maxLength":128}},"required":["challengeId","deviceId","idToken","authorizationCode","currentPassword"],"additionalProperties":false},"AppleDeleteDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"idToken":{"type":"string","minLength":100,"maxLength":16000},"authorizationCode":{"type":"string","minLength":10,"maxLength":4096},"confirmation":{"type":"string","const":"DELETE"}},"required":["challengeId","deviceId","idToken","authorizationCode","confirmation"],"additionalProperties":false},"AppleWebCapabilityDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","const":"web_authorization_code_with_one_time_handoff"},"returnUri":{"type":"string","const":"kypace://auth/apple"},"reason":{"type":"string","const":"APPLE_WEB_NOT_CONFIGURED"}},"required":["enabled","mode","returnUri"],"additionalProperties":false},"AppleWebChallengeDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128},"codeChallenge":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"codeChallengeMethod":{"type":"string","const":"S256"}},"required":["deviceId","codeChallenge","codeChallengeMethod"],"additionalProperties":false},"AppleWebChallengeResponseDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"authorizationUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":300}},"required":["challengeId","state","authorizationUrl","expiresIn"],"additionalProperties":false},"AppleWebCallbackDto":{"type":"object","properties":{"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"code":{"type":"string","minLength":10,"maxLength":4096},"id_token":{"type":"string","minLength":100,"maxLength":16000},"user":{"type":"string","maxLength":8192},"error":{"type":"string","minLength":1,"maxLength":100},"error_description":{"type":"string","maxLength":1000}},"required":["state"],"additionalProperties":false},"AppleWebSessionDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"ticket":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"codeVerifier":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"registration":{"type":"object","properties":{"displayName":{"type":"string","minLength":2,"maxLength":100},"birthDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"locale":{"default":"en-GB","type":"string","maxLength":35},"units":{"default":"metric","type":"string","enum":["metric","imperial"]},"consents":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy","marketing","health_data","precise_location"]},"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean"}},"required":["kind","version","accepted"],"additionalProperties":false}}},"required":["displayName","birthDate","consents"],"additionalProperties":false}},"required":["challengeId","deviceId","state","ticket","codeVerifier"],"additionalProperties":false},"AppleWebSessionResponseDto":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"displayName":{"type":"string"},"locale":{"type":"string"},"units":{"type":"string","enum":["metric","imperial"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"emailVerified":{"description":"Whether the current account email has a confirmed OTP or matching verified Google claim.","type":"boolean"}},"required":["id","email","displayName","locale","units","createdAt"],"additionalProperties":false},"accessToken":{"type":"string","description":"Ed25519-signed JWT. Send as Authorization: Bearer <accessToken>."},"refreshToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","description":"Opaque, single-use secret bound to deviceId. Store securely and replace after every successful refresh."},"expiresIn":{"type":"integer","minimum":60,"maximum":900,"description":"Access token lifetime in seconds."},"tokenType":{"type":"string","const":"Bearer"},"isNewUser":{"type":"boolean"}},"required":["user","accessToken","refreshToken","expiresIn","tokenType","isNewUser"],"additionalProperties":false},"AppleWebLinkDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"ticket":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"codeVerifier":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"currentPassword":{"type":"string","minLength":1,"maxLength":128}},"required":["challengeId","deviceId","state","ticket","codeVerifier","currentPassword"],"additionalProperties":false},"AppleWebLinkResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"apple"},"linked":{"type":"boolean","const":true}},"required":["provider","linked"],"additionalProperties":false},"AppleWebReauthDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"ticket":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"codeVerifier":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["challengeId","deviceId","state","ticket","codeVerifier"],"additionalProperties":false},"AppleWebDeleteDto":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string","minLength":1,"maxLength":128},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"ticket":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"codeVerifier":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"confirmation":{"type":"string","const":"DELETE"}},"required":["challengeId","deviceId","state","ticket","codeVerifier","confirmation"],"additionalProperties":false},"AppleWebDeleteResponseDto":{"type":"object","properties":{"status":{"type":"string","const":"deactivated"},"sessionsRevoked":{"type":"boolean","const":true},"permanentDeletion":{"type":"string","const":"scheduled"},"retentionDays":{"type":"number","const":30}},"required":["status","sessionsRevoked","permanentDeletion","retentionDays"],"additionalProperties":false},"MailPreviewDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","enum":["A1","A2","A3","A4","S1","S2","S3","S4","S5","S6","S7","S8","S9","P1","P2","P3","P4","P5","M1","M2","M3","M4","M5","M6","M7","M8","C1","C2","C3","C4","C5"]},"props":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["userId","templateId","props"],"additionalProperties":false},"MailDispatchDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","enum":["P4","P5","S9","M1","M2","M3","M4","M5","M6","M7","M8"]},"props":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"eventKey":{"type":"string","minLength":8,"maxLength":200},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"availableAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["userId","templateId","props","eventKey","expiresAt"],"additionalProperties":false},"VerificationCodeDto":{"type":"object","properties":{"code":{"type":"string","pattern":"^\\d{6}$"}},"required":["code"],"additionalProperties":false},"OpenMailIncidentDto":{"type":"object","properties":{"incidentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"openedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"impactNote":{"type":"string","minLength":10,"maxLength":500},"affectedUserIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["incidentId","openedAt","impactNote","affectedUserIds"],"additionalProperties":false},"SystemShareDto":{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientShareId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["mediaId","clientShareId"],"additionalProperties":false},"UpdateProfileDto":{"type":"object","properties":{"displayName":{"type":"string","minLength":2,"maxLength":100},"avatarMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"bio":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"city":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"trainingIntent":{"anyOf":[{"type":"string","enum":["build_routine","first_5k","get_faster","health_first"]},{"type":"null"}]},"birthDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"gender":{"anyOf":[{"type":"string","enum":["female","male","other","prefer_not_to_say"]},{"type":"null"}]},"heightCm":{"anyOf":[{"type":"number","minimum":50,"maximum":280},{"type":"null"}]},"weightKg":{"anyOf":[{"type":"number","minimum":20,"maximum":500},{"type":"null"}]},"emergencyContact":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"phone":{"type":"string","minLength":3,"maxLength":32,"allOf":[{"pattern":"^[+0-9(][0-9 ().-]{2,31}$"},{"pattern":"[0-9].*[0-9]"}]}},"required":["name","phone"],"additionalProperties":false},{"type":"null"}]}},"additionalProperties":false},"DeleteAccountDto":{"type":"object","properties":{"password":{"type":"string","minLength":1,"maxLength":128},"confirmation":{"type":"string","const":"DELETE"}},"required":["password","confirmation"],"additionalProperties":false},"UpdatePreferencesDto":{"type":"object","properties":{"locale":{"type":"string","maxLength":35},"units":{"type":"string","enum":["metric","imperial"]},"followSystemLocale":{"type":"boolean"},"unitPreferences":{"type":"object","properties":{"distance":{"type":"string","enum":["km","mi"]},"weight":{"type":"string","enum":["kg","lb"]},"temperature":{"type":"string","enum":["c","f"]},"timeFormat":{"type":"string","enum":["12h","24h"]}},"additionalProperties":false},"theme":{"type":"string","enum":["system","light","dark"]},"sportTheme":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z0-9][a-z0-9_-]*$"},"timezone":{"type":"string","minLength":1,"maxLength":64},"activityPrivacy":{"type":"string","enum":["private","followers","public"]},"weekStartsOn":{"anyOf":[{"type":"number","const":0},{"type":"number","const":1}]},"mapProvider":{"anyOf":[{"type":"string","enum":["google","mapbox"]},{"type":"null"}]},"notifications":{"type":"object","properties":{"push":{"type":"boolean"},"email":{"type":"boolean"},"activityReminders":{"type":"boolean"},"trainingReminders":{"type":"boolean"},"healthNudges":{"type":"boolean"},"rankingsMissions":{"type":"boolean"},"productNews":{"type":"boolean"},"community":{"type":"boolean"},"communitySuggestions":{"type":"boolean"},"quietHours":{"type":"object","properties":{"enabled":{"type":"boolean"},"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"}},"required":["enabled","start","end"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"DailyStatusResponseDto":{"type":"object","properties":{"text":{"type":"string"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["text","updatedAt","expiresAt"],"additionalProperties":false},"PutDailyStatusDto":{"type":"object","properties":{"text":{"type":"string","minLength":1,"description":"Plain text, at most 140 user-perceived characters and 16 KiB of UTF-8; joined emoji are allowed."}},"required":["text"],"additionalProperties":false},"GoalDto":{"type":"object","properties":{"metric":{"type":"string","enum":["distance_m","duration_s","activities","steps","hydration_ml"]},"target":{"type":"number","exclusiveMinimum":0,"maximum":100000000},"period":{"type":"string","enum":["daily","weekly","monthly"]},"sport":{"default":null,"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]}},"required":["metric","target","period"],"additionalProperties":false},"RecordConsentDto":{"type":"object","properties":{"kind":{"type":"string","enum":["terms","privacy","marketing","health_data","precise_location"]},"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean"}},"required":["kind","version","accepted"],"additionalProperties":false},"OnboardingViewDto":{"type":"object","properties":{"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["not_started","in_progress","completed"]},"currentStep":{"type":"string","enum":["sports","goal","availability","equipment","review"]},"sports":{"maxItems":7,"type":"array","items":{"type":"object","properties":{"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"level":{"default":null,"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]},"daysPerWeek":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":7},{"type":"null"}]}},"required":["sport"],"additionalProperties":false}},"trainingIntent":{"anyOf":[{"type":"string","enum":["build_routine","first_5k","get_faster","health_first"]},{"type":"null"}]},"availability":{"anyOf":[{"maxItems":7,"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"minutes":{"type":"integer","minimum":1,"maximum":1440}},"required":["weekday","minutes"],"additionalProperties":false}},{"type":"null"}]},"equipment":{"type":"object","properties":{"mode":{"type":"string","enum":["unspecified","none","available"]},"items":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"}}},"required":["mode","items"],"additionalProperties":false},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["sports","goal","availability","equipment"]},"optional":{"type":"boolean","const":true},"answered":{"type":"boolean"}},"required":["id","optional","answered"],"additionalProperties":false}},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["version","status","currentStep","sports","trainingIntent","availability","equipment","steps","completedAt","createdAt","updatedAt"],"additionalProperties":false},"UpdateOnboardingDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"currentStep":{"type":"string","enum":["sports","goal","availability","equipment","review"]},"sports":{"maxItems":7,"type":"array","items":{"type":"object","properties":{"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"level":{"default":null,"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]},"daysPerWeek":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":7},{"type":"null"}]}},"required":["sport"],"additionalProperties":false}},"trainingIntent":{"anyOf":[{"type":"string","enum":["build_routine","first_5k","get_faster","health_first"]},{"type":"null"}]},"expectedTrainingIntent":{"anyOf":[{"type":"string","enum":["build_routine","first_5k","get_faster","health_first"]},{"type":"null"}]},"availability":{"anyOf":[{"maxItems":7,"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"minutes":{"type":"integer","minimum":1,"maximum":1440}},"required":["weekday","minutes"],"additionalProperties":false}},{"type":"null"}]},"equipment":{"type":"object","properties":{"mode":{"type":"string","enum":["unspecified","none","available"]},"items":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"}}},"required":["mode","items"],"additionalProperties":false}},"required":["expectedVersion"],"additionalProperties":false},"CompleteOnboardingDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["expectedVersion"],"additionalProperties":false},"TodayOverviewResponse":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"isCurrentDay":{"type":"boolean"},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false},"header":{"type":"object","properties":{"displayName":{"type":"string"},"city":{"type":["string","null"]},"locale":{"type":"string"},"followSystemLocale":{"type":"boolean"},"greeting":{"type":"string","enum":["morning","afternoon","evening","night"]},"unitPreferences":{"type":"object","properties":{"distance":{"type":"string","enum":["km","mi"]},"weight":{"type":"string","enum":["kg","lb"]},"temperature":{"type":"string","enum":["c","f"]},"timeFormat":{"type":"string","enum":["12h","24h"]}},"required":["distance","weight","temperature","timeFormat"],"additionalProperties":false}},"required":["displayName","city","locale","followSystemLocale","greeting","unitPreferences"],"additionalProperties":false},"score":{"type":"object","properties":{"status":{"type":"string","const":"unavailable"},"reason":{"type":"string","const":"formula_not_defined"},"value":{"type":"null"},"weeklyChange":{"type":"null"},"algorithmVersion":{"type":"null"},"explanation":{"type":"string"},"medicalMeasure":{"type":"boolean","const":false},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"components":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["consistency","training_load","recovery","movement_outside_training"]},"label":{"type":"string"},"score":{"type":"null"},"status":{"type":"string","const":"unavailable"},"reason":{"type":"string","const":"formula_not_defined"},"measurement":{"type":"object","properties":{"status":{"type":"string","enum":["available","no_data","consent_required","data_limit","unavailable"]},"metric":{"type":"string"},"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"unit":{"anyOf":[{"type":"string","enum":["count","seconds"]},{"type":"null"}]},"reason":{"type":["string","null"]},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false}},"required":["status","metric","value","unit","reason","period"],"additionalProperties":false}},"required":["key","label","score","status","reason","measurement"],"additionalProperties":false}}},"required":["status","reason","value","weeklyChange","algorithmVersion","explanation","medicalMeasure","asOf","localDate","timezone","components"],"additionalProperties":false},"readiness":{"type":"object","properties":{"status":{"type":"string","const":"unavailable"},"reason":{"type":"string"},"value":{"type":"null"}},"required":["status","reason","value"],"additionalProperties":false},"health":{"type":"object","properties":{"status":{"type":"string","enum":["available","partial","empty","consent_required"]},"steps":{"type":"object","properties":{"status":{"type":"string","enum":["available","no_data","consent_required","data_limit","unavailable"]},"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"unit":{"type":"string","enum":["count","seconds","bpm","ml"]},"sources":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"coverageSeconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"reason":{"type":["string","null"]},"coverageStatus":{"type":"string","enum":["complete","partial","none","unknown"]}},"required":["status","value","unit","sources","observedAt","receivedAt","estimated","coverageSeconds","period","updatedAt","reason","coverageStatus"],"additionalProperties":false},"sleepLast24Hours":{"type":"object","properties":{"status":{"type":"string","enum":["available","no_data","consent_required","data_limit","unavailable"]},"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"unit":{"type":"string","enum":["count","seconds","bpm","ml"]},"sources":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"coverageSeconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"reason":{"type":["string","null"]},"coverageStatus":{"type":"string","enum":["complete","partial","none","unknown"]}},"required":["status","value","unit","sources","observedAt","receivedAt","estimated","coverageSeconds","period","updatedAt","reason","coverageStatus"],"additionalProperties":false},"latestHeartRate":{"type":"object","properties":{"status":{"type":"string","enum":["available","no_data","consent_required","data_limit","unavailable"]},"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"unit":{"type":"string","enum":["count","seconds","bpm","ml"]},"sources":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"coverageSeconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"reason":{"type":["string","null"]},"coverageStatus":{"type":"string","enum":["complete","partial","none","unknown"]}},"required":["status","value","unit","sources","observedAt","receivedAt","estimated","coverageSeconds","period","updatedAt","reason","coverageStatus"],"additionalProperties":false},"restingHeartRate":{"type":"object","properties":{"status":{"type":"string","const":"unavailable"},"reason":{"type":"string"},"value":{"type":"null"}},"required":["status","reason","value"],"additionalProperties":false},"hydration":{"type":"object","properties":{"status":{"type":"string","enum":["available","no_data","consent_required","data_limit","unavailable"]},"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"unit":{"type":"string","enum":["count","seconds","bpm","ml"]},"sources":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"coverageSeconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"reason":{"type":["string","null"]},"coverageStatus":{"type":"string","enum":["complete","partial","none","unknown"]},"goalMl":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalStatus":{"type":"string","enum":["available","not_set","multiple_goals","historical_unavailable","consent_required"]}},"required":["status","value","unit","sources","observedAt","receivedAt","estimated","coverageSeconds","period","updatedAt","reason","coverageStatus","goalMl","goalStatus"],"additionalProperties":false},"policy":{"type":"object","properties":{"sourcePriority":{"type":"object","properties":{"steps":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}},"sleep":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}},"heart_rate":{"type":"array","items":{"type":"string","enum":["manual","health_connect","healthkit","device","unknown"]}}},"required":["steps","sleep","heart_rate"],"additionalProperties":false},"intervals":{"type":"string","const":"highest_priority_source_per_interval"},"stepsProration":{"type":"string","const":"uniform_within_source_interval"},"missingData":{"type":"string","const":"null"},"medicalInterpretation":{"type":"boolean","const":false}},"required":["sourcePriority","intervals","stepsProration","missingData","medicalInterpretation"],"additionalProperties":false}},"required":["status","steps","sleepLast24Hours","latestHeartRate","restingHeartRate","hydration","policy"],"additionalProperties":false},"activity":{"type":"object","properties":{"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["from","toExclusive"],"additionalProperties":false},"completedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationS":{"type":"number","minimum":0},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"distanceComplete":{"type":"boolean"},"lastCompleted":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string"},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"durationS":{"type":"number","minimum":0},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["id","sport","title","startedAt","endedAt","durationS","distanceM"],"additionalProperties":false},{"type":"null"}]}},"required":["period","completedCount","activeDays","durationS","distanceM","distanceComplete","lastCompleted"],"additionalProperties":false},"nextSession":{"type":"object","properties":{"status":{"type":"string","enum":["scheduled","empty","historical_unavailable"]},"item":{"anyOf":[{"type":"object","properties":{"scheduleId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planTitle":{"type":"string"},"sessionTitle":{"type":"string"},"sport":{"type":"string"},"scheduledFor":{"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])))$"},"timezone":{"type":"string"},"week":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"estimatedDurationMinutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"progress":{"type":"object","properties":{"completed":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["completed","total"],"additionalProperties":false},"detailEndpoint":{"type":"string"},"isDevelopment":{"type":"boolean"},"published":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["scheduleId","enrollmentId","planId","sessionId","planTitle","sessionTitle","sport","scheduledFor","timezone","week","position","estimatedDurationMinutes","progress","detailEndpoint","isDevelopment","published","contentLabel"],"additionalProperties":false},{"type":"null"}]}},"required":["status","item"],"additionalProperties":false},"quickTips":{"type":"object","properties":{"status":{"type":"string","enum":["available","empty","disabled","consent_required","historical_unavailable"]},"items":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"topic":{"type":"string","enum":["hydration","pace","sleep","movement","nutrition","recovery"]},"title":{"type":"string"},"reason":{"type":"string"},"action":{"type":"string","enum":["log_hydration","open_activity","open_nutrition","open_breathe","open_sleep","dismiss"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source":{"type":"string","enum":["rules","rules_with_model_phrasing"]}},"required":["id","topic","title","reason","action","generatedAt","expiresAt","source"],"additionalProperties":false}},"refreshEndpoint":{"type":"string","const":"/v1/today/tips"},"generationPerformed":{"type":"boolean","const":false}},"required":["status","items","refreshEndpoint","generationPerformed"],"additionalProperties":false},"notifications":{"type":"object","properties":{"unreadCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"endpoint":{"type":"string","const":"/v1/notifications"}},"required":["unreadCount","endpoint"],"additionalProperties":false},"sections":{"type":"object","properties":{"sponsored":{"type":"object","properties":{"status":{"type":"string","const":"load_separately"},"endpoint":{"type":"string","const":"/v1/recommendations/advertising?placement=today_sponsored"},"healthDataUsed":{"type":"boolean","const":false}},"required":["status","endpoint","healthDataUsed"],"additionalProperties":false},"groups":{"type":"object","properties":{"status":{"type":"string","const":"load_separately"},"endpoint":{"type":"string","const":"/v1/recommendations/groups"},"nearbyCount":{"type":"null"}},"required":["status","endpoint","nearbyCount"],"additionalProperties":false}},"required":["sponsored","groups"],"additionalProperties":false},"scoreBeta":{"type":"object","properties":{"status":{"type":"string","enum":["available","provisional","insufficient_data","disabled","consent_required","targets_not_set"]},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"factors":{"minItems":5,"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["activity","sleep","hydration","nutrition","heart_rate"]},"weight":{"anyOf":[{"type":"number","const":30},{"type":"number","const":25},{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":10}]},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string","enum":["recorded_active_duration","recorded_sleep_duration","logged_hydration","logged_energy_intake","resting_target_and_workout_heart_rate_coverage"]},"target":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"measurement":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"status":{"type":"string","enum":["available","no_data","partial","data_limit","unsupported_source"]},"recordCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"string"}},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"sleepStages":{"type":"object","properties":{"deep":{"type":"number","minimum":0},"rem":{"type":"number","minimum":0},"light":{"type":"number","minimum":0},"awake":{"type":"number","minimum":0},"unspecified":{"type":"number","minimum":0},"recordedSeconds":{"type":"number","exclusiveMinimum":0}},"required":["deep","rem","light","awake","unspecified","recordedSeconds"],"additionalProperties":false},"heartRateActivity":{"type":"object","properties":{"recordedSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"averageBpm":{"anyOf":[{"type":"number","minimum":20,"maximum":250},{"type":"null"}]}},"required":["recordedSessions","totalSessions","averageBpm"],"additionalProperties":false}},"required":["value","status","recordCount","sources","updatedAt","estimated"],"additionalProperties":false},"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"points":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"effectiveWeight":{"type":"number","minimum":0,"maximum":1}},"required":["key","weight","unit","metric","target","measurement","eligible","reason","value","effectiveWeight"],"additionalProperties":false}},"coverage":{"type":"object","properties":{"eligibleFactors":{"type":"integer","minimum":0,"maximum":5},"totalFactors":{"type":"number","const":5},"presentWeight":{"type":"number","minimum":0,"maximum":100},"totalWeight":{"type":"number","const":100},"fraction":{"type":"number","minimum":0,"maximum":1}},"required":["eligibleFactors","totalFactors","presentWeight","totalWeight","fraction"],"additionalProperties":false},"confidence":{"type":"string","const":"not_assessed"},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"isCurrentDay":{"type":"boolean"},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","toExclusive"],"additionalProperties":false},"algorithmVersion":{"type":"string"},"evidenceVersion":{"type":"string"},"targetRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"medicalMeasure":{"type":"boolean","const":false},"comparison":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]},"previousDate":{"anyOf":[{"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])))$"},{"type":"null"}]}},"required":["value","reason","previousDate"],"additionalProperties":false}},"required":["status","reason","value","factors","coverage","confidence","id","revision","asOf","localDate","timezone","isCurrentDay","period","algorithmVersion","evidenceVersion","targetRevision","medicalMeasure","comparison"],"additionalProperties":false},"status":{"type":"string","enum":["available","partial","empty"]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"startContext":{"type":"object","properties":{"action":{"type":"string","enum":["start_activity","resume_activity"]},"canStartWithoutHealthData":{"type":"boolean","const":true},"wearableRequired":{"type":"boolean","const":false},"planRequired":{"type":"boolean","const":false},"createEndpoint":{"type":"string","const":"/v1/activities"},"historyEndpoint":{"type":"string","const":"/v1/activities"},"activeActivity":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string"},"state":{"type":"string","enum":["recording","paused"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"detailEndpoint":{"type":"string"}},"required":["id","sport","state","startedAt","updatedAt","detailEndpoint"],"additionalProperties":false},{"type":"null"}]}},"required":["action","canStartWithoutHealthData","wearableRequired","planRequired","createEndpoint","historyEndpoint","activeActivity"],"additionalProperties":false},"metadata":{"type":"object","properties":{"computedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"historicalRevisions":{"type":"string","const":"current_persisted_revision"},"missingData":{"type":"string","const":"null"},"units":{"type":"object","properties":{"activityDuration":{"type":"string","const":"seconds"},"activityDistance":{"type":"string","const":"m"}},"required":["activityDuration","activityDistance"],"additionalProperties":false},"activity":{"type":"object","properties":{"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"sources":{"type":"array","items":{"type":"string"}},"lastCompletedUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastCompletedSource":{"type":["string","null"]},"lastCompletedDistanceSource":{"type":["string","null"]},"lastCompletedDetailEndpoint":{"type":["string","null"]}},"required":["updatedAt","sources","lastCompletedUpdatedAt","lastCompletedSource","lastCompletedDistanceSource","lastCompletedDetailEndpoint"],"additionalProperties":false},"nextSessionUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"quickTipsUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"profileUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"notificationsUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["computedAt","historicalRevisions","missingData","units","activity","nextSessionUpdatedAt","quickTipsUpdatedAt","profileUpdatedAt","notificationsUpdatedAt"],"additionalProperties":false}},"required":["asOf","localDate","timezone","isCurrentDay","period","header","score","readiness","health","activity","nextSession","quickTips","notifications","sections","status","updatedAt","startContext","metadata"],"additionalProperties":false},"TodayEditorialCatalogueDto":{"type":"object","properties":{"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["explore-radar","explore-zone","explore-nutrition","explore-breathe","explore-play","explore-routes","unscheduled-session","groups","watch"]},"imageUrl":{"type":"string","format":"uri"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["key","imageUrl","sha256","revision","width","height"]}}},"required":["expiresIn","items"]},"ScoreFriendsPreviewResponseDto":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"totalFriends":{"type":"integer","minimum":0,"maximum":9007199254740991},"availableCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"avatarExpiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"items":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"value":{"type":"number","minimum":0,"maximum":100},"status":{"type":"string","enum":["available","provisional"]},"localDate":{"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])))$"},"timezone":{"type":"string"},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["userId","displayName","avatarUrl","value","status","localDate","timezone","asOf"],"additionalProperties":false}}},"required":["asOf","totalFriends","availableCount","avatarExpiresIn","items"],"additionalProperties":false},"ScoreMethodologyResponseDto":{"type":"object","properties":{"version":{"type":"string"},"title":{"type":"string"},"purpose":{"type":"string"},"scale":{"type":"object","properties":{"minimum":{"type":"number","const":0},"maximum":{"type":"number","const":100}},"required":["minimum","maximum"],"additionalProperties":false},"normalisation":{"type":"string"},"aggregation":{"type":"string"},"minimumFactors":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumWeight":{"type":"number","exclusiveMinimum":0},"totalWeight":{"type":"number","exclusiveMinimum":0},"minimumPeriodDays":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPeriodCoverage":{"type":"number","minimum":0,"maximum":1},"factors":{"type":"object","properties":{"activity":{"type":"object","properties":{"weight":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string"}},"required":["weight","unit","metric"],"additionalProperties":false},"sleep":{"type":"object","properties":{"weight":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string"}},"required":["weight","unit","metric"],"additionalProperties":false},"hydration":{"type":"object","properties":{"weight":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string"}},"required":["weight","unit","metric"],"additionalProperties":false},"nutrition":{"type":"object","properties":{"weight":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string"}},"required":["weight","unit","metric"],"additionalProperties":false},"heart_rate":{"type":"object","properties":{"weight":{"type":"number","exclusiveMinimum":0},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string"}},"required":["weight","unit","metric"],"additionalProperties":false}},"required":["activity","sleep","hydration","nutrition","heart_rate"],"additionalProperties":false},"pointsRounding":{"type":"string"},"missingData":{"type":"string"},"dayBoundary":{"type":"string"},"recalculation":{"type":"string"},"targets":{"type":"string","const":"explicit_personal_targets_only_no_defaults"},"cardiacFactor":{"type":"string","const":"resting_rate_target_proximity_workout_coverage_reported_not_scored"},"confidence":{"type":"string","const":"not_assessed_coverage_is_not_confidence"},"medicalAssessment":{"type":"boolean","const":false},"comparison":{"type":"string"},"history":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}}},"required":["version","title","purpose","scale","normalisation","aggregation","minimumFactors","minimumWeight","totalWeight","minimumPeriodDays","minimumPeriodCoverage","factors","pointsRounding","missingData","dayBoundary","recalculation","targets","cardiacFactor","confidence","medicalAssessment","comparison","history","limitations"],"additionalProperties":false},"ScorePreferencesResponseDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"socialVisibility":{"default":"private","type":"string","enum":["private","friends"]},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"policyVersion":{"type":"array","items":{"type":"string"}},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"healthConsent":{"type":"boolean"},"policy":{"type":"object","properties":{"version":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"}},"required":["version","title","body"],"additionalProperties":false},"targets":{"type":"object","properties":{"activity":{"anyOf":[{"type":"number","minimum":1,"maximum":86400},{"type":"null"}]},"sleep":{"anyOf":[{"type":"number","minimum":1,"maximum":172800},{"type":"null"}]},"hydration":{"anyOf":[{"type":"number","minimum":1,"maximum":100000},{"type":"null"}]},"nutrition":{"anyOf":[{"type":"number","minimum":1,"maximum":100000},{"type":"null"}]},"heart_rate":{"anyOf":[{"type":"number","minimum":1,"maximum":250},{"type":"null"}]}},"required":["activity","sleep","hydration","nutrition","heart_rate"],"additionalProperties":false},"targetRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"effectiveFrom":{"anyOf":[{"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])))$"},{"type":"null"}]},"targetTimezone":{"type":"array","items":{"type":"string"}}},"required":["enabled","version","policyVersion","acceptedAt","updatedAt","healthConsent","policy","targets","targetRevision","effectiveFrom","targetTimezone"],"additionalProperties":false},"ScorePreferencesInputDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"enabled":{"type":"boolean"},"socialVisibility":{"type":"string","enum":["private","friends"]},"policyVersion":{"type":"string","minLength":1,"maxLength":64},"targets":{"type":"object","properties":{"activity":{"anyOf":[{"type":"number","minimum":1,"maximum":86400},{"type":"null"}]},"sleep":{"anyOf":[{"type":"number","minimum":1,"maximum":172800},{"type":"null"}]},"hydration":{"anyOf":[{"type":"number","minimum":1,"maximum":100000},{"type":"null"}]},"nutrition":{"anyOf":[{"type":"number","minimum":1,"maximum":100000},{"type":"null"}]},"heart_rate":{"anyOf":[{"type":"number","minimum":1,"maximum":250},{"type":"null"}]}},"required":["activity","sleep","hydration","nutrition","heart_rate"],"additionalProperties":false}},"required":["expectedVersion","enabled"],"additionalProperties":false},"ScoreHistoryResponseDto":{"type":"object","properties":{"from":{"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])))$"},"to":{"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])))$"},"timezone":{"type":"string"},"items":{"minItems":1,"maxItems":31,"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["available","provisional","insufficient_data","disabled","consent_required","targets_not_set"]},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"factors":{"minItems":5,"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["activity","sleep","hydration","nutrition","heart_rate"]},"weight":{"anyOf":[{"type":"number","const":30},{"type":"number","const":25},{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":10}]},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string","enum":["recorded_active_duration","recorded_sleep_duration","logged_hydration","logged_energy_intake","resting_target_and_workout_heart_rate_coverage"]},"target":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"measurement":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"status":{"type":"string","enum":["available","no_data","partial","data_limit","unsupported_source"]},"recordCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"string"}},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"sleepStages":{"type":"object","properties":{"deep":{"type":"number","minimum":0},"rem":{"type":"number","minimum":0},"light":{"type":"number","minimum":0},"awake":{"type":"number","minimum":0},"unspecified":{"type":"number","minimum":0},"recordedSeconds":{"type":"number","exclusiveMinimum":0}},"required":["deep","rem","light","awake","unspecified","recordedSeconds"],"additionalProperties":false},"heartRateActivity":{"type":"object","properties":{"recordedSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"averageBpm":{"anyOf":[{"type":"number","minimum":20,"maximum":250},{"type":"null"}]}},"required":["recordedSessions","totalSessions","averageBpm"],"additionalProperties":false}},"required":["value","status","recordCount","sources","updatedAt","estimated"],"additionalProperties":false},"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"points":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"effectiveWeight":{"type":"number","minimum":0,"maximum":1}},"required":["key","weight","unit","metric","target","measurement","eligible","reason","value","effectiveWeight"],"additionalProperties":false}},"coverage":{"type":"object","properties":{"eligibleFactors":{"type":"integer","minimum":0,"maximum":5},"totalFactors":{"type":"number","const":5},"presentWeight":{"type":"number","minimum":0,"maximum":100},"totalWeight":{"type":"number","const":100},"fraction":{"type":"number","minimum":0,"maximum":1}},"required":["eligibleFactors","totalFactors","presentWeight","totalWeight","fraction"],"additionalProperties":false},"confidence":{"type":"string","const":"not_assessed"},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"isCurrentDay":{"type":"boolean"},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","toExclusive"],"additionalProperties":false},"algorithmVersion":{"type":"string"},"evidenceVersion":{"type":"string"},"targetRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"medicalMeasure":{"type":"boolean","const":false},"comparison":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]},"previousDate":{"anyOf":[{"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])))$"},{"type":"null"}]}},"required":["value","reason","previousDate"],"additionalProperties":false}},"required":["status","reason","value","factors","coverage","confidence","id","revision","asOf","localDate","timezone","isCurrentDay","period","algorithmVersion","evidenceVersion","targetRevision","medicalMeasure","comparison"],"additionalProperties":false}},"summary":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]},"eligibleDays":{"type":"integer","minimum":0,"maximum":31},"completeDays":{"type":"integer","minimum":0,"maximum":31},"coverage":{"type":"number","minimum":0,"maximum":1},"aggregation":{"type":"string","const":"mean_of_comparable_complete_days"}},"required":["value","reason","eligibleDays","completeDays","coverage","aggregation"],"additionalProperties":false}},"required":["from","to","timezone","items","summary"],"additionalProperties":false},"ScoreMonthResponseDto":{"type":"object","properties":{"month":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"timezone":{"type":"string"},"from":{"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])))$"},"to":{"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])))$"},"daysInMonth":{"type":"integer","minimum":28,"maximum":31},"items":{"minItems":1,"maxItems":31,"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["available","provisional","insufficient_data","disabled","consent_required","targets_not_set"]},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"factors":{"minItems":5,"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["activity","sleep","hydration","nutrition","heart_rate"]},"weight":{"anyOf":[{"type":"number","const":30},{"type":"number","const":25},{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":10}]},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string","enum":["recorded_active_duration","recorded_sleep_duration","logged_hydration","logged_energy_intake","resting_target_and_workout_heart_rate_coverage"]},"target":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"measurement":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"status":{"type":"string","enum":["available","no_data","partial","data_limit","unsupported_source"]},"recordCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"string"}},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"sleepStages":{"type":"object","properties":{"deep":{"type":"number","minimum":0},"rem":{"type":"number","minimum":0},"light":{"type":"number","minimum":0},"awake":{"type":"number","minimum":0},"unspecified":{"type":"number","minimum":0},"recordedSeconds":{"type":"number","exclusiveMinimum":0}},"required":["deep","rem","light","awake","unspecified","recordedSeconds"],"additionalProperties":false},"heartRateActivity":{"type":"object","properties":{"recordedSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"averageBpm":{"anyOf":[{"type":"number","minimum":20,"maximum":250},{"type":"null"}]}},"required":["recordedSessions","totalSessions","averageBpm"],"additionalProperties":false}},"required":["value","status","recordCount","sources","updatedAt","estimated"],"additionalProperties":false},"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"points":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"effectiveWeight":{"type":"number","minimum":0,"maximum":1}},"required":["key","weight","unit","metric","target","measurement","eligible","reason","value","effectiveWeight"],"additionalProperties":false}},"coverage":{"type":"object","properties":{"eligibleFactors":{"type":"integer","minimum":0,"maximum":5},"totalFactors":{"type":"number","const":5},"presentWeight":{"type":"number","minimum":0,"maximum":100},"totalWeight":{"type":"number","const":100},"fraction":{"type":"number","minimum":0,"maximum":1}},"required":["eligibleFactors","totalFactors","presentWeight","totalWeight","fraction"],"additionalProperties":false},"confidence":{"type":"string","const":"not_assessed"},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"isCurrentDay":{"type":"boolean"},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","toExclusive"],"additionalProperties":false},"algorithmVersion":{"type":"string"},"evidenceVersion":{"type":"string"},"targetRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"medicalMeasure":{"type":"boolean","const":false},"comparison":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]},"previousDate":{"anyOf":[{"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])))$"},{"type":"null"}]}},"required":["value","reason","previousDate"],"additionalProperties":false}},"required":["status","reason","value","factors","coverage","confidence","id","revision","asOf","localDate","timezone","isCurrentDay","period","algorithmVersion","evidenceVersion","targetRevision","medicalMeasure","comparison"],"additionalProperties":false}},"summary":{"type":"object","properties":{"average":{"anyOf":[{"type":"integer","minimum":0,"maximum":100},{"type":"null"}]},"scoredDays":{"type":"integer","minimum":0,"maximum":31},"completeDays":{"type":"integer","minimum":0,"maximum":31},"best":{"anyOf":[{"type":"object","properties":{"localDate":{"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])))$"},"value":{"type":"integer","minimum":0,"maximum":100}},"required":["localDate","value"],"additionalProperties":false},{"type":"null"}]},"lowest":{"anyOf":[{"type":"object","properties":{"localDate":{"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])))$"},"value":{"type":"integer","minimum":0,"maximum":100}},"required":["localDate","value"],"additionalProperties":false},{"type":"null"}]},"factors":{"minItems":5,"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["activity","sleep","hydration","nutrition","heart_rate"]},"maximumPoints":{"anyOf":[{"type":"number","const":30},{"type":"number","const":25},{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":10}]},"averagePoints":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"measuredDays":{"type":"integer","minimum":0,"maximum":31}},"required":["key","maximumPoints","averagePoints","measuredDays"],"additionalProperties":false}},"trend":{"type":"object","properties":{"previousMonth":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},{"type":"null"}]},"previousAverage":{"anyOf":[{"type":"integer","minimum":0,"maximum":100},{"type":"null"}]},"previousScoredDays":{"type":"integer","minimum":0,"maximum":31},"value":{"anyOf":[{"type":"integer","minimum":-100,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]}},"required":["previousMonth","previousAverage","previousScoredDays","value","reason"],"additionalProperties":false},"reason":{"type":["string","null"]},"aggregation":{"type":"string","const":"mean_of_complete_scored_days"}},"required":["average","scoredDays","completeDays","best","lowest","factors","trend","reason","aggregation"],"additionalProperties":false}},"required":["month","timezone","from","to","daysInMonth","items","summary"],"additionalProperties":false},"ScoreRevisionsResponseDto":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["available","provisional","insufficient_data","disabled","consent_required","targets_not_set"]},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"factors":{"minItems":5,"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["activity","sleep","hydration","nutrition","heart_rate"]},"weight":{"anyOf":[{"type":"number","const":30},{"type":"number","const":25},{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":10}]},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string","enum":["recorded_active_duration","recorded_sleep_duration","logged_hydration","logged_energy_intake","resting_target_and_workout_heart_rate_coverage"]},"target":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"measurement":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"status":{"type":"string","enum":["available","no_data","partial","data_limit","unsupported_source"]},"recordCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"string"}},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"sleepStages":{"type":"object","properties":{"deep":{"type":"number","minimum":0},"rem":{"type":"number","minimum":0},"light":{"type":"number","minimum":0},"awake":{"type":"number","minimum":0},"unspecified":{"type":"number","minimum":0},"recordedSeconds":{"type":"number","exclusiveMinimum":0}},"required":["deep","rem","light","awake","unspecified","recordedSeconds"],"additionalProperties":false},"heartRateActivity":{"type":"object","properties":{"recordedSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"averageBpm":{"anyOf":[{"type":"number","minimum":20,"maximum":250},{"type":"null"}]}},"required":["recordedSessions","totalSessions","averageBpm"],"additionalProperties":false}},"required":["value","status","recordCount","sources","updatedAt","estimated"],"additionalProperties":false},"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"points":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"effectiveWeight":{"type":"number","minimum":0,"maximum":1}},"required":["key","weight","unit","metric","target","measurement","eligible","reason","value","effectiveWeight"],"additionalProperties":false}},"coverage":{"type":"object","properties":{"eligibleFactors":{"type":"integer","minimum":0,"maximum":5},"totalFactors":{"type":"number","const":5},"presentWeight":{"type":"number","minimum":0,"maximum":100},"totalWeight":{"type":"number","const":100},"fraction":{"type":"number","minimum":0,"maximum":1}},"required":["eligibleFactors","totalFactors","presentWeight","totalWeight","fraction"],"additionalProperties":false},"confidence":{"type":"string","const":"not_assessed"},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"isCurrentDay":{"type":"boolean"},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","toExclusive"],"additionalProperties":false},"algorithmVersion":{"type":"string"},"evidenceVersion":{"type":"string"},"targetRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"medicalMeasure":{"type":"boolean","const":false},"comparison":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]},"previousDate":{"anyOf":[{"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])))$"},{"type":"null"}]}},"required":["value","reason","previousDate"],"additionalProperties":false}},"required":["status","reason","value","factors","coverage","confidence","id","revision","asOf","localDate","timezone","isCurrentDay","period","algorithmVersion","evidenceVersion","targetRevision","medicalMeasure","comparison"],"additionalProperties":false}},"nextBeforeRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["items","nextBeforeRevision"],"additionalProperties":false},"ScoreRangeDto":{"type":"object","properties":{"from":{"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])))$"},"to":{"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])))$"}},"required":["from","to"],"additionalProperties":false},"ScoreDayResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["available","provisional","insufficient_data","disabled","consent_required","targets_not_set"]},"reason":{"type":"array","items":{"type":"string"}},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"factors":{"minItems":5,"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["activity","sleep","hydration","nutrition","heart_rate"]},"weight":{"anyOf":[{"type":"number","const":30},{"type":"number","const":25},{"type":"number","const":15},{"type":"number","const":20},{"type":"number","const":10}]},"unit":{"type":"string","enum":["seconds","ml","kcal","bpm"]},"metric":{"type":"string","enum":["recorded_active_duration","recorded_sleep_duration","logged_hydration","logged_energy_intake","resting_target_and_workout_heart_rate_coverage"]},"target":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"measurement":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"status":{"type":"string","enum":["available","no_data","partial","data_limit","unsupported_source"]},"recordCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"string"}},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"estimated":{"type":"boolean"},"sleepStages":{"type":"object","properties":{"deep":{"type":"number","minimum":0},"rem":{"type":"number","minimum":0},"light":{"type":"number","minimum":0},"awake":{"type":"number","minimum":0},"unspecified":{"type":"number","minimum":0},"recordedSeconds":{"type":"number","exclusiveMinimum":0}},"required":["deep","rem","light","awake","unspecified","recordedSeconds"],"additionalProperties":false},"heartRateActivity":{"type":"object","properties":{"recordedSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"averageBpm":{"anyOf":[{"type":"number","minimum":20,"maximum":250},{"type":"null"}]}},"required":["recordedSessions","totalSessions","averageBpm"],"additionalProperties":false}},"required":["value","status","recordCount","sources","updatedAt","estimated"],"additionalProperties":false},"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"points":{"anyOf":[{"type":"integer","minimum":0,"maximum":30},{"type":"null"}]},"effectiveWeight":{"type":"number","minimum":0,"maximum":1}},"required":["key","weight","unit","metric","target","measurement","eligible","reason","value","effectiveWeight"],"additionalProperties":false}},"coverage":{"type":"object","properties":{"eligibleFactors":{"type":"integer","minimum":0,"maximum":5},"totalFactors":{"type":"number","const":5},"presentWeight":{"type":"number","minimum":0,"maximum":100},"totalWeight":{"type":"number","const":100},"fraction":{"type":"number","minimum":0,"maximum":1}},"required":["eligibleFactors","totalFactors","presentWeight","totalWeight","fraction"],"additionalProperties":false},"confidence":{"type":"string","const":"not_assessed"},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"localDate":{"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])))$"},"timezone":{"type":"string"},"isCurrentDay":{"type":"boolean"},"period":{"type":"object","properties":{"from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"toExclusive":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["from","toExclusive"],"additionalProperties":false},"algorithmVersion":{"type":"string"},"evidenceVersion":{"type":"string"},"targetRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"medicalMeasure":{"type":"boolean","const":false},"comparison":{"type":"object","properties":{"value":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"reason":{"type":["string","null"]},"previousDate":{"anyOf":[{"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])))$"},{"type":"null"}]}},"required":["value","reason","previousDate"],"additionalProperties":false}},"required":["status","reason","value","factors","coverage","confidence","id","revision","asOf","localDate","timezone","isCurrentDay","period","algorithmVersion","evidenceVersion","targetRevision","medicalMeasure","comparison"],"additionalProperties":false},"AdminScoreLeaderboardDto":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sharingCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"avatarExpiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"rank":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"value":{"type":"number","minimum":0,"maximum":100},"status":{"type":"string","enum":["available","provisional"]},"localDate":{"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])))$"},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["rank","userId","displayName","avatarUrl","value","status","localDate","asOf"],"additionalProperties":false}}},"required":["asOf","sharingCount","avatarExpiresIn","items"],"additionalProperties":false},"SocialIdentityResponseDto":{"type":"object","properties":{"handle":{"type":"array","items":{"type":"string"}},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"policyVersion":{"type":"string","const":"ascii-explicit-1.0.0"}},"required":["handle","version","updatedAt","policyVersion"],"additionalProperties":false},"UpdateSocialIdentityDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"handle":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]}},"required":["commandId","expectedVersion","handle"],"additionalProperties":false},"SocialHandleAvailabilityDto":{"type":"object","properties":{"handle":{"type":"string"},"available":{"type":"boolean"},"policyVersion":{"type":"string","const":"ascii-explicit-1.0.0"}},"required":["handle","available","policyVersion"],"additionalProperties":false},"SocialProfilesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"handle":{"type":["string","null"]},"following":{"type":"boolean"},"followedBy":{"type":"boolean"},"avatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentPath":{"type":"string"}},"required":["id","contentPath"],"additionalProperties":false},{"type":"null"}]}},"required":["id","displayName","handle","following","followedBy","avatar"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"SocialProfileResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"handle":{"type":"array","items":{"type":"string"}},"following":{"type":"boolean"},"followedBy":{"type":"boolean"},"avatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentPath":{"type":"string"}},"required":["id","contentPath"],"additionalProperties":false},{"type":"null"}]}},"required":["id","displayName","handle","following","followedBy","avatar"],"additionalProperties":false},"SocialRelationsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"profile":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"handle":{"type":["string","null"]},"following":{"type":"boolean"},"followedBy":{"type":"boolean"},"avatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentPath":{"type":"string"}},"required":["id","contentPath"],"additionalProperties":false},{"type":"null"}]}},"required":["id","displayName","handle","following","followedBy","avatar"],"additionalProperties":false},"followedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["profile","followedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"SupportPolicyDto":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]}},"contextPolicy":{"type":"object","properties":{"version":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"}},"required":["version","title","body"],"additionalProperties":false},"channel":{"type":"string","const":"private_support_request"},"automatedReplies":{"type":"boolean","const":false},"attachmentsAvailable":{"type":"boolean","const":false},"responseTimeGuarantee":{"type":"null"}},"required":["categories","contextPolicy","channel","automatedReplies","attachmentsAvailable","responseTimeGuarantee"],"additionalProperties":false},"SupportCreateDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"subject":{"type":"string","minLength":1,"maxLength":160},"message":{"type":"string","minLength":1,"maxLength":4000},"context":{"type":"object","properties":{"platform":{"type":"string","enum":["android","ios","web"]},"appVersion":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-zA-Z0-9.+_-]+$"},"locale":{"type":"string","minLength":2,"maxLength":24,"pattern":"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["platform","appVersion"],"additionalProperties":false},"contextConsent":{"type":"object","properties":{"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean","const":true}},"required":["version","accepted"],"additionalProperties":false}},"required":["clientId","category","subject","message"],"additionalProperties":false},"SupportReceiptDto":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"operation":{"type":"string","enum":["create","owner_message","admin_message","admin_note","owner_state","admin_state","claim","release","remove_context"]},"messageId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["requestId","version","operation","messageId"],"additionalProperties":false},"SupportListResponseDto":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"messageCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"assigned":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"closedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"context":{"anyOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["android","ios","web"]},"appVersion":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-zA-Z0-9.+_-]+$"},"locale":{"type":"string","minLength":2,"maxLength":24,"pattern":"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["platform","appVersion"],"additionalProperties":false},{"type":"null"}]},"contextPolicyVersion":{"type":["string","null"]},"contextAcceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"contextRemovedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","category","subject","status","version","messageCount","assigned","createdAt","updatedAt","closedAt","context","contextPolicyVersion","contextAcceptedAt","contextRemovedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"SupportRequestDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"messageCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"assigned":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"closedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"context":{"anyOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["android","ios","web"]},"appVersion":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-zA-Z0-9.+_-]+$"},"locale":{"type":"string","minLength":2,"maxLength":24,"pattern":"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["platform","appVersion"],"additionalProperties":false},{"type":"null"}]},"contextPolicyVersion":{"type":"array","items":{"type":"string"}},"contextAcceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"contextRemovedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","category","subject","status","version","messageCount","assigned","createdAt","updatedAt","closedAt","context","contextPolicyVersion","contextAcceptedAt","contextRemovedAt"],"additionalProperties":false},"SupportMessagesResponseDto":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"author":{"type":"string","enum":["user","support"]},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","sequence","author","body","createdAt"],"additionalProperties":false}},"nextBeforeSequence":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["items","nextBeforeSequence"],"additionalProperties":false},"SupportMessageInputDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":1,"maximum":2147483646},"message":{"type":"string","minLength":1,"maxLength":4000}},"required":["clientId","expectedVersion","message"],"additionalProperties":false},"SupportOwnerStateDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":1,"maximum":2147483646},"status":{"type":"string","enum":["open","closed"]}},"required":["clientId","expectedVersion","status"],"additionalProperties":false},"SupportCommandDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":1,"maximum":2147483646}},"required":["clientId","expectedVersion"],"additionalProperties":false},"SupportSummaryResponseDto":{"type":"object","properties":{"counts":{"type":"object","properties":{"open":{"type":"integer","minimum":0,"maximum":9007199254740991},"in_progress":{"type":"integer","minimum":0,"maximum":9007199254740991},"waiting_user":{"type":"integer","minimum":0,"maximum":9007199254740991},"resolved":{"type":"integer","minimum":0,"maximum":9007199254740991},"closed":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["open","in_progress","waiting_user","resolved","closed"],"additionalProperties":false},"collectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["counts","collectedAt"],"additionalProperties":false},"SupportRecipientsResponseDto":{"type":"object","properties":{"items":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"SupportAdminCreateDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"subject":{"type":"string","minLength":1,"maxLength":160},"message":{"type":"string","minLength":1,"maxLength":4000}},"required":["userId","clientId","category","subject","message"],"additionalProperties":false},"SupportQueueResponseDto":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"status":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"assignment":{"type":"string","enum":["unassigned","mine","other"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","category","status","version","assignment","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"SupportNotesResponseDto":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","body","createdAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"SupportAdminStateDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":1,"maximum":2147483646},"status":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]}},"required":["clientId","expectedVersion","status"],"additionalProperties":false},"MealsViewDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"name":{"type":"string","minLength":1,"maxLength":160},"category":{"type":"string","enum":["breakfast","lunch","dinner","snack"]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"items":{"anyOf":[{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"quantity":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"grams":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]}},"required":["name"],"additionalProperties":false}},{"type":"null"}]},"source":{"type":"string","enum":["manual","photo_estimate_confirmed"]},"analysisId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["recordedAt","name","category","caloriesKcal","proteinG","carbohydratesG","fatG","items","source","analysisId","id","externalId","version","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"MealViewDto":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"name":{"type":"string","minLength":1,"maxLength":160},"category":{"type":"string","enum":["breakfast","lunch","dinner","snack"]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"items":{"anyOf":[{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"quantity":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"grams":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]}},"required":["name"],"additionalProperties":false}},{"type":"null"}]},"source":{"type":"string","enum":["manual","photo_estimate_confirmed"]},"analysisId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["recordedAt","name","category","caloriesKcal","proteinG","carbohydratesG","fatG","items","source","analysisId","id","externalId","version","createdAt","updatedAt"],"additionalProperties":false},"MealRevisionsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"mealId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"entry":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"name":{"type":"string","minLength":1,"maxLength":160},"category":{"type":"string","enum":["breakfast","lunch","dinner","snack"]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"items":{"anyOf":[{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"quantity":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"grams":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]}},"required":["name"],"additionalProperties":false}},{"type":"null"}]},"source":{"type":"string","enum":["manual","photo_estimate_confirmed"]},"analysisId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["recordedAt","name","category","caloriesKcal","proteinG","carbohydratesG","fatG","items","source","analysisId"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["mealId","version","entry","createdAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"ReplaceMealDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":1,"maximum":2147483646},"entry":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"name":{"type":"string","minLength":1,"maxLength":160},"category":{"type":"string","enum":["breakfast","lunch","dinner","snack"]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"items":{"anyOf":[{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"quantity":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"grams":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]}},"required":["name"],"additionalProperties":false}},{"type":"null"}]}},"required":["recordedAt","name","category","caloriesKcal","proteinG","carbohydratesG","fatG","items"],"additionalProperties":false}},"required":["clientId","expectedVersion","entry"],"additionalProperties":false},"RemoveMealDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":1,"maximum":2147483646}},"required":["clientId","expectedVersion"],"additionalProperties":false},"RemovedMealDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deleted":{"type":"boolean","const":true},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","deleted","version","updatedAt"],"additionalProperties":false},"ActivityNavigationIntentResponseDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"intent":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"google"},"placeId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["provider","placeId","version","createdAt","updatedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["activityId","intent"],"additionalProperties":false},"ActivityNavigationIntentInputDto":{"type":"object","properties":{"placeId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"expectedVersion":{"default":0,"type":"integer","minimum":0,"maximum":2147483646}},"required":["placeId"],"additionalProperties":false},"CaptureActivityEnvironmentDto":{"type":"object","properties":{"sampleId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]}},"required":["sampleId"],"additionalProperties":false},"ActivityEnvironmentSnapshotDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sampleId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sampleRecordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"attribution":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":500}},"weather":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"temperatureC":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"feelsLikeC":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"condition":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"relativeHumidityPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"windKph":{"anyOf":[{"type":"number","minimum":0,"maximum":500},{"type":"null"}]},"uvIndex":{"anyOf":[{"type":"number","minimum":0,"maximum":40},{"type":"null"}]}},"required":["status","reason","observedAt","temperatureC","feelsLikeC","condition","description","relativeHumidityPercent","windKph","uvIndex"],"additionalProperties":false},"air":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"index":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"indexName":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"aqi":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000},{"type":"null"}]},"category":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["status","reason","observedAt","index","indexName","aqi","category"],"additionalProperties":false}},"required":["id","activityId","sampleId","sampleRecordedAt","provider","fetchedAt","validUntil","expiresAt","attribution","weather","air"],"additionalProperties":false},"ActivityEnvironmentHistoryDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"retention":{"type":"string","const":"google_current_conditions_temporary"},"maximumRetentionSeconds":{"type":"number","const":2700},"items":{"maxItems":120,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sampleId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sampleRecordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"attribution":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":500}},"weather":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"temperatureC":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"feelsLikeC":{"anyOf":[{"type":"number","minimum":-100,"maximum":100},{"type":"null"}]},"condition":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"relativeHumidityPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"windKph":{"anyOf":[{"type":"number","minimum":0,"maximum":500},{"type":"null"}]},"uvIndex":{"anyOf":[{"type":"number","minimum":0,"maximum":40},{"type":"null"}]}},"required":["status","reason","observedAt","temperatureC","feelsLikeC","condition","description","relativeHumidityPercent","windKph","uvIndex"],"additionalProperties":false},"air":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"index":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"indexName":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"aqi":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000},{"type":"null"}]},"category":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["status","reason","observedAt","index","indexName","aqi","category"],"additionalProperties":false}},"required":["id","activityId","sampleId","sampleRecordedAt","provider","fetchedAt","validUntil","expiresAt","attribution","weather","air"],"additionalProperties":false}}},"required":["activityId","retention","maximumRetentionSeconds","items"],"additionalProperties":false},"CreateActivityDto":{"type":"object","properties":{"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":"string","minLength":1,"maxLength":150},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"privacy":{"default":"private","type":"string","enum":["private","followers","public"]},"poolLengthM":{"anyOf":[{"type":"number","const":25},{"type":"number","const":33},{"type":"number","const":50}]},"plannedRoute":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","revisionId"],"additionalProperties":false},"clientActivityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recorder":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]},"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["instanceId","kind","contextId"],"additionalProperties":false},"goal":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"duration"},"durationSeconds":{"type":"integer","minimum":1,"maximum":604800}},"required":["kind","durationSeconds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"distance"},"distanceM":{"type":"number","minimum":1,"maximum":1000000}},"required":["kind","distanceM"],"additionalProperties":false}]}},"required":["sport","startedAt"],"additionalProperties":false},"UpdateActivityDto":{"type":"object","properties":{"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"privacy":{"type":"string","enum":["private","followers","public"]}},"additionalProperties":false},"TransitionActivityDto":{"type":"object","properties":{"state":{"type":"string","enum":["paused","recording","completed","discarded"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["state","at"],"additionalProperties":false},"ActivitySamplesDto":{"type":"object","properties":{"samples":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":0,"maximum":2147483647},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"trackSegment":{"type":"integer","minimum":0,"maximum":10000},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"altitudeM":{"type":"number","minimum":-500,"maximum":10000},"accuracyM":{"type":"number","minimum":0,"maximum":10000},"heartRate":{"type":"integer","minimum":20,"maximum":250},"heartRateSource":{"type":"string","const":"ble_heart_rate"},"heartRateDeviceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cadence":{"type":"number","minimum":0,"maximum":350},"powerW":{"type":"number","minimum":0,"maximum":3000},"speedMps":{"type":"number","minimum":0,"maximum":100},"verticalAccuracyM":{"type":"number","minimum":0,"maximum":10000},"speedAccuracyMps":{"type":"number","minimum":0,"maximum":100},"courseDeg":{"type":"number","minimum":0,"exclusiveMaximum":360},"courseAccuracyDeg":{"type":"number","minimum":0,"maximum":180},"elevationM":{"type":"number","minimum":-500,"maximum":10000},"relativeAltitudeM":{"type":"number","minimum":-10000,"maximum":10000},"pressureKpa":{"type":"number","minimum":10,"maximum":120},"gradePercent":{"type":"number","minimum":-100,"maximum":100},"stepCount":{"type":"integer","minimum":0,"maximum":10000000}},"required":["id","sequence","recordedAt"],"additionalProperties":false}}},"required":["samples"],"additionalProperties":false},"ImportGpxDto":{"type":"object","properties":{"gpx":{"type":"string","minLength":1,"maxLength":1500000},"firstSequence":{"default":0,"type":"integer","minimum":0,"maximum":2147478647}},"required":["gpx"],"additionalProperties":false},"ActivityLapsDto":{"type":"object","properties":{"laps":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":10000},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":"number","minimum":0,"maximum":1000000}},"required":["index","startedAt","endedAt","distanceM"],"additionalProperties":false}}},"required":["laps"],"additionalProperties":false},"SwimLengthsDto":{"type":"object","properties":{"lengths":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":10000},"durationMs":{"type":"integer","minimum":1000,"maximum":3600000},"strokes":{"anyOf":[{"type":"integer","minimum":0,"maximum":300},{"type":"null"}]},"strokeType":{"type":"string","enum":["freestyle","backstroke","breaststroke","butterfly","mixed","drill","unknown"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"source":{"type":"string","enum":["manual","manual_split","interval_timer","apple_watch"]},"intervalIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}]}},"required":["index","durationMs"],"additionalProperties":false}}},"required":["lengths"],"additionalProperties":false},"DeleteActivityDto":{"type":"object","properties":{"expectedUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["expectedUpdatedAt"],"additionalProperties":false},"ActivityDeletionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deletedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"status":{"type":"string","const":"deleted"},"affected":{"type":"object","properties":{"samples":{"type":"integer","minimum":0,"maximum":9007199254740991},"postsRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"postSnapshotsRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"reelSnapshotsRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"trainingSessionsReopened":{"type":"integer","minimum":0,"maximum":9007199254740991},"routeLinksRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"explanationsRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"scoreSnapshotsRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"quickTipsRemoved":{"type":"integer","minimum":0,"maximum":9007199254740991},"pendingEmailsSuppressed":{"type":"integer","minimum":0,"maximum":9007199254740991},"rewardsAdjusted":{"type":"integer","minimum":0,"maximum":9007199254740991},"xpAdjustment":{"type":"integer","minimum":-9007199254740991,"maximum":0}},"required":["samples","postsRemoved","postSnapshotsRemoved","reelSnapshotsRemoved","trainingSessionsReopened","routeLinksRemoved","explanationsRemoved","scoreSnapshotsRemoved","quickTipsRemoved","pendingEmailsSuppressed","rewardsAdjusted","xpAdjustment"]},"independentResourcesPreserved":{"type":"array","items":{"type":"string","enum":["planned_routes","kyzone_sessions","narrations","independent_post_content","reel_media"]}}},"required":["id","activityId","deletedAt","status","affected","independentResourcesPreserved"],"additionalProperties":false},"ActivityHistoryResponseDto":{"type":"object","properties":{"month":{"type":"string"},"timezone":{"type":"string"},"sport":{"type":"array","items":{"type":"string"}},"sessionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceM":{"type":"array","items":{"type":"number"}},"distanceSessionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceCoverageComplete":{"type":"boolean"},"durationS":{"type":"number"},"activeEnergyKcal":{"type":"array","items":{"type":"number"}},"energySessionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyEstimatedSessionsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyCoverageComplete":{"type":"boolean"}},"required":["month","timezone","sport","sessionsCount","distanceM","distanceSessionsCount","distanceCoverageComplete","durationS","activeEnergyKcal","energySessionsCount","energyEstimatedSessionsCount","energyCoverageComplete"]},"ActivityInsightsResponseDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recordedSummarySource":{"type":"string","enum":["received_samples","healthkit_workout"]},"receivedThrough":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"recordedSummary":{"type":"object","properties":{"distanceM":{"type":["number","null"]},"distanceSource":{"type":"string","enum":["gps","gpx_import","pool_lengths","healthkit","unavailable"]},"durationS":{"type":"number"},"elevationGainM":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"swimLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"averageSwolf":{"type":["number","null"]},"gpsSegmentsRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"type":["number","null"]},"energySource":{"anyOf":[{"type":"string","enum":["device","estimated"]},{"type":"null"}]}},"required":["distanceM","distanceSource","durationS","elevationGainM","averageHeartRate","maximumHeartRate","averageSpeedMps","sampleCount","swimLengths","averageSwolf","gpsSegmentsRejected","energyKcal","energySource"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"splits":{"type":"object","properties":{"unitM":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceM":{"type":"number"},"durationS":{"type":"number"},"paceSecondsPerKm":{"type":"number"},"complete":{"type":"boolean"}},"required":["index","distanceM","durationS","paceSecondsPerKm","complete"]}},"available":{"type":"boolean"},"reason":{"type":["string","null"]},"truncated":{"type":"boolean"},"timing":{"type":"string","enum":["recorded_pool_lengths","valid_recorded_gps_segments"]},"coveredSeconds":{"type":"number"},"unmeasuredSeconds":{"type":"number"}},"required":["unitM","items","available","reason","truncated","timing","coveredSeconds","unmeasuredSeconds"]},"heartRateZones":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"method":{"type":"string","const":"configured_maximum_heart_rate"},"maximumHeartRateBpm":{"type":["number","null"]},"measuredSeconds":{"type":"number"},"unmeasuredSeconds":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"zone":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lowerPercent":{"type":"number"},"upperPercent":{"type":["number","null"]},"durationS":{"type":"number"}},"required":["zone","lowerPercent","upperPercent","durationS"]}}},"required":["available","reason","method","maximumHeartRateBpm","measuredSeconds","unmeasuredSeconds","items"]},"heartRateEffort":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"method":{"type":"string","const":"weighted_heart_rate_zone_minutes"},"zoneMinutes":{"type":["number","null"]},"measuredSeconds":{"type":"number","minimum":0},"coveragePercent":{"type":"number","minimum":0,"maximum":100}},"required":["available","reason","method","zoneMinutes","measuredSeconds","coveragePercent"]},"averageCadence":{"type":"array","items":{"type":"number"}},"averagePowerW":{"type":"array","items":{"type":"number"}},"swimLengths":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"number"},"strokes":{"type":["number","null"]},"strokeType":{"type":"string"},"swolf":{"type":["number","null"]}},"required":["index","durationMs","strokes","strokeType","swolf"]}},"energy":{"oneOf":[{"type":"object","properties":{"activeKcal":{"type":"number"},"source":{"type":"string","const":"connected_device_report"},"deviceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["activeKcal","source","deviceId","recordedAt"]},{"type":"object","properties":{"activeKcal":{"type":"null"},"source":{"type":"string","const":"unavailable"}},"required":["activeKcal","source"]}]}},"required":["activityId","recordedSummarySource","receivedThrough","recordedSummary","updatedAt","splits","heartRateZones","heartRateEffort","averageCadence","averagePowerW","swimLengths","energy"]},"ActivitySharePreviewDto":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"},"includeReplay":{"description":"Request bounded recorded samples for a replay export with the same effective consent, sharing choices and hidden zones as this preview. Revalidate the preview before sharing a rendered file.","type":"boolean"}},"additionalProperties":false},"ActivityShareResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":"array","items":{"type":"string"}},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":"array","items":{"type":"number"}},"durationS":{"type":"array","items":{"type":"number"}},"averageSpeedMps":{"type":"array","items":{"type":"number"}},"averageHeartRate":{"type":"array","items":{"type":"number"}},"route":{"anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number"},"hiddenEndM":{"type":"number"},"privateZonesApplied":{"type":"boolean","const":true},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM","privateZonesApplied"]},{"type":"null"}]},"options":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"}},"required":["includeRoute","includePaceTime","includeHeartRate","includeEndpoints"]},"replay":{"description":"Present only when includeReplay is true. Null when no route is shareable. Uses measured points after endpoint, private-zone, pause and GPS-quality filters. Never join segments. A reduced projection remains measured but is not the complete sample stream. Hidden timing contains no timestamps or speed; separate cardiac samples require both cardiac and timing choices.","anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"altitudeM":{"type":["number","null"]},"heartRate":{"type":["number","null"]},"speedMps":{"type":["number","null"]}},"required":["latitude","longitude","recordedAt","altitudeM","heartRate","speedMps"]}}},"pointCount":{"type":"integer","minimum":2,"maximum":10000},"reduced":{"type":"boolean"},"timing":{"type":"string","enum":["recorded","hidden"]},"heartRateSamples":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"heartRate":{"type":"number","minimum":20,"maximum":250},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recordedAt","heartRate","segmentIndex"]}},"heartRateReduced":{"type":"boolean"}},"required":["segments","pointCount","reduced","timing","heartRateSamples","heartRateReduced"]},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","averageHeartRate","route","options"]},"ActivitySensorTotalsDto":{"type":"object","properties":{"deviceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activeEnergyKcal":{"type":"number","minimum":0,"maximum":50000},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["deviceId","activeEnergyKcal","recordedAt"],"additionalProperties":false},"ActivitySensorTotalsResponseDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activeEnergyKcal":{"type":"number"},"source":{"type":"string","const":"connected_device_report"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["activityId","activeEnergyKcal","source","recordedAt"]},"ActivityPreferencesResponseDto":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"},"maximumHeartRateBpm":{"type":"array","items":{"type":"number"}},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["includeRoute","includePaceTime","includeHeartRate","includeEndpoints","maximumHeartRateBpm","version","updatedAt"]},"ActivitySharingPreferencesDto":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"maximumHeartRateBpm":{"anyOf":[{"type":"integer","minimum":80,"maximum":250},{"type":"null"}]}},"required":["version"],"additionalProperties":false},"ActivityPrivateZonesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"cellIds":{"type":"array","items":{"type":"string"}},"radiusM":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","cellIds","radiusM","createdAt"]}},"coordinatePrecision":{"type":"string","const":"h3_resolution_10"},"appliesTo":{"type":"string","const":"activity_sharing_and_gpx"}},"required":["items","coordinatePrecision","appliesTo"]},"ActivityPrivateZoneDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":300,"type":"integer","minimum":300,"maximum":1000}},"required":["clientId","name","latitude","longitude"],"additionalProperties":false},"ActivityZoneCreatedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"]},"ActivityZoneDeletedResponseDto":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"]},"ActivityDashboardResponseDto":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string"},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"period":{"type":"object","properties":{"from":{"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])))$"},"toExclusive":{"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])))$"},"kind":{"type":"string","enum":["week","month","year"]},"current":{"type":"boolean"}},"required":["from","toExclusive","kind","current"],"additionalProperties":false},"totals":{"type":"object","properties":{"status":{"type":"string","enum":["empty","partial","available"]},"sessionsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"calendarDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averagePaceSecondsPerKm":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeEnergyKcal":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"sessionsPerWeek":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDaysPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"coverage":{"type":"object","properties":{"distanceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"paceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"energySessions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["distanceSessions","durationSessions","paceSessions","energySessions"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["status","sessionsCount","activeDays","calendarDays","distanceM","activeDurationS","averagePaceSecondsPerKm","activeEnergyKcal","sessionsPerWeek","activeDaysPercent","coverage","updatedAt"],"additionalProperties":false},"days":{"maxItems":366,"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["empty","partial","available"]},"sessionsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"calendarDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averagePaceSecondsPerKm":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeEnergyKcal":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"sessionsPerWeek":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDaysPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"coverage":{"type":"object","properties":{"distanceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"paceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"energySessions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["distanceSessions","durationSessions","paceSessions","energySessions"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"date":{"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])))$"}},"required":["status","sessionsCount","activeDays","calendarDays","distanceM","activeDurationS","averagePaceSecondsPerKm","activeEnergyKcal","sessionsPerWeek","activeDaysPercent","coverage","updatedAt","date"],"additionalProperties":false}},"comparison":{"anyOf":[{"type":"object","properties":{"basis":{"type":"string","const":"equal_complete_calendar_days_from_period_start"},"days":{"type":"integer","exclusiveMinimum":0,"maximum":366},"currentRange":{"type":"object","properties":{"from":{"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])))$"},"toExclusive":{"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])))$"}},"required":["from","toExclusive"],"additionalProperties":false},"previousRange":{"type":"object","properties":{"from":{"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])))$"},"toExclusive":{"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])))$"}},"required":["from","toExclusive"],"additionalProperties":false},"current":{"type":"object","properties":{"status":{"type":"string","enum":["empty","partial","available"]},"sessionsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"calendarDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averagePaceSecondsPerKm":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeEnergyKcal":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"sessionsPerWeek":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDaysPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"coverage":{"type":"object","properties":{"distanceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"paceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"energySessions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["distanceSessions","durationSessions","paceSessions","energySessions"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["status","sessionsCount","activeDays","calendarDays","distanceM","activeDurationS","averagePaceSecondsPerKm","activeEnergyKcal","sessionsPerWeek","activeDaysPercent","coverage","updatedAt"],"additionalProperties":false},"previous":{"type":"object","properties":{"status":{"type":"string","enum":["empty","partial","available"]},"sessionsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"calendarDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averagePaceSecondsPerKm":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeEnergyKcal":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"sessionsPerWeek":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"activeDaysPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"coverage":{"type":"object","properties":{"distanceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"paceSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"energySessions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["distanceSessions","durationSessions","paceSessions","energySessions"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["status","sessionsCount","activeDays","calendarDays","distanceM","activeDurationS","averagePaceSecondsPerKm","activeEnergyKcal","sessionsPerWeek","activeDaysPercent","coverage","updatedAt"],"additionalProperties":false},"changes":{"type":"object","properties":{"distanceM":{"type":"object","properties":{"absolute":{"type":["number","null"]},"percent":{"type":["number","null"]}},"required":["absolute","percent"],"additionalProperties":false},"activeDurationS":{"type":"object","properties":{"absolute":{"type":["number","null"]},"percent":{"type":["number","null"]}},"required":["absolute","percent"],"additionalProperties":false},"averagePaceSecondsPerKm":{"type":"object","properties":{"absolute":{"type":["number","null"]},"percent":{"type":["number","null"]}},"required":["absolute","percent"],"additionalProperties":false},"sessionsCount":{"type":"object","properties":{"absolute":{"type":["number","null"]},"percent":{"type":["number","null"]}},"required":["absolute","percent"],"additionalProperties":false},"activeEnergyKcal":{"type":"object","properties":{"absolute":{"type":["number","null"]},"percent":{"type":["number","null"]}},"required":["absolute","percent"],"additionalProperties":false},"activeDaysPercent":{"type":"object","properties":{"absolute":{"type":["number","null"]},"percent":{"type":["number","null"]}},"required":["absolute","percent"],"additionalProperties":false}},"required":["distanceM","activeDurationS","averagePaceSecondsPerKm","sessionsCount","activeEnergyKcal","activeDaysPercent"],"additionalProperties":false}},"required":["basis","days","currentRange","previousRange","current","previous","changes"],"additionalProperties":false},{"type":"null"}]},"definitions":{"type":"object","properties":{"duration":{"type":"string","const":"active_time_excluding_recorded_pauses"},"pace":{"type":"string","const":"paired_active_seconds_divided_by_paired_kilometres"},"consistency":{"type":"string","const":"days_with_completed_activity_divided_by_observed_calendar_days"},"frequency":{"type":"string","const":"completed_sessions_per_observed_calendar_week"},"dayAttribution":{"type":"string","const":"activity_start_in_profile_timezone"},"energy":{"type":"string","const":"connected_device_report"},"healthConsent":{"type":"boolean"}},"required":["duration","pace","consistency","frequency","dayAttribution","energy","healthConsent"],"additionalProperties":false}},"required":["generatedAt","timezone","sport","period","totals","days","comparison","definitions"],"additionalProperties":false},"SwimIntervalsDto":{"type":"object","properties":{"intervals":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":10000},"kind":{"type":"string","enum":["swim","rest"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"durationMs":{"type":"integer","minimum":0,"maximum":604800000},"plannedLengths":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000},{"type":"null"}]},"plannedDurationS":{"anyOf":[{"type":"integer","minimum":1,"maximum":7200},{"type":"null"}]}},"required":["index","kind","startedAt","endedAt","durationMs"],"additionalProperties":false}}},"required":["intervals"],"additionalProperties":false},"SwimIntervalsResultDto":{"type":"object","properties":{"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["accepted","duplicates"]},"SwimPlanDto":{"type":"object","properties":{"kind":{"type":"string","enum":["free","distance","duration","intervals"]},"targetLengths":{"type":"integer","minimum":1,"maximum":2000},"targetDurationS":{"type":"integer","minimum":60,"maximum":14400},"repetitions":{"type":"integer","minimum":1,"maximum":100},"repetitionLengths":{"type":"integer","minimum":1,"maximum":200},"restS":{"type":"integer","minimum":0,"maximum":1800},"sendOffS":{"type":"integer","minimum":10,"maximum":3600}},"required":["kind"],"additionalProperties":false},"SwimPlanResponseDto":{"type":"object","properties":{"kind":{"type":"string","enum":["free","distance","duration","intervals"]},"targetLengths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetDurationS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repetitions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repetitionLengths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"restS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sendOffS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created":{"type":"boolean"}},"required":["kind","targetLengths","targetDurationS","repetitions","repetitionLengths","restS","sendOffS","created"]},"ActivityRecordsResponseDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"available":{"type":"boolean"},"reason":{"anyOf":[{"type":"string","enum":["ACTIVITY_NOT_COMPLETED","SPORT_NOT_SUPPORTED","LOCATION_CONSENT_REQUIRED"]},{"type":"null"}]},"complete":{"type":"boolean"},"efforts":{"type":"array","items":{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"durationS":{"type":"number","exclusiveMinimum":0},"startDistanceM":{"type":"number","minimum":0},"rank":{"type":"integer","minimum":1,"maximum":9007199254740991},"previousBestS":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]}},"required":["distanceM","durationS","startDistanceM","rank","previousBestS"],"additionalProperties":false}}},"required":["activityId","available","reason","complete","efforts"],"additionalProperties":false},"GoogleEnvironmentRequestDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"resources":{"default":["air","pollen","weather"],"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","enum":["air","pollen","weather","solar"]}},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]}},"required":["latitude","longitude"],"additionalProperties":false},"GoogleEnvironmentResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"precisionDecimals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["latitude","longitude","precisionDecimals"]},"air":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"data":{"anyOf":[{"type":"object","properties":{"dateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"regionCode":{"type":"string","maxLength":10},"indexes":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":40},"displayName":{"type":"string","maxLength":200},"aqi":{"type":"integer","minimum":0,"maximum":1000},"category":{"type":"string","maxLength":200},"color":{"type":"object","properties":{"red":{"type":"number","minimum":0,"maximum":1},"green":{"type":"number","minimum":0,"maximum":1},"blue":{"type":"number","minimum":0,"maximum":1}}},"dominantPollutant":{"type":"string","maxLength":100}},"required":["code"]}},"pollutants":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":50},"displayName":{"type":"string","maxLength":200},"concentration":{"type":"object","properties":{"value":{"type":"number","minimum":0},"units":{"type":"string","maxLength":80}}}},"required":["code"],"additionalProperties":{}}},"healthRecommendations":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":5000}}},"required":["dateTime"],"additionalProperties":{}},{"type":"null"}]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["status","data","reason"]},"pollen":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"data":{"anyOf":[{"type":"object","properties":{"regionCode":{"type":"string","maxLength":10},"dailyInfo":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"date":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31}},"required":["year","month","day"]},"pollenTypeInfo":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["GRASS","TREE","WEED"]},"displayName":{"type":"string","maxLength":200},"inSeason":{"type":"boolean"},"indexInfo":{"type":"object","properties":{"code":{"type":"string","maxLength":40},"displayName":{"type":"string","maxLength":200},"value":{"type":"integer","minimum":0,"maximum":5},"category":{"type":"string","maxLength":200},"indexDescription":{"type":"string","maxLength":5000},"color":{"type":"object","properties":{"red":{"type":"number","minimum":0,"maximum":1},"green":{"type":"number","minimum":0,"maximum":1},"blue":{"type":"number","minimum":0,"maximum":1}}}},"required":["code"]},"healthRecommendations":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":5000}}},"required":["code"]}},"plantInfo":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":80},"displayName":{"type":"string","maxLength":200},"indexInfo":{"type":"object","properties":{"code":{"type":"string","maxLength":40},"displayName":{"type":"string","maxLength":200},"value":{"type":"integer","minimum":0,"maximum":5},"category":{"type":"string","maxLength":200},"indexDescription":{"type":"string","maxLength":5000},"color":{"type":"object","properties":{"red":{"type":"number","minimum":0,"maximum":1},"green":{"type":"number","minimum":0,"maximum":1},"blue":{"type":"number","minimum":0,"maximum":1}}}},"required":["code"]}},"required":["code"],"additionalProperties":{}}}},"required":["date"]}}},"required":["dailyInfo"],"additionalProperties":{}},{"type":"null"}]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["status","data","reason"]},"weather":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"data":{"anyOf":[{"type":"object","properties":{"currentTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timeZone":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100}},"required":["id"]},"temperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"feelsLikeTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"relativeHumidity":{"type":"number","minimum":0,"maximum":100},"uvIndex":{"type":"number","minimum":0,"maximum":40},"cloudCover":{"type":"number","minimum":0,"maximum":100},"isDaytime":{"type":"boolean"},"weatherCondition":{"type":"object","properties":{"type":{"type":"string","maxLength":100},"description":{"type":"object","properties":{"text":{"type":"string","maxLength":1000}}}},"additionalProperties":{}},"wind":{"type":"object","properties":{"speed":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":500},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"gust":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":500},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]}},"additionalProperties":{}}},"required":["currentTime","timeZone"],"additionalProperties":{}},{"type":"null"}]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["status","data","reason"]},"solar":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable","no_coverage","access_denied","quota_exceeded","disabled"]},"data":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"center":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"boundingBox":{"type":"object","properties":{"sw":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"ne":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]}},"required":["sw","ne"]},"imageryDate":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"month":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"day":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["year","month","day"]},"imageryQuality":{"type":"string","maxLength":100},"solarPotential":{"type":"object","properties":{"maxSunshineHoursPerYear":{"type":"number","minimum":0,"maximum":9000},"wholeRoofStats":{"type":"object","properties":{"areaMeters2":{"type":"number","minimum":0},"sunshineQuantiles":{"maxItems":20,"type":"array","items":{"type":"number","minimum":0}}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["name","center","boundingBox"],"additionalProperties":{}},{"type":"null"}]},"reason":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]}},"required":["status","data","reason"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","location","attribution"]},"GoogleRoutePlanDto":{"type":"object","properties":{"origin":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"destination":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"destinationPlaceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"sport":{"type":"string","enum":["running","walking","cycling"]},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en","en-US","en-GB","es-ES","fr-FR","de-DE","nl-NL"]}},"required":["origin","destination","sport"],"additionalProperties":false},"GoogleRoutePlanResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"sport":{"type":"string","enum":["running","walking","cycling"]},"travelMode":{"type":"string","enum":["WALK","BICYCLE"]},"origin":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"destination":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"destinationPlaceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"routes":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"distanceMeters":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration":{"type":"string","pattern":"^\\d+(?:\\.\\d+)?s$"},"polyline":{"type":"object","properties":{"encodedPolyline":{"type":"string","minLength":1,"maxLength":1000000}},"required":["encodedPolyline"]},"warnings":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":5000}},"legs":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"steps":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"distanceMeters":{"type":"number","minimum":0},"staticDuration":{"type":"string","maxLength":80},"polyline":{"type":"object","properties":{"encodedPolyline":{"type":"string","maxLength":1000000}},"required":["encodedPolyline"]},"navigationInstruction":{"type":"object","properties":{"maneuver":{"type":"string","maxLength":100},"instructions":{"type":"string","maxLength":5000}}}},"additionalProperties":{}}}},"additionalProperties":{}}}},"required":["distanceMeters","duration","polyline"],"additionalProperties":{}}},"computedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"attribution":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["provider","sport","travelMode","origin","destination","routes","computedAt","attribution","warnings"]},"GoogleGuidanceSpeechDto":{"type":"object","properties":{"instruction":{"type":"string","minLength":1,"maxLength":300},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en","en-US","en-GB","es-ES","fr-FR","de-DE","nl-NL"]}},"required":["instruction"],"additionalProperties":false},"GooglePlaceSearchDto":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":300},"bias":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"radius":{"type":"number","minimum":1,"maximum":50000}},"required":["center","radius"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]},"limit":{"default":10,"type":"integer","minimum":1,"maximum":20},"pageToken":{"type":"string","minLength":1,"maxLength":4000}},"required":["query","bias"],"additionalProperties":false},"GooglePlacesResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"places":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"displayName":{"type":"object","properties":{"text":{"type":"string","maxLength":10000},"languageCode":{"type":"string","maxLength":30}},"required":["text"]},"formattedAddress":{"type":"string","maxLength":2000},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":100}},"primaryType":{"type":"string","maxLength":100},"googleMapsUri":{"type":"string","maxLength":8000},"businessStatus":{"type":"string","maxLength":100},"websiteUri":{"type":"string","maxLength":8000},"rating":{"type":"number","minimum":0,"maximum":5},"userRatingCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"maxItems":7,"type":"array","items":{"type":"string","maxLength":500}},"periods":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"integer","minimum":0,"maximum":6},"hour":{"type":"integer","minimum":0,"maximum":23},"minute":{"type":"integer","minimum":0,"maximum":59}},"required":["day"]},"close":{"type":"object","properties":{"day":{"type":"integer","minimum":0,"maximum":6},"hour":{"type":"integer","minimum":0,"maximum":23},"minute":{"type":"integer","minimum":0,"maximum":59}},"required":["day"]}},"required":["open"]}}}},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}}},"photos":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^places\\/[A-Za-z0-9_-]{5,300}\\/photos\\/[A-Za-z0-9_-]{10,2200}$"},"widthPx":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"heightPx":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"authorAttributions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string","maxLength":500},"uri":{"type":"string","maxLength":8000},"photoUri":{"type":"string","maxLength":8000}},"required":["displayName"]}},"googleMapsUri":{"type":"string","maxLength":8000}},"required":["name","authorAttributions"]}},"attributions":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","maxLength":500},"providerUri":{"type":"string","maxLength":8000}}}}},"required":["id"]}},"nextPageToken":{"type":"string","maxLength":4000}}},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GooglePlaceNearbyDto":{"type":"object","properties":{"area":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"radius":{"type":"number","minimum":1,"maximum":50000}},"required":["center","radius"],"additionalProperties":false},"includedTypes":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{1,79}$"}},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]},"limit":{"default":10,"type":"integer","minimum":1,"maximum":20}},"required":["area","includedTypes"],"additionalProperties":false},"GooglePlaceAutocompleteDto":{"type":"object","properties":{"input":{"type":"string","minLength":2,"maxLength":300},"bias":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"radius":{"type":"number","minimum":1,"maximum":50000}},"required":["center","radius"],"additionalProperties":false},"sessionToken":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]},"includedRegionCodes":{"minItems":1,"maxItems":15,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}}},"required":["input","bias","sessionToken"],"additionalProperties":false},"GooglePredictionsResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"suggestions":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"placePrediction":{"type":"object","properties":{"placeId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"text":{"type":"object","properties":{"text":{"type":"string","maxLength":10000},"languageCode":{"type":"string","maxLength":30}},"required":["text"]},"structuredFormat":{"type":"object","properties":{"mainText":{"type":"object","properties":{"text":{"type":"string","maxLength":10000},"languageCode":{"type":"string","maxLength":30}},"required":["text"]},"secondaryText":{"type":"object","properties":{"text":{"type":"string","maxLength":10000},"languageCode":{"type":"string","maxLength":30}},"required":["text"]}},"required":["mainText"]},"types":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":100}},"distanceMeters":{"type":"number","minimum":0}},"required":["placeId","text"]}}}}}},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GooglePlaceDetailsDto":{"type":"object","properties":{"placeId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]},"sessionToken":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"fields":{"default":"essentials","type":"string","enum":["essentials","details"]}},"required":["placeId"],"additionalProperties":false},"GooglePlaceDetailsResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"displayName":{"type":"object","properties":{"text":{"type":"string","maxLength":10000},"languageCode":{"type":"string","maxLength":30}},"required":["text"]},"formattedAddress":{"type":"string","maxLength":2000},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"types":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":100}},"primaryType":{"type":"string","maxLength":100},"googleMapsUri":{"type":"string","maxLength":8000},"businessStatus":{"type":"string","maxLength":100},"websiteUri":{"type":"string","maxLength":8000},"rating":{"type":"number","minimum":0,"maximum":5},"userRatingCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"regularOpeningHours":{"type":"object","properties":{"openNow":{"type":"boolean"},"weekdayDescriptions":{"maxItems":7,"type":"array","items":{"type":"string","maxLength":500}},"periods":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"open":{"type":"object","properties":{"day":{"type":"integer","minimum":0,"maximum":6},"hour":{"type":"integer","minimum":0,"maximum":23},"minute":{"type":"integer","minimum":0,"maximum":59}},"required":["day"]},"close":{"type":"object","properties":{"day":{"type":"integer","minimum":0,"maximum":6},"hour":{"type":"integer","minimum":0,"maximum":23},"minute":{"type":"integer","minimum":0,"maximum":59}},"required":["day"]}},"required":["open"]}}}},"accessibilityOptions":{"type":"object","properties":{"wheelchairAccessibleParking":{"type":"boolean"},"wheelchairAccessibleEntrance":{"type":"boolean"},"wheelchairAccessibleRestroom":{"type":"boolean"},"wheelchairAccessibleSeating":{"type":"boolean"}}},"photos":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^places\\/[A-Za-z0-9_-]{5,300}\\/photos\\/[A-Za-z0-9_-]{10,2200}$"},"widthPx":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"heightPx":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"authorAttributions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string","maxLength":500},"uri":{"type":"string","maxLength":8000},"photoUri":{"type":"string","maxLength":8000}},"required":["displayName"]}},"googleMapsUri":{"type":"string","maxLength":8000}},"required":["name","authorAttributions"]}},"attributions":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","maxLength":500},"providerUri":{"type":"string","maxLength":8000}}}}},"required":["id"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GooglePlacePhotoDto":{"type":"object","properties":{"placeId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"photoIndex":{"default":0,"type":"integer","minimum":0,"maximum":9},"maxWidthPx":{"default":800,"type":"integer","minimum":1,"maximum":1600},"maxHeightPx":{"default":800,"type":"integer","minimum":1,"maximum":1600}},"required":["placeId"],"additionalProperties":false},"GooglePlacePhotoResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"anyOf":[{"type":"object","properties":{"photoUri":{"type":"string","maxLength":8000,"format":"uri"},"authors":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string","maxLength":500},"uri":{"anyOf":[{"type":"string","maxLength":8000,"format":"uri"},{"type":"null"}]},"photoUri":{"anyOf":[{"type":"string","maxLength":8000,"format":"uri"},{"type":"null"}]}},"required":["displayName","uri","photoUri"]}},"sourceURL":{"anyOf":[{"type":"string","maxLength":8000,"format":"uri"},{"type":"null"}]},"widthPx":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"heightPx":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["photoUri","authors","sourceURL"]},{"type":"null"}]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GoogleGeocodeDto":{"type":"object","properties":{"address":{"type":"string","minLength":2,"maxLength":500},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]},"regionCode":{"type":"string","pattern":"^[a-zA-Z]{2}$"}},"required":["address"],"additionalProperties":false},"GoogleGeocodeResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"results":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"place_id":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"formatted_address":{"type":"string","maxLength":2000},"types":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":100}},"partial_match":{"type":"boolean"},"geometry":{"type":"object","properties":{"location":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"location_type":{"type":"string","maxLength":100},"viewport":{"type":"object","properties":{"northeast":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"southwest":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]}},"required":["northeast","southwest"]}},"required":["location","location_type"]},"address_components":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"long_name":{"type":"string","maxLength":1000},"short_name":{"type":"string","maxLength":1000},"types":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":100}}},"required":["long_name","short_name","types"]}}},"required":["place_id","formatted_address","types","geometry"]}}}},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GoogleReverseGeocodeDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]}},"required":["location"],"additionalProperties":false},"GoogleElevationDto":{"type":"object","properties":{"locations":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"required":["locations"],"additionalProperties":false},"GoogleElevationResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"results":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"elevation":{"type":"number"},"location":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"resolution":{"type":"number","minimum":0}},"required":["elevation","location"]}},"unit":{"type":"string","const":"meters"},"source":{"type":"string","const":"google_elevation_model"},"replacesMeasuredAltitude":{"type":"boolean","const":false}},"required":["unit","source","replacesMeasuredAltitude"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GoogleTimeZoneDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"timestamp":{"type":"integer","minimum":0,"maximum":253402300799},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]}},"required":["location","timestamp"],"additionalProperties":false},"GoogleTimeZoneResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"anyOf":[{"type":"object","properties":{"timeZoneId":{"type":"string","maxLength":100},"timeZoneName":{"type":"string","maxLength":300},"rawOffsetSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dstOffsetSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timestamp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["timeZoneId","timeZoneName","rawOffsetSeconds","dstOffsetSeconds","timestamp"]},{"type":"null"}]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GoogleRoadsDto":{"type":"object","properties":{"points":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}},"operation":{"type":"string","enum":["nearest","snap"]},"interpolate":{"default":false,"type":"boolean"},"purpose":{"type":"string","const":"road_reference"}},"required":["points","operation","purpose"],"additionalProperties":false},"GoogleRoadsResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"snappedPoints":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"placeId":{"type":"string","pattern":"^[A-Za-z0-9_-]{5,300}$"},"originalIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["location","placeId"]}},"warningMessage":{"type":"string","maxLength":4000},"purpose":{"type":"string","const":"road_reference"},"replacesRecordedTrack":{"type":"boolean","const":false},"warnings":{"type":"array","items":{"type":"string","maxLength":200}}},"required":["purpose","replacesRecordedTrack","warnings"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GoogleRouteMatrixDto":{"type":"object","properties":{"origins":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}},"destinations":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}},"travelMode":{"type":"string","enum":["WALK","BICYCLE","DRIVE","TRANSIT"]},"languageCode":{"default":"pt-BR","type":"string","enum":["pt-BR","pt-PT","en"]}},"required":["origins","destinations","travelMode"],"additionalProperties":false},"GoogleRouteMatrixResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","no_results"]},"data":{"type":"object","properties":{"travelMode":{"type":"string","enum":["WALK","BICYCLE","DRIVE","TRANSIT"]},"elements":{"maxItems":25,"type":"array","items":{"type":"object","properties":{"originIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"destinationIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string","maxLength":4000}}},"condition":{"type":"string","enum":["ROUTE_EXISTS","ROUTE_NOT_FOUND","ROUTE_MATRIX_ELEMENT_CONDITION_UNSPECIFIED"]},"distanceMeters":{"type":"integer","minimum":0,"maximum":9007199254740991},"duration":{"type":"string","pattern":"^\\d+(?:\\.\\d+)?s$"}},"required":["originIndex","destinationIndex","status"]}},"warnings":{"type":"array","items":{"type":"string","maxLength":200}}},"required":["travelMode","elements","warnings"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","status","data","attribution"]},"GoogleProductCatalogResponseDto":{"type":"object","properties":{"reviewedAt":{"type":"string","const":"2026-10-08"},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"surface":{"type":"string"},"launchStage":{"type":"string"},"requirements":{"type":"array","items":{"type":"string"}},"documentation":{"type":"string","format":"uri"},"enterpriseAdapter":{"type":"string"},"status":{"type":"string"},"missingRequirements":{"type":"array","items":{"type":"string"}},"liveVerified":{"type":"boolean"},"verifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","name","category","surface","launchStage","requirements","documentation","status","missingRequirements","liveVerified","verifiedAt"]}},"enterprise":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"liveVerified":{"type":"boolean","const":false},"requirements":{"type":"array","items":{"type":"string"}}},"required":["id","status","liveVerified","requirements"]}},"staticImagery":{"type":"array","items":{"type":"object","properties":{"service":{"type":"string","enum":["maps_static","street_view_static"]},"status":{"type":"string","enum":["disabled","configured","configuration_required"]},"requiresLiveVerification":{"type":"boolean","const":true}},"required":["service","status","requiresLiveVerification"]}}},"required":["reviewedAt","products","enterprise","staticImagery"]},"GoogleAddressValidationDto":{"type":"object","properties":{"address":{"type":"object","properties":{"regionCode":{"type":"string","pattern":"^[A-Z]{2}$"},"addressLines":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":280}},"locality":{"type":"string","minLength":1,"maxLength":100},"sublocality":{"type":"string","minLength":1,"maxLength":100},"administrativeArea":{"type":"string","minLength":1,"maxLength":100},"postalCode":{"type":"string","minLength":1,"maxLength":40},"sortingCode":{"type":"string","minLength":1,"maxLength":40}},"required":["regionCode","addressLines"],"additionalProperties":false},"previousResponseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,36}$"},"enableUspsCass":{"type":"boolean"}},"required":["address"],"additionalProperties":false},"GoogleAddressValidationResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"responseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"result":{"type":"object","properties":{"verdict":{"type":"object","properties":{"inputGranularity":{"type":"string","minLength":1,"maxLength":200},"validationGranularity":{"type":"string","minLength":1,"maxLength":200},"geocodeGranularity":{"type":"string","minLength":1,"maxLength":200},"addressComplete":{"type":"boolean"},"hasUnconfirmedComponents":{"type":"boolean"},"hasInferredComponents":{"type":"boolean"},"hasReplacedComponents":{"type":"boolean"},"possibleNextAction":{"type":"string","minLength":1,"maxLength":200}}},"address":{"type":"object","properties":{"formattedAddress":{"type":"string","minLength":1,"maxLength":1000},"addressComponents":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"componentName":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":500},"languageCode":{"type":"string","minLength":1,"maxLength":35}},"required":["text"]},"componentType":{"type":"string","minLength":1,"maxLength":200},"confirmationLevel":{"type":"string","minLength":1,"maxLength":200},"inferred":{"type":"boolean"},"spellCorrected":{"type":"boolean"},"replaced":{"type":"boolean"},"unexpected":{"type":"boolean"}},"required":["componentType"]}},"missingComponentTypes":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"unconfirmedComponentTypes":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"unresolvedTokens":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}}},"geocode":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"placeId":{"type":"string","minLength":1,"maxLength":300},"featureSizeMeters":{"type":"number","minimum":0},"placeTypes":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}}},"metadata":{"type":"object","properties":{"business":{"type":"boolean"},"poBox":{"type":"boolean"},"residential":{"type":"boolean"}}}},"required":["verdict"]}},"required":["responseId","result"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GooglePlacesAggregateDto":{"type":"object","properties":{"insights":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["INSIGHT_COUNT","INSIGHT_PLACES"]}},"filter":{"type":"object","properties":{"locationFilter":{"anyOf":[{"type":"object","properties":{"circle":{"type":"object","properties":{"latLng":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"radius":{"type":"integer","minimum":50,"maximum":50000}},"required":["latLng","radius"],"additionalProperties":false}},"required":["circle"],"additionalProperties":false},{"type":"object","properties":{"region":{"type":"object","properties":{"place":{"type":"string","maxLength":300,"pattern":"^places\\/[A-Za-z0-9_-]+$"}},"required":["place"],"additionalProperties":false}},"required":["region"],"additionalProperties":false}]},"typeFilter":{"type":"object","properties":{"includedTypes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$"}},"excludedTypes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$"}},"includedPrimaryTypes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$"}},"excludedPrimaryTypes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,79}$"}}},"additionalProperties":false},"operatingStatus":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["OPERATING_STATUS_OPERATIONAL","OPERATING_STATUS_PERMANENTLY_CLOSED","OPERATING_STATUS_TEMPORARILY_CLOSED"]}},"priceLevels":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["PRICE_LEVEL_FREE","PRICE_LEVEL_INEXPENSIVE","PRICE_LEVEL_MODERATE","PRICE_LEVEL_EXPENSIVE","PRICE_LEVEL_VERY_EXPENSIVE"]}},"ratingFilter":{"type":"object","properties":{"minRating":{"type":"number","minimum":1,"maximum":5},"maxRating":{"type":"number","minimum":1,"maximum":5}},"additionalProperties":false}},"required":["locationFilter","typeFilter"],"additionalProperties":false}},"required":["insights","filter"],"additionalProperties":false},"GooglePlacesAggregateResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"count":{"type":"string","pattern":"^\\d{1,19}$"},"placeInsights":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"place":{"type":"string","maxLength":300,"pattern":"^places\\/[A-Za-z0-9_-]+$"}},"required":["place"]}}}},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleAerialViewDto":{"type":"object","properties":{"videoId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_-]+$"},"address":{"type":"string","minLength":1,"maxLength":500}},"additionalProperties":false},"GoogleAerialViewResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"state":{"type":"string","enum":["STATE_UNSPECIFIED","PROCESSING","ACTIVE","FAILED"]},"uris":{"type":"object","propertyNames":{"type":"string","maxLength":100},"additionalProperties":{"type":"object","properties":{"landscapeUri":{"type":"string","maxLength":8192,"format":"uri"},"portraitUri":{"type":"string","maxLength":8192,"format":"uri"}}}},"metadata":{"type":"object","properties":{"videoId":{"type":"string","minLength":1,"maxLength":300},"captureDate":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"maximum":9999},"month":{"type":"integer","minimum":0,"maximum":12},"day":{"type":"integer","minimum":0,"maximum":31}}},"duration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"}},"required":["videoId"]}},"required":["state"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleIsochroneDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"place":{"type":"string","maxLength":300,"pattern":"^places\\/[A-Za-z0-9_-]+$"},"travelDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"travelMode":{"type":"string","enum":["WALK","BICYCLE","DRIVE","TWO_WHEELER"]},"travelDirection":{"type":"string","enum":["FROM","TO"]},"routingPreference":{"type":"string","enum":["TRAFFIC_UNAWARE","TRAFFIC_AWARE"]},"enableSmoothing":{"type":"boolean"},"polygonFidelity":{"type":"string","enum":["LOW","MEDIUM","HIGH"]}},"required":["travelDuration","travelMode","travelDirection"],"additionalProperties":false},"GoogleIsochroneResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"isochrone":{"type":"object","properties":{"geoJson":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"Polygon"},"coordinates":{"minItems":1,"maxItems":500,"type":"array","items":{"minItems":4,"maxItems":50000,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2}}}},"required":["type","coordinates"]},{"type":"object","properties":{"type":{"type":"string","const":"MultiPolygon"},"coordinates":{"minItems":1,"maxItems":1000,"type":"array","items":{"minItems":1,"maxItems":500,"type":"array","items":{"minItems":4,"maxItems":50000,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2}}}}},"required":["type","coordinates"]}]}},"required":["geoJson"]}},"required":["isochrone"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleGeolocationDto":{"type":"object","properties":{"radioType":{"type":"string","enum":["gsm","cdma","wcdma","lte","nr"]},"homeMobileCountryCode":{"type":"integer","minimum":0,"maximum":999},"homeMobileNetworkCode":{"type":"integer","minimum":0,"maximum":32767},"carrier":{"type":"string","minLength":1,"maxLength":100},"considerIp":{"default":false,"type":"boolean","const":false},"cellTowers":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"cellId":{"type":"integer","minimum":0,"maximum":268435455},"newRadioCellId":{"type":"integer","minimum":0,"maximum":68719476735},"locationAreaCode":{"type":"integer","minimum":0,"maximum":16777215},"mobileCountryCode":{"type":"integer","minimum":0,"maximum":999},"mobileNetworkCode":{"type":"integer","minimum":0,"maximum":32767},"age":{"type":"integer","minimum":0,"maximum":60000},"signalStrength":{"type":"number","minimum":-200,"maximum":0},"timingAdvance":{"type":"number","minimum":0,"maximum":10000}},"required":["mobileNetworkCode"],"additionalProperties":false}},"wifiAccessPoints":{"minItems":2,"maxItems":100,"type":"array","items":{"type":"object","properties":{"macAddress":{"type":"string","pattern":"^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$"},"signalStrength":{"type":"number","minimum":-128,"maximum":-10},"age":{"type":"integer","minimum":0,"maximum":60000},"channel":{"type":"integer","minimum":1,"maximum":233},"signalToNoiseRatio":{"type":"number","minimum":-100,"maximum":100}},"required":["macAddress"],"additionalProperties":false}}},"additionalProperties":false},"GoogleGeolocationResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"location":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"accuracy":{"type":"number","exclusiveMinimum":0}},"required":["location","accuracy"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleRouteOptimizationDto":{"type":"object","properties":{"model":{"type":"object","properties":{"shipments":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"pickups":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"arrivalLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"duration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"timeWindows":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"],"additionalProperties":false}},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["arrivalLocation"],"additionalProperties":false}},"deliveries":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"arrivalLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"duration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"timeWindows":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"],"additionalProperties":false}},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["arrivalLocation"],"additionalProperties":false}},"penaltyCost":{"type":"number","minimum":0,"maximum":1000000000}},"additionalProperties":false}},"vehicles":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"travelMode":{"type":"string","enum":["DRIVING","WALKING"]},"startLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"endLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"costPerHour":{"type":"number","minimum":0,"maximum":1000000},"costPerTraveledHour":{"type":"number","minimum":0,"maximum":1000000},"costPerKilometer":{"type":"number","minimum":0,"maximum":1000000},"fixedCost":{"type":"number","minimum":0,"maximum":1000000000},"startTimeWindows":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"],"additionalProperties":false}},"endTimeWindows":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"],"additionalProperties":false}}},"required":["travelMode","startLocation"],"additionalProperties":false}},"globalStartTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"globalEndTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["shipments","vehicles","globalStartTime","globalEndTime"],"additionalProperties":false},"solvingMode":{"type":"string","enum":["DEFAULT_SOLVE","VALIDATE_ONLY"]},"considerRoadTraffic":{"type":"boolean"},"populatePolylines":{"type":"boolean"},"label":{"type":"string","minLength":1,"maxLength":100}},"required":["model","solvingMode"],"additionalProperties":false},"GoogleRouteOptimizationResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"data":{"type":"object","properties":{"routes":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"vehicleIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"vehicleLabel":{"type":"string","minLength":1,"maxLength":100},"vehicleStartTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"vehicleEndTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"visits":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"shipmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"isPickup":{"type":"boolean"},"visitRequestIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"shipmentLabel":{"type":"string","minLength":1,"maxLength":100},"visitLabel":{"type":"string","minLength":1,"maxLength":100}}}},"routePolyline":{"type":"object","properties":{"points":{"type":"string","minLength":1,"maxLength":1000000}},"required":["points"]},"metrics":{"type":"object","properties":{"travelDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"waitDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"visitDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"totalDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"travelDistanceMeters":{"type":"number","minimum":0},"performedShipmentCount":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"routeTotalCost":{"type":"number","minimum":0}}}},"skippedShipments":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"label":{"type":"string","minLength":1,"maxLength":100},"reasons":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"exampleVehicleIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"exampleExceededCapacityType":{"type":"string","minLength":1,"maxLength":100}}}}}}},"validationErrors":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"displayName":{"type":"string","minLength":1,"maxLength":200},"errorMessage":{"type":"string","minLength":1,"maxLength":2000}}}},"requestLabel":{"type":"string","minLength":1,"maxLength":100},"metrics":{"type":"object","properties":{"aggregatedRouteMetrics":{"type":"object","properties":{"travelDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"waitDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"visitDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"totalDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"travelDistanceMeters":{"type":"number","minimum":0},"performedShipmentCount":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"usedVehicleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"skippedMandatoryShipmentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalCost":{"type":"number","minimum":0}}}}},"warnings":{"type":"array","items":{"type":"string","maxLength":300}}},"required":["data","warnings"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleEnterpriseListDto":{"type":"object","properties":{"pageSize":{"default":20,"type":"integer","minimum":1,"maximum":100},"pageToken":{"type":"string","minLength":1,"maxLength":4096},"languageCode":{"type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"}},"additionalProperties":false},"GoogleDatasetListResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"datasets":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^projects\\/[A-Za-z0-9_-]+\\/datasets\\/[A-Za-z0-9_-]+$"},"displayName":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"versionId":{"type":"string","minLength":1,"maxLength":200},"createTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"usage":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":100}},"status":{"type":"object","properties":{"state":{"type":"string","minLength":1,"maxLength":100},"errorMessage":{"type":"string","maxLength":2000}},"required":["state"]}},"required":["name"]}},"nextPageToken":{"type":"string","minLength":1,"maxLength":4096}}},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleDatasetGetDto":{"type":"object","properties":{"datasetId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["datasetId"],"additionalProperties":false},"GoogleDatasetResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^projects\\/[A-Za-z0-9_-]+\\/datasets\\/[A-Za-z0-9_-]+$"},"displayName":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"versionId":{"type":"string","minLength":1,"maxLength":200},"createTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"usage":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":100}},"status":{"type":"object","properties":{"state":{"type":"string","minLength":1,"maxLength":100},"errorMessage":{"type":"string","maxLength":2000}},"required":["state"]}},"required":["name"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleStreetViewOwnedPhotosResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"photos":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"photoId":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["id"]},"thumbnailUrl":{"type":"string","maxLength":8192,"format":"uri"},"shareLink":{"type":"string","maxLength":8192,"format":"uri"},"mapsPublishStatus":{"type":"string","enum":["UNSPECIFIED_MAPS_PUBLISH_STATUS","PUBLISHED","REJECTED_UNKNOWN"]},"viewCount":{"type":"string","pattern":"^\\d{1,20}$"},"captureTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"uploadTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"pose":{"type":"object","properties":{"latLngPair":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"heading":{"type":"number"}}}},"required":["photoId"]}},"nextPageToken":{"type":"string","minLength":1,"maxLength":4096}}},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleTileSessionDto":{"type":"object","properties":{"mapType":{"type":"string","enum":["roadmap","satellite","terrain"]},"language":{"type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"region":{"type":"string","pattern":"^[A-Z]{2}$"},"imageFormat":{"type":"string","enum":["png","jpeg"]}},"required":["mapType","language","region"],"additionalProperties":false},"GoogleTileSessionResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"imageFormat":{"type":"string","enum":["png","jpeg"]},"tileWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"tileHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["sessionId","expiresAt","imageFormat","tileWidth","tileHeight"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleMapTileViewportDto":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"zoom":{"type":"integer","minimum":0,"maximum":22},"north":{"type":"number","exclusiveMinimum":-90,"exclusiveMaximum":90},"south":{"type":"number","exclusiveMinimum":-90,"exclusiveMaximum":90},"east":{"type":"number","exclusiveMinimum":-180,"exclusiveMaximum":180},"west":{"type":"number","exclusiveMinimum":-180,"exclusiveMaximum":180}},"required":["sessionId","zoom","north","south","east","west"],"additionalProperties":false},"GoogleMapTileViewportResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"copyright":{"type":"string","minLength":1,"maxLength":4000},"maxZoomRects":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"maxZoom":{"type":"integer","minimum":0,"maximum":30},"north":{"type":"number","minimum":-90,"maximum":90},"south":{"type":"number","minimum":-90,"maximum":90},"east":{"type":"number","minimum":-180,"maximum":180},"west":{"type":"number","minimum":-180,"maximum":180}},"required":["maxZoom","north","south","east","west"]}}},"required":["copyright","maxZoomRects"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleMapTileDto":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"zoom":{"type":"integer","minimum":0,"maximum":22},"x":{"type":"integer","minimum":0,"maximum":9007199254740991},"y":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["sessionId","zoom","x","y"],"additionalProperties":false},"GoogleNavigationTripDto":{"type":"object","properties":{"tripId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["tripId"],"additionalProperties":false},"GoogleNavigationTripResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^projects\\/[A-Za-z0-9_-]+\\/trips\\/[A-Za-z0-9_-]+$"},"state":{"type":"string","enum":["STATE_UNSPECIFIED","NEW","ENROUTE","ARRIVED","SUSPENDED","FAILED","CLIENT_ERROR","CANCELED"]},"execution":{"type":"object","properties":{"origin":{"type":"object","properties":{"point":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"sourceTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["point"]},"location":{"type":"object","properties":{"point":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"sourceTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["point"]},"destination":{"type":"object","properties":{"point":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}},"required":["point"]},"traveledDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"remainingDuration":{"type":"string","maxLength":30,"pattern":"^\\d+(?:\\.\\d{1,9})?s$"},"traveledDistanceMeters":{"type":"integer","minimum":0,"maximum":9007199254740991},"remainingDistanceMeters":{"type":"integer","minimum":0,"maximum":9007199254740991},"stopAddedInRoute":{"type":"boolean"}}},"createTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["name","state"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleResolveNamesDto":{"type":"object","properties":{"queries":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":1000}},"required":["text"],"additionalProperties":false}},"locationBias":{"type":"object","properties":{"viewport":{"type":"object","properties":{"low":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"high":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}},"required":["low","high"],"additionalProperties":false}},"required":["viewport"],"additionalProperties":false},"regionCode":{"type":"string","pattern":"^[A-Z]{2}$"}},"required":["queries"],"additionalProperties":false},"GoogleResolveNamesResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"results":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"entity":{"type":"object","properties":{"place":{"type":"string","maxLength":300,"pattern":"^places\\/[A-Za-z0-9_-]+$"}}},"confidence":{"type":"string","minLength":1,"maxLength":80}}}},"failedRequests":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9])$"},"additionalProperties":{"type":"object","properties":{"code":{"type":"integer","minimum":0,"maximum":16},"message":{"type":"string","maxLength":2000}},"required":["code"]}},"saveToMapsUrl":{"type":"string","maxLength":8192,"format":"uri"}},"required":["results"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleResolveMapsUrlsDto":{"type":"object","properties":{"urls":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","maxLength":8192,"format":"uri"}}},"required":["urls"],"additionalProperties":false},"GoogleResolveMapsUrlsResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"entities":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"place":{"type":"string","maxLength":300,"pattern":"^places\\/[A-Za-z0-9_-]+$"}}}},"failedRequests":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:[0-9]|1[0-9])$"},"additionalProperties":{"type":"object","properties":{"code":{"type":"integer","minimum":0,"maximum":16},"message":{"type":"string","maxLength":2000}},"required":["code"]}},"saveToMapsUrl":{"type":"string","maxLength":8192,"format":"uri"}},"required":["entities"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleRoadSpeedLimitsDto":{"type":"object","properties":{"placeIds":{"minItems":1,"maxItems":25,"type":"array","items":{"type":"string","maxLength":300,"pattern":"^[A-Za-z0-9_-]+$"}},"units":{"default":"KPH","type":"string","enum":["KPH","MPH"]}},"required":["placeIds"],"additionalProperties":false},"GoogleRoadSpeedLimitsResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"data":{"type":"object","properties":{"data":{"type":"object","properties":{"speedLimits":{"maxItems":25,"type":"array","items":{"type":"object","properties":{"placeId":{"type":"string","maxLength":300,"pattern":"^[A-Za-z0-9_-]+$"},"speedLimit":{"type":"number","minimum":0},"units":{"type":"string","enum":["KPH","MPH"]}},"required":["placeId","speedLimit","units"]}},"warning_message":{"type":"string","minLength":1,"maxLength":2000},"warningMessage":{"type":"string","minLength":1,"maxLength":2000}}},"warnings":{"type":"array","items":{"type":"string","maxLength":300}}},"required":["data","warnings"]},"attribution":{"type":"array","items":{"type":"string","maxLength":500}}},"required":["provider","fetchedAt","expiresAt","data","attribution"]},"GoogleStaticMapRequestDto":{"type":"object","properties":{"center":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"zoom":{"type":"integer","minimum":0,"maximum":21},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":640},"height":{"type":"integer","minimum":1,"maximum":640}},"required":["width","height"],"additionalProperties":false},"scale":{"default":1,"anyOf":[{"type":"number","const":1},{"type":"number","const":2}]},"format":{"default":"png32","type":"string","enum":["png","png32","jpg","jpg-baseline","gif"]},"mapType":{"default":"roadmap","type":"string","enum":["roadmap","terrain","satellite","hybrid"]},"language":{"type":"string","enum":["pt-BR","pt-PT","en","es","fr","de"]},"region":{"type":"string","pattern":"^[A-Z]{2}$"},"mapId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"markers":{"default":[],"maxItems":50,"type":"array","items":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"size":{"default":"normal","type":"string","enum":["tiny","small","mid","normal"]},"color":{"type":"string","pattern":"^(?:0x[0-9a-fA-F]{6}|black|brown|green|purple|yellow|blue|gray|orange|red|white)$"},"label":{"type":"string","pattern":"^[A-Z0-9]$"}},"required":["location"],"additionalProperties":false}},"paths":{"default":[],"maxItems":8,"type":"array","items":{"type":"object","properties":{"points":{"minItems":2,"maxItems":512,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}},"color":{"type":"string","pattern":"^(?:0x[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?|black|brown|green|purple|yellow|blue|gray|orange|red|white)$"},"fillColor":{"type":"string","pattern":"^(?:0x[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?|black|brown|green|purple|yellow|blue|gray|orange|red|white)$"},"weight":{"default":5,"type":"integer","minimum":1,"maximum":32},"geodesic":{"default":false,"type":"boolean"}},"required":["points"],"additionalProperties":false}},"visible":{"default":[],"maxItems":50,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"required":["size"],"additionalProperties":false},"GoogleStreetViewMetadataRequestDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"panoId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,256}$"},"radiusMeters":{"default":50,"type":"integer","minimum":0,"maximum":10000},"source":{"default":"default","type":"string","enum":["default","outdoor"]}},"additionalProperties":false},"GoogleStreetViewStaticMetadataResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cacheControl":{"type":"string","const":"private, no-store"},"data":{"type":"object","properties":{"status":{"type":"string","const":"OK"},"pano_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,256}$"},"location":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"]},"copyright":{"type":"string","minLength":1,"maxLength":2000},"date":{"type":"string","pattern":"^\\d{4}(?:-(?:0[1-9]|1[0-2]))?$"}},"required":["status","pano_id","location","copyright"]}},"required":["provider","fetchedAt","expiresAt","cacheControl","data"]},"GoogleStreetViewImageRequestDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"panoId":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,256}$"},"radiusMeters":{"default":50,"type":"integer","minimum":0,"maximum":10000},"source":{"default":"default","type":"string","enum":["default","outdoor"]},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":640},"height":{"type":"integer","minimum":1,"maximum":640}},"required":["width","height"],"additionalProperties":false},"heading":{"type":"number","minimum":0,"maximum":360},"fov":{"default":90,"type":"number","exclusiveMinimum":0,"maximum":120},"pitch":{"default":0,"type":"number","minimum":-90,"maximum":90}},"required":["size"],"additionalProperties":false},"GoogleEnvironmentAirHistoryDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"cursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"pageSize":{"default":72,"type":"integer","minimum":1,"maximum":168},"hours":{"type":"integer","minimum":1,"maximum":720},"dateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"period":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"],"additionalProperties":false}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentAirHistoryResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"history"},"data":{"type":"object","properties":{"hoursInfo":{"maxItems":168,"type":"array","items":{"type":"object","properties":{"dateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"regionCode":{"type":"string","maxLength":10},"indexes":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":40},"displayName":{"type":"string","maxLength":200},"aqi":{"type":"integer","minimum":0,"maximum":1000},"category":{"type":"string","maxLength":200},"color":{"type":"object","properties":{"red":{"type":"number","minimum":0,"maximum":1},"green":{"type":"number","minimum":0,"maximum":1},"blue":{"type":"number","minimum":0,"maximum":1}}},"dominantPollutant":{"type":"string","maxLength":100}},"required":["code"]}},"pollutants":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":50},"displayName":{"type":"string","maxLength":200},"concentration":{"type":"object","properties":{"value":{"type":"number","minimum":0},"units":{"type":"string","maxLength":80}}}},"required":["code"],"additionalProperties":{}}},"healthRecommendations":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":5000}}},"required":["dateTime"]}},"regionCode":{"type":"string","minLength":1,"maxLength":10}},"required":["hoursInfo"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentAirForecastDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"cursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"pageSize":{"default":24,"type":"integer","minimum":1,"maximum":24},"dateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"period":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"],"additionalProperties":false}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentAirForecastResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"forecast"},"data":{"type":"object","properties":{"hourlyForecasts":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"dateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"regionCode":{"type":"string","maxLength":10},"indexes":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":40},"displayName":{"type":"string","maxLength":200},"aqi":{"type":"integer","minimum":0,"maximum":1000},"category":{"type":"string","maxLength":200},"color":{"type":"object","properties":{"red":{"type":"number","minimum":0,"maximum":1},"green":{"type":"number","minimum":0,"maximum":1},"blue":{"type":"number","minimum":0,"maximum":1}}},"dominantPollutant":{"type":"string","maxLength":100}},"required":["code"]}},"pollutants":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":50},"displayName":{"type":"string","maxLength":200},"concentration":{"type":"object","properties":{"value":{"type":"number","minimum":0},"units":{"type":"string","maxLength":80}}}},"required":["code"],"additionalProperties":{}}},"healthRecommendations":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":5000}}},"required":["dateTime"]}},"regionCode":{"type":"string","minLength":1,"maxLength":10}},"required":["hourlyForecasts"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentWeatherForecastHoursDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"cursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"hours":{"default":24,"type":"integer","minimum":1,"maximum":240},"pageSize":{"default":24,"type":"integer","minimum":1,"maximum":24}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentWeatherForecastHoursResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"forecast"},"data":{"type":"object","properties":{"forecastHours":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"interval":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"]},"displayDateTime":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31},"hours":{"type":"integer","minimum":0,"maximum":23},"minutes":{"type":"integer","minimum":0,"maximum":59},"seconds":{"type":"integer","minimum":0,"maximum":59},"nanos":{"type":"integer","minimum":0,"maximum":999999999},"utcOffset":{"type":"string","maxLength":25,"pattern":"^-?\\d+(?:\\.\\d{1,9})?s$"},"timeZone":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"version":{"type":"string","minLength":1,"maxLength":100}},"required":["id"]}},"required":["year","month","day"]},"weatherCondition":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"object","properties":{"text":{"type":"string","maxLength":5000},"languageCode":{"type":"string","minLength":1,"maxLength":35}},"required":["text"]},"iconBaseUri":{"type":"string","maxLength":2000,"format":"uri"}}},"precipitation":{"type":"object","properties":{"probability":{"type":"object","properties":{"percent":{"type":"number","minimum":0,"maximum":100},"type":{"type":"string","minLength":1,"maxLength":100}}},"qpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"snowQpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]}}},"wind":{"type":"object","properties":{"speed":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"gust":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"direction":{"type":"object","properties":{"degrees":{"type":"number","minimum":0,"maximum":360},"cardinal":{"type":"string","minLength":1,"maxLength":30}}}}},"iceThickness":{"type":"object","properties":{"thickness":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"relativeHumidity":{"type":"number","minimum":0,"maximum":100},"uvIndex":{"type":"integer","minimum":0,"maximum":100},"thunderstormProbability":{"type":"number","minimum":0,"maximum":100},"cloudCover":{"type":"number","minimum":0,"maximum":100},"temperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"feelsLikeTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"dewPoint":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"heatIndex":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"windChill":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"wetBulbTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"airPressure":{"type":"object","properties":{"meanSeaLevelMillibars":{"type":"number","minimum":0}}},"visibility":{"type":"object","properties":{"distance":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS"}},"required":["unit"]},"isDaytime":{"type":"boolean"}},"required":["interval"]}},"timeZone":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"version":{"type":"string","minLength":1,"maxLength":100}},"required":["id"]}},"required":["forecastHours","timeZone"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentWeatherForecastDaysDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"cursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"days":{"default":10,"type":"integer","minimum":1,"maximum":10},"pageSize":{"default":5,"type":"integer","minimum":1,"maximum":10}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentWeatherForecastDaysResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"forecast"},"data":{"type":"object","properties":{"forecastDays":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"interval":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"]},"displayDate":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31}},"required":["year","month","day"]},"daytimeForecast":{"type":"object","properties":{"interval":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"]},"weatherCondition":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"object","properties":{"text":{"type":"string","maxLength":5000},"languageCode":{"type":"string","minLength":1,"maxLength":35}},"required":["text"]},"iconBaseUri":{"type":"string","maxLength":2000,"format":"uri"}}},"precipitation":{"type":"object","properties":{"probability":{"type":"object","properties":{"percent":{"type":"number","minimum":0,"maximum":100},"type":{"type":"string","minLength":1,"maxLength":100}}},"qpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"snowQpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]}}},"wind":{"type":"object","properties":{"speed":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"gust":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"direction":{"type":"object","properties":{"degrees":{"type":"number","minimum":0,"maximum":360},"cardinal":{"type":"string","minLength":1,"maxLength":30}}}}},"iceThickness":{"type":"object","properties":{"thickness":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"relativeHumidity":{"type":"number","minimum":0,"maximum":100},"uvIndex":{"type":"integer","minimum":0,"maximum":100},"thunderstormProbability":{"type":"number","minimum":0,"maximum":100},"cloudCover":{"type":"number","minimum":0,"maximum":100}},"required":["interval"]},"nighttimeForecast":{"type":"object","properties":{"interval":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"]},"weatherCondition":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"object","properties":{"text":{"type":"string","maxLength":5000},"languageCode":{"type":"string","minLength":1,"maxLength":35}},"required":["text"]},"iconBaseUri":{"type":"string","maxLength":2000,"format":"uri"}}},"precipitation":{"type":"object","properties":{"probability":{"type":"object","properties":{"percent":{"type":"number","minimum":0,"maximum":100},"type":{"type":"string","minLength":1,"maxLength":100}}},"qpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"snowQpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]}}},"wind":{"type":"object","properties":{"speed":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"gust":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"direction":{"type":"object","properties":{"degrees":{"type":"number","minimum":0,"maximum":360},"cardinal":{"type":"string","minLength":1,"maxLength":30}}}}},"iceThickness":{"type":"object","properties":{"thickness":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"relativeHumidity":{"type":"number","minimum":0,"maximum":100},"uvIndex":{"type":"integer","minimum":0,"maximum":100},"thunderstormProbability":{"type":"number","minimum":0,"maximum":100},"cloudCover":{"type":"number","minimum":0,"maximum":100}},"required":["interval"]},"maxTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"minTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"feelsLikeMaxTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"feelsLikeMinTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"maxHeatIndex":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"sunEvents":{"type":"object","properties":{"sunriseTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sunsetTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}}},"moonEvents":{"type":"object","properties":{"moonriseTimes":{"maxItems":4,"type":"array","items":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"moonsetTimes":{"maxItems":4,"type":"array","items":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"moonPhase":{"type":"string","minLength":1,"maxLength":50}}}},"required":["interval","displayDate"]}},"timeZone":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"version":{"type":"string","minLength":1,"maxLength":100}},"required":["id"]}},"required":["forecastDays","timeZone"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentWeatherHistoryDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"cursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"hours":{"default":24,"type":"integer","minimum":1,"maximum":24},"pageSize":{"default":24,"type":"integer","minimum":1,"maximum":24}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentWeatherHistoryResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"history"},"data":{"type":"object","properties":{"historyHours":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"interval":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startTime","endTime"]},"displayDateTime":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31},"hours":{"type":"integer","minimum":0,"maximum":23},"minutes":{"type":"integer","minimum":0,"maximum":59},"seconds":{"type":"integer","minimum":0,"maximum":59},"nanos":{"type":"integer","minimum":0,"maximum":999999999},"utcOffset":{"type":"string","maxLength":25,"pattern":"^-?\\d+(?:\\.\\d{1,9})?s$"},"timeZone":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"version":{"type":"string","minLength":1,"maxLength":100}},"required":["id"]}},"required":["year","month","day"]},"weatherCondition":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"object","properties":{"text":{"type":"string","maxLength":5000},"languageCode":{"type":"string","minLength":1,"maxLength":35}},"required":["text"]},"iconBaseUri":{"type":"string","maxLength":2000,"format":"uri"}}},"precipitation":{"type":"object","properties":{"probability":{"type":"object","properties":{"percent":{"type":"number","minimum":0,"maximum":100},"type":{"type":"string","minLength":1,"maxLength":100}}},"qpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"snowQpf":{"type":"object","properties":{"quantity":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]}}},"wind":{"type":"object","properties":{"speed":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"gust":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS_PER_HOUR"}},"required":["unit"]},"direction":{"type":"object","properties":{"degrees":{"type":"number","minimum":0,"maximum":360},"cardinal":{"type":"string","minLength":1,"maxLength":30}}}}},"iceThickness":{"type":"object","properties":{"thickness":{"type":"number","minimum":0},"unit":{"type":"string","const":"MILLIMETERS"}},"required":["unit"]},"relativeHumidity":{"type":"number","minimum":0,"maximum":100},"uvIndex":{"type":"integer","minimum":0,"maximum":100},"thunderstormProbability":{"type":"number","minimum":0,"maximum":100},"cloudCover":{"type":"number","minimum":0,"maximum":100},"temperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"feelsLikeTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"dewPoint":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"heatIndex":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"windChill":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"wetBulbTemperature":{"type":"object","properties":{"degrees":{"type":"number","minimum":-100,"maximum":100},"unit":{"type":"string","const":"CELSIUS"}},"required":["unit"]},"airPressure":{"type":"object","properties":{"meanSeaLevelMillibars":{"type":"number","minimum":0}}},"visibility":{"type":"object","properties":{"distance":{"type":"number","minimum":0},"unit":{"type":"string","const":"KILOMETERS"}},"required":["unit"]},"isDaytime":{"type":"boolean"}},"required":["interval"]}},"timeZone":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"version":{"type":"string","minLength":1,"maxLength":100}},"required":["id"]}},"required":["historyHours","timeZone"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentWeatherAlertsDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"languageCode":{"default":"pt-BR","type":"string","maxLength":35,"pattern":"^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8}){0,3}$"},"cursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"pageSize":{"default":10,"type":"integer","minimum":1,"maximum":20}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentWeatherAlertsResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"public_alerts"},"data":{"type":"object","properties":{"weatherAlerts":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"alertId":{"type":"string","minLength":1,"maxLength":500},"alertTitle":{"type":"object","properties":{"text":{"type":"string","maxLength":5000},"languageCode":{"type":"string","minLength":1,"maxLength":35}},"required":["text"]},"eventType":{"type":"string","minLength":1,"maxLength":100},"areaName":{"type":"string","minLength":1,"maxLength":1000},"instruction":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":10000}},"safetyRecommendations":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"directive":{"type":"string","minLength":1,"maxLength":10000},"subtext":{"type":"string","maxLength":10000}},"required":["directive"]}},"timezoneOffset":{"type":"string","maxLength":12,"pattern":"^-?\\d+s$"},"startTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expirationTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"dataSource":{"type":"object","properties":{"publisher":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","minLength":1,"maxLength":500},"authorityUri":{"type":"string","maxLength":2000,"format":"uri"}}},"polygon":{"type":"string","maxLength":200000},"description":{"type":"string","maxLength":30000},"severity":{"type":"string","enum":["SEVERITY_UNKNOWN","EXTREME","SEVERE","MODERATE","MINOR"]},"certainty":{"type":"string","enum":["CERTAINTY_UNKNOWN","OBSERVED","VERY_LIKELY","LIKELY","POSSIBLE","UNLIKELY"]},"urgency":{"type":"string","enum":["URGENCY_UNKNOWN","IMMEDIATE","EXPECTED","FUTURE","PAST"]}},"required":["alertId","startTime","expirationTime"]}},"regionCode":{"type":"string","minLength":1,"maxLength":10}},"required":["weatherAlerts"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentSolarDataLayersDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"radiusMeters":{"default":100,"type":"number","exclusiveMinimum":0,"maximum":1000},"requiredQuality":{"default":"LOW","type":"string","enum":["HIGH","MEDIUM","LOW"]},"pixelSizeMeters":{"default":0.5,"anyOf":[{"type":"number","const":0.1},{"type":"number","const":0.25},{"type":"number","const":0.5},{"type":"number","const":1}]},"exactQualityRequired":{"default":false,"type":"boolean"},"view":{"default":"FULL_LAYERS","type":"string","enum":["DSM_LAYER","IMAGERY_LAYERS","IMAGERY_AND_ANNUAL_FLUX_LAYERS","IMAGERY_AND_ALL_FLUX_LAYERS","FULL_LAYERS"]}},"required":["location"],"additionalProperties":false},"GoogleEnvironmentSolarDataLayersResponseDto":{"type":"object","properties":{"provider":{"type":"string","const":"google"},"status":{"type":"string","enum":["available","no_results"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"attribution":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}},"renderer":{"type":"string","const":"google"},"nextCursor":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"dataKind":{"type":"string","const":"building_solar_model"},"data":{"type":"object","properties":{"imageryDate":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31}},"required":["year","month","day"]},"imageryProcessedDate":{"type":"object","properties":{"year":{"type":"integer","minimum":1,"maximum":9999},"month":{"type":"integer","minimum":1,"maximum":12},"day":{"type":"integer","minimum":1,"maximum":31}},"required":["year","month","day"]},"imageryQuality":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"radiusMeters":{"type":"number","exclusiveMinimum":0},"requestedMinimumPixelSizeMeters":{"type":"number","exclusiveMinimum":0},"layers":{"minItems":1,"maxItems":17,"type":"array","items":{"type":"object","properties":{"layer":{"type":"string","enum":["dsm","rgb","mask","annual_flux","monthly_flux","hourly_shade"]},"month":{"type":"integer","minimum":1,"maximum":12}},"required":["layer"]}},"isRealTime":{"type":"boolean","const":false},"downloadPath":{"type":"string","const":"/maps/google/catalog/environment/solar/geo-tiff"}},"required":["imageryDate","imageryQuality","radiusMeters","requestedMinimumPixelSizeMeters","layers","isRealTime","downloadPath"]}},"required":["provider","status","fetchedAt","expiresAt","location","attribution","renderer","dataKind","data"]},"GoogleEnvironmentSolarGeoTiffDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"radiusMeters":{"default":100,"type":"number","exclusiveMinimum":0,"maximum":1000},"requiredQuality":{"default":"LOW","type":"string","enum":["HIGH","MEDIUM","LOW"]},"pixelSizeMeters":{"default":0.5,"anyOf":[{"type":"number","const":0.1},{"type":"number","const":0.25},{"type":"number","const":0.5},{"type":"number","const":1}]},"exactQualityRequired":{"default":false,"type":"boolean"},"layer":{"type":"string","enum":["dsm","rgb","mask","annual_flux","monthly_flux","hourly_shade"]},"month":{"type":"integer","minimum":1,"maximum":12}},"required":["location","layer"],"additionalProperties":false},"VoicePreferencesResponseDto":{"type":"object","properties":{"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"locale":{"type":"string"},"coach":{"type":"object","properties":{"gender":{"type":"string","enum":["masculine","feminine"]},"speed":{"type":"number","minimum":0.7,"maximum":1.2},"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speakerBoost":{"type":"boolean"}},"required":["gender","speed","stability","similarityBoost","style","speakerBoost"],"additionalProperties":false},"map":{"type":"object","properties":{"gender":{"type":"string","enum":["masculine","feminine"]},"speed":{"type":"number","minimum":0.7,"maximum":1.2},"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speakerBoost":{"type":"boolean"}},"required":["gender","speed","stability","similarityBoost","style","speakerBoost"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["revision","locale","coach","map","updatedAt"]},"UpdateVoicePreferencesDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"coach":{"type":"object","properties":{"gender":{"type":"string","enum":["masculine","feminine"]},"speed":{"type":"number","minimum":0.7,"maximum":1.2},"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speakerBoost":{"type":"boolean"}},"additionalProperties":false},"map":{"type":"object","properties":{"gender":{"type":"string","enum":["masculine","feminine"]},"speed":{"type":"number","minimum":0.7,"maximum":1.2},"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speakerBoost":{"type":"boolean"}},"additionalProperties":false}},"required":["expectedRevision"],"additionalProperties":false},"VoiceCatalogueResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["available","unavailable"]},"locale":{"type":"string"},"locales":{"type":"array","items":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]}},"voices":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["masculine","feminine"]},"name":{"type":["string","null"]},"gender":{"type":"string","enum":["masculine","feminine"]},"available":{"type":"boolean"}},"required":["key","name","gender","available"]}},"controls":{"type":"object","properties":{"speed":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"default":{"type":"number"},"supported":{"type":"boolean"}},"required":["min","max","default","supported"]},"stability":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"default":{"type":"number"},"supported":{"type":"boolean"}},"required":["min","max","default","supported"]},"similarityBoost":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"default":{"type":"number"},"supported":{"type":"boolean"}},"required":["min","max","default","supported"]},"style":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"default":{"type":"number"},"supported":{"type":"boolean"}},"required":["min","max","default","supported"]},"speakerBoost":{"type":"object","properties":{"supported":{"type":"boolean"},"default":{"type":"boolean"}},"required":["supported","default"]},"equalizer":{"type":"object","properties":{"supported":{"type":"boolean","const":false}},"required":["supported"]}},"required":["speed","stability","similarityBoost","style","speakerBoost","equalizer"]},"defaults":{"type":"object","properties":{"gender":{"type":"string","enum":["masculine","feminine"]},"speed":{"type":"number","minimum":0.7,"maximum":1.2},"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speakerBoost":{"type":"boolean"}},"required":["gender","speed","stability","similarityBoost","style","speakerBoost"],"additionalProperties":false}},"required":["status","locale","locales","voices","controls","defaults"]},"VoicePreviewDto":{"type":"object","properties":{"locale":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]},"profile":{"default":{},"type":"object","properties":{"gender":{"type":"string","enum":["masculine","feminine"]},"speed":{"type":"number","minimum":0.7,"maximum":1.2},"stability":{"type":"number","minimum":0,"maximum":1},"similarityBoost":{"type":"number","minimum":0,"maximum":1},"style":{"type":"number","minimum":0,"maximum":1},"speakerBoost":{"type":"boolean"}},"additionalProperties":false}},"required":["locale"],"additionalProperties":false},"VoiceCueCatalogueResponseDto":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"array","items":{"type":"string"}},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"locale":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]},"profile":{"type":"string","const":"map"},"limits":{"type":"object","properties":{"cuesPerPack":{"type":"number","const":64},"charactersPerCue":{"type":"number","const":100},"charactersPerPack":{"type":"number","const":4000},"newCuesPerDay":{"type":"number","const":128},"newCharactersPerDay":{"type":"number","const":8000}},"required":["cuesPerPack","charactersPerCue","charactersPerPack","newCuesPerDay","newCharactersPerDay"]},"definitions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["go","target_reached","target_finish_ready","halfway","last_set_done","prepare","workout_complete","workout_complete_praise","paused","workout_paused","resumed","rest","rest_one_minute","ten_seconds","frame_whole_body","frame_one_person","frame_step_back","frame_closer","frame_sideways","frame_face_camera","frame_left_side","frame_right_side","frame_arm","frame_legs","frame_torso","ready","moving_out","end_reached","moving_back","rep_good","rep_form","range_incomplete","insufficient_observations","observation_gap","cycle_too_long","upper_arm_position","trunk_alignment","count","set_done_rest","rest_minutes","distance_metres","lengths_undone","repetition_done","repetition_done_rest","nav_depart","nav_straight","nav_turn_left","nav_turn_right","nav_keep_left","nav_keep_right","nav_slight_left","nav_slight_right","nav_sharp_left","nav_sharp_right","nav_uturn_left","nav_uturn_right","nav_merge","nav_merge_left","nav_merge_right","nav_fork_left","nav_fork_right","nav_on_ramp","nav_on_ramp_left","nav_on_ramp_right","nav_on_ramp_uturn_left","nav_on_ramp_uturn_right","nav_off_ramp","nav_off_ramp_left","nav_off_ramp_right","nav_off_ramp_uturn_left","nav_off_ramp_uturn_right","nav_roundabout_enter","nav_roundabout_exit","nav_ferry_boat","nav_ferry_train","nav_destination","nav_destination_left","nav_destination_right","nav_name_change","nav_roundabout_exit_number"]},"textTemplate":{"type":"string"},"oneTextTemplate":{"type":["string","null"]},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","min","max"]}}},"required":["key","textTemplate","oneTextTemplate","parameters"]}}},"required":["available","reason","version","locale","profile","limits","definitions"]},"PrepareVoiceCuesDto":{"type":"object","properties":{"locale":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]},"cues":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["go","target_reached","target_finish_ready","halfway","last_set_done","prepare","workout_complete","workout_complete_praise","paused","workout_paused","resumed","rest","rest_one_minute","ten_seconds","frame_whole_body","frame_one_person","frame_step_back","frame_closer","frame_sideways","frame_face_camera","frame_left_side","frame_right_side","frame_arm","frame_legs","frame_torso","ready","moving_out","end_reached","moving_back","rep_good","rep_form","range_incomplete","insufficient_observations","observation_gap","cycle_too_long","upper_arm_position","trunk_alignment","count","set_done_rest","rest_minutes","distance_metres","lengths_undone","repetition_done","repetition_done_rest","nav_depart","nav_straight","nav_turn_left","nav_turn_right","nav_keep_left","nav_keep_right","nav_slight_left","nav_slight_right","nav_sharp_left","nav_sharp_right","nav_uturn_left","nav_uturn_right","nav_merge","nav_merge_left","nav_merge_right","nav_fork_left","nav_fork_right","nav_on_ramp","nav_on_ramp_left","nav_on_ramp_right","nav_on_ramp_uturn_left","nav_on_ramp_uturn_right","nav_off_ramp","nav_off_ramp_left","nav_off_ramp_right","nav_off_ramp_uturn_left","nav_off_ramp_uturn_right","nav_roundabout_enter","nav_roundabout_exit","nav_ferry_boat","nav_ferry_train","nav_destination","nav_destination_left","nav_destination_right","nav_name_change","nav_roundabout_exit_number"]},"values":{"default":[],"maxItems":3,"type":"array","items":{"type":"integer","minimum":0,"maximum":100000}}},"required":["key"],"additionalProperties":false}}},"required":["locale","cues"],"additionalProperties":false},"VoiceCuePackResponseDto":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"locale":{"type":"string","enum":["pt-BR","pt-PT","en-US","en-GB","de-DE","es-ES","fr-FR","nl-NL"]},"voiceRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"profileFingerprint":{"type":"string","pattern":"^[a-f0-9]{64}$"},"catalogueVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["pending","ready","partial","failed"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{64}$"},"key":{"type":"string","enum":["go","target_reached","target_finish_ready","halfway","last_set_done","prepare","workout_complete","workout_complete_praise","paused","workout_paused","resumed","rest","rest_one_minute","ten_seconds","frame_whole_body","frame_one_person","frame_step_back","frame_closer","frame_sideways","frame_face_camera","frame_left_side","frame_right_side","frame_arm","frame_legs","frame_torso","ready","moving_out","end_reached","moving_back","rep_good","rep_form","range_incomplete","insufficient_observations","observation_gap","cycle_too_long","upper_arm_position","trunk_alignment","count","set_done_rest","rest_minutes","distance_metres","lengths_undone","repetition_done","repetition_done_rest","nav_depart","nav_straight","nav_turn_left","nav_turn_right","nav_keep_left","nav_keep_right","nav_slight_left","nav_slight_right","nav_sharp_left","nav_sharp_right","nav_uturn_left","nav_uturn_right","nav_merge","nav_merge_left","nav_merge_right","nav_fork_left","nav_fork_right","nav_on_ramp","nav_on_ramp_left","nav_on_ramp_right","nav_on_ramp_uturn_left","nav_on_ramp_uturn_right","nav_off_ramp","nav_off_ramp_left","nav_off_ramp_right","nav_off_ramp_uturn_left","nav_off_ramp_uturn_right","nav_roundabout_enter","nav_roundabout_exit","nav_ferry_boat","nav_ferry_train","nav_destination","nav_destination_left","nav_destination_right","nav_name_change","nav_roundabout_exit_number"]},"values":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"text":{"type":"string"},"status":{"type":"string","enum":["pending","ready","failed"]},"audioPath":{"type":["string","null"]},"errorCode":{"type":["string","null"]}},"required":["id","key","values","text","status","audioPath","errorCode"]}},"retryAfterMs":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"fallback":{"type":"string","const":"device"}},"required":["id","locale","voiceRevision","profileFingerprint","catalogueVersion","serverTime","status","expiresAt","items","retryAfterMs","fallback"]},"WeatherRequestDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"units":{"default":"metric","type":"string","enum":["metric","imperial"]}},"required":["latitude","longitude"],"additionalProperties":false},"WeatherResponseDto":{"type":"object","properties":{"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"precisionDecimals":{"type":"number","const":2}},"required":["latitude","longitude","precisionDecimals"],"additionalProperties":false},"forecast":{"type":"object","properties":{"version":{"type":"number","const":1},"provider":{"type":"string","enum":["open-meteo","google-weather"]},"attribution":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","format":"uri"},"licence":{"type":"string","minLength":1,"maxLength":120},"licenceUrl":{"type":"string","format":"uri"},"modifications":{"type":"string","const":"Rounded location, unit conversion and rule-based weather summary by KYPACE."}},"required":["name","url","licence","licenceUrl","modifications"],"additionalProperties":false},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"dataUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"stale":{"type":"boolean"},"timezone":{"type":"string","minLength":1,"maxLength":100},"units":{"type":"string","enum":["metric","imperial"]},"labels":{"type":"object","properties":{"temperature":{"type":"string","enum":["°C","°F"]},"wind":{"type":"string","enum":["km/h","mph"]},"precipitation":{"type":"string","enum":["mm","in"]}},"required":["temperature","wind","precipitation"],"additionalProperties":false},"precision":{"type":"string","const":"hourly_forecast_not_exact_onset"},"band":{"type":"object","properties":{"variant":{"anyOf":[{"type":"string","enum":["Clear","Cloudy","Rain"]},{"type":"null"}]},"condition":{"type":"string","enum":["clear","cloudy","rain","snow","thunderstorm","fog","unknown"]},"headline":{"type":"object","properties":{"key":{"type":"string","maxLength":100,"pattern":"^weather\\.[a-z_.]+$"},"text":{"type":"string","maxLength":200},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}},"required":["key","text","params"],"additionalProperties":false},"summary":{"type":"object","properties":{"key":{"type":"string","maxLength":100,"pattern":"^weather\\.[a-z_.]+$"},"text":{"type":"string","maxLength":200},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}},"required":["key","text","params"],"additionalProperties":false},"insight":{"type":"object","properties":{"key":{"type":"string","maxLength":100,"pattern":"^weather\\.[a-z_.]+$"},"text":{"type":"string","maxLength":200},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":100},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}},"required":["key","text","params"],"additionalProperties":false}},"required":["variant","condition","headline","summary","insight"],"additionalProperties":false},"current":{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"temperature":{"type":["number","null"]},"feelsLike":{"type":["number","null"]},"isDay":{"type":["boolean","null"]},"weatherCode":{"anyOf":[{"type":"integer","minimum":0,"maximum":99},{"type":"null"}]},"wind":{"type":["number","null"]},"gust":{"type":["number","null"]}},"required":["at","temperature","feelsLike","isDay","weatherCode","wind","gust"],"additionalProperties":false},"today":{"type":"object","properties":{"date":{"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])))$"},"high":{"type":["number","null"]},"low":{"type":["number","null"]},"yesterdayHigh":{"type":["number","null"]},"sunriseAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"sunsetAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["date","high","low","yesterdayHigh","sunriseAt","sunsetAt"],"additionalProperties":false},"nextHours":{"maxItems":25,"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"localTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"temperature":{"type":["number","null"]},"precipitationProbabilityPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"precipitation":{"type":["number","null"]},"precipitationWindow":{"type":"object","properties":{"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["startsAt","endsAt"],"additionalProperties":false},"weatherCode":{"anyOf":[{"type":"integer","minimum":0,"maximum":99},{"type":"null"}]},"condition":{"type":"string","enum":["clear","cloudy","rain","snow","thunderstorm","fog","unknown"]},"wind":{"type":["number","null"]}},"required":["at","localTime","temperature","precipitationProbabilityPercent","precipitation","precipitationWindow","weatherCode","condition","wind"],"additionalProperties":false}}},"required":["version","provider","attribution","generatedAt","dataUpdatedAt","stale","timezone","units","labels","precision","band","current","today","nextHours"],"additionalProperties":false},"cache":{"type":"object","properties":{"status":{"type":"string","enum":["fresh","stale"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"staleUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["status","fetchedAt","expiresAt","staleUntil"],"additionalProperties":false}},"required":["location","forecast","cache"],"additionalProperties":false},"AchievementsResponseDto":{"type":"object","properties":{"policyVersion":{"type":"string"},"metric":{"type":"string","const":"single_activity_distance"},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"earnedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"ledgerSummary":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"processingAllowed":{"type":"boolean"},"earnedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"revokedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestAchievement":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["earned","revoked"]},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"awardedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"evidence":{"type":"object","properties":{"criteriaVersion":{"type":"string","enum":["single-activity-distance-1","training-plan-completion-1"]},"activityIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sessionCount":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["criteriaVersion","activityIds","enrollmentId","sessionCount"]},"achievement":{"type":"object","properties":{"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":["string","null"]},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"sha256":{"type":"string"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900}},"required":["id","key","sha256","width","height","imageUrl","expiresIn"]}},"required":["achievementId","code","version","name","description","sport","metric","targetValue","planId","asset"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","achievementId","state","earnedAt","awardedAt","revokedAt","activityId","enrollmentId","evidence","achievement","revision","updatedAt"]},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["earned","revoked"]},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"awardedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"evidence":{"type":"object","properties":{"criteriaVersion":{"type":"string","enum":["single-activity-distance-1","training-plan-completion-1"]},"activityIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sessionCount":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["criteriaVersion","activityIds","enrollmentId","sessionCount"]},"achievement":{"type":"object","properties":{"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":["string","null"]},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"sha256":{"type":"string"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900}},"required":["id","key","sha256","width","height","imageUrl","expiresIn"]}},"required":["achievementId","code","version","name","description","sport","metric","targetValue","planId","asset"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","achievementId","state","earnedAt","awardedAt","revokedAt","activityId","enrollmentId","evidence","achievement","revision","updatedAt"]}},"hasMore":{"type":"boolean"}},"required":["asOf","processingAllowed","earnedCount","revokedCount","latestAchievement","items","hasMore"]},"latestAchievement":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},"distanceM":{"type":"number","exclusiveMinimum":0},"stage":{"type":"integer","minimum":0,"maximum":9007199254740991},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","sport","distanceM","stage","earnedAt"]},{"type":"null"}]},"modalities":{"type":"array","items":{"type":"object","properties":{"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},"best":{"anyOf":[{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"achievedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["distanceM","activityId","achievedAt"]},{"type":"null"}]},"eligibleActivities":{"type":"integer","minimum":0,"maximum":9007199254740991},"earnedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"nextCode":{"type":["string","null"]},"achievements":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},"distanceM":{"type":"number","exclusiveMinimum":0},"stage":{"type":"integer","minimum":0,"maximum":9007199254740991},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"state":{"type":"string","enum":["earned","locked"]},"earnedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"progress":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"remainingDistanceM":{"type":"number","minimum":0}},"required":["code","sport","distanceM","stage","state","earnedAt","activityId","progress","remainingDistanceM"]}}},"required":["sport","best","eligibleActivities","earnedCount","totalCount","nextCode","achievements"]}}},"required":["policyVersion","metric","asOf","earnedCount","totalCount","latestAchievement","modalities"]},"AchievementHistoryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"awardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"event":{"type":"string","enum":["earned","revoked","restored","support_updated"]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reason":{"type":"string"},"evidence":{"type":"object","properties":{"criteriaVersion":{"type":"string","enum":["single-activity-distance-1","training-plan-completion-1"]},"activityIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sessionCount":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["criteriaVersion","activityIds","enrollmentId","sessionCount"]},"achievement":{"type":"object","properties":{"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":["string","null"]},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"sha256":{"type":"string"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900}},"required":["id","key","sha256","width","height","imageUrl","expiresIn"]}},"required":["achievementId","code","version","name","description","sport","metric","targetValue","planId","asset"]}},"required":["id","awardId","event","occurredAt","reason","evidence","achievement"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AchievementAwardDetailResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["earned","revoked"]},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"awardedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"evidence":{"type":"object","properties":{"criteriaVersion":{"type":"string","enum":["single-activity-distance-1","training-plan-completion-1"]},"activityIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sessionCount":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["criteriaVersion","activityIds","enrollmentId","sessionCount"]},"achievement":{"type":"object","properties":{"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":["string","null"]},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"sha256":{"type":"string"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900}},"required":["id","key","sha256","width","height","imageUrl","expiresIn"]}},"required":["achievementId","code","version","name","description","sport","metric","targetValue","planId","asset"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"awardId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"event":{"type":"string","enum":["earned","revoked","restored","support_updated"]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reason":{"type":"string"},"evidence":{"type":"object","properties":{"criteriaVersion":{"type":"string","enum":["single-activity-distance-1","training-plan-completion-1"]},"activityIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"enrollmentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sessionCount":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["criteriaVersion","activityIds","enrollmentId","sessionCount"]},"achievement":{"type":"object","properties":{"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":["string","null"]},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"asset":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"sha256":{"type":"string"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900}},"required":["id","key","sha256","width","height","imageUrl","expiresIn"]}},"required":["achievementId","code","version","name","description","sport","metric","targetValue","planId","asset"]}},"required":["id","awardId","event","occurredAt","reason","evidence","achievement"]}},"nextEventsCursor":{"type":"array","items":{"type":"string"}}},"required":["id","achievementId","state","earnedAt","awardedAt","revokedAt","activityId","enrollmentId","evidence","achievement","revision","updatedAt","events","nextEventsCursor"]},"AchievementCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:[-:._][a-z0-9]+)*$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"type":"boolean"},"published":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["code","version","name","description","metric","sport","targetValue","planId","assetId","objective","enabled","published","id","imageUrl","imageExpiresIn","imageWidth","imageHeight"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"AchievementDefinitionDto":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:[-:._][a-z0-9]+)*$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"type":"boolean"},"published":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["code","version","name","description","metric","sport","targetValue","planId","assetId","objective","enabled","published","id","imageUrl","imageExpiresIn","imageWidth","imageHeight"],"additionalProperties":false},"AdminAchievementCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:[-:._][a-z0-9]+)*$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"type":"boolean"},"published":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["code","version","name","description","metric","sport","targetValue","planId","assetId","objective","enabled","published","id","imageUrl","imageExpiresIn","imageWidth","imageHeight","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"AdminAchievementDefinitionDto":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:[-:._][a-z0-9]+)*$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"type":"boolean"},"published":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["code","version","name","description","metric","sport","targetValue","planId","assetId","objective","enabled","published","id","imageUrl","imageExpiresIn","imageWidth","imageHeight","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false},"CreateAchievementDefinitionDto":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:[-:._][a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"published":{"default":false,"type":"boolean"}},"required":["code","name","description","metric","sport","targetValue","planId","assetId","objective"],"additionalProperties":false},"ReplaceAchievementDefinitionDto":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:[-:._][a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"published":{"default":false,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["code","name","description","metric","sport","targetValue","planId","assetId","objective","expectedRevision"],"additionalProperties":false},"PatchAchievementDefinitionDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":10000},"metric":{"type":"string","enum":["single_activity_distance","training_plan_completion"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},{"type":"null"}]},"targetValue":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"planId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"objective":{"anyOf":[{"type":"string","const":"all_sessions_with_eligible_activity"},{"type":"null"}]},"enabled":{"type":"boolean"},"published":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"AchievementAssetsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[a-zA-Z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"originalUrl":{"type":"string","format":"uri"},"originalExpiresIn":{"type":"number","const":900},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","key","name","source","enabled","revision","imageUrl","imageExpiresIn","originalUrl","originalExpiresIn","sha256","width","height","bytes","createdAt","updatedAt","deletedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"AchievementAssetDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[a-zA-Z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"originalUrl":{"type":"string","format":"uri"},"originalExpiresIn":{"type":"number","const":900},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","key","name","source","enabled","revision","imageUrl","imageExpiresIn","originalUrl","originalExpiresIn","sha256","width","height","bytes","createdAt","updatedAt","deletedAt"],"additionalProperties":false},"PatchAchievementAssetDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"source":{"type":"object","properties":{"provider":{"type":"string","enum":["figma","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[a-zA-Z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"ModalityImageCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]},"cardUrl":{"type":"string","format":"uri"},"fullScreenUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["key","cardUrl","fullScreenUrl","expiresIn"],"additionalProperties":false}}},"required":["items"]},"AdminModalityImageCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]},"cardUrl":{"type":"string","format":"uri"},"fullScreenUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["key","cardUrl","fullScreenUrl","expiresIn","enabled","revision","createdAt","updatedAt"],"additionalProperties":false}}},"required":["items"]},"AdminModalityImageDto":{"type":"object","properties":{"key":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]},"cardUrl":{"type":"string","format":"uri"},"fullScreenUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["key","cardUrl","fullScreenUrl","expiresIn","enabled","revision","createdAt","updatedAt"],"additionalProperties":false},"ModalityImagePatchDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["enabled","expectedRevision"],"additionalProperties":false},"ExplanationResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["ready","partial","insufficient_data","not_completed"]},"facts":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["duration","distance","pace","heart_rate","energy"]},"metric":{"type":"string"},"value":{"type":"number","minimum":0},"unit":{"type":"string","enum":["seconds","metres","seconds_per_km","bpm","kcal"]},"source":{"type":"string","enum":["activity_timing","gps","gpx_import","pool_lengths","healthkit","received_samples","connected_device_report"]},"estimated":{"type":"boolean"},"period":{"type":"object","properties":{"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startsAt","endsAt"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"coverageSeconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["id","metric","value","unit","source","estimated","period","updatedAt","coverageSeconds"],"additionalProperties":false}},"limitations":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"comparison":{"type":"null"},"comparisonReason":{"type":"string","const":"no_comparison_used"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"locale":{"type":"string","enum":["en-GB","pt-PT"]},"content":{"type":"object","properties":{"mode":{"type":"string","enum":["deterministic","model_assisted"]},"title":{"type":"string"},"statements":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"factIds":{"minItems":1,"type":"array","items":{"type":"string","enum":["duration","distance","pace","heart_rate","energy"]}},"kind":{"type":"string","enum":["recorded","estimate"]}},"required":["text","factIds","kind"],"additionalProperties":false}}},"required":["mode","title","statements"],"additionalProperties":false},"versions":{"type":"object","properties":{"rules":{"type":"string"},"evidence":{"type":"string"},"contentPolicy":{"type":"string"},"model":{"type":["string","null"]}},"required":["rules","evidence","contentPolicy","model"],"additionalProperties":false},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"generation":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["not_requested","pending","processing","complete","failed","cancelled"]},"reason":{"type":["string","null"]},"retryAllowed":{"type":"boolean"},"nextRetryAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","status","reason","retryAllowed","nextRetryAt"],"additionalProperties":false},"feedback":{"anyOf":[{"type":"object","properties":{"helpfulness":{"anyOf":[{"type":"string","enum":["helpful","not_helpful"]},{"type":"null"}]},"inappropriate":{"type":"boolean"},"reasonCode":{"anyOf":[{"type":"string","enum":["factual_error","medical_claim","offensive","other"]},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["helpfulness","inappropriate","reasonCode","updatedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["status","facts","limitations","sourceUpdatedAt","comparison","comparisonReason","activityId","revisionId","locale","content","versions","generatedAt","generation","feedback"],"additionalProperties":false},"ExplanationGenerationDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locale":{"default":"en-GB","type":"string","enum":["en-GB","pt-PT"]}},"required":["clientId","expectedRevisionId"],"additionalProperties":false},"ExplanationFeedbackDto":{"type":"object","properties":{"helpfulness":{"anyOf":[{"type":"string","enum":["helpful","not_helpful"]},{"type":"null"}]},"inappropriate":{"type":"boolean"},"reasonCode":{"anyOf":[{"type":"string","enum":["factual_error","medical_claim","offensive","other"]},{"type":"null"}]}},"required":["helpfulness","inappropriate","reasonCode"],"additionalProperties":false},"ExplanationFeedbackResponseDto":{"type":"object","properties":{"helpfulness":{"anyOf":[{"type":"string","enum":["helpful","not_helpful"]},{"type":"null"}]},"inappropriate":{"type":"boolean"},"reasonCode":{"anyOf":[{"type":"string","enum":["factual_error","medical_claim","offensive","other"]},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["helpfulness","inappropriate","reasonCode","updatedAt"],"additionalProperties":false},"ExplanationPreferencesResponseDto":{"type":"object","properties":{"modelAssistanceEnabled":{"type":"boolean"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"policyVersion":{"type":"array","items":{"type":"string"}},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"modelAvailable":{"type":"boolean"},"policy":{"type":"object","properties":{"version":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"}},"required":["version","title","body"],"additionalProperties":false}},"required":["modelAssistanceEnabled","version","policyVersion","acceptedAt","updatedAt","modelAvailable","policy"],"additionalProperties":false},"ExplanationPreferencesDto":{"type":"object","properties":{"modelAssistanceEnabled":{"type":"boolean"},"policyVersion":{"type":"string","minLength":1,"maxLength":40}},"required":["modelAssistanceEnabled","policyVersion"],"additionalProperties":false},"ExplanationReportsResponseDto":{"type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reasonCode":{"type":"string","enum":["factual_error","medical_claim","offensive","other"]},"reviewStatus":{"type":"string","const":"pending"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"rulesVersion":{"type":"string"},"contentPolicyVersion":{"type":"string"},"model":{"type":["string","null"]}},"required":["revisionId","reasonCode","reviewStatus","updatedAt","rulesVersion","contentPolicyVersion","model"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"ExplanationReviewDto":{"type":"object","properties":{"decision":{"type":"string","enum":["dismissed","confirmed"]}},"required":["decision"],"additionalProperties":false},"ExplanationReviewResponseDto":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"decision":{"type":"string","enum":["dismissed","confirmed"]}},"required":["revisionId","decision"],"additionalProperties":false},"RecordingMetadataResponseDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientActivityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recorder":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]},"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["instanceId","kind","contextId"],"additionalProperties":false},{"type":"null"}]},"goal":{"anyOf":[{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"duration"},"durationSeconds":{"type":"integer","minimum":1,"maximum":604800}},"required":["kind","durationSeconds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"distance"},"distanceM":{"type":"number","minimum":1,"maximum":1000000}},"required":["kind","distanceM"],"additionalProperties":false}]},{"type":"null"}]},"goalProgress":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"},"status":{"type":"string","const":"not_applicable"}},"required":["kind","status"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["duration","distance"]},"unit":{"type":"string","enum":["seconds","metres"]},"status":{"type":"string","enum":["measured","unavailable"]},"target":{"type":"number","exclusiveMinimum":0},"achieved":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"remaining":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"reached":{"type":["boolean","null"]}},"required":["kind","unit","status","target","achieved","remaining","reached"],"additionalProperties":false}]},{"type":"null"}]}},"required":["activityId","clientActivityId","recorder","goal","goalProgress"],"additionalProperties":false},"RecordedActivityResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"state":{"type":"string","enum":["recording","paused","completed","discarded"]},"privacy":{"type":"string","enum":["private","followers","public"]},"source":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"stateChangedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"poolLengthM":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","properties":{"distanceM":{"type":["number","null"]},"distanceSource":{"type":"string","enum":["gps","gpx_import","pool_lengths","healthkit","unavailable"]},"durationS":{"type":"number"},"elevationGainM":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"swimLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"averageSwolf":{"type":["number","null"]},"gpsSegmentsRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"type":["number","null"]},"energySource":{"anyOf":[{"type":"string","enum":["device","estimated"]},{"type":"null"}]},"summaryVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"elapsedS":{"type":"number"},"pausedDurationS":{"type":"number"},"movingDurationS":{"type":["number","null"]},"averageMovingSpeedMps":{"type":["number","null"]},"maximumSpeedMps":{"type":["number","null"]},"averagePaceSecondsPerKm":{"type":["number","null"]},"averageMovingPaceSecondsPerKm":{"type":["number","null"]},"bestPaceSecondsPerKm":{"type":["number","null"]},"elevationLossM":{"type":["number","null"]},"minimumElevationM":{"type":["number","null"]},"maximumElevationM":{"type":["number","null"]},"elevationSource":{"anyOf":[{"type":"string","enum":["barometric","gps","gpx_import"]},{"type":"null"}]},"averageGradePercent":{"type":["number","null"]},"maximumGradePercent":{"type":["number","null"]},"minimumGradePercent":{"type":["number","null"]},"climbingDurationS":{"type":["number","null"]},"vamMetresPerHour":{"type":["number","null"]},"averageCadence":{"type":["number","null"]},"maximumCadence":{"type":["number","null"]},"totalSteps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"averagePowerW":{"type":["number","null"]},"maximumPowerW":{"type":["number","null"]},"energyEstimatedKcal":{"type":["number","null"]},"effort":{"anyOf":[{"type":"object","properties":{"score":{"type":["number","null"]},"method":{"anyOf":[{"type":"string","enum":["heart_rate_zones","metabolic_estimate"]},{"type":"null"}]},"heartRateCoveragePercent":{"type":["number","null"]}},"required":["score","method","heartRateCoveragePercent"],"additionalProperties":false},{"type":"null"}]},"splits":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceM":{"type":"number"},"durationS":{"type":"number"},"movingDurationS":{"type":"number"},"paceSecondsPerKm":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"elevationGainM":{"type":["number","null"]},"elevationLossM":{"type":["number","null"]},"averageGradePercent":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageCadence":{"type":["number","null"]},"averagePowerW":{"type":["number","null"]},"complete":{"type":"boolean"}},"required":["index","distanceM","durationS","movingDurationS","paceSecondsPerKm","averageSpeedMps","elevationGainM","elevationLossM","averageGradePercent","averageHeartRate","maximumHeartRate","averageCadence","averagePowerW","complete"],"additionalProperties":false}},"mileSplits":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceM":{"type":"number"},"durationS":{"type":"number"},"movingDurationS":{"type":"number"},"paceSecondsPerKm":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"elevationGainM":{"type":["number","null"]},"elevationLossM":{"type":["number","null"]},"averageGradePercent":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageCadence":{"type":["number","null"]},"averagePowerW":{"type":["number","null"]},"complete":{"type":"boolean"}},"required":["index","distanceM","durationS","movingDurationS","paceSecondsPerKm","averageSpeedMps","elevationGainM","elevationLossM","averageGradePercent","averageHeartRate","maximumHeartRate","averageCadence","averagePowerW","complete"],"additionalProperties":false}},"sources":{"type":"object","properties":{"position":{"anyOf":[{"type":"string","enum":["gps","gpx_import"]},{"type":"null"}]},"elevation":{"anyOf":[{"type":"string","enum":["barometric","gps","gpx_import"]},{"type":"null"}]},"heartRate":{"anyOf":[{"type":"string","const":"ble_heart_rate"},{"type":"null"}]},"cadence":{"anyOf":[{"type":"string","enum":["pedometer","sensor"]},{"type":"null"}]},"power":{"anyOf":[{"type":"string","const":"sensor"},{"type":"null"}]},"speed":{"anyOf":[{"type":"string","const":"gps"},{"type":"null"}]},"energy":{"anyOf":[{"type":"string","enum":["device","estimated"]},{"type":"null"}]}},"required":["position","elevation","heartRate","cadence","power","speed","energy"],"additionalProperties":false},"swim":{"anyOf":[{"type":"object","properties":{"lengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timedLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"movingTimeS":{"type":["number","null"]},"averagePacePer100mS":{"type":["number","null"]},"bestLengthS":{"type":["number","null"]},"restTimeS":{"type":["number","null"]},"swimIntervals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"repetitionsCompleted":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lengthSource":{"anyOf":[{"type":"string","enum":["manual","manual_split","interval_timer","apple_watch","mixed"]},{"type":"null"}]},"strokeLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plan":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["free","distance","duration","intervals"]},"targetLengths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetDurationS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repetitions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repetitionLengths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"restS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sendOffS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["kind","targetLengths","targetDurationS","repetitions","repetitionLengths","restS","sendOffS"],"additionalProperties":false},{"type":"null"}]},"targetReached":{"type":["boolean","null"]}},"required":["lengths","timedLengths","movingTimeS","averagePacePer100mS","bestLengthS","restTimeS","swimIntervals","repetitionsCompleted","lengthSource","strokeLengths","plan","targetReached"],"additionalProperties":false},{"type":"null"}]}},"required":["distanceM","distanceSource","durationS","elevationGainM","averageHeartRate","maximumHeartRate","averageSpeedMps","sampleCount","swimLengths","averageSwolf","gpsSegmentsRejected","energyKcal","energySource"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"clientActivityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recorder":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]},"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["instanceId","kind","contextId"],"additionalProperties":false},{"type":"null"}]},"goal":{"anyOf":[{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"duration"},"durationSeconds":{"type":"integer","minimum":1,"maximum":604800}},"required":["kind","durationSeconds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"distance"},"distanceM":{"type":"number","minimum":1,"maximum":1000000}},"required":["kind","distanceM"],"additionalProperties":false}]},{"type":"null"}]},"goalProgress":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"},"status":{"type":"string","const":"not_applicable"}},"required":["kind","status"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["duration","distance"]},"unit":{"type":"string","enum":["seconds","metres"]},"status":{"type":"string","enum":["measured","unavailable"]},"target":{"type":"number","exclusiveMinimum":0},"achieved":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"remaining":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"reached":{"type":["boolean","null"]}},"required":["kind","unit","status","target","achieved","remaining","reached"],"additionalProperties":false}]},{"type":"null"}]},"plannedRoute":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","revisionId"],"additionalProperties":false},{"type":"null"}]},"plannedRouteUnavailable":{"type":"boolean"}},"required":["id","sport","title","notes","state","privacy","source","startedAt","stateChangedAt","pausedAt","pausedDurationMs","endedAt","poolLengthM","summary","createdAt","updatedAt","clientActivityId","recorder","goal","goalProgress"],"additionalProperties":false},"RecordingContextsResponseDto":{"type":"object","properties":{"items":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991},"phase":{"type":"string","enum":["idle","reserved","active"]},"clientActivityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recorder":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]}},"required":["instanceId","kind"],"additionalProperties":false},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["contextId","version","generation","phase","clientActivityId","recorder","activityId","updatedAt"],"additionalProperties":false}},"limit":{"type":"number","const":32}},"required":["items","limit"],"additionalProperties":false},"RecordingContextResponseDto":{"type":"object","properties":{"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991},"phase":{"type":"string","enum":["idle","reserved","active"]},"clientActivityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recorder":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]}},"required":["instanceId","kind"],"additionalProperties":false},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["contextId","version","generation","phase","clientActivityId","recorder","activityId","updatedAt"],"additionalProperties":false},"ReserveRecordingDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"clientActivityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recorderInstanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recorderKind":{"type":"string","enum":["phone","watch"]}},"required":["commandId","expectedVersion","clientActivityId","recorderInstanceId","recorderKind"],"additionalProperties":false},"RecordingCommandResponseDto":{"type":"object","properties":{"context":{"type":"object","properties":{"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991},"phase":{"type":"string","enum":["idle","reserved","active"]},"clientActivityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recorder":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]}},"required":["instanceId","kind"],"additionalProperties":false},{"type":"null"}]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["contextId","version","generation","phase","clientActivityId","recorder","activityId","updatedAt"],"additionalProperties":false},"activity":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"notes":{"type":["string","null"]},"state":{"type":"string","enum":["recording","paused","completed","discarded"]},"privacy":{"type":"string","enum":["private","followers","public"]},"source":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"stateChangedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"poolLengthM":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"summary":{"anyOf":[{"type":"object","properties":{"distanceM":{"type":["number","null"]},"distanceSource":{"type":"string","enum":["gps","gpx_import","pool_lengths","healthkit","unavailable"]},"durationS":{"type":"number"},"elevationGainM":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"swimLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"averageSwolf":{"type":["number","null"]},"gpsSegmentsRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"type":["number","null"]},"energySource":{"anyOf":[{"type":"string","enum":["device","estimated"]},{"type":"null"}]},"summaryVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"elapsedS":{"type":"number"},"pausedDurationS":{"type":"number"},"movingDurationS":{"type":["number","null"]},"averageMovingSpeedMps":{"type":["number","null"]},"maximumSpeedMps":{"type":["number","null"]},"averagePaceSecondsPerKm":{"type":["number","null"]},"averageMovingPaceSecondsPerKm":{"type":["number","null"]},"bestPaceSecondsPerKm":{"type":["number","null"]},"elevationLossM":{"type":["number","null"]},"minimumElevationM":{"type":["number","null"]},"maximumElevationM":{"type":["number","null"]},"elevationSource":{"anyOf":[{"type":"string","enum":["barometric","gps","gpx_import"]},{"type":"null"}]},"averageGradePercent":{"type":["number","null"]},"maximumGradePercent":{"type":["number","null"]},"minimumGradePercent":{"type":["number","null"]},"climbingDurationS":{"type":["number","null"]},"vamMetresPerHour":{"type":["number","null"]},"averageCadence":{"type":["number","null"]},"maximumCadence":{"type":["number","null"]},"totalSteps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"averagePowerW":{"type":["number","null"]},"maximumPowerW":{"type":["number","null"]},"energyEstimatedKcal":{"type":["number","null"]},"effort":{"anyOf":[{"type":"object","properties":{"score":{"type":["number","null"]},"method":{"anyOf":[{"type":"string","enum":["heart_rate_zones","metabolic_estimate"]},{"type":"null"}]},"heartRateCoveragePercent":{"type":["number","null"]}},"required":["score","method","heartRateCoveragePercent"],"additionalProperties":false},{"type":"null"}]},"splits":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceM":{"type":"number"},"durationS":{"type":"number"},"movingDurationS":{"type":"number"},"paceSecondsPerKm":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"elevationGainM":{"type":["number","null"]},"elevationLossM":{"type":["number","null"]},"averageGradePercent":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageCadence":{"type":["number","null"]},"averagePowerW":{"type":["number","null"]},"complete":{"type":"boolean"}},"required":["index","distanceM","durationS","movingDurationS","paceSecondsPerKm","averageSpeedMps","elevationGainM","elevationLossM","averageGradePercent","averageHeartRate","maximumHeartRate","averageCadence","averagePowerW","complete"],"additionalProperties":false}},"mileSplits":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"distanceM":{"type":"number"},"durationS":{"type":"number"},"movingDurationS":{"type":"number"},"paceSecondsPerKm":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"elevationGainM":{"type":["number","null"]},"elevationLossM":{"type":["number","null"]},"averageGradePercent":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"maximumHeartRate":{"type":["number","null"]},"averageCadence":{"type":["number","null"]},"averagePowerW":{"type":["number","null"]},"complete":{"type":"boolean"}},"required":["index","distanceM","durationS","movingDurationS","paceSecondsPerKm","averageSpeedMps","elevationGainM","elevationLossM","averageGradePercent","averageHeartRate","maximumHeartRate","averageCadence","averagePowerW","complete"],"additionalProperties":false}},"sources":{"type":"object","properties":{"position":{"anyOf":[{"type":"string","enum":["gps","gpx_import"]},{"type":"null"}]},"elevation":{"anyOf":[{"type":"string","enum":["barometric","gps","gpx_import"]},{"type":"null"}]},"heartRate":{"anyOf":[{"type":"string","const":"ble_heart_rate"},{"type":"null"}]},"cadence":{"anyOf":[{"type":"string","enum":["pedometer","sensor"]},{"type":"null"}]},"power":{"anyOf":[{"type":"string","const":"sensor"},{"type":"null"}]},"speed":{"anyOf":[{"type":"string","const":"gps"},{"type":"null"}]},"energy":{"anyOf":[{"type":"string","enum":["device","estimated"]},{"type":"null"}]}},"required":["position","elevation","heartRate","cadence","power","speed","energy"],"additionalProperties":false},"swim":{"anyOf":[{"type":"object","properties":{"lengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timedLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"movingTimeS":{"type":["number","null"]},"averagePacePer100mS":{"type":["number","null"]},"bestLengthS":{"type":["number","null"]},"restTimeS":{"type":["number","null"]},"swimIntervals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"repetitionsCompleted":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lengthSource":{"anyOf":[{"type":"string","enum":["manual","manual_split","interval_timer","apple_watch","mixed"]},{"type":"null"}]},"strokeLengths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plan":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["free","distance","duration","intervals"]},"targetLengths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetDurationS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repetitions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repetitionLengths":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"restS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sendOffS":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["kind","targetLengths","targetDurationS","repetitions","repetitionLengths","restS","sendOffS"],"additionalProperties":false},{"type":"null"}]},"targetReached":{"type":["boolean","null"]}},"required":["lengths","timedLengths","movingTimeS","averagePacePer100mS","bestLengthS","restTimeS","swimIntervals","repetitionsCompleted","lengthSource","strokeLengths","plan","targetReached"],"additionalProperties":false},{"type":"null"}]}},"required":["distanceM","distanceSource","durationS","elevationGainM","averageHeartRate","maximumHeartRate","averageSpeedMps","sampleCount","swimLengths","averageSwolf","gpsSegmentsRejected","energyKcal","energySource"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"clientActivityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recorder":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]},"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["instanceId","kind","contextId"],"additionalProperties":false},{"type":"null"}]},"goal":{"anyOf":[{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"duration"},"durationSeconds":{"type":"integer","minimum":1,"maximum":604800}},"required":["kind","durationSeconds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"distance"},"distanceM":{"type":"number","minimum":1,"maximum":1000000}},"required":["kind","distanceM"],"additionalProperties":false}]},{"type":"null"}]},"goalProgress":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"},"status":{"type":"string","const":"not_applicable"}},"required":["kind","status"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["duration","distance"]},"unit":{"type":"string","enum":["seconds","metres"]},"status":{"type":"string","enum":["measured","unavailable"]},"target":{"type":"number","exclusiveMinimum":0},"achieved":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"remaining":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"reached":{"type":["boolean","null"]}},"required":["kind","unit","status","target","achieved","remaining","reached"],"additionalProperties":false}]},{"type":"null"}]},"plannedRoute":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","revisionId"],"additionalProperties":false},{"type":"null"}]},"plannedRouteUnavailable":{"type":"boolean"}},"required":["id","sport","title","notes","state","privacy","source","startedAt","stateChangedAt","pausedAt","pausedDurationMs","endedAt","poolLengthM","summary","createdAt","updatedAt","clientActivityId","recorder","goal","goalProgress"],"additionalProperties":false}},"required":["context"],"additionalProperties":false},"ConfirmRecordingDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedGeneration":{"type":"integer","minimum":1,"maximum":2147483646},"collectionConfirmed":{"type":"boolean","const":true},"activity":{"type":"object","properties":{"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":"string","minLength":1,"maxLength":150},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"privacy":{"default":"private","type":"string","enum":["private","followers","public"]},"poolLengthM":{"anyOf":[{"type":"number","const":25},{"type":"number","const":33},{"type":"number","const":50}]},"plannedRoute":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","revisionId"],"additionalProperties":false},"clientActivityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recorder":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["phone","watch"]},"contextId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["instanceId","kind","contextId"],"additionalProperties":false},"goal":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"free"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"duration"},"durationSeconds":{"type":"integer","minimum":1,"maximum":604800}},"required":["kind","durationSeconds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"distance"},"distanceM":{"type":"number","minimum":1,"maximum":1000000}},"required":["kind","distanceM"],"additionalProperties":false}]}},"required":["sport","startedAt"],"additionalProperties":false}},"required":["commandId","expectedVersion","expectedGeneration","collectionConfirmed","activity"],"additionalProperties":false},"CancelRecordingDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedGeneration":{"type":"integer","minimum":1,"maximum":2147483646}},"required":["commandId","expectedVersion","expectedGeneration"],"additionalProperties":false},"ResolveRecordingDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","minimum":0,"maximum":2147483646},"expectedGeneration":{"type":"integer","minimum":1,"maximum":2147483646},"reason":{"type":"string","enum":["recorder_unreachable","abandon_context"]}},"required":["commandId","expectedVersion","expectedGeneration","reason"],"additionalProperties":false},"RouteSearchResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"category":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"distanceM":{"type":["number","null"]},"sourceDate":{"type":"string"}},"required":["id","name","label","category","latitude","longitude","distanceM","sourceDate"],"additionalProperties":false}},"attribution":{"type":"object","properties":{"text":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["text","url"],"additionalProperties":false},"coverage":{"type":"string","const":"imported_openstreetmap_places"}},"required":["items","attribution","coverage"],"additionalProperties":false},"RoutePreviewDto":{"type":"object","properties":{"mode":{"default":"tap","type":"string","enum":["tap","draw"]},"coordinates":{"minItems":2,"maxItems":2000,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2}},"snap":{"default":false,"type":"boolean"},"operation":{"default":"none","type":"string","enum":["none","reverse","out_and_back","close_loop"]},"origin":{"default":"manual","type":"string","enum":["manual","device_location"]},"sport":{"default":"running","type":"string","enum":["running","walking","cycling"]}},"required":["coordinates"],"additionalProperties":false},"RoutePreviewResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","walking","cycling"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"geometry":{"type":"object","properties":{"segments":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["road","straight"]},"coordinates":{"minItems":2,"maxItems":20000,"type":"array","items":{"anyOf":[{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2},{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-12000,"maximum":10000}],"items":false,"minItems":3,"maxItems":3}]}},"surface":{"type":"string","enum":["paved","path","unknown"]},"surfaceRanges":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"surface":{"type":"string","enum":["paved","path","unknown"]}},"required":["startPointIndex","endPointIndex","surface"],"additionalProperties":false}}},"required":["kind","coordinates","surface"],"additionalProperties":false}},"instructions":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":100},"text":{"type":"string","maxLength":1000},"name":{"type":"string","maxLength":500},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["segmentIndex","startPointIndex","endPointIndex","type","text","distanceM","durationS"],"additionalProperties":false}},"summary":{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"descentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"estimatedDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"maxGradientPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"elevationProfile":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"distanceM":{"type":"number","minimum":0},"elevationM":{"type":"number"}},"required":["distanceM","elevationM"],"additionalProperties":false}},"elevationMethod":{"anyOf":[{"type":"object","properties":{"sampleDistanceM":{"type":"number","exclusiveMinimum":0},"smoothingWindowSamples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"gradientMinDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbAscentM":{"type":"number","exclusiveMinimum":0}},"required":["sampleDistanceM","smoothingWindowSamples","gradientMinDistanceM","minClimbDistanceM","minClimbAscentM"],"additionalProperties":false},{"type":"null"}]},"climbs":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"startDistanceM":{"type":"number","minimum":0},"endDistanceM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"type":"number","exclusiveMinimum":0},"averageGradientPercent":{"type":"number","exclusiveMinimum":0},"maxGradientPercent":{"type":"number","exclusiveMinimum":0}},"required":["startDistanceM","endDistanceM","distanceM","ascentM","averageGradientPercent","maxGradientPercent"],"additionalProperties":false}},"surface":{"type":"object","properties":{"pavedPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"pathPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"unknownPercent":{"type":"number","minimum":0,"maximum":100}},"required":["pavedPercent","pathPercent","unknownPercent"],"additionalProperties":false}},"required":["distanceM","ascentM","descentM","estimatedDurationS","maxGradientPercent","elevationProfile","elevationMethod","climbs","surface"],"additionalProperties":false},"bbox":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":4,"maxItems":4},"source":{"type":"string","enum":["manual","openrouteservice"]},"warnings":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":200}},"attribution":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"}},"required":["text","url"],"additionalProperties":false}},"provenance":{"type":"object","properties":{"engineVersion":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"graphDate":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"license":{"anyOf":[{"type":"string","maxLength":2000,"format":"uri"},{"type":"null"}]}},"required":["engineVersion","graphDate","license"],"additionalProperties":false}},"required":["segments","instructions","summary","bbox","source","warnings","attribution","provenance"],"additionalProperties":false}},"required":["id","sport","expiresAt","geometry"],"additionalProperties":false},"RouteSuggestDto":{"type":"object","properties":{"start":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2},"origin":{"default":"device_location","type":"string","enum":["manual","device_location"]},"sport":{"default":"running","type":"string","enum":["running","walking","cycling"]},"distanceKm":{"type":"number","minimum":3,"maximum":21},"direction":{"default":"any","type":"string","enum":["any","north","east","south","west"]},"surface":{"default":"any","type":"string","enum":["any","paved","off_road"]},"seed":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["start","distanceKm"],"additionalProperties":false},"RouteSuggestionsResponse":{"type":"object","properties":{"items":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","walking","cycling"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"geometry":{"type":"object","properties":{"segments":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["road","straight"]},"coordinates":{"minItems":2,"maxItems":20000,"type":"array","items":{"anyOf":[{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2},{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-12000,"maximum":10000}],"items":false,"minItems":3,"maxItems":3}]}},"surface":{"type":"string","enum":["paved","path","unknown"]},"surfaceRanges":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"surface":{"type":"string","enum":["paved","path","unknown"]}},"required":["startPointIndex","endPointIndex","surface"],"additionalProperties":false}}},"required":["kind","coordinates","surface"],"additionalProperties":false}},"instructions":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":100},"text":{"type":"string","maxLength":1000},"name":{"type":"string","maxLength":500},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["segmentIndex","startPointIndex","endPointIndex","type","text","distanceM","durationS"],"additionalProperties":false}},"summary":{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"descentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"estimatedDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"maxGradientPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"elevationProfile":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"distanceM":{"type":"number","minimum":0},"elevationM":{"type":"number"}},"required":["distanceM","elevationM"],"additionalProperties":false}},"elevationMethod":{"anyOf":[{"type":"object","properties":{"sampleDistanceM":{"type":"number","exclusiveMinimum":0},"smoothingWindowSamples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"gradientMinDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbAscentM":{"type":"number","exclusiveMinimum":0}},"required":["sampleDistanceM","smoothingWindowSamples","gradientMinDistanceM","minClimbDistanceM","minClimbAscentM"],"additionalProperties":false},{"type":"null"}]},"climbs":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"startDistanceM":{"type":"number","minimum":0},"endDistanceM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"type":"number","exclusiveMinimum":0},"averageGradientPercent":{"type":"number","exclusiveMinimum":0},"maxGradientPercent":{"type":"number","exclusiveMinimum":0}},"required":["startDistanceM","endDistanceM","distanceM","ascentM","averageGradientPercent","maxGradientPercent"],"additionalProperties":false}},"surface":{"type":"object","properties":{"pavedPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"pathPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"unknownPercent":{"type":"number","minimum":0,"maximum":100}},"required":["pavedPercent","pathPercent","unknownPercent"],"additionalProperties":false}},"required":["distanceM","ascentM","descentM","estimatedDurationS","maxGradientPercent","elevationProfile","elevationMethod","climbs","surface"],"additionalProperties":false},"bbox":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":4,"maxItems":4},"source":{"type":"string","enum":["manual","openrouteservice"]},"warnings":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":200}},"attribution":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"}},"required":["text","url"],"additionalProperties":false}},"provenance":{"type":"object","properties":{"engineVersion":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"graphDate":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"license":{"anyOf":[{"type":"string","maxLength":2000,"format":"uri"},{"type":"null"}]}},"required":["engineVersion","graphDate","license"],"additionalProperties":false}},"required":["segments","instructions","summary","bbox","source","warnings","attribution","provenance"],"additionalProperties":false}},"required":["id","sport","expiresAt","geometry"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"RouteGpxImportDto":{"type":"object","properties":{"gpx":{"type":"string","minLength":1,"maxLength":1500000},"sport":{"default":"running","type":"string","enum":["running","walking","cycling"]},"snap":{"default":false,"type":"boolean"}},"required":["gpx"],"additionalProperties":false},"RouteCreateDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"previewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","maxLength":160},"visibility":{"default":"private","type":"string","enum":["private","followers","public"]},"addToMyRoutes":{"default":true,"type":"boolean"}},"required":["clientId","previewId"],"additionalProperties":false},"RouteResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"author":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"],"additionalProperties":false},"name":{"type":"string"},"sport":{"type":"string","enum":["running","walking","cycling"]},"visibility":{"type":"string","enum":["private","followers","public"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"isOwner":{"type":"boolean"},"saved":{"type":"boolean"},"favourite":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revision":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"geometry":{"anyOf":[{"type":"object","properties":{"segments":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["road","straight"]},"coordinates":{"minItems":2,"maxItems":20000,"type":"array","items":{"anyOf":[{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2},{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-12000,"maximum":10000}],"items":false,"minItems":3,"maxItems":3}]}},"surface":{"type":"string","enum":["paved","path","unknown"]},"surfaceRanges":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"surface":{"type":"string","enum":["paved","path","unknown"]}},"required":["startPointIndex","endPointIndex","surface"],"additionalProperties":false}}},"required":["kind","coordinates","surface"],"additionalProperties":false}},"instructions":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":100},"text":{"type":"string","maxLength":1000},"name":{"type":"string","maxLength":500},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["segmentIndex","startPointIndex","endPointIndex","type","text","distanceM","durationS"],"additionalProperties":false}},"summary":{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"descentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"estimatedDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"maxGradientPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"elevationProfile":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"distanceM":{"type":"number","minimum":0},"elevationM":{"type":"number"}},"required":["distanceM","elevationM"],"additionalProperties":false}},"elevationMethod":{"anyOf":[{"type":"object","properties":{"sampleDistanceM":{"type":"number","exclusiveMinimum":0},"smoothingWindowSamples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"gradientMinDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbAscentM":{"type":"number","exclusiveMinimum":0}},"required":["sampleDistanceM","smoothingWindowSamples","gradientMinDistanceM","minClimbDistanceM","minClimbAscentM"],"additionalProperties":false},{"type":"null"}]},"climbs":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"startDistanceM":{"type":"number","minimum":0},"endDistanceM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"type":"number","exclusiveMinimum":0},"averageGradientPercent":{"type":"number","exclusiveMinimum":0},"maxGradientPercent":{"type":"number","exclusiveMinimum":0}},"required":["startDistanceM","endDistanceM","distanceM","ascentM","averageGradientPercent","maxGradientPercent"],"additionalProperties":false}},"surface":{"type":"object","properties":{"pavedPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"pathPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"unknownPercent":{"type":"number","minimum":0,"maximum":100}},"required":["pavedPercent","pathPercent","unknownPercent"],"additionalProperties":false}},"required":["distanceM","ascentM","descentM","estimatedDurationS","maxGradientPercent","elevationProfile","elevationMethod","climbs","surface"],"additionalProperties":false},"bbox":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":4,"maxItems":4},"source":{"type":"string","enum":["manual","openrouteservice"]},"warnings":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":200}},"attribution":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"}},"required":["text","url"],"additionalProperties":false}},"provenance":{"type":"object","properties":{"engineVersion":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"graphDate":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"license":{"anyOf":[{"type":"string","maxLength":2000,"format":"uri"},{"type":"null"}]}},"required":["engineVersion","graphDate","license"],"additionalProperties":false}},"required":["segments","instructions","summary","bbox","source","warnings","attribution","provenance"],"additionalProperties":false},{"type":"null"}]},"input":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["tap","draw"]},"coordinates":{"minItems":2,"maxItems":2000,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2}},"snap":{"type":"boolean"},"operation":{"type":"string","enum":["none","reverse","out_and_back","close_loop"]},"sport":{"type":"string","enum":["running","walking","cycling"]}},"required":["mode","coordinates","snap","operation","sport"],"additionalProperties":false},{"type":"null"}]}},"required":["id","number","createdAt","geometry","input"],"additionalProperties":false},"privacy":{"type":"object","properties":{"trimmed":{"type":"boolean"},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0}},"required":["trimmed","hiddenStartM","hiddenEndM"],"additionalProperties":false},"usage":{"type":"object","properties":{"completedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCompletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["completedCount","lastCompletedAt"],"additionalProperties":false},"capabilities":{"type":"object","properties":{"start":{"type":"boolean"},"download":{"type":"boolean"},"watch":{"type":"boolean","const":false}},"required":["start","download","watch"],"additionalProperties":false}},"required":["id","author","name","sport","visibility","version","isOwner","saved","favourite","createdAt","updatedAt","revision","privacy","usage","capabilities"],"additionalProperties":false},"RouteListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"author":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"],"additionalProperties":false},"name":{"type":"string"},"sport":{"type":"string","enum":["running","walking","cycling"]},"visibility":{"type":"string","enum":["private","followers","public"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"isOwner":{"type":"boolean"},"saved":{"type":"boolean"},"favourite":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revision":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"geometry":{"type":"null"},"input":{"type":"null"}},"required":["id","number","createdAt","geometry","input"],"additionalProperties":false},"privacy":{"type":"object","properties":{"trimmed":{"type":"boolean"},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0}},"required":["trimmed","hiddenStartM","hiddenEndM"],"additionalProperties":false},"usage":{"type":"object","properties":{"completedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCompletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["completedCount","lastCompletedAt"],"additionalProperties":false},"capabilities":{"type":"object","properties":{"start":{"type":"boolean"},"download":{"type":"boolean"},"watch":{"type":"boolean","const":false}},"required":["start","download","watch"],"additionalProperties":false},"summary":{"anyOf":[{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"descentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"estimatedDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"maxGradientPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"elevationMethod":{"anyOf":[{"type":"object","properties":{"sampleDistanceM":{"type":"number","exclusiveMinimum":0},"smoothingWindowSamples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"gradientMinDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbAscentM":{"type":"number","exclusiveMinimum":0}},"required":["sampleDistanceM","smoothingWindowSamples","gradientMinDistanceM","minClimbDistanceM","minClimbAscentM"],"additionalProperties":false},{"type":"null"}]},"surface":{"type":"object","properties":{"pavedPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"pathPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"unknownPercent":{"type":"number","minimum":0,"maximum":100}},"required":["pavedPercent","pathPercent","unknownPercent"],"additionalProperties":false}},"required":["distanceM","ascentM","descentM","estimatedDurationS","maxGradientPercent","elevationMethod","surface"],"additionalProperties":false},{"type":"null"}]},"preview":{"anyOf":[{"type":"object","properties":{"bbox":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":4,"maxItems":4},"segments":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"coordinates":{"minItems":2,"maxItems":512,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2}}},"required":["coordinates"],"additionalProperties":false}},"simplified":{"type":"boolean"}},"required":["bbox","segments","simplified"],"additionalProperties":false},{"type":"null"}]}},"required":["id","author","name","sport","visibility","version","isOwner","saved","favourite","createdAt","updatedAt","revision","privacy","usage","capabilities","summary","preview"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"RouteUpdateDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":160},"visibility":{"type":"string","enum":["private","followers","public"]},"previewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["expectedVersion"],"additionalProperties":false},"RouteFavouriteDto":{"type":"object","properties":{"favourite":{"type":"boolean"}},"required":["favourite"],"additionalProperties":false},"RouteShareResponse":{"type":"object","properties":{"routeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deepLink":{"type":"string"},"universalLink":{"type":"array","items":{"type":"string"}},"qrPayload":{"type":"string"},"requiresAuthentication":{"type":"boolean","const":true},"visibility":{"type":"string","enum":["private","followers","public"]},"accessibleTo":{"type":"string","enum":["owner","followers","authenticated_users"]}},"required":["routeId","revisionId","deepLink","universalLink","qrPayload","requiresAuthentication","visibility","accessibleTo"],"additionalProperties":false},"RouteOfflineResponse":{"type":"object","properties":{"routeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"geometry":{"type":"object","properties":{"segments":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["road","straight"]},"coordinates":{"minItems":2,"maxItems":20000,"type":"array","items":{"anyOf":[{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2},{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-12000,"maximum":10000}],"items":false,"minItems":3,"maxItems":3}]}},"surface":{"type":"string","enum":["paved","path","unknown"]},"surfaceRanges":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"surface":{"type":"string","enum":["paved","path","unknown"]}},"required":["startPointIndex","endPointIndex","surface"],"additionalProperties":false}}},"required":["kind","coordinates","surface"],"additionalProperties":false}},"instructions":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"startPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"endPointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"type":{"type":"string","maxLength":100},"text":{"type":"string","maxLength":1000},"name":{"type":"string","maxLength":500},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["segmentIndex","startPointIndex","endPointIndex","type","text","distanceM","durationS"],"additionalProperties":false}},"summary":{"type":"object","properties":{"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"descentM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"estimatedDurationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"maxGradientPercent":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"elevationProfile":{"maxItems":20000,"type":"array","items":{"type":"object","properties":{"distanceM":{"type":"number","minimum":0},"elevationM":{"type":"number"}},"required":["distanceM","elevationM"],"additionalProperties":false}},"elevationMethod":{"anyOf":[{"type":"object","properties":{"sampleDistanceM":{"type":"number","exclusiveMinimum":0},"smoothingWindowSamples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"gradientMinDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbDistanceM":{"type":"number","exclusiveMinimum":0},"minClimbAscentM":{"type":"number","exclusiveMinimum":0}},"required":["sampleDistanceM","smoothingWindowSamples","gradientMinDistanceM","minClimbDistanceM","minClimbAscentM"],"additionalProperties":false},{"type":"null"}]},"climbs":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"startDistanceM":{"type":"number","minimum":0},"endDistanceM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":"number","exclusiveMinimum":0},"ascentM":{"type":"number","exclusiveMinimum":0},"averageGradientPercent":{"type":"number","exclusiveMinimum":0},"maxGradientPercent":{"type":"number","exclusiveMinimum":0}},"required":["startDistanceM","endDistanceM","distanceM","ascentM","averageGradientPercent","maxGradientPercent"],"additionalProperties":false}},"surface":{"type":"object","properties":{"pavedPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"pathPercent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"unknownPercent":{"type":"number","minimum":0,"maximum":100}},"required":["pavedPercent","pathPercent","unknownPercent"],"additionalProperties":false}},"required":["distanceM","ascentM","descentM","estimatedDurationS","maxGradientPercent","elevationProfile","elevationMethod","climbs","surface"],"additionalProperties":false},"bbox":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":4,"maxItems":4},"source":{"type":"string","enum":["manual","openrouteservice"]},"warnings":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":200}},"attribution":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2000,"format":"uri"}},"required":["text","url"],"additionalProperties":false}},"provenance":{"type":"object","properties":{"engineVersion":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"graphDate":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"license":{"anyOf":[{"type":"string","maxLength":2000,"format":"uri"},{"type":"null"}]}},"required":["engineVersion","graphDate","license"],"additionalProperties":false}},"required":["segments","instructions","summary","bbox","source","warnings","attribution","provenance"],"additionalProperties":false},"downloadEndpoint":{"type":"string"},"requiresRevalidation":{"type":"boolean","const":true},"clearOnLogout":{"type":"boolean","const":true},"turnByTurnAvailable":{"type":"boolean"},"navigationMode":{"type":"string","enum":["turn_by_turn","polyline_only"]},"mapsIncluded":{"type":"boolean","const":false},"watch":{"type":"boolean","const":false}},"required":["routeId","revisionId","version","generatedAt","validUntil","geometry","downloadEndpoint","requiresRevalidation","clearOnLogout","turnByTurnAvailable","navigationMode","mapsIncluded","watch"],"additionalProperties":false},"MapboxDestinationSearchResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["id","name","label","latitude","longitude"],"additionalProperties":false}},"attribution":{"type":"object","properties":{"text":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["text","url"],"additionalProperties":false}},"required":["items","attribution"],"additionalProperties":false},"CreateSegmentDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":150},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","hiking"]},"points":{"minItems":2,"maxItems":512,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"required":["name","sport","points"],"additionalProperties":false},"RadarPreferencesResponseDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"audience":{"default":"nearby","type":"string","enum":["nearby","followers","mutual_followers"]},"backgroundEnabled":{"default":false,"type":"boolean"},"receiveAlerts":{"default":true,"type":"boolean"},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["enabled","revision"],"additionalProperties":false},"RadarPreferencesDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"audience":{"default":"nearby","type":"string","enum":["nearby","followers","mutual_followers"]},"backgroundEnabled":{"default":false,"type":"boolean"},"receiveAlerts":{"default":true,"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"RadarStatusResponseDto":{"type":"object","properties":{"discoverable":{"type":"boolean"},"audience":{"type":"string","enum":["mutual_followers","followers","nearby"]},"precisionM":{"type":"number"},"minimumDelaySeconds":{"anyOf":[{"type":"number","const":5},{"type":"number","const":120}]},"stopAfterSession":{"type":"boolean"},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"privateZonesEnabled":{"type":"boolean","const":true},"privateZonesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["discoverable","audience","precisionM","minimumDelaySeconds","stopAfterSession","activityId","privateZonesEnabled","privateZonesCount","expiresAt"]},"RadarAreasResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"sourceDate":{"type":"string"}},"required":["id","name","label","latitude","longitude","sourceDate"]}},"attribution":{"type":"string","const":"OpenStreetMap contributors"},"coverage":{"type":"string","const":"imported_place_names"},"includesPersonalLocation":{"type":"boolean","const":false}},"required":["items","attribution","coverage","includesPersonalLocation"]},"RadarExploreDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"locationSource":{"default":"device","type":"string","enum":["device","manual"]},"areaId":{"type":"string","pattern":"^osm:(node|way):[1-9]\\d{0,18}$"},"radiusM":{"default":3000,"type":"integer","minimum":300,"maximum":10000},"accuracyM":{"default":0,"type":"number","minimum":0,"maximum":5000},"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string","pattern":"^[0-9a-f-]{36}:[0-9]{1,9}$"}},"additionalProperties":false},"RadarExploreResponseDto":{"type":"object","properties":{"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"minimumDelaySeconds":{"anyOf":[{"type":"number","const":5},{"type":"number","const":120}]},"positionsApproximate":{"type":"boolean","const":true},"publicationPerformed":{"type":"boolean","const":false},"cache":{"type":"object","properties":{"clearOnLogout":{"type":"boolean","const":true},"revalidateOnReconnect":{"type":"boolean","const":true},"staleWhenOffline":{"type":"boolean","const":true},"offlineDisplayUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["clearOnLogout","revalidateOnReconnect","staleWhenOffline","offlineDisplayUntil"]},"status":{"type":"string","enum":["ready","empty"]},"searchArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"relationship":{"type":"string","enum":["mutual","following","anonymous"]}},"required":["id","displayName","avatarUrl"]},"dailyStatus":{"anyOf":[{"type":"object","properties":{"text":{"type":"string"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["text","updatedAt","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"Current daily status of a mutual follower. Null for anyone else, when none is set, or after expiresAt."},"birthdayToday":{"type":"boolean","description":"True when today, in the person's own timezone, is a mutual follower's birthday. Always false for anyone else."},"sport":{"type":["string","null"]},"activityStatus":{"type":"string","enum":["recording_or_paused","not_declared"]},"activity":{"anyOf":[{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"state":{"type":"string","enum":["recording","paused"]}},"required":["startedAt","state"]},{"type":"null"}]},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"liveRoute":{"type":"boolean"},"area":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"precisionM":{"type":"number"},"id":{"type":"string"},"name":{"type":"string"},"labelSource":{"type":"string","enum":["nearest_openstreetmap_place","unavailable"]}},"required":["latitude","longitude","precisionM","labelSource"]},"distance":{"type":"object","properties":{"approximate":{"type":"boolean","const":true},"minimumM":{"type":"number"},"maximumM":{"type":"number"},"precisionM":{"type":"number"}},"required":["approximate","minimumM","maximumM","precisionM"]}},"required":["user","dailyStatus","birthdayToday","sport","activityStatus","activity","observedAt","expiresAt","liveRoute","area","distance"]}},"radiusM":{"type":"number"},"locationSource":{"type":"string","enum":["manual","device"]},"truncated":{"type":"boolean"},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["fetchedAt","minimumDelaySeconds","positionsApproximate","publicationPerformed","cache","status","searchArea","items","radiusM","locationSource","truncated","nextCursor"]},"RadarListResponseDto":{"type":"object","properties":{"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"minimumDelaySeconds":{"anyOf":[{"type":"number","const":5},{"type":"number","const":120}]},"positionsApproximate":{"type":"boolean","const":true},"publicationPerformed":{"type":"boolean","const":false},"cache":{"type":"object","properties":{"clearOnLogout":{"type":"boolean","const":true},"revalidateOnReconnect":{"type":"boolean","const":true},"staleWhenOffline":{"type":"boolean","const":true},"offlineDisplayUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["clearOnLogout","revalidateOnReconnect","staleWhenOffline","offlineDisplayUntil"]},"status":{"type":"string","enum":["ready","empty"]},"searchArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"relationship":{"type":"string","enum":["mutual","following","anonymous"]}},"required":["id","displayName","avatarUrl"]},"dailyStatus":{"anyOf":[{"type":"object","properties":{"text":{"type":"string"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["text","updatedAt","expiresAt"],"additionalProperties":false},{"type":"null"}],"description":"Current daily status of a mutual follower. Null for anyone else, when none is set, or after expiresAt."},"birthdayToday":{"type":"boolean","description":"True when today, in the person's own timezone, is a mutual follower's birthday. Always false for anyone else."},"sport":{"type":["string","null"]},"activityStatus":{"type":"string","enum":["recording_or_paused","not_declared"]},"activity":{"anyOf":[{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"state":{"type":"string","enum":["recording","paused"]}},"required":["startedAt","state"]},{"type":"null"}]},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"liveRoute":{"type":"boolean"},"area":{"type":"object","properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]},"labelSource":{"type":"string","enum":["nearest_openstreetmap_place","unavailable"]}},"required":["id","name","labelSource"]},"distance":{"type":"null"}},"required":["user","dailyStatus","birthdayToday","sport","activityStatus","activity","observedAt","expiresAt","liveRoute","area","distance"]}},"groupedBy":{"type":"string","const":"approximate_area"},"nextAfterId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"includesCoordinates":{"type":"boolean","const":false}},"required":["fetchedAt","minimumDelaySeconds","positionsApproximate","publicationPerformed","cache","status","searchArea","items","groupedBy","nextAfterId","includesCoordinates"]},"RadarAlertsResponseDto":{"type":"object","properties":{"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"pollAfterSeconds":{"type":"number","const":30},"minimumDelaySeconds":{"anyOf":[{"type":"number","const":5},{"type":"number","const":120}]},"positionsApproximate":{"type":"boolean","const":true},"publicationPerformed":{"type":"boolean","const":false},"status":{"type":"string","enum":["ready","empty","reciprocity_required"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["started","nearby","finished"]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"relationship":{"type":"string","enum":["mutual","following","anonymous"]}},"required":["id","displayName","avatarUrl"]},"sport":{"type":["string","null"]},"area":{"type":"object","properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]},"labelSource":{"type":"string","enum":["nearest_openstreetmap_place","unavailable"]}},"required":["id","name","labelSource"]},"distance":{"anyOf":[{"type":"object","properties":{"approximate":{"type":"boolean","const":true},"minimumM":{"type":"number"},"maximumM":{"type":"number"},"precisionM":{"type":"number"}},"required":["approximate","minimumM","maximumM","precisionM"]},{"type":"null"}]},"activity":{"anyOf":[{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"state":{"type":"string","enum":["recording","paused"]}},"required":["startedAt","state"]},{"type":"null"}]},"completion":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"distanceM":{"type":["number","null"]},"durationS":{"type":["number","null"]}},"required":["activityId","distanceM","durationS"]}},"required":["id","type","occurredAt","expiresAt","user","sport","area","distance","activity"]}}},"required":["fetchedAt","pollAfterSeconds","minimumDelaySeconds","positionsApproximate","publicationPerformed","status","items"]},"RadarPrivateZonesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"cellIds":{"type":"array","items":{"type":"string"}},"radiusM":{"type":"number"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","cellIds","radiusM","createdAt"]}},"coordinateStorage":{"type":"string","const":"coarse_h3_cells_only"}},"required":["items","coordinateStorage"]},"RadarPrivateZoneDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-80,"maximum":80},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":300,"type":"integer","minimum":300,"maximum":1000}},"required":["clientId","name","latitude","longitude"],"additionalProperties":false},"RadarZoneCreatedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sharingStopped":{"type":"boolean","const":true},"coordinateStorage":{"type":"string","const":"coarse_h3_cells_only"}},"required":["id","sharingStopped","coordinateStorage"]},"RadarZoneDeletedResponseDto":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"]},"RadarPresenceDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"discoverable":{"type":"boolean","const":true},"accuracyM":{"type":"number","minimum":0,"maximum":5000},"audience":{"type":"string","enum":["mutual_followers","followers","nearby"]},"preferenceRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"stopAfterSession":{"type":"boolean"}},"required":["latitude","longitude","discoverable"],"additionalProperties":false},"RadarPublishResponseDto":{"type":"object","properties":{"discoverable":{"type":"boolean"},"precisionM":{"type":"number"},"minimumDelaySeconds":{"anyOf":[{"type":"number","const":5},{"type":"number","const":120}]},"expiresIn":{"anyOf":[{"type":"number","const":180},{"type":"number","const":0}]},"reason":{"type":"string","const":"RADAR_PRIVATE_ZONE"}},"required":["discoverable","precisionM","minimumDelaySeconds","expiresIn"]},"RadarLeaveResponseDto":{"type":"object","properties":{"discoverable":{"type":"boolean","const":false}},"required":["discoverable"]},"RadarNearbyResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"relationship":{"type":"string","enum":["mutual","following","anonymous"]}},"required":["id","displayName","avatarUrl"]},"area":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"precisionM":{"type":"number"}},"required":["latitude","longitude","precisionM"]},"observedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["user","area","observedAt"]}},"minimumDelaySeconds":{"anyOf":[{"type":"number","const":5},{"type":"number","const":120}]},"precisionM":{"type":"number","const":300},"visibility":{"type":"string","const":"mutual_followers"}},"required":["items","minimumDelaySeconds","precisionM","visibility"]},"RadarInviteCreateDto":{"type":"object","properties":{"recipientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"default":"running","type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming","other"]}},"required":["recipientId","clientId"],"additionalProperties":false},"RadarInviteResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"direction":{"type":"string","enum":["incoming","outgoing"]},"status":{"type":"string","enum":["pending","accepted","declined","cancelled","expired"]},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming","other"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"respondedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"meetupId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"meetupStatus":{"anyOf":[{"type":"string","enum":["active","ended","expired"]},{"type":"null"}]},"meetupExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"meetupEndedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"meetupPhase":{"anyOf":[{"type":"string","enum":["waiting","on_the_way","met","training","ended","expired"]},{"type":"null"}]},"meetupOnTheWayAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sender":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false},"recipient":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false}},"required":["id","direction","status","sport","createdAt","expiresAt","respondedAt","meetupId","meetupStatus","meetupExpiresAt","meetupEndedAt","meetupPhase","meetupOnTheWayAt","sender","recipient"],"additionalProperties":false},"RadarInviteListResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"direction":{"type":"string","enum":["incoming","outgoing"]},"status":{"type":"string","enum":["pending","accepted","declined","cancelled","expired"]},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming","other"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"respondedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"meetupId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"meetupStatus":{"anyOf":[{"type":"string","enum":["active","ended","expired"]},{"type":"null"}]},"meetupExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"meetupEndedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"meetupPhase":{"anyOf":[{"type":"string","enum":["waiting","on_the_way","met","training","ended","expired"]},{"type":"null"}]},"meetupOnTheWayAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sender":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false},"recipient":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false}},"required":["id","direction","status","sport","createdAt","expiresAt","respondedAt","meetupId","meetupStatus","meetupExpiresAt","meetupEndedAt","meetupPhase","meetupOnTheWayAt","sender","recipient"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"RadarLiveStartDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming","other"]}},"required":["activityId","sport"],"additionalProperties":false},"RadarLivePublishDto":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["recording","paused","completed"]},"points":{"maxItems":120,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"accuracyM":{"type":"number","minimum":0,"maximum":100},"speedMps":{"anyOf":[{"type":"number","minimum":0,"maximum":40},{"type":"null"}]},"altitudeM":{"anyOf":[{"type":"number","minimum":-500,"maximum":9000},{"type":"null"}]}},"required":["latitude","longitude","at","accuracyM"],"additionalProperties":false}},"metrics":{"type":"object","properties":{"distanceM":{"type":"number","minimum":0,"maximum":1000000},"elapsedS":{"type":"number","minimum":0,"maximum":172800},"movingS":{"type":"number","minimum":0,"maximum":172800},"speedMps":{"anyOf":[{"type":"number","minimum":0,"maximum":40},{"type":"null"}]},"paceSecondsPerKm":{"anyOf":[{"type":"number","minimum":60,"maximum":3600},{"type":"null"}]},"energyKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":20000},{"type":"null"}]},"heartRateBpm":{"anyOf":[{"type":"integer","minimum":20,"maximum":250},{"type":"null"}]}},"required":["distanceM","elapsedS","movingS","speedMps","paceSecondsPerKm","energyKcal","heartRateBpm"],"additionalProperties":false}},"required":["activityId","state","points","metrics"],"additionalProperties":false},"RadarMeetupResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"inviteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming","other"]},"status":{"type":"string","enum":["active","ended","expired"]},"phase":{"type":"string","enum":["waiting","on_the_way","met","training","ended","expired"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"maxExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"proximityRecognizedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"onTheWayAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"onTheWayBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false},{"type":"null"}]},"participants":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false},"position":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"accuracyM":{"type":"number"},"speedMps":{"type":["number","null"]},"headingDeg":{"type":["number","null"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["latitude","longitude","accuracyM","speedMps","headingDeg","at"],"additionalProperties":false},{"type":"null"}]},"positionState":{"type":"string","enum":["missing","current","stale","unavailable"]},"arrivalConfirmedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"trainingConfirmedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["user","position","positionState","arrivalConfirmedAt","trainingConfirmedAt"],"additionalProperties":false}}},"required":["id","inviteId","sport","status","phase","startedAt","expiresAt","maxExpiresAt","endedAt","proximityRecognizedAt","onTheWayAt","onTheWayBy","participants"],"additionalProperties":false},"RadarVoiceCapabilityDto":{"type":"object","properties":{"available":{"type":"boolean"},"provider":{"type":"string","const":"amazon_chime_sdk"}},"required":["available","provider"],"additionalProperties":false},"RadarVoiceJoinResponseDto":{"type":"object","properties":{"meetupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"meeting":{"type":"object","properties":{"meetingId":{"type":"string"},"externalMeetingId":{"type":["string","null"]},"mediaRegion":{"type":"string"},"mediaPlacement":{"type":"object","properties":{"audioHostUrl":{"type":"string"},"audioFallbackUrl":{"type":"string"},"signalingUrl":{"type":"string"},"turnControlUrl":{"type":"string"}},"required":["audioHostUrl","audioFallbackUrl","signalingUrl","turnControlUrl"],"additionalProperties":false}},"required":["meetingId","externalMeetingId","mediaRegion","mediaPlacement"],"additionalProperties":false},"attendee":{"type":"object","properties":{"attendeeId":{"type":"string"},"externalUserId":{"type":"string"},"joinToken":{"type":"string"}},"required":["attendeeId","externalUserId","joinToken"],"additionalProperties":false}},"required":["meetupId","expiresAt","meeting","attendee"],"additionalProperties":false},"RadarMeetupLocationDto":{"type":"object","properties":{"meetupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"accuracyM":{"type":"number","minimum":0,"maximum":200},"speedMps":{"anyOf":[{"type":"number","minimum":0,"maximum":40},{"type":"null"}]},"headingDeg":{"anyOf":[{"type":"number","minimum":0,"maximum":360},{"type":"null"}]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["meetupId","latitude","longitude","accuracyM","at"],"additionalProperties":false},"RadarMeetupLocationResultDto":{"type":"object","properties":{"accepted":{"type":"boolean"},"reason":{"type":"string","const":"stale"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["accepted","expiresAt"],"additionalProperties":false},"RadarMeetupEndResultDto":{"type":"object","properties":{"ended":{"type":"boolean"},"status":{"type":"string","enum":["ended","expired"]}},"required":["ended","status"],"additionalProperties":false},"NotificationsPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["system","activity_completed","training_reminder","training_deadline","training_progress","goal_achieved","event_reminder","event_cancelled","nearby_event_created","health_reminder","kyzone_update","challenge_daily","group_event_created","event_rsvp_nudge","group_suggestion","chat_message","chat_voice_invite","post_like","post_comment","radar_activity_started","radar_invite","shop_order","shop_delivery","shop_refund","shop_support"]},"title":{"type":"string"},"body":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"readAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"target":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["event","group","conversation","post","radar","challenge_assignment","shop_order","quick_tip","kyzone"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"}},"required":["type","id"]},{"type":"null"}]}},"required":["id","type","title","body","createdAt","readAt","target"]}},"nextCursor":{"type":"array","items":{"type":"string"}},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","nextCursor","unreadCount"]},"RegisterPushDeviceDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128},"platform":{"type":"string","enum":["android","ios"]},"provider":{"default":"fcm","type":"string","const":"fcm"},"token":{"type":"string","minLength":32,"maxLength":4096},"fid":{"type":"string","minLength":20,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["deviceId","platform"],"additionalProperties":false},"ModerationQueueResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetType":{"type":"string","enum":["user","post","comment","story","group","event","reel"]},"targetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"category":{"type":"string","enum":["harassment","spam","fabricated_activity","other"]},"note":{"type":"string"},"status":{"type":"string","enum":["pending","reviewed"]},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"decision":{"anyOf":[{"type":"string","enum":["dismissed","warning","removed"]},{"type":"null"}]},"appealStatus":{"anyOf":[{"type":"string","enum":["none","pending","upheld","overturned"]},{"type":"null"}]}},"required":["id","targetType","targetId","createdAt","category","note","status","priority","revision","decision","appealStatus"]}},"nextOffset":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"priorityPolicy":{"type":"string","const":"manual_triage_then_oldest"}},"required":["items","nextOffset","priorityPolicy"]},"ModerationDetailResponseDto":{"type":"object","properties":{"report":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetType":{"type":"string","enum":["user","post","comment","story","group","event","reel"]},"targetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reporterId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"clientId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"blockAuthor":{"type":"boolean"},"category":{"type":"string","enum":["harassment","spam","fabricated_activity","other"]},"note":{"type":"string"},"status":{"type":"string","enum":["pending","reviewed"]}},"required":["id","targetType","targetId","createdAt","reporterId","clientId","blockAuthor","category","note","status"]},"review":{"anyOf":[{"type":"object","properties":{"reportId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetOwnerId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"decision":{"anyOf":[{"type":"string","enum":["dismissed","warning","removed"]},{"type":"null"}]},"reason":{"type":["string","null"]},"reviewedBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"appealStatus":{"type":"string","enum":["none","pending","upheld","overturned"]},"appealReason":{"type":["string","null"]}},"required":["reportId","targetOwnerId","priority","revision","decision","reason","reviewedBy","reviewedAt","appealStatus","appealReason"]},{"type":"null"}]},"appeal":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reportId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"appellantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"note":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","reportId","appellantId","clientId","note","createdAt"]},{"type":"null"}]},"audit":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reportId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"actorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["triage","decision","appeal_decision"]},"input":{"anyOf":[{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"priority":{"type":"string","enum":["low","normal","high","critical"]}},"required":["clientId","expectedRevision","priority"],"additionalProperties":false},{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"decision":{"type":"string","enum":["dismissed","warning","removed"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["clientId","expectedRevision","decision","reason"],"additionalProperties":false},{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"decision":{"type":"string","enum":["upheld","overturned"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["clientId","expectedRevision","decision","reason"],"additionalProperties":false}]},"result":{"type":"object","properties":{"reportId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetOwnerId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"decision":{"anyOf":[{"type":"string","enum":["dismissed","warning","removed"]},{"type":"null"}]},"reason":{"type":["string","null"]},"reviewedBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"appealStatus":{"type":"string","enum":["none","pending","upheld","overturned"]},"appealReason":{"type":["string","null"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["reportId","targetOwnerId","priority","revision","decision","reason","reviewedBy","reviewedAt","appealStatus","appealReason","id"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","reportId","actorId","clientId","action","input","result","createdAt"]}}},"required":["report","review","appeal","audit"]},"ModerationTriageDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"priority":{"type":"string","enum":["low","normal","high","critical"]}},"required":["clientId","expectedRevision","priority"],"additionalProperties":false},"ModerationCommandResponseDto":{"type":"object","properties":{"reportId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetOwnerId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"decision":{"anyOf":[{"type":"string","enum":["dismissed","warning","removed"]},{"type":"null"}]},"reason":{"type":"array","items":{"type":"string"}},"reviewedBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"appealStatus":{"type":"string","enum":["none","pending","upheld","overturned"]},"appealReason":{"type":"array","items":{"type":"string"}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["reportId","targetOwnerId","priority","revision","decision","reason","reviewedBy","reviewedAt","appealStatus","appealReason","id"]},"ModerationDecisionDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"decision":{"type":"string","enum":["dismissed","warning","removed"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["clientId","expectedRevision","decision","reason"],"additionalProperties":false},"ModerationAppealDecisionDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"decision":{"type":"string","enum":["upheld","overturned"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["clientId","expectedRevision","decision","reason"],"additionalProperties":false},"ModerationDecisionsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetType":{"type":"string","enum":["user","post","comment","story","group","event","reel"]},"targetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"decision":{"anyOf":[{"type":"string","enum":["dismissed","warning","removed"]},{"type":"null"}]},"reason":{"type":["string","null"]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"appealStatus":{"anyOf":[{"type":"string","enum":["none","pending","upheld","overturned"]},{"type":"null"}]},"appealReason":{"type":["string","null"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","targetType","targetId","createdAt","decision","reason","reviewedAt","appealStatus","appealReason","revision"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ModerationAppealDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"note":{"type":"string","minLength":1,"maxLength":2000}},"required":["clientId","note"],"additionalProperties":false},"ModerationAppealResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reportId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"appellantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"note":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","reportId","appellantId","clientId","note","createdAt"]},"CommunitySessionPreviewResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":"array","items":{"type":"string"}},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":"array","items":{"type":"number"}},"durationS":{"type":"number"},"averageSpeedMps":{"type":"array","items":{"type":"number"}},"route":{"anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number"},"hiddenEndM":{"type":"number"},"privateZonesApplied":{"type":"boolean"},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM"]},{"type":"null"}]},"replay":{"description":"Present only when includeReplay is true. Null when no route is shareable. Uses measured points after endpoint, private-zone, pause and GPS-quality filters. Never join segments. A reduced projection remains measured but is not the complete sample stream. Hidden timing contains no timestamps or speed; separate cardiac samples require both cardiac and timing choices.","anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"altitudeM":{"type":["number","null"]},"heartRate":{"type":["number","null"]},"speedMps":{"type":["number","null"]}},"required":["latitude","longitude","recordedAt","altitudeM","heartRate","speedMps"]}}},"pointCount":{"type":"integer","minimum":2,"maximum":10000},"reduced":{"type":"boolean"},"timing":{"type":"string","enum":["recorded","hidden"]},"heartRateSamples":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"heartRate":{"type":"number","minimum":20,"maximum":250},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recordedAt","heartRate","segmentIndex"]}},"heartRateReduced":{"type":"boolean"}},"required":["segments","pointCount","reduced","timing","heartRateSamples","heartRateReduced"]},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"]},"CommunityFeedResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":"string"},"body":{"type":"string"},"session":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":["number","null"]},"durationS":{"type":"number"},"averageSpeedMps":{"type":["number","null"]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number"},"hiddenEndM":{"type":"number"},"privateZonesApplied":{"type":"boolean"},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM"]},{"type":"null"}]},"replay":{"description":"Present only when includeReplay is true. Null when no route is shareable. Uses measured points after endpoint, private-zone, pause and GPS-quality filters. Never join segments. A reduced projection remains measured but is not the complete sample stream. Hidden timing contains no timestamps or speed; separate cardiac samples require both cardiac and timing choices.","anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"altitudeM":{"type":["number","null"]},"heartRate":{"type":["number","null"]},"speedMps":{"type":["number","null"]}},"required":["latitude","longitude","recordedAt","altitudeM","heartRate","speedMps"]}}},"pointCount":{"type":"integer","minimum":2,"maximum":10000},"reduced":{"type":"boolean"},"timing":{"type":"string","enum":["recorded","hidden"]},"heartRateSamples":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"heartRate":{"type":"number","minimum":20,"maximum":250},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recordedAt","heartRate","segmentIndex"]}},"heartRateReduced":{"type":"boolean"}},"required":["segments","pointCount","reduced","timing","heartRateSamples","heartRateReduced"]},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"]},{"type":"null"}]},"sessionUnavailable":{"type":"boolean"},"visibility":{"type":"string","enum":["public","followers","private"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liked":{"type":"boolean"},"authorAvatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string"},"expiresIn":{"type":"number"}},"required":["id","url","expiresIn"]},{"type":"null"}]},"mediaIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"media":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentPath":{"type":"string"}},"required":["id","contentPath"]}},"activityShare":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":["number","null"]},"durationS":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number"},"hiddenEndM":{"type":"number"},"privateZonesApplied":{"type":"boolean","const":true},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM","privateZonesApplied"]},{"type":"null"}]},"options":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"}},"required":["includeRoute","includePaceTime","includeHeartRate","includeEndpoints"]},"replay":{"description":"Present only when includeReplay is true. Null when no route is shareable. Uses measured points after endpoint, private-zone, pause and GPS-quality filters. Never join segments. A reduced projection remains measured but is not the complete sample stream. Hidden timing contains no timestamps or speed; separate cardiac samples require both cardiac and timing choices.","anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"altitudeM":{"type":["number","null"]},"heartRate":{"type":["number","null"]},"speedMps":{"type":["number","null"]}},"required":["latitude","longitude","recordedAt","altitudeM","heartRate","speedMps"]}}},"pointCount":{"type":"integer","minimum":2,"maximum":10000},"reduced":{"type":"boolean"},"timing":{"type":"string","enum":["recorded","hidden"]},"heartRateSamples":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"heartRate":{"type":"number","minimum":20,"maximum":250},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recordedAt","heartRate","segmentIndex"]}},"heartRateReduced":{"type":"boolean"}},"required":["segments","pointCount","reduced","timing","heartRateSamples","heartRateReduced"]},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","averageHeartRate","route","options"]},{"type":"null"}]},"moderation":{"type":"object","properties":{"status":{"type":"string","enum":["visible","under_review"]}},"required":["status"]}},"required":["id","authorId","authorName","body","session","sessionUnavailable","visibility","createdAt","likesCount","commentsCount","liked","authorAvatar"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"CreatePostDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string","maxLength":280},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"mediaIds":{"maxItems":1,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"shareOptions":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"}},"additionalProperties":false},"visibility":{"default":"private","type":"string","enum":["private","followers","public"]}},"required":["clientId","body"],"additionalProperties":false},"CommunityPostResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":"string"},"body":{"type":"string"},"session":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":["number","null"]},"durationS":{"type":"number"},"averageSpeedMps":{"type":["number","null"]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number"},"hiddenEndM":{"type":"number"},"privateZonesApplied":{"type":"boolean"},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM"]},{"type":"null"}]},"replay":{"description":"Present only when includeReplay is true. Null when no route is shareable. Uses measured points after endpoint, private-zone, pause and GPS-quality filters. Never join segments. A reduced projection remains measured but is not the complete sample stream. Hidden timing contains no timestamps or speed; separate cardiac samples require both cardiac and timing choices.","anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"altitudeM":{"type":["number","null"]},"heartRate":{"type":["number","null"]},"speedMps":{"type":["number","null"]}},"required":["latitude","longitude","recordedAt","altitudeM","heartRate","speedMps"]}}},"pointCount":{"type":"integer","minimum":2,"maximum":10000},"reduced":{"type":"boolean"},"timing":{"type":"string","enum":["recorded","hidden"]},"heartRateSamples":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"heartRate":{"type":"number","minimum":20,"maximum":250},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recordedAt","heartRate","segmentIndex"]}},"heartRateReduced":{"type":"boolean"}},"required":["segments","pointCount","reduced","timing","heartRateSamples","heartRateReduced"]},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"]},{"type":"null"}]},"sessionUnavailable":{"type":"boolean"},"visibility":{"type":"string","enum":["public","followers","private"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liked":{"type":"boolean"},"authorAvatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string"},"expiresIn":{"type":"number"}},"required":["id","url","expiresIn"]},{"type":"null"}]},"mediaIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"media":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentPath":{"type":"string"}},"required":["id","contentPath"]}},"activityShare":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"type":["number","null"]},"durationS":{"type":["number","null"]},"averageSpeedMps":{"type":["number","null"]},"averageHeartRate":{"type":["number","null"]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number"},"hiddenEndM":{"type":"number"},"privateZonesApplied":{"type":"boolean","const":true},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM","privateZonesApplied"]},{"type":"null"}]},"options":{"type":"object","properties":{"includeRoute":{"type":"boolean"},"includePaceTime":{"type":"boolean"},"includeHeartRate":{"type":"boolean"},"includeEndpoints":{"type":"boolean"}},"required":["includeRoute","includePaceTime","includeHeartRate","includeEndpoints"]},"replay":{"description":"Present only when includeReplay is true. Null when no route is shareable. Uses measured points after endpoint, private-zone, pause and GPS-quality filters. Never join segments. A reduced projection remains measured but is not the complete sample stream. Hidden timing contains no timestamps or speed; separate cardiac samples require both cardiac and timing choices.","anyOf":[{"type":"object","properties":{"segments":{"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"altitudeM":{"type":["number","null"]},"heartRate":{"type":["number","null"]},"speedMps":{"type":["number","null"]}},"required":["latitude","longitude","recordedAt","altitudeM","heartRate","speedMps"]}}},"pointCount":{"type":"integer","minimum":2,"maximum":10000},"reduced":{"type":"boolean"},"timing":{"type":"string","enum":["recorded","hidden"]},"heartRateSamples":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"heartRate":{"type":"number","minimum":20,"maximum":250},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["recordedAt","heartRate","segmentIndex"]}},"heartRateReduced":{"type":"boolean"}},"required":["segments","pointCount","reduced","timing","heartRateSamples","heartRateReduced"]},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","averageHeartRate","route","options"]},{"type":"null"}]},"moderation":{"type":"object","properties":{"status":{"type":"string","enum":["visible","under_review"]}},"required":["status"]}},"required":["id","authorId","authorName","body","session","sessionUnavailable","visibility","createdAt","likesCount","commentsCount","liked","authorAvatar"]},"CreateCommentDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string","minLength":1,"maxLength":1000}},"required":["clientId","body"],"additionalProperties":false},"ReportDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"blockAuthor":{"type":"boolean"},"targetType":{"type":"string","enum":["user","post","comment","story","group","event"]},"targetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["harassment","spam","fabricated_activity","other"]},"note":{"default":"","type":"string","maxLength":2000}},"required":["targetType","targetId","category"],"additionalProperties":false},"CommunityReportCreatedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","reviewed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"blocked":{"type":"boolean"}},"required":["id","status","createdAt","blocked"]},"CommunityReportsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targetType":{"type":"string","enum":["user","post","comment","story","group","event","reel"]},"targetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"decision":{"anyOf":[{"type":"string","enum":["dismissed","warning","removed"]},{"type":"null"}]},"reason":{"type":["string","null"]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"appealStatus":{"anyOf":[{"type":"string","enum":["none","pending","upheld","overturned"]},{"type":"null"}]},"appealReason":{"type":["string","null"]},"category":{"type":"string","enum":["harassment","spam","fabricated_activity","other"]},"status":{"type":"string","enum":["pending","reviewed"]}},"required":["id","targetType","targetId","createdAt","decision","reason","reviewedAt","appealStatus","appealReason","category","status"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"CommunityGroupsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string"},"region":{"type":"string"},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"discoveryArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["id","name","label","latitude","longitude"]},{"type":"null"}]},"joinModel":{"type":"string","enum":["open","request"]},"audience":{"type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kept":{"type":"boolean"},"membership":{"anyOf":[{"type":"object","properties":{"role":{"type":"string","enum":["owner","moderator","member"]},"status":{"type":"string","enum":["pending","active","rejected"]}},"required":["role","status"]},{"type":"null"}]},"membersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextEvent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"area":{"type":"string"}},"required":["id","title","startsAt","endsAt","area"]},{"type":"null"}]},"coverUrl":{"type":["string","null"]},"coverExpiresIn":{"type":["number","null"]}},"required":["id","ownerId","name","description","sport","region","city","state","latitude","longitude","discoveryArea","joinModel","audience","coverMediaId","createdAt","kept","membership","membersCount","nextEvent","coverUrl","coverExpiresIn"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"CommunityGroupsNearMeResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string"},"region":{"type":"string"},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"discoveryArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["id","name","label","latitude","longitude"]},{"type":"null"}]},"joinModel":{"type":"string","enum":["open","request"]},"audience":{"type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kept":{"type":"boolean"},"membership":{"anyOf":[{"type":"object","properties":{"role":{"type":"string","enum":["owner","moderator","member"]},"status":{"type":"string","enum":["pending","active","rejected"]}},"required":["role","status"]},{"type":"null"}]},"membersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextEvent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"area":{"type":"string"}},"required":["id","title","startsAt","endsAt","area"]},{"type":"null"}]},"coverUrl":{"type":["string","null"]},"coverExpiresIn":{"type":["number","null"]},"distanceKm":{"type":"number","minimum":0}},"required":["id","ownerId","name","description","sport","region","city","state","latitude","longitude","discoveryArea","joinModel","audience","coverMediaId","createdAt","kept","membership","membersCount","nextEvent","coverUrl","coverExpiresIn","distanceKm"]}}},"required":["items"]},"GroupDiscoveryDto":{"type":"object","properties":{"areaId":{"type":"string","pattern":"^osm:(node|way):[1-9]\\d{0,18}$"},"latitude":{"type":"number","minimum":-80,"maximum":80},"longitude":{"type":"number","minimum":-180,"maximum":180},"locationSource":{"default":"device","type":"string","enum":["manual","device"]},"ranking":{"default":"distance","type":"string","enum":["distance","personalised"]},"radiusM":{"default":10000,"type":"integer","minimum":300,"maximum":10000},"sport":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","surf","crossfit","beach_tennis","other"]},"limit":{"default":20,"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false},"CommunityGroupDiscoveryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string"},"region":{"type":"string"},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"discoveryArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["id","name","label","latitude","longitude"]},{"type":"null"}]},"joinModel":{"type":"string","enum":["open","request"]},"audience":{"type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kept":{"type":"boolean"},"membership":{"anyOf":[{"type":"object","properties":{"role":{"type":"string","enum":["owner","moderator","member"]},"status":{"type":"string","enum":["pending","active","rejected"]}},"required":["role","status"]},{"type":"null"}]},"membersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextEvent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"area":{"type":"string"}},"required":["id","title","startsAt","endsAt","area"]},{"type":"null"}]},"coverUrl":{"type":["string","null"]},"coverExpiresIn":{"type":["number","null"]},"distance":{"type":"object","properties":{"approximate":{"type":"boolean","const":true},"metres":{"type":"number"},"precisionM":{"type":"number","const":300},"reference":{"type":"string","const":"declared_public_group_area"}},"required":["approximate","metres","precisionM","reference"]},"suggestion":{"type":"object","properties":{"reasons":{"type":"array","items":{"type":"string","enum":["sport_matches","near_selected_area","usual_activity_time"]}},"scheduleMatch":{"type":"boolean"},"evidenceWindowDays":{"type":["number","null"]}},"required":["reasons","scheduleMatch","evidenceWindowDays"]},"nextMeetingWeekday":{"type":["string","null"]},"fit":{"anyOf":[{"type":"object","properties":{"score":{"type":"number"},"evidence":{"type":"array","items":{"type":"string","enum":["distance_under_2km","distance_2_5km","distance_5_10km","distance_10_25km","distance_over_25km","sport_interest","routine_hour_match","routine_adjacent_hour","meeting_within_3_days","meeting_within_7_days","meeting_within_14_days","exploration_slot"]}},"exploration":{"type":"boolean"}},"required":["score","evidence","exploration"]},{"type":"null"}]}},"required":["id","ownerId","name","description","sport","region","city","state","latitude","longitude","discoveryArea","joinModel","audience","coverMediaId","createdAt","kept","membership","membersCount","nextEvent","coverUrl","coverExpiresIn","distance","suggestion","nextMeetingWeekday","fit"]}},"hasMore":{"type":"boolean"},"locationStored":{"type":"boolean","const":false},"personalised":{"type":"boolean"},"coverage":{"type":"string","const":"groups_with_declared_public_area"},"radiusM":{"type":"number"},"ranking":{"type":"object","properties":{"mode":{"type":"string","enum":["distance","personalised","general"]},"algorithmVersion":{"type":"string","const":"group-fit-v1"},"model":{"type":"object","properties":{"status":{"type":"string","enum":["not_requested","not_consented","server_disabled","ready","stale","fallback"]},"model":{"type":["string","null"]}},"required":["status","model"]}},"required":["mode","algorithmVersion","model"]}},"required":["items","hasMore","locationStored","personalised","coverage","radiusM","ranking"]},"GroupAreaDto":{"type":"object","properties":{"areaId":{"anyOf":[{"type":"string","pattern":"^osm:(node|way):[1-9]\\d{0,18}$"},{"type":"null"}]}},"required":["areaId"],"additionalProperties":false},"CommunityGroupResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string"},"region":{"type":"string"},"city":{"type":"array","items":{"type":"string"}},"state":{"type":"array","items":{"type":"string"}},"latitude":{"type":"array","items":{"type":"number"}},"longitude":{"type":"array","items":{"type":"number"}},"discoveryArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["id","name","label","latitude","longitude"]},{"type":"null"}]},"joinModel":{"type":"string","enum":["open","request"]},"audience":{"type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kept":{"type":"boolean"},"membership":{"anyOf":[{"type":"object","properties":{"role":{"type":"string","enum":["owner","moderator","member"]},"status":{"type":"string","enum":["pending","active","rejected"]}},"required":["role","status"]},{"type":"null"}]},"membersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextEvent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"area":{"type":"string"}},"required":["id","title","startsAt","endsAt","area"]},{"type":"null"}]},"coverUrl":{"type":"array","items":{"type":"string"}},"coverExpiresIn":{"type":"array","items":{"type":"number"}}},"required":["id","ownerId","name","description","sport","region","city","state","latitude","longitude","discoveryArea","joinModel","audience","coverMediaId","createdAt","kept","membership","membersCount","nextEvent","coverUrl","coverExpiresIn"]},"GroupChoiceDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"choice":{"type":"string","enum":["keep","pass"]}},"required":["clientId","groupId","choice"],"additionalProperties":false},"CommunityGroupChoiceResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"choice":{"type":"string","enum":["keep","pass"]},"undoneAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"membershipChanged":{"type":"boolean","const":false}},"required":["id","groupId","choice","undoneAt","membershipChanged"]},"CommunityGroupUndoResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"undone":{"type":"boolean","const":true},"restoredChoice":{"anyOf":[{"type":"string","enum":["keep","pass"]},{"type":"null"}]},"membershipChanged":{"type":"boolean","const":false}},"required":["id","undone","restoredChoice","membershipChanged"]},"GroupTransferDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"newOwnerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId","newOwnerId"],"additionalProperties":false},"CommunityGroupTransferResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"transferred":{"type":"boolean","const":true}},"required":["id","groupId","ownerId","transferred"]},"CreateGroupDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"default":"","type":"string","maxLength":1000},"sport":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","surf","crossfit","beach_tennis","other"]},"region":{"type":"string","minLength":1,"maxLength":120},"areaId":{"type":"string","pattern":"^osm:(node|way):[1-9]\\d{0,18}$"},"joinModel":{"default":"request","type":"string","enum":["open","request"]},"audience":{"default":"open_to_all","type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."}},"required":["name","sport","region"],"additionalProperties":false},"GroupCoverDto":{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["mediaId"],"additionalProperties":false},"CommunityMembershipResponseDto":{"type":"object","properties":{"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["owner","moderator","member"]},"status":{"type":"string","enum":["pending","active","rejected"]}},"required":["groupId","role","status"]},"CommunityGroupLeftResponseDto":{"type":"object","properties":{"left":{"type":"boolean","const":true}},"required":["left"]},"CommunityGroupMembersResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"role":{"type":"string","enum":["owner","moderator","member"]},"status":{"type":"string","enum":["pending","active","rejected"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","displayName","role","status","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"MembershipDto":{"type":"object","properties":{"action":{"type":"string","enum":["approve","reject","remove","promote","demote"]}},"required":["action"],"additionalProperties":false},"CommunityMemberActionResponseDto":{"type":"object","properties":{"applied":{"type":"boolean","const":true}},"required":["applied"]},"CommunityEventsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"type":"string"},"area":{"type":"string"},"publicMeetingPlace":{"type":"string"},"coverUrl":{"type":["string","null"]},"coverExpiresIn":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["scheduled","cancelled","finished"]},"visibility":{"type":"string","enum":["group","public"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"timezone":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"canRsvp":{"type":"boolean"},"creator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},"externalSource":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string"},"externalId":{"type":"string"},"url":{"type":"string","format":"uri"},"organizerName":{"type":["string","null"]},"attribution":{"type":["string","null"]},"syncedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["provider","externalId","url","organizerName","attribution","syncedAt","expiresAt"]},{"type":"null"}]},"distanceM":{"type":"integer","minimum":0,"maximum":9007199254740991},"latitudeExact":{"type":["number","null"]},"longitudeExact":{"type":["number","null"]},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"rsvp":{"anyOf":[{"type":"string","enum":["going","maybe","declined"]},{"type":"null"}]},"meetingPoint":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["name","latitude","longitude"]},{"type":"null"}]},"groupName":{"type":"string"},"goingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maybeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"myFeedback":{"anyOf":[{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"comment":{"type":"string"}},"required":["rating","comment"]},{"type":"null"}]},"reminders":{"type":"array","items":{"type":"object","properties":{"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["friday_evening","one_hour_before","day_before","two_hours_before"]},"status":{"type":"string","enum":["scheduled","delivered"]},"channel":{"type":"string","const":"in_app"}},"required":["scheduledAt","kind","status","channel"]}}},"required":["id","groupId","title","description","area","publicMeetingPlace","coverUrl","status","visibility","sport","timezone","revision","canRsvp","creator","externalSource","latitudeExact","longitudeExact","startsAt","endsAt","createdAt","rsvp","meetingPoint","groupName","goingCount","maybeCount","reminders"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"CreateEventDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":2000},"area":{"type":"string","minLength":1,"maxLength":120},"publicMeetingPlace":{"type":"string","minLength":1,"maxLength":160},"publicPlaceConfirmed":{"type":"boolean","const":true},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"timezone":{"type":"string","minLength":1,"maxLength":100}},"required":["title","area","publicMeetingPlace","publicPlaceConfirmed","latitude","longitude","startsAt","endsAt"],"additionalProperties":false},"CommunityEventResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"type":"string"},"area":{"type":"string"},"publicMeetingPlace":{"type":"string"},"coverUrl":{"type":"array","items":{"type":"string"}},"coverExpiresIn":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["scheduled","cancelled","finished"]},"visibility":{"type":"string","enum":["group","public"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"timezone":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"canRsvp":{"type":"boolean"},"creator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},"externalSource":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string"},"externalId":{"type":"string"},"url":{"type":"string","format":"uri"},"organizerName":{"type":["string","null"]},"attribution":{"type":["string","null"]},"syncedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["provider","externalId","url","organizerName","attribution","syncedAt","expiresAt"]},{"type":"null"}]},"distanceM":{"type":"integer","minimum":0,"maximum":9007199254740991},"latitudeExact":{"type":"array","items":{"type":"number"}},"longitudeExact":{"type":"array","items":{"type":"number"}},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"rsvp":{"anyOf":[{"type":"string","enum":["going","maybe","declined"]},{"type":"null"}]},"meetingPoint":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["name","latitude","longitude"]},{"type":"null"}]},"groupName":{"type":"string"},"goingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maybeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"myFeedback":{"anyOf":[{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"comment":{"type":"string"}},"required":["rating","comment"]},{"type":"null"}]},"reminders":{"type":"array","items":{"type":"object","properties":{"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["friday_evening","one_hour_before","day_before","two_hours_before"]},"status":{"type":"string","enum":["scheduled","delivered"]},"channel":{"type":"string","const":"in_app"}},"required":["scheduledAt","kind","status","channel"]}}},"required":["id","groupId","title","description","area","publicMeetingPlace","coverUrl","status","visibility","sport","timezone","revision","canRsvp","creator","externalSource","latitudeExact","longitudeExact","startsAt","endsAt","createdAt","rsvp","meetingPoint","groupName","goingCount","maybeCount","reminders"]},"CommunityEventAttendeesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"attendanceStatus":{"anyOf":[{"type":"string","enum":["present","absent"]},{"type":"null"}]},"respondedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","displayName","attendanceStatus","respondedAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"RsvpDto":{"type":"object","properties":{"status":{"type":"string","enum":["going","maybe","declined","not_going"]}},"required":["status"],"additionalProperties":false},"EventAttendanceDto":{"type":"object","properties":{"status":{"type":"string","enum":["present","absent"]}},"required":["status"],"additionalProperties":false},"CommunityEventAttendanceResponseDto":{"type":"object","properties":{"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["present","absent"]},"recordedBy":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["eventId","userId","status","recordedBy","recordedAt"]},"EventFeedbackDto":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"comment":{"default":"","type":"string","maxLength":1000}},"required":["rating"],"additionalProperties":false},"CommunityEventFeedbackResponseDto":{"type":"object","properties":{"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"rating":{"type":"integer","minimum":1,"maximum":5},"comment":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["eventId","userId","rating","comment","createdAt"]},"CommunityCalendarResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"type":"string"},"area":{"type":"string"},"publicMeetingPlace":{"type":"string"},"coverUrl":{"type":["string","null"]},"coverExpiresIn":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string","enum":["scheduled","cancelled","finished"]},"visibility":{"type":"string","enum":["group","public"]},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"timezone":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"canRsvp":{"type":"boolean"},"creator":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},"externalSource":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string"},"externalId":{"type":"string"},"url":{"type":"string","format":"uri"},"organizerName":{"type":["string","null"]},"attribution":{"type":["string","null"]},"syncedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["provider","externalId","url","organizerName","attribution","syncedAt","expiresAt"]},{"type":"null"}]},"distanceM":{"type":"integer","minimum":0,"maximum":9007199254740991},"latitudeExact":{"type":["number","null"]},"longitudeExact":{"type":["number","null"]},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"rsvp":{"anyOf":[{"type":"string","enum":["going","maybe","declined"]},{"type":"null"}]},"meetingPoint":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["name","latitude","longitude"]},{"type":"null"}]},"groupName":{"type":"string"},"goingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maybeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"myFeedback":{"anyOf":[{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"comment":{"type":"string"}},"required":["rating","comment"]},{"type":"null"}]},"reminders":{"type":"array","items":{"type":"object","properties":{"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["friday_evening","one_hour_before","day_before","two_hours_before"]},"status":{"type":"string","enum":["scheduled","delivered"]},"channel":{"type":"string","const":"in_app"}},"required":["scheduledAt","kind","status","channel"]}}},"required":["id","groupId","title","description","area","publicMeetingPlace","coverUrl","status","visibility","sport","timezone","revision","canRsvp","creator","externalSource","latitudeExact","longitudeExact","startsAt","endsAt","createdAt","rsvp","meetingPoint","groupName","goingCount","maybeCount","reminders"]}},"nextCursor":{"type":"array","items":{"type":"string"}},"timezone":{"type":"string"}},"required":["items","nextCursor","timezone"]},"CreateConversationDto":{"type":"object","properties":{"recipientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["recipientId"],"additionalProperties":false},"CommunityConversationsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"lastActivityAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"recipientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recipientName":{"type":"string"},"recipientAvatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string"},"expiresIn":{"type":"number"}},"required":["id","url","expiresIn"]},{"type":"null"}]},"unreadCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastMessage":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"senderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string"},"kind":{"type":"string","enum":["text","audio"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"replyToStory":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"available":{"type":"boolean"},"thumbnailPath":{"type":"string"}},"required":["id","available"]},{"type":"null"}]},"audio":{"anyOf":[{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentType":{"type":"string","const":"audio/mp4"},"durationMs":{"type":"integer","minimum":500,"maximum":300000},"waveform":{"minItems":64,"maxItems":64,"type":"array","items":{"type":"number","minimum":0,"maximum":1}},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":10485760},"playbackPath":{"type":"string"}},"required":["mediaId","contentType","durationMs","waveform","bytes","playbackPath"]},{"type":"null"}]}},"required":["id","conversationId","senderId","clientId","body","kind","createdAt","replyToStory","audio"]},{"type":"null"}]}},"required":["id","createdAt","lastActivityAt","recipientId","recipientName","unreadCount","lastMessage"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"CommunityMessagesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"senderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string"},"kind":{"type":"string","enum":["text","audio"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"replyToStory":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"available":{"type":"boolean"},"thumbnailPath":{"type":"string"}},"required":["id","available"]},{"type":"null"}]},"audio":{"anyOf":[{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentType":{"type":"string","const":"audio/mp4"},"durationMs":{"type":"integer","minimum":500,"maximum":300000},"waveform":{"minItems":64,"maxItems":64,"type":"array","items":{"type":"number","minimum":0,"maximum":1}},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":10485760},"playbackPath":{"type":"string"}},"required":["mediaId","contentType","durationMs","waveform","bytes","playbackPath"]},{"type":"null"}]}},"required":["id","conversationId","senderId","clientId","body","kind","createdAt","replyToStory","audio"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"SendMessageDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"default":"","type":"string","maxLength":2000},"audioMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"replyToStoryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId"],"additionalProperties":false},"CommunityMessageResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"senderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string"},"kind":{"type":"string","enum":["text","audio"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"replyToStory":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"available":{"type":"boolean"},"thumbnailPath":{"type":"string"}},"required":["id","available"]},{"type":"null"}]},"audio":{"anyOf":[{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentType":{"type":"string","const":"audio/mp4"},"durationMs":{"type":"integer","minimum":500,"maximum":300000},"waveform":{"minItems":64,"maxItems":64,"type":"array","items":{"type":"number","minimum":0,"maximum":1}},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":10485760},"playbackPath":{"type":"string"}},"required":["mediaId","contentType","durationMs","waveform","bytes","playbackPath"]},{"type":"null"}]}},"required":["id","conversationId","senderId","clientId","body","kind","createdAt","replyToStory","audio"]},"CommunityMessageDeliveredResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deliveredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","conversationId","deliveredAt"]},"CreateStoryDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"caption":{"default":"","type":"string","maxLength":280},"visibility":{"default":"private","type":"string","enum":["private","followers","public"]}},"required":["clientId","mediaId"],"additionalProperties":false},"StoryReactionDto":{"type":"object","properties":{"emoji":{"type":"string","enum":["❤️","🔥","👏","💪"]}},"required":["emoji"],"additionalProperties":false},"StoryAssistanceRequestDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"caption":{"default":"","type":"string","maxLength":280},"locale":{"default":"en-GB","type":"string","enum":["en-US","en-GB","pt-PT","pt-BR","es-ES","fr-FR","de-DE","nl-NL"]},"processingConsentVersion":{"type":"string","const":"2026-09-12"}},"required":["clientId","mediaId","processingConsentVersion"],"additionalProperties":false},"AdminStoryAuthorsDto":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"authorCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"storyCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"avatarExpiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"storyCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"latestAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["authorId","displayName","avatarUrl","storyCount","latestAt"],"additionalProperties":false}}},"required":["asOf","authorCount","storyCount","avatarExpiresIn","items"],"additionalProperties":false},"AdminGroupPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string"},"region":{"type":"string"},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"discoveryArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"name":{"type":"string","minLength":1,"maxLength":120},"label":{"type":"string","minLength":1,"maxLength":160},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["id","name","label","latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"joinModel":{"type":"string","enum":["open","request"]},"audience":{"type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"enabled":{"type":"boolean"},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","ownerId","name","description","sport","region","city","state","discoveryArea","joinModel","audience","coverUrl","enabled","archivedAt","deletedAt","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdminGroupDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ownerId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string"},"region":{"type":"string"},"city":{"type":"array","items":{"type":"string"}},"state":{"type":"array","items":{"type":"string"}},"discoveryArea":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"name":{"type":"string","minLength":1,"maxLength":120},"label":{"type":"string","minLength":1,"maxLength":160},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["id","name","label","latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"joinModel":{"type":"string","enum":["open","request"]},"audience":{"type":"string","enum":["open_to_all","open_to_beginners","open_to_women_60_plus","open_to_ages_60_plus","open_to_all_paces"],"description":"Who the KyClub is for: all levels, beginners, women aged 60+, everyone aged 60+, or all paces. Descriptive only; does not change admission rules. Existing clubs default to open_to_all."},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"enabled":{"type":"boolean"},"archivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","ownerId","name","description","sport","region","city","state","discoveryArea","joinModel","audience","coverUrl","enabled","archivedAt","deletedAt","createdAt"]},"AdminCommunityStateDto":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"AdminEventPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"creatorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"type":"string"},"area":{"type":"string"},"publicMeetingPlace":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"status":{"type":"string","enum":["scheduled","cancelled","finished"]},"enabled":{"type":"boolean"},"disabledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","groupId","creatorId","title","description","area","publicMeetingPlace","latitude","longitude","startsAt","endsAt","coverUrl","status","enabled","disabledAt","deletedAt","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdminEventDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"creatorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"type":"string"},"area":{"type":"string"},"publicMeetingPlace":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"status":{"type":"string","enum":["scheduled","cancelled","finished"]},"enabled":{"type":"boolean"},"disabledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","groupId","creatorId","title","description","area","publicMeetingPlace","latitude","longitude","startsAt","endsAt","coverUrl","status","enabled","disabledAt","deletedAt","createdAt"]},"ChatVoiceInboxResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdBy":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ringExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"participants":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"state":{"type":"string","enum":["invited","joined","declined","left"]},"isOriginal":{"type":"boolean"},"joinedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userId","displayName","state","isOriginal","joinedAt"]}}},"required":["id","conversationId","createdBy","createdAt","ringExpiresAt","expiresAt","endedAt","participants"]}}},"required":["items"]},"ChatVoiceCallResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdBy":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ringExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"participants":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"state":{"type":"string","enum":["invited","joined","declined","left"]},"isOriginal":{"type":"boolean"},"joinedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["userId","displayName","state","isOriginal","joinedAt"]}}},"required":["id","conversationId","createdBy","createdAt","ringExpiresAt","expiresAt","endedAt","participants"]},"ChatVoiceJoinResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"meeting":{"type":"object","properties":{"meetingId":{"type":"string"},"externalMeetingId":{"type":["string","null"]},"mediaRegion":{"type":"string"},"mediaPlacement":{"type":"object","properties":{"audioHostUrl":{"type":"string"},"audioFallbackUrl":{"type":"string"},"signalingUrl":{"type":"string"},"turnControlUrl":{"type":"string"}},"required":["audioHostUrl","audioFallbackUrl","signalingUrl","turnControlUrl"],"additionalProperties":false}},"required":["meetingId","externalMeetingId","mediaRegion","mediaPlacement"],"additionalProperties":false},"attendee":{"type":"object","properties":{"attendeeId":{"type":"string"},"externalUserId":{"type":"string"},"joinToken":{"type":"string"}},"required":["attendeeId","externalUserId","joinToken"],"additionalProperties":false},"callId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["expiresAt","meeting","attendee","callId"],"additionalProperties":false},"ChatVoiceFriendsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"handle":{"type":["string","null"]}},"required":["id","displayName","handle"]}}},"required":["items"]},"InviteChatVoiceGuestDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["userId"],"additionalProperties":false},"ChatVoiceLeaveResponseDto":{"type":"object","properties":{"left":{"type":"boolean","const":true}},"required":["left"]},"HealthSyncDto":{"type":"object","properties":{"records":{"minItems":1,"maxItems":1000,"type":"array","items":{"oneOf":[{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"steps"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"count":{"type":"integer","minimum":0,"maximum":250000}},"required":["source","externalId","kind","startedAt","endedAt","count"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"sleep"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"stage":{"default":"asleep","type":"string","enum":["asleep","awake","light","deep","rem"]}},"required":["source","externalId","kind","startedAt","endedAt"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"heart_rate"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"bpm":{"type":"integer","minimum":20,"maximum":250}},"required":["source","externalId","kind","recordedAt","bpm"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"resting_heart_rate"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"bpm":{"type":"integer","minimum":20,"maximum":250}},"required":["source","externalId","kind","recordedAt","bpm"],"additionalProperties":false}]}}},"required":["records"],"additionalProperties":false},"HydrationDto":{"type":"object","properties":{"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"volumeMl":{"type":"integer","minimum":1,"maximum":5000}},"required":["externalId","recordedAt","volumeMl"],"additionalProperties":false},"MealDto":{"type":"object","properties":{"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"name":{"type":"string","minLength":1,"maxLength":160},"category":{"type":"string","enum":["breakfast","lunch","dinner","snack"]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"items":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"quantity":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}]},"grams":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":10000},{"type":"null"}]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"caloriesKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"carbohydratesG":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]}},"required":["name"],"additionalProperties":false}},"analysisId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["externalId","recordedAt","name","category"],"additionalProperties":false},"HealthLibrarySyncDto":{"type":"object","properties":{"typeIdentifier":{"type":"string"},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"parts":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"payloadHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"partIndex":{"type":"integer","minimum":0,"maximum":2047},"partCount":{"type":"integer","minimum":1,"maximum":2048},"data":{"type":"string","minLength":4,"maxLength":16000,"pattern":"^[A-Za-z0-9+/]+={0,2}$"}},"required":["externalId","startedAt","endedAt","payloadHash","partIndex","partCount","data"],"additionalProperties":false}},"deletedExternalIds":{"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["typeIdentifier","capturedAt","parts","deletedExternalIds"],"additionalProperties":false},"ProviderBeginDto":{"type":"object","properties":{"groups":{"default":["activity_and_fitness","health_metrics_and_measurements","sleep","nutrition"],"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["activity_and_fitness","health_metrics_and_measurements","sleep","nutrition","ecg","irn"]}}},"additionalProperties":false},"ProviderExchangeDto":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":4096},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"scope":{"type":"string","maxLength":2048}},"required":["code","state"],"additionalProperties":false},"AppleHealthSyncDto":{"type":"object","properties":{"kind":{"type":"string","enum":["steps","sleep","heart_rate","resting_heart_rate","active_energy"]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"records":{"maxItems":1000,"type":"array","items":{"oneOf":[{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"steps"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"count":{"type":"integer","minimum":0,"maximum":250000}},"required":["source","externalId","kind","startedAt","endedAt","count"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"sleep"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"stage":{"default":"asleep","type":"string","enum":["asleep","awake","light","deep","rem"]}},"required":["source","externalId","kind","startedAt","endedAt"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"heart_rate"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"bpm":{"type":"integer","minimum":20,"maximum":250}},"required":["source","externalId","kind","recordedAt","bpm"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"resting_heart_rate"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"bpm":{"type":"integer","minimum":20,"maximum":250}},"required":["source","externalId","kind","recordedAt","bpm"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"healthkit"},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"active_energy"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kcal":{"type":"number","minimum":0,"maximum":5000}},"required":["source","externalId","kind","startedAt","endedAt","kcal"],"additionalProperties":false}]}},"deletedExternalIds":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}},"required":["kind","capturedAt","records","deletedExternalIds"],"additionalProperties":false},"AppleWorkoutsDto":{"type":"object","properties":{"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"workouts":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceBundleIdentifier":{"type":"string","minLength":1,"maxLength":255},"deviceVerified":{"type":"boolean"},"syncIdentifier":{"type":"string","minLength":1,"maxLength":255},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"durationS":{"type":"number","exclusiveMinimum":0,"maximum":604800},"distanceM":{"type":"number","minimum":0,"maximum":1000000},"averageHeartRate":{"type":"number","minimum":20,"maximum":250},"maximumHeartRate":{"type":"number","minimum":20,"maximum":250},"activeEnergyKcal":{"type":"number","minimum":0,"maximum":50000},"poolLengthM":{"anyOf":[{"type":"number","const":25},{"type":"number","const":33},{"type":"number","const":50}]},"lengths":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"strokeType":{"type":"string","enum":["freestyle","backstroke","breaststroke","butterfly","mixed","drill","unknown"]},"strokes":{"anyOf":[{"type":"integer","minimum":0,"maximum":300},{"type":"null"}]}},"required":["startedAt","endedAt"],"additionalProperties":false}}},"required":["workoutId","sourceBundleIdentifier","sport","startedAt","endedAt","durationS"],"additionalProperties":false}},"deletedWorkoutIds":{"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["capturedAt","workouts","deletedWorkoutIds"],"additionalProperties":false},"HydrationReconcileDto":{"type":"object","properties":{"externalIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["externalIds"],"additionalProperties":false},"HydrationReconciliationResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","const":"active"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"volumeMl":{"type":"integer","minimum":1,"maximum":5000}},"required":["externalId","version","updatedAt","status","recordedAt","volumeMl"],"additionalProperties":false},{"type":"object","properties":{"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","const":"deleted"}},"required":["externalId","version","updatedAt","status"],"additionalProperties":false},{"type":"object","properties":{"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","const":"missing"}},"required":["externalId","status"],"additionalProperties":false}]}}},"required":["items"]},"HydrationEditDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"volumeMl":{"type":"integer","minimum":1,"maximum":5000}},"required":["clientId","expectedVersion","volumeMl"],"additionalProperties":false},"HydrationEntryResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"externalId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"volumeMl":{"type":"integer","minimum":1,"maximum":5000},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","externalId","recordedAt","volumeMl","version","updatedAt"]},"HydrationRemoveDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["clientId","expectedVersion"],"additionalProperties":false},"HydrationRemovedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deleted":{"type":"boolean","const":true},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","deleted","version","updatedAt"]},"CreateMealAnalysisDto":{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expect":{"default":"auto","type":"string","enum":["plate","label","auto"]}},"required":["mediaId"],"additionalProperties":false},"MealAnalysisCancellationDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646}},"required":["clientId","expectedVersion"],"additionalProperties":false},"MealAnalysisReceiptDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"analysisId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"operation":{"type":"string","enum":["cancel","replace"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","const":"failed"},"cancelledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"replacement":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","const":"pending"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","mediaId","version","status","createdAt"]},{"type":"null"}]}},"required":["clientId","analysisId","operation","version","status","cancelledAt","replacement"],"additionalProperties":false},"MealAnalysisReplacementDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":2147483646},"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expect":{"type":"string","enum":["plate","label","auto"]}},"required":["clientId","expectedVersion","mediaId","expect"],"additionalProperties":false},"HealthConnectSnapshotDto":{"type":"object","properties":{"kind":{"type":"string","enum":["sleep","heart_rate","resting_heart_rate","exercise"]},"recordId":{"type":"string","minLength":1,"maxLength":128},"snapshotId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"modifiedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"partIndex":{"type":"integer","minimum":0,"maximum":255},"totalParts":{"type":"integer","minimum":1,"maximum":256},"records":{"maxItems":1000,"type":"array","items":{"oneOf":[{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"steps"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"count":{"type":"integer","minimum":0,"maximum":250000}},"required":["source","externalId","kind","startedAt","endedAt","count"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"sleep"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"stage":{"default":"asleep","type":"string","enum":["asleep","awake","light","deep","rem"]}},"required":["source","externalId","kind","startedAt","endedAt"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"heart_rate"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"bpm":{"type":"integer","minimum":20,"maximum":250}},"required":["source","externalId","kind","recordedAt","bpm"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["manual","health_connect","healthkit","device"]},"externalId":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","const":"resting_heart_rate"},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"bpm":{"type":"integer","minimum":20,"maximum":250}},"required":["source","externalId","kind","recordedAt","bpm"],"additionalProperties":false}]}},"dataOrigin":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$"},"session":{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"exerciseType":{"type":"object","properties":{"id":{"type":"integer","minimum":0,"maximum":100000},"name":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"}},"required":["id","name"],"additionalProperties":false},"title":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"distanceM":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}]},"activeEnergyKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":100000},{"type":"null"}]},"averageHeartRate":{"anyOf":[{"type":"integer","minimum":20,"maximum":250},{"type":"null"}]},"maximumHeartRate":{"anyOf":[{"type":"integer","minimum":20,"maximum":250},{"type":"null"}]},"deviceVerified":{"type":"boolean"},"activeEnergyDeviceVerified":{"type":"boolean"},"heartRateDeviceVerified":{"type":"boolean"}},"required":["startedAt","endedAt","exerciseType"],"additionalProperties":false}},"required":["kind","recordId","snapshotId","modifiedAt","partIndex","totalParts"],"additionalProperties":false},"HealthConnectDeletionsDto":{"type":"object","properties":{"records":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["steps","sleep","heart_rate","resting_heart_rate","exercise"]},"recordId":{"type":"string","minLength":1,"maxLength":128}},"required":["kind","recordId"],"additionalProperties":false}}},"required":["records"],"additionalProperties":false},"HealthConnectStepDaysDto":{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"days":{"minItems":1,"maxItems":31,"type":"array","items":{"type":"object","properties":{"date":{"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])))$"},"steps":{"anyOf":[{"type":"integer","minimum":0,"maximum":250000},{"type":"null"}]},"distanceM":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}]},"activeEnergyKcal":{"anyOf":[{"type":"number","minimum":0,"maximum":100000},{"type":"null"}]},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["date","steps","capturedAt"],"additionalProperties":false}}},"required":["days"],"additionalProperties":false},"HealthConsentPolicyDto":{"type":"object","properties":{"version":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"}},"required":["version","title","body"],"additionalProperties":false},"RegisterDeviceDto":{"type":"object","properties":{"externalId":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":100},"kind":{"type":"string","enum":["watch","heart_rate_monitor","bike_sensor","phone"]},"manufacturer":{"type":"string","minLength":1,"maxLength":80},"model":{"type":"string","minLength":1,"maxLength":100},"firmwareVersion":{"type":"string","minLength":1,"maxLength":80}},"required":["externalId","name","kind"],"additionalProperties":false},"UpdateDeviceDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"firmwareVersion":{"type":"string","minLength":1,"maxLength":80},"batteryPercent":{"type":"integer","minimum":0,"maximum":100},"reportedConnectionState":{"type":"string","enum":["connected","disconnected"]},"lastSeenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"UploadRequestDto":{"type":"object","properties":{"purpose":{"type":"string","enum":["avatar","post","meal","cover","artwork","story","chat_audio"]},"contentType":{"type":"string","enum":["image/jpeg","image/png","image/webp","video/mp4","audio/mp4","audio/mpeg","audio/ogg","audio/webm","audio/wav"]},"storyEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"rotation":{"default":0,"anyOf":[{"type":"number","const":0},{"type":"number","const":90},{"type":"number","const":180},{"type":"number","const":270}]},"crop":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","exclusiveMinimum":0,"maximum":1},"height":{"type":"number","exclusiveMinimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false},"filter":{"default":"none","type":"string","enum":["none","mono","warm","cool"]},"effect":{"default":"none","type":"string","enum":["none","vignette"]},"music":{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"offsetMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":1000,"maximum":60000},"volume":{"default":0.5,"type":"number","minimum":0,"maximum":1}},"required":["trackId","offsetMs","durationMs"],"additionalProperties":false},"accessibilityDescription":{"default":"","type":"string","maxLength":400},"mentions":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["version"],"additionalProperties":false},"bytes":{"type":"integer","minimum":1,"maximum":52428800}},"required":["purpose","contentType","bytes"],"additionalProperties":false},"UploadTicketDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"put":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"method":{"type":"string","const":"PUT"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","method","headers","expiresIn"]},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","put","expiresIn"]},"MediaCompletionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"purpose":{"type":"string","enum":["avatar","post","meal","cover","artwork","story","chat_audio"]},"status":{"type":"string","enum":["queued","ready"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"failureCode":{"type":"array","items":{"type":"string"}},"width":{"type":"array","items":{"type":"number"}},"height":{"type":"array","items":{"type":"number"}},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"processedContentType":{"type":"array","items":{"type":"string"}},"storyEdit":{"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"rotation":{"default":0,"anyOf":[{"type":"number","const":0},{"type":"number","const":90},{"type":"number","const":180},{"type":"number","const":270}]},"crop":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","exclusiveMinimum":0,"maximum":1},"height":{"type":"number","exclusiveMinimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false},"filter":{"default":"none","type":"string","enum":["none","mono","warm","cool"]},"effect":{"default":"none","type":"string","enum":["none","vignette"]},"music":{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"offsetMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":1000,"maximum":60000},"volume":{"default":0.5,"type":"number","minimum":0,"maximum":1}},"required":["trackId","offsetMs","durationMs"],"additionalProperties":false},"accessibilityDescription":{"default":"","type":"string","maxLength":400},"mentions":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["version"],"additionalProperties":false},{"type":"null"}]},"storyPreviewPath":{"type":"array","items":{"type":"string"}},"storyThumbnailPath":{"type":"array","items":{"type":"string"}},"waveform":{"anyOf":[{"minItems":64,"maxItems":64,"type":"array","items":{"type":"number","minimum":0,"maximum":1}},{"type":"null"}]},"processedBytes":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"audioPreviewPath":{"type":"array","items":{"type":"string"}}},"required":["id","status"]},"MediaAssetResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"purpose":{"type":"string","enum":["avatar","post","meal","cover","artwork","story","chat_audio"]},"status":{"type":"string","enum":["pending","queued","ready","failed"]},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"failureCode":{"type":"array","items":{"type":"string"}},"width":{"type":"array","items":{"type":"number"}},"height":{"type":"array","items":{"type":"number"}},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"processedContentType":{"type":"array","items":{"type":"string"}},"storyEdit":{"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"rotation":{"default":0,"anyOf":[{"type":"number","const":0},{"type":"number","const":90},{"type":"number","const":180},{"type":"number","const":270}]},"crop":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","exclusiveMinimum":0,"maximum":1},"height":{"type":"number","exclusiveMinimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false},"filter":{"default":"none","type":"string","enum":["none","mono","warm","cool"]},"effect":{"default":"none","type":"string","enum":["none","vignette"]},"music":{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"offsetMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":1000,"maximum":60000},"volume":{"default":0.5,"type":"number","minimum":0,"maximum":1}},"required":["trackId","offsetMs","durationMs"],"additionalProperties":false},"accessibilityDescription":{"default":"","type":"string","maxLength":400},"mentions":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["version"],"additionalProperties":false},{"type":"null"}]},"storyPreviewPath":{"type":"array","items":{"type":"string"}},"storyThumbnailPath":{"type":"array","items":{"type":"string"}},"waveform":{"anyOf":[{"minItems":64,"maxItems":64,"type":"array","items":{"type":"number","minimum":0,"maximum":1}},{"type":"null"}]},"processedBytes":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"audioPreviewPath":{"type":"array","items":{"type":"string"}}},"required":["id","purpose","status","url","expiresIn","failureCode","width","height","durationMs","processedContentType","storyEdit","storyPreviewPath","storyThumbnailPath"]},"CompleteBreathingDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pattern":{"type":"string","enum":["belly","longer_out","box"]},"durationSeconds":{"anyOf":[{"type":"number","const":120},{"type":"number","const":300},{"type":"number","const":600}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"feeling":{"type":"string","enum":["calmer","same","worse"]}},"required":["id","pattern","durationSeconds","startedAt","endedAt"],"additionalProperties":false},"EventDiscoveryAreaResponseDto":{"type":"object","properties":{"area":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","enum":["manual","device"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"integer","minimum":1000,"maximum":100000},"notificationsEnabled":{"type":"boolean"},"subscribedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["source","latitude","longitude","radiusM","notificationsEnabled","subscribedAt","updatedAt","expiresAt"],"additionalProperties":false},{"type":"null"}]},"policy":{"type":"object","properties":{"retentionDays":{"type":"number","const":30},"coordinateDecimals":{"type":"number","const":2},"maxNotificationsPerUtcDay":{"type":"number","const":3}},"required":["retentionDays","coordinateDecimals","maxNotificationsPerUtcDay"]}},"required":["area","policy"]},"EventDiscoveryAreaDto":{"type":"object","properties":{"source":{"type":"string","enum":["manual","device"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"integer","minimum":1000,"maximum":100000},"notificationsEnabled":{"type":"boolean"}},"required":["source","latitude","longitude","radiusM","notificationsEnabled"],"additionalProperties":false},"EventImportCapabilitiesDto":{"type":"object","properties":{"provider":{"type":"string","const":"openagenda"},"enabled":{"type":"boolean"},"available":{"type":"boolean"},"reason":{"anyOf":[{"type":"string","enum":["disabled","configuration_required"]},{"type":"null"}]},"agendaCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"attribution":{"type":"string"},"coverage":{"type":"string","const":"configured_agendas"}},"required":["provider","enabled","available","reason","agendaCount","attribution","coverage"]},"EventImportAreaDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":25000,"type":"integer","minimum":1000,"maximum":100000}},"required":["latitude","longitude"],"additionalProperties":false},"EventImportResultDto":{"type":"object","properties":{"status":{"type":"string","enum":["completed","partial","unavailable","busy"]},"reason":{"type":"array","items":{"type":"string"}},"requests":{"type":"integer","minimum":0,"maximum":9007199254740991},"created":{"type":"integer","minimum":0,"maximum":9007199254740991},"updated":{"type":"integer","minimum":0,"maximum":9007199254740991},"unchanged":{"type":"integer","minimum":0,"maximum":9007199254740991},"withdrawn":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991},"areas":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","reason","requests","created","updated","unchanged","withdrawn","skipped","failed","areas"]},"MissionNearbyDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},"MissionNearbyResponseDto":{"type":"object","properties":{"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cellId":{"type":"string"},"nearbyZones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cellId":{"type":"string"}},"required":["id","cellId"]}},"approximate":{"type":"boolean","const":true},"h3Resolution":{"type":"number","const":7},"maximumNeighbourRings":{"type":"number","const":2},"catalogueVersion":{"type":"string","const":"community-missions-v1"},"exactPointStored":{"type":"boolean","const":false}},"required":["zoneId","cellId","nearbyZones","approximate","h3Resolution","maximumNeighbourRings","catalogueVersion","exactPointStored"]},"RankingsResponseDto":{"type":"object","properties":{"scope":{"type":"string","enum":["friends","city","everyone"]},"city":{"type":"array","items":{"type":"string"}},"exercise":{"type":"string","enum":["all","run","walk","ride","gym","swim"]},"metric":{"type":"string","enum":["distance","time","sessions","elevation"]},"timezone":{"type":"string"},"weekStartsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"weekEndsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"refreshAfter":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"refreshIntervalSeconds":{"type":"number","const":3600},"participating":{"type":"boolean"},"rankingPopulation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tierPolicy":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":20,"maximum":1000},"thresholds":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["diamond","gold","silver","bronze"]},"topPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["tier","topPercent"],"additionalProperties":false}}},"required":["version","minimumPopulation","thresholds"],"additionalProperties":false},"friendsDefinition":{"type":"string","const":"mutual_follows"},"privateActivitiesIncluded":{"type":"boolean","const":false},"items":{"type":"array","items":{"type":"object","properties":{"achievementBadge":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},"distanceM":{"type":"number","exclusiveMinimum":0},"stage":{"type":"integer","minimum":0,"maximum":9007199254740991},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","sport","distanceM","stage","earnedAt"]},{"type":"null"}]},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"displayName":{"type":"string"},"rank":{"type":["number","null"]},"value":{"type":["number","null"]},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationS":{"type":"number"},"distanceM":{"type":["number","null"]},"elevationGainM":{"type":["number","null"]},"pendingActivities":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isYou":{"type":"boolean"},"tier":{"anyOf":[{"type":"object","properties":{"tier":{"anyOf":[{"type":"string","enum":["diamond","gold","silver","bronze"]},{"type":"null"}]},"provisional":{"type":"boolean"},"reason":{"anyOf":[{"type":"string","const":"INSUFFICIENT_PARTICIPANTS"},{"type":"null"}]},"topPercent":{"type":"number"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["tier","provisional","reason","topPercent","policyVersion","minimumPopulation"]},{"type":"null"}]},"status":{"type":"string","enum":["pending_validation","no_eligible_activities","metric_unavailable","ranked"]}},"required":["achievementBadge","userId","avatarUrl","displayName","rank","value","sessions","durationS","distanceM","elevationGainM","pendingActivities","isYou","tier","status"]}},"own":{"anyOf":[{"type":"object","properties":{"achievementBadge":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","hiking","cycling","swimming"]},"distanceM":{"type":"number","exclusiveMinimum":0},"stage":{"type":"integer","minimum":0,"maximum":9007199254740991},"achievementId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","sport","distanceM","stage","earnedAt"]},{"type":"null"}]},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"displayName":{"type":"string"},"rank":{"type":["number","null"]},"value":{"type":["number","null"]},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationS":{"type":"number"},"distanceM":{"type":["number","null"]},"elevationGainM":{"type":["number","null"]},"pendingActivities":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isYou":{"type":"boolean"},"tier":{"anyOf":[{"type":"object","properties":{"tier":{"anyOf":[{"type":"string","enum":["diamond","gold","silver","bronze"]},{"type":"null"}]},"provisional":{"type":"boolean"},"reason":{"anyOf":[{"type":"string","const":"INSUFFICIENT_PARTICIPANTS"},{"type":"null"}]},"topPercent":{"type":"number"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["tier","provisional","reason","topPercent","policyVersion","minimumPopulation"]},{"type":"null"}]},"status":{"type":"string","enum":["pending_validation","no_eligible_activities","metric_unavailable","ranked"]}},"required":["achievementBadge","userId","avatarUrl","displayName","rank","value","sessions","durationS","distanceM","elevationGainM","pendingActivities","isYou","tier","status"]},{"type":"null"}]},"nextOffset":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["scope","city","exercise","metric","timezone","weekStartsAt","weekEndsAt","asOf","refreshAfter","refreshIntervalSeconds","participating","rankingPopulation","tierPolicy","friendsDefinition","privateActivitiesIncluded","items","own","nextOffset"]},"RankingPreferencesResponseDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"privateActivitiesIncluded":{"type":"boolean","const":false}},"required":["enabled","privateActivitiesIncluded"]},"RankingPreferenceDto":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"RankingPreferencesSavedResponseDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"activitiesPreserved":{"type":"boolean","const":true}},"required":["enabled","updatedAt","activitiesPreserved"]},"MissionsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"ruleDescription":{"type":"string"},"difficulty":{"type":"string","enum":["easy","medium","hard"]},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"rule":{"oneOf":[{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"sessions"},"beforeLocalTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}},"required":["targetSessions","minimumDurationS","sports","kind"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"zone_distance"},"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"minimumDistanceM":{"type":"number","minimum":1,"maximum":1000000},"minimumInsideRatio":{"type":"number","minimum":0.01,"maximum":1},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","zoneId","minimumDistanceM","minimumInsideRatio","gpsRequired"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"new_zone"},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","gpsRequired"],"additionalProperties":false}]},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"icon":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"material_symbols"},"name":{"type":"string","const":"emoji_events"}},"required":["provider","name"]},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId","icon"]},"state":{"type":"string","enum":["available","in_progress","completed","expired"]},"progress":{"type":"object","properties":{"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"target":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"evaluatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["completed","target","evaluatedAt","completedAt"]},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"localTimeZone":{"type":"string"},"archived":{"type":"boolean"},"canAccept":{"type":"boolean"},"canClaim":{"type":"boolean"},"claimedReward":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"claimedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"visibility":{"type":"string","enum":["private","followers","public"]}},"required":["id","claimedAt","visibility"]},{"type":"null"}]},"blockedReason":{"type":["string","null"]}},"required":["id","code","name","goal","ruleDescription","difficulty","startsAt","endsAt","timezone","rule","reward","state","progress","acceptedAt","localTimeZone","archived","canAccept","canClaim","claimedReward","blockedReason"]}},"nextOffset":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"optional":{"type":"boolean","const":true},"progressSource":{"type":"string","const":"recorded_or_verified_connected_activity"},"zoneDefinition":{"type":"string","const":"administered_polygons"},"gpsAccuracyMaximumM":{"type":"number","const":50}},"required":["items","nextOffset","optional","progressSource","zoneDefinition","gpsAccuracyMaximumM"]},"MissionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"ruleDescription":{"type":"string"},"difficulty":{"type":"string","enum":["easy","medium","hard"]},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"rule":{"oneOf":[{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"sessions"},"beforeLocalTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}},"required":["targetSessions","minimumDurationS","sports","kind"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"zone_distance"},"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"minimumDistanceM":{"type":"number","minimum":1,"maximum":1000000},"minimumInsideRatio":{"type":"number","minimum":0.01,"maximum":1},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","zoneId","minimumDistanceM","minimumInsideRatio","gpsRequired"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"new_zone"},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","gpsRequired"],"additionalProperties":false}]},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"icon":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"material_symbols"},"name":{"type":"string","const":"emoji_events"}},"required":["provider","name"]},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId","icon"]},"state":{"type":"string","enum":["available","in_progress","completed","expired"]},"progress":{"type":"object","properties":{"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"target":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"evaluatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["completed","target","evaluatedAt","completedAt"]},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"localTimeZone":{"type":"string"},"archived":{"type":"boolean"},"canAccept":{"type":"boolean"},"canClaim":{"type":"boolean"},"claimedReward":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"claimedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"visibility":{"type":"string","enum":["private","followers","public"]}},"required":["id","claimedAt","visibility"]},{"type":"null"}]},"blockedReason":{"type":"array","items":{"type":"string"}}},"required":["id","code","name","goal","ruleDescription","difficulty","startsAt","endsAt","timezone","rule","reward","state","progress","acceptedAt","localTimeZone","archived","canAccept","canClaim","claimedReward","blockedReason"]},"MissionLeftResponseDto":{"type":"object","properties":{"left":{"type":"boolean","const":true},"activitiesPreserved":{"type":"boolean","const":true}},"required":["left","activitiesPreserved"]},"MissionRewardResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"missionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"icon":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"material_symbols"},"name":{"type":"string","const":"emoji_events"}},"required":["provider","name"]},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId","icon"]},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visibility":{"type":"string","enum":["private","followers","public"]},"claimedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sharePath":{"type":"string"},"originalXp":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["active","revoked"]},"adjustmentRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","missionId","reward","xp","visibility","claimedAt","sharePath","originalXp","status","adjustmentRevision"]},"MissionZoneHelpResponseDto":{"type":"object","properties":{"definition":{"type":"string","const":"administered_polygons"},"gpsAccuracyMaximumM":{"type":"number","const":50},"maximumSampleGapSeconds":{"type":"number","const":60},"zoneDistance":{"type":"string"},"newZone":{"type":"string"},"locationConsentRequired":{"type":"boolean","const":true},"rawRoutesPublished":{"type":"boolean","const":false}},"required":["definition","gpsAccuracyMaximumM","maximumSampleGapSeconds","zoneDistance","newZone","locationConsentRequired","rawRoutesPublished"]},"MissionZoneResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string","const":"Polygon"},"coordinates":{"minItems":1,"maxItems":10,"type":"array","items":{"minItems":4,"maxItems":500,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85}],"items":false,"minItems":2,"maxItems":2}}}},"required":["type","coordinates"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","description","geometry","created_at"]},"MissionZoneReportDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reason":{"type":"string","enum":["unsafe","private_property","inaccurate","other"]},"detail":{"type":"string","minLength":1,"maxLength":1000}},"required":["clientId","reason","detail"],"additionalProperties":false},"MissionZoneReportReceivedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","const":"received"}},"required":["id","status"]},"MissionRewardsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"missionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"icon":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","const":"material_symbols"},"name":{"type":"string","const":"emoji_events"}},"required":["provider","name"]},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId","icon"]},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visibility":{"type":"string","enum":["private","followers","public"]},"claimedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"sharePath":{"type":"string"},"originalXp":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["active","revoked"]},"adjustmentRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","missionId","reward","xp","visibility","claimedAt","sharePath","originalXp","status","adjustmentRevision"]}},"totalXp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scoreAffected":{"type":"boolean","const":false}},"required":["items","totalXp","scoreAffected"]},"RewardVisibilityDto":{"type":"object","properties":{"visibility":{"type":"string","enum":["private","followers","public"]}},"required":["visibility"],"additionalProperties":false},"ChallengeCatalogueResponseDto":{"type":"object","properties":{"missions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"rule_description":{"type":"string"},"difficulty":{"type":"string","enum":["easy","medium","hard"]},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"rule":{"oneOf":[{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"sessions"},"beforeLocalTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}},"required":["targetSessions","minimumDurationS","sports","kind"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"zone_distance"},"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"minimumDistanceM":{"type":"number","minimum":1,"maximum":1000000},"minimumInsideRatio":{"type":"number","minimum":0.01,"maximum":1},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","zoneId","minimumDistanceM","minimumInsideRatio","gpsRequired"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"new_zone"},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","gpsRequired"],"additionalProperties":false}]},"zone_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId"]},"created_by":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","code","name","goal","rule_description","difficulty","starts_at","ends_at","timezone","rule","zone_id","reward","created_by","created_at","archived_at","deleted_at"]}},"zones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string","const":"Polygon"},"coordinates":{"minItems":1,"maxItems":10,"type":"array","items":{"minItems":4,"maxItems":500,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85}],"items":false,"minItems":2,"maxItems":2}}}},"required":["type","coordinates"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"catalogue_key":{"type":["string","null"]},"created_by":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","name","description","geometry","created_at","catalogue_key","created_by","archived_at","deleted_at"]}}},"required":["missions","zones"]},"AdminMissionPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"rule_description":{"type":"string"},"difficulty":{"type":"string","enum":["easy","medium","hard"]},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"rule":{"oneOf":[{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"sessions"},"beforeLocalTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}},"required":["targetSessions","minimumDurationS","sports","kind"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"zone_distance"},"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"minimumDistanceM":{"type":"number","minimum":1,"maximum":1000000},"minimumInsideRatio":{"type":"number","minimum":0.01,"maximum":1},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","zoneId","minimumDistanceM","minimumInsideRatio","gpsRequired"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"new_zone"},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","gpsRequired"],"additionalProperties":false}]},"zone_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId"]},"created_by":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","code","name","goal","rule_description","difficulty","starts_at","ends_at","timezone","rule","zone_id","reward","created_by","created_at","archived_at","deleted_at"]}}},"required":["items"]},"AdminMissionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"rule_description":{"type":"string"},"difficulty":{"type":"string","enum":["easy","medium","hard"]},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"rule":{"oneOf":[{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"sessions"},"beforeLocalTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}},"required":["targetSessions","minimumDurationS","sports","kind"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"zone_distance"},"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"minimumDistanceM":{"type":"number","minimum":1,"maximum":1000000},"minimumInsideRatio":{"type":"number","minimum":0.01,"maximum":1},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","zoneId","minimumDistanceM","minimumInsideRatio","gpsRequired"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"new_zone"},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","gpsRequired"],"additionalProperties":false}]},"zone_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"reward":{"type":"object","properties":{"badgeCode":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"xp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId"]},"created_by":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","code","name","goal","rule_description","difficulty","starts_at","ends_at","timezone","rule","zone_id","reward","created_by","created_at","archived_at","deleted_at"]},"MissionCreateDto":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_-]{2,79}$"},"name":{"type":"string","minLength":1,"maxLength":120},"goal":{"type":"string","minLength":1,"maxLength":400},"ruleDescription":{"type":"string","minLength":1,"maxLength":600},"difficulty":{"type":"string","enum":["easy","medium","hard"]},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string","minLength":1,"maxLength":100},"rule":{"oneOf":[{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"sessions"},"beforeLocalTime":{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"}},"required":["targetSessions","minimumDurationS","sports","kind"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"zone_distance"},"zoneId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"minimumDistanceM":{"type":"number","minimum":1,"maximum":1000000},"minimumInsideRatio":{"type":"number","minimum":0.01,"maximum":1},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","zoneId","minimumDistanceM","minimumInsideRatio","gpsRequired"],"additionalProperties":false},{"type":"object","properties":{"targetSessions":{"type":"integer","minimum":1,"maximum":100},"minimumDurationS":{"type":"integer","minimum":1,"maximum":86400},"sports":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"kind":{"type":"string","const":"new_zone"},"gpsRequired":{"type":"boolean","const":true}},"required":["targetSessions","minimumDurationS","sports","kind","gpsRequired"],"additionalProperties":false}]},"reward":{"type":"object","properties":{"badgeCode":{"type":"string","pattern":"^[a-z][a-z0-9_-]{2,79}$"},"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":1,"maxLength":600},"xp":{"type":"integer","minimum":0,"maximum":10000},"iconMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["badgeCode","name","description","xp","iconMediaId"],"additionalProperties":false}},"required":["code","name","goal","ruleDescription","difficulty","startsAt","endsAt","timezone","rule","reward"],"additionalProperties":false},"MissionAdminStateDto":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"AdminZonePageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string","const":"Polygon"},"coordinates":{"minItems":1,"maxItems":10,"type":"array","items":{"minItems":4,"maxItems":500,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85}],"items":false,"minItems":2,"maxItems":2}}}},"required":["type","coordinates"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"catalogue_key":{"type":["string","null"]},"created_by":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","name","description","geometry","created_at","catalogue_key","created_by","archived_at","deleted_at"]}}},"required":["items"]},"AdminZoneResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"description":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string","const":"Polygon"},"coordinates":{"minItems":1,"maxItems":10,"type":"array","items":{"minItems":4,"maxItems":500,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85}],"items":false,"minItems":2,"maxItems":2}}}},"required":["type","coordinates"],"additionalProperties":false},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"catalogue_key":{"type":"array","items":{"type":"string"}},"created_by":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"archived_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","name","description","geometry","created_at","catalogue_key","created_by","archived_at","deleted_at"]},"MissionZoneCreateDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","minLength":1,"maxLength":1000},"geometry":{"type":"object","properties":{"type":{"type":"string","const":"Polygon"},"coordinates":{"minItems":1,"maxItems":10,"type":"array","items":{"minItems":4,"maxItems":500,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85}],"items":false,"minItems":2,"maxItems":2}}}},"required":["type","coordinates"],"additionalProperties":false}},"required":["name","description","geometry"],"additionalProperties":false},"MissionZoneReportsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"zone_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reason":{"type":"string","enum":["unsafe","private_property","inaccurate","other"]},"detail":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","zone_id","reason","detail","created_at"]}}},"required":["items"]},"MissionZoneReportReviewDto":{"type":"object","properties":{"resolution":{"type":"string","enum":["no_action","zone_archived"]}},"required":["resolution"],"additionalProperties":false},"MissionZoneReportReviewResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"resolution":{"type":"string","enum":["no_action","zone_archived"]},"reviewedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","resolution","reviewedAt"]},"MissionCreatedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"]},"ActivityCompetitionReviewDto":{"type":"object","properties":{"status":{"type":"string","enum":["approved","rejected"]},"sourceKind":{"type":"string","enum":["manual","connected_import","app"]},"evidence":{"type":"string","minLength":10,"maxLength":1000}},"required":["status","sourceKind","evidence"],"additionalProperties":false},"MissionActivityReviewResponseDto":{"type":"object","properties":{"activity_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["approved","rejected"]},"source_kind":{"type":"string","enum":["app","manual","connected_import"]},"reviewed_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["activity_id","status","source_kind","reviewed_at"]},"ChallengeCapabilitiesResponseDto":{"type":"object","properties":{"availabilityScope":{"type":"string","const":"configuration_and_identity"},"photos":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"provider":{"type":"string","const":"aws_bedrock"},"modelId":{"type":"string"},"manualReviewAvailable":{"type":"boolean","const":true}},"required":["available","reason","provider","modelId","manualReviewAvailable"]},"posture":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"provider":{"type":"string","const":"aws_sagemaker"},"endpointConfigured":{"type":"boolean"},"socketNamespace":{"type":"string","const":"/challenges"},"minFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxFrameBytes":{"type":"number","const":40960},"maxObservedGapMs":{"type":"number","const":2000}},"required":["available","reason","provider","endpointConfigured","socketNamespace","minFrameIntervalMs","maxFrameBytes","maxObservedGapMs"]}},"required":["availabilityScope","photos","posture"]},"ChallengeProgramPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"templateIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"status":{"type":"string","enum":["draft","published","archived"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","key","version","title","description","termsId","durationDays","tasksPerDay","templateIds","status","revision","publishedAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeProgramResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"templateIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"status":{"type":"string","enum":["draft","published","archived"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","key","version","title","description","termsId","durationDays","tasksPerDay","templateIds","status","revision","publishedAt"]},"ChallengeTermsResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"text":{"type":"string"},"hash":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","key","version","title","text","hash","revision","publishedAt"]},"ChallengeEnrollDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"awsConsent":{"type":"boolean"},"timezone":{"type":"string","minLength":1,"maxLength":100},"leaderboardEnabled":{"default":false,"type":"boolean"}},"required":["clientId","termsId","termsRevision","awsConsent","timezone"],"additionalProperties":false},"ChallengeEnrollmentResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","withdrawn","completed"]},"timezone":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startsOn":{"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])))$"},"endsOn":{"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])))$"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsRevision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"termsHash":{"type":"string"},"awsConsent":{"type":"boolean"},"leaderboardEnabled":{"type":"boolean"},"withdrawnAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"program":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"terms":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"text":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string"}},"required":["id","title","text","revision","version","hash"]},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]}},"badges":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["id","key","version","title","description","durationDays","tasksPerDay","terms","templates","badges"]}},"required":["id","programId","status","timezone","acceptedAt","startsOn","endsOn","termsId","termsRevision","termsHash","awsConsent","leaderboardEnabled","withdrawnAt","completedAt","program"]},"ChallengeEnrollmentPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","withdrawn","completed"]},"timezone":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startsOn":{"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])))$"},"endsOn":{"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])))$"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsRevision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"termsHash":{"type":"string"},"awsConsent":{"type":"boolean"},"leaderboardEnabled":{"type":"boolean"},"withdrawnAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"program":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"terms":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"text":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string"}},"required":["id","title","text","revision","version","hash"]},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]}},"badges":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["id","key","version","title","description","durationDays","tasksPerDay","terms","templates","badges"]}},"required":["id","programId","status","timezone","acceptedAt","startsOn","endsOn","termsId","termsRevision","termsHash","awsConsent","leaderboardEnabled","withdrawnAt","completedAt","program"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeEnrollmentUpdateDto":{"type":"object","properties":{"leaderboardEnabled":{"type":"boolean"},"awsConsent":{"type":"boolean"}},"additionalProperties":false},"ChallengeCurrentResponseDto":{"type":"object","properties":{"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"enrollments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","withdrawn","completed"]},"timezone":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startsOn":{"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])))$"},"endsOn":{"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])))$"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsRevision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"termsHash":{"type":"string"},"awsConsent":{"type":"boolean"},"leaderboardEnabled":{"type":"boolean"},"withdrawnAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"program":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"terms":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"text":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string"}},"required":["id","title","text","revision","version","hash"]},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]}},"badges":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["id","key","version","title","description","durationDays","tasksPerDay","terms","templates","badges"]}},"required":["id","programId","status","timezone","acceptedAt","startsOn","endsOn","termsId","termsRevision","termsHash","awsConsent","leaderboardEnabled","withdrawnAt","completedAt","program"]}},"assignments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"dayIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"localDate":{"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])))$"},"task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]},"opensAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","enrollmentId","templateId","dayIndex","slot","localDate","task","opensAt","expiresAt","status","points","completedAt"]}}},"required":["serverTime","enrollments","assignments"]},"ChallengeAssignmentPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"dayIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"localDate":{"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])))$"},"task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]},"opensAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","enrollmentId","templateId","dayIndex","slot","localDate","task","opensAt","expiresAt","status","points","completedAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeAssignmentResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"dayIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"localDate":{"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])))$"},"task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]},"opensAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","enrollmentId","templateId","dayIndex","slot","localDate","task","opensAt","expiresAt","status","points","completedAt"]},"ChallengeActionDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId","sourceId"],"additionalProperties":false},"ChallengeActionResponseDto":{"type":"object","properties":{"evidence":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["photo","server_event","posture"]},"sourceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]},"submittedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"result":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","assignmentId","kind","sourceId","status","submittedAt","reviewedAt","result"]},"assignment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"dayIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"localDate":{"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])))$"},"task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]},"opensAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","enrollmentId","templateId","dayIndex","slot","localDate","task","opensAt","expiresAt","status","points","completedAt"]}},"required":["evidence","assignment"]},"ChallengeBreathingStartDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId"],"additionalProperties":false},"ChallengeBreathingResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","completed","cancelled"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"measurementsErased":{"type":"boolean"},"minimumDurationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedDurationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"heartbeatCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"nextSequence":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"heartbeatIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumHeartbeatGapSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","const":"server_timed_session"}},"required":["id","assignmentId","status","startedAt","expiresAt","completedAt","measurementsErased","minimumDurationSeconds","observedDurationMs","heartbeatCount","nextSequence","heartbeatIntervalSeconds","maximumHeartbeatGapSeconds","provenance"]},"ChallengeBreathingPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","completed","cancelled"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"measurementsErased":{"type":"boolean"},"minimumDurationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedDurationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"heartbeatCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"nextSequence":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"heartbeatIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumHeartbeatGapSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","const":"server_timed_session"}},"required":["id","assignmentId","status","startedAt","expiresAt","completedAt","measurementsErased","minimumDurationSeconds","observedDurationMs","heartbeatCount","nextSequence","heartbeatIntervalSeconds","maximumHeartbeatGapSeconds","provenance"]}}},"required":["items"]},"ChallengeBreathingHeartbeatDto":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":86400}},"required":["sequence"],"additionalProperties":false},"ChallengePointsResponseDto":{"type":"object","properties":{"totalPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedChallenges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","enrollmentId","assignmentId","points","reason","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["totalPoints","completedChallenges","items","nextCursor"]},"ChallengeBadgesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"badgeId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"pointsThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredCompletions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"earnedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"icon":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]},{"type":"null"}]}},"required":["id","badgeId","enrollmentId","key","name","description","pointsThreshold","requiredCompletions","earnedAt","icon"]}}},"required":["items"]},"ChallengeLeaderboardResponseDto":{"type":"object","properties":{"programId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"items":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedChallenges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredChallenges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["userId","displayName","points","completedChallenges","expiredChallenges","rank"]}},"nextOffset":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["programId","items","nextOffset"]},"ChallengeAdminEnrollmentPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","withdrawn","completed"]},"timezone":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startsOn":{"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])))$"},"endsOn":{"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])))$"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsRevision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"termsHash":{"type":"string"},"awsConsent":{"type":"boolean"},"leaderboardEnabled":{"type":"boolean"},"withdrawnAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"program":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"terms":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"text":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string"}},"required":["id","title","text","revision","version","hash"]},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]}},"badges":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["id","key","version","title","description","durationDays","tasksPerDay","terms","templates","badges"]},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedChallenges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiredChallenges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","programId","status","timezone","acceptedAt","startsOn","endsOn","termsId","termsRevision","termsHash","awsConsent","leaderboardEnabled","withdrawnAt","completedAt","program","userId","points","completedChallenges","expiredChallenges"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeAdminProgressResponseDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["active","withdrawn","completed"]},"timezone":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"startsOn":{"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])))$"},"endsOn":{"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])))$"},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"termsRevision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"termsHash":{"type":"string"},"awsConsent":{"type":"boolean"},"leaderboardEnabled":{"type":"boolean"},"withdrawnAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"program":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tasksPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"terms":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"text":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string"}},"required":["id","title","text","revision","version","hash"]},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]}},"badges":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["id","key","version","title","description","durationDays","tasksPerDay","terms","templates","badges"]}},"required":["id","programId","status","timezone","acceptedAt","startsOn","endsOn","termsId","termsRevision","termsHash","awsConsent","leaderboardEnabled","withdrawnAt","completedAt","program"]},"summary":{"type":"object","properties":{"assigned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"submitted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expired":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["assigned","completed","pending","submitted","expired","cancelled","points"]},"assignments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"templateId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"dayIndex":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"slot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"localDate":{"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])))$"},"task":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"instructions":{"type":"string"},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"windowMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"attemptLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"verification":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","key","title","description","instructions","kind","points","windowMinutes","attemptLimit","verification"]},"opensAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","enrollmentId","templateId","dayIndex","slot","localDate","task","opensAt","expiresAt","status","points","completedAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["userId","enrollment","summary","assignments","nextCursor"]},"AdminChallengeTermsPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":100000},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["draft","published","archived"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","title","text","id","revision","deletedAt","createdAt","updatedAt","hash","status","publishedAt","createdBy"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"AdminChallengeTermsDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":100000},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["draft","published","archived"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdBy":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","title","text","id","revision","deletedAt","createdAt","updatedAt","hash","status","publishedAt","createdBy"],"additionalProperties":false},"CreateChallengeTermsDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":100000}},"required":["key","title","text"],"additionalProperties":false},"ReplaceChallengeTermsDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":100000},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["key","title","text","expectedRevision"],"additionalProperties":false},"PatchChallengeTermsDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":100000},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"status":{"type":"string","enum":["draft","published","archived"]}},"required":["expectedRevision"],"additionalProperties":false},"AdminChallengeTemplatePageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"type":"string","minLength":1,"maxLength":10000},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"windowMinutes":{"default":1440,"type":"integer","minimum":1,"maximum":1440},"attemptLimit":{"default":3,"type":"integer","minimum":1,"maximum":20},"verification":{"default":{},"type":"object","properties":{"minConfidence":{"type":"number","minimum":0,"maximum":1},"minDurationSeconds":{"type":"integer","minimum":30,"maximum":1800},"poseExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["key","title","instructions","kind","id","revision","deletedAt","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"AdminChallengeTemplateDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"type":"string","minLength":1,"maxLength":10000},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"windowMinutes":{"default":1440,"type":"integer","minimum":1,"maximum":1440},"attemptLimit":{"default":3,"type":"integer","minimum":1,"maximum":20},"verification":{"default":{},"type":"object","properties":{"minConfidence":{"type":"number","minimum":0,"maximum":1},"minDurationSeconds":{"type":"integer","minimum":30,"maximum":1800},"poseExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["key","title","instructions","kind","id","revision","deletedAt","createdAt","updatedAt"],"additionalProperties":false},"CreateChallengeTemplateDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"type":"string","minLength":1,"maxLength":10000},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"windowMinutes":{"default":1440,"type":"integer","minimum":1,"maximum":1440},"attemptLimit":{"default":3,"type":"integer","minimum":1,"maximum":20},"verification":{"default":{},"type":"object","properties":{"minConfidence":{"type":"number","minimum":0,"maximum":1},"minDurationSeconds":{"type":"integer","minimum":30,"maximum":1800},"poseExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"enabled":{"default":true,"type":"boolean"}},"required":["key","title","instructions","kind"],"additionalProperties":false},"ReplaceChallengeTemplateDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"type":"string","minLength":1,"maxLength":10000},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"default":10,"type":"integer","minimum":0,"maximum":1000000},"windowMinutes":{"default":1440,"type":"integer","minimum":1,"maximum":1440},"attemptLimit":{"default":3,"type":"integer","minimum":1,"maximum":20},"verification":{"default":{},"type":"object","properties":{"minConfidence":{"type":"number","minimum":0,"maximum":1},"minDurationSeconds":{"type":"integer","minimum":30,"maximum":1800},"poseExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["key","title","instructions","kind","expectedRevision"],"additionalProperties":false},"PatchChallengeTemplateDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"instructions":{"type":"string","minLength":1,"maxLength":10000},"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"points":{"type":"integer","minimum":0,"maximum":1000000},"windowMinutes":{"type":"integer","minimum":1,"maximum":1440},"attemptLimit":{"type":"integer","minimum":1,"maximum":20},"verification":{"type":"object","properties":{"minConfidence":{"type":"number","minimum":0,"maximum":1},"minDurationSeconds":{"type":"integer","minimum":30,"maximum":1800},"poseExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"AdminChallengeProgramPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":1,"maximum":366},"tasksPerDay":{"type":"integer","minimum":1,"maximum":24},"templateIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["draft","published","archived"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["key","title","termsId","durationDays","tasksPerDay","templateIds","id","revision","deletedAt","createdAt","updatedAt","status","publishedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"AdminChallengeProgramDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":1,"maximum":366},"tasksPerDay":{"type":"integer","minimum":1,"maximum":24},"templateIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["draft","published","archived"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["key","title","termsId","durationDays","tasksPerDay","templateIds","id","revision","deletedAt","createdAt","updatedAt","status","publishedAt"],"additionalProperties":false},"CreateChallengeProgramDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":1,"maximum":366},"tasksPerDay":{"type":"integer","minimum":1,"maximum":24},"templateIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["key","title","termsId","durationDays","tasksPerDay","templateIds"],"additionalProperties":false},"ReplaceChallengeProgramDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":1,"maximum":366},"tasksPerDay":{"type":"integer","minimum":1,"maximum":24},"templateIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["key","title","termsId","durationDays","tasksPerDay","templateIds","expectedRevision"],"additionalProperties":false},"PatchChallengeProgramDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"termsId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationDays":{"type":"integer","minimum":1,"maximum":366},"tasksPerDay":{"type":"integer","minimum":1,"maximum":24},"templateIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"status":{"type":"string","enum":["draft","published","archived"]}},"required":["expectedRevision"],"additionalProperties":false},"AdminChallengeBadgePageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"pointsThreshold":{"default":0,"type":"integer","minimum":0,"maximum":2147483647},"requiredCompletions":{"default":1,"type":"integer","minimum":0,"maximum":1000000},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"iconPath":{"type":["string","null"]}},"required":["key","name","id","revision","deletedAt","createdAt","updatedAt","iconPath"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"AdminChallengeBadgeDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"pointsThreshold":{"default":0,"type":"integer","minimum":0,"maximum":2147483647},"requiredCompletions":{"default":1,"type":"integer","minimum":0,"maximum":1000000},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"iconPath":{"type":"array","items":{"type":"string"}}},"required":["key","name","id","revision","deletedAt","createdAt","updatedAt","iconPath"],"additionalProperties":false},"CreateChallengeBadgeDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"pointsThreshold":{"default":0,"type":"integer","minimum":0,"maximum":2147483647},"requiredCompletions":{"default":1,"type":"integer","minimum":0,"maximum":1000000},"enabled":{"default":true,"type":"boolean"}},"required":["key","name"],"additionalProperties":false},"ReplaceChallengeBadgeDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"pointsThreshold":{"default":0,"type":"integer","minimum":0,"maximum":2147483647},"requiredCompletions":{"default":1,"type":"integer","minimum":0,"maximum":1000000},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["key","name","expectedRevision"],"additionalProperties":false},"PatchChallengeBadgeDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"pointsThreshold":{"type":"integer","minimum":0,"maximum":2147483647},"requiredCompletions":{"type":"integer","minimum":0,"maximum":1000000},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"AdminChallengePoseExercisePageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["key","name","instructions","view","rule","id","revision","deletedAt","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"AdminChallengePoseExerciseDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["key","name","instructions","view","rule","id","revision","deletedAt","createdAt","updatedAt"],"additionalProperties":false},"CreateChallengePoseExerciseDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"enabled":{"default":true,"type":"boolean"}},"required":["key","name","instructions","view","rule"],"additionalProperties":false},"ReplaceChallengePoseExerciseDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["key","name","instructions","view","rule","expectedRevision"],"additionalProperties":false},"PatchChallengePoseExerciseDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"type":"number","minimum":0,"maximum":1},"holdSeconds":{"type":"integer","minimum":1,"maximum":600},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"ChallengeEvidenceResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["photo","server_event","posture"]},"sourceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"submittedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"capturedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"captureTimeSource":{"anyOf":[{"type":"string","const":"client_reported"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"decisionReason":{"type":"array","items":{"type":"string"}},"verification":{"anyOf":[{"type":"string","enum":["aws_model","administrator"]},{"type":"null"}]},"analysis":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":100},"modelId":{"type":"string","minLength":1,"maxLength":500},"promptVersion":{"type":"string","minLength":1,"maxLength":100},"evidenceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result":{"type":"string","enum":["supported","not_supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"observations":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"present":{"type":["boolean","null"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["code","present","confidence"],"additionalProperties":false}},"limitations":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"analyzedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"providerRequestId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"usage":{"type":"object","properties":{"inputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["inputTokens","outputTokens"],"additionalProperties":false}},"required":["provider","modelId","promptVersion","evidenceSha256","result","confidence","observations","limitations","analyzedAt","providerRequestId","usage"],"additionalProperties":false},{"type":"null"}]},"policySha256":{"type":"array","items":{"type":"string"}},"errorCode":{"type":"array","items":{"type":"string"}},"filePath":{"description":"Authenticated private GET path; never a public or signed object URL.","type":"array","items":{"type":"string"}},"image":{"anyOf":[{"type":"object","properties":{"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contentType":{"type":"string","const":"image/jpeg"}},"required":["width","height","bytes","contentType"]},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cleanupPending":{"type":"boolean"},"video":{"anyOf":[{"type":"object","properties":{"path":{"type":"string","description":"Authenticated private GET path; one byte Range per request; never a signed URL."},"posterPath":{"type":"string","description":"Authenticated private GET path to an upright JPEG frame."},"contentType":{"type":"string","const":"video/mp4"},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["path","posterPath","contentType","durationMs","width","height","bytes"]},{"type":"null"}],"description":"The owner’s recording of a completed posture or Story task."}},"required":["id","assignmentId","kind","sourceId","status","revision","submittedAt","capturedAt","captureTimeSource","reviewedAt","decisionReason","verification","analysis","policySha256","errorCode","filePath","image","deletedAt","cleanupPending","video"]},"ChallengeAssignmentEvidencePageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["photo","server_event","posture"]},"sourceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"submittedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"capturedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"captureTimeSource":{"anyOf":[{"type":"string","const":"client_reported"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"decisionReason":{"type":["string","null"]},"verification":{"anyOf":[{"type":"string","enum":["aws_model","administrator"]},{"type":"null"}]},"analysis":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":100},"modelId":{"type":"string","minLength":1,"maxLength":500},"promptVersion":{"type":"string","minLength":1,"maxLength":100},"evidenceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result":{"type":"string","enum":["supported","not_supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"observations":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"present":{"type":["boolean","null"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["code","present","confidence"],"additionalProperties":false}},"limitations":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"analyzedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"providerRequestId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"usage":{"type":"object","properties":{"inputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["inputTokens","outputTokens"],"additionalProperties":false}},"required":["provider","modelId","promptVersion","evidenceSha256","result","confidence","observations","limitations","analyzedAt","providerRequestId","usage"],"additionalProperties":false},{"type":"null"}]},"policySha256":{"type":["string","null"]},"errorCode":{"type":["string","null"]},"filePath":{"description":"Authenticated private GET path; never a public or signed object URL.","type":["string","null"]},"image":{"anyOf":[{"type":"object","properties":{"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contentType":{"type":"string","const":"image/jpeg"}},"required":["width","height","bytes","contentType"]},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cleanupPending":{"type":"boolean"},"video":{"anyOf":[{"type":"object","properties":{"path":{"type":"string","description":"Authenticated private GET path; one byte Range per request; never a signed URL."},"posterPath":{"type":"string","description":"Authenticated private GET path to an upright JPEG frame."},"contentType":{"type":"string","const":"video/mp4"},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["path","posterPath","contentType","durationMs","width","height","bytes"]},{"type":"null"}],"description":"The owner’s recording of a completed posture or Story task."}},"required":["id","assignmentId","kind","sourceId","status","revision","submittedAt","capturedAt","captureTimeSource","reviewedAt","decisionReason","verification","analysis","policySha256","errorCode","filePath","image","deletedAt","cleanupPending","video"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeGalleryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Evidence ID."},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programTitle":{"type":"string"},"task":{"type":"object","properties":{"kind":{"type":"string","enum":["water_selfie","activity_photo","healthy_meal","new_friend","story","post","breathe","posture"]},"title":{"type":"string"},"points":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","title","points"]},"localDate":{"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])))$"},"assignmentStatus":{"type":"string","enum":["pending","submitted","completed","expired","cancelled"]},"evidenceStatus":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]},"verified":{"type":"boolean","description":"The server approved this proof."},"submittedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"media":{"type":"object","properties":{"type":{"type":"string","enum":["photo","video"]},"path":{"type":"string","description":"Authenticated private GET path."},"posterPath":{"type":["string","null"]},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["type","path","posterPath","width","height","durationMs"]}},"required":["id","assignmentId","enrollmentId","programTitle","task","localDate","assignmentStatus","evidenceStatus","verified","submittedAt","completedAt","media"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeEvidencePageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["photo","server_event","posture"]},"sourceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"submittedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"capturedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"captureTimeSource":{"anyOf":[{"type":"string","const":"client_reported"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"decisionReason":{"type":["string","null"]},"verification":{"anyOf":[{"type":"string","enum":["aws_model","administrator"]},{"type":"null"}]},"analysis":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":100},"modelId":{"type":"string","minLength":1,"maxLength":500},"promptVersion":{"type":"string","minLength":1,"maxLength":100},"evidenceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result":{"type":"string","enum":["supported","not_supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"observations":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"present":{"type":["boolean","null"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["code","present","confidence"],"additionalProperties":false}},"limitations":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"analyzedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"providerRequestId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"usage":{"type":"object","properties":{"inputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["inputTokens","outputTokens"],"additionalProperties":false}},"required":["provider","modelId","promptVersion","evidenceSha256","result","confidence","observations","limitations","analyzedAt","providerRequestId","usage"],"additionalProperties":false},{"type":"null"}]},"policySha256":{"type":["string","null"]},"errorCode":{"type":["string","null"]},"filePath":{"description":"Authenticated private GET path; never a public or signed object URL.","type":["string","null"]},"image":{"anyOf":[{"type":"object","properties":{"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contentType":{"type":"string","const":"image/jpeg"}},"required":["width","height","bytes","contentType"]},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cleanupPending":{"type":"boolean"},"video":{"anyOf":[{"type":"object","properties":{"path":{"type":"string","description":"Authenticated private GET path; one byte Range per request; never a signed URL."},"posterPath":{"type":"string","description":"Authenticated private GET path to an upright JPEG frame."},"contentType":{"type":"string","const":"video/mp4"},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["path","posterPath","contentType","durationMs","width","height","bytes"]},{"type":"null"}],"description":"The owner’s recording of a completed posture or Story task."},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","assignmentId","kind","sourceId","status","revision","submittedAt","capturedAt","captureTimeSource","reviewedAt","decisionReason","verification","analysis","policySha256","errorCode","filePath","image","deletedAt","cleanupPending","video","userId"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeAdminEvidenceResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["photo","server_event","posture"]},"sourceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","processing","approved","rejected","review_required","deleted"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"submittedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"capturedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"captureTimeSource":{"anyOf":[{"type":"string","const":"client_reported"},{"type":"null"}]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"decisionReason":{"type":"array","items":{"type":"string"}},"verification":{"anyOf":[{"type":"string","enum":["aws_model","administrator"]},{"type":"null"}]},"analysis":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","minLength":1,"maxLength":100},"modelId":{"type":"string","minLength":1,"maxLength":500},"promptVersion":{"type":"string","minLength":1,"maxLength":100},"evidenceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result":{"type":"string","enum":["supported","not_supported","inconclusive"]},"confidence":{"type":"number","minimum":0,"maximum":1},"observations":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":100},"present":{"type":["boolean","null"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["code","present","confidence"],"additionalProperties":false}},"limitations":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":1000}},"analyzedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"providerRequestId":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"usage":{"type":"object","properties":{"inputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputTokens":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["inputTokens","outputTokens"],"additionalProperties":false}},"required":["provider","modelId","promptVersion","evidenceSha256","result","confidence","observations","limitations","analyzedAt","providerRequestId","usage"],"additionalProperties":false},{"type":"null"}]},"policySha256":{"type":"array","items":{"type":"string"}},"errorCode":{"type":"array","items":{"type":"string"}},"filePath":{"description":"Authenticated private GET path; never a public or signed object URL.","type":"array","items":{"type":"string"}},"image":{"anyOf":[{"type":"object","properties":{"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contentType":{"type":"string","const":"image/jpeg"}},"required":["width","height","bytes","contentType"]},{"type":"null"}]},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cleanupPending":{"type":"boolean"},"video":{"anyOf":[{"type":"object","properties":{"path":{"type":"string","description":"Authenticated private GET path; one byte Range per request; never a signed URL."},"posterPath":{"type":"string","description":"Authenticated private GET path to an upright JPEG frame."},"contentType":{"type":"string","const":"video/mp4"},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["path","posterPath","contentType","durationMs","width","height","bytes"]},{"type":"null"}],"description":"The owner’s recording of a completed posture or Story task."},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","assignmentId","kind","sourceId","status","revision","submittedAt","capturedAt","captureTimeSource","reviewedAt","decisionReason","verification","analysis","policySha256","errorCode","filePath","image","deletedAt","cleanupPending","video","userId"]},"ChallengeEvidenceReviewDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"decision":{"type":"string","enum":["approved","rejected"]},"reason":{"type":"string","minLength":10,"maxLength":2000}},"required":["expectedRevision","decision","reason"],"additionalProperties":false},"ChallengePoseStartDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId"],"additionalProperties":false},"ChallengePoseSessionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"exercise":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["key","name","instructions","view","rule","id"]},"status":{"type":"string","enum":["active","completed","cancelled","expired"]},"nonce":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastFrameAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"nextSequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"measurementsErased":{"type":"boolean"},"totalFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"validFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"validDurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentHoldMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bestHoldMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"requiredHoldMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionAvailable":{"type":"boolean"},"minimumFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumObservationGapMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","const":"aws_pose_estimation"}},"required":["id","assignmentId","exercise","status","nonce","startedAt","expiresAt","endedAt","lastFrameAt","nextSequence","measurementsErased","totalFrames","validFrames","validDurationMs","currentHoldMs","bestHoldMs","requiredHoldMs","completionAvailable","minimumFrameIntervalMs","inferenceTimeoutMs","maximumObservationGapMs","maximumFrames","provenance"]},"ChallengePoseSessionPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"exercise":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["key","name","instructions","view","rule","id"]},"status":{"type":"string","enum":["active","completed","cancelled","expired"]},"nonce":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastFrameAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"nextSequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"measurementsErased":{"type":"boolean"},"totalFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"validFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"validDurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentHoldMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bestHoldMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"requiredHoldMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionAvailable":{"type":"boolean"},"minimumFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumObservationGapMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","const":"aws_pose_estimation"}},"required":["id","assignmentId","exercise","status","nonce","startedAt","expiresAt","endedAt","lastFrameAt","nextSequence","measurementsErased","totalFrames","validFrames","validDurationMs","currentHoldMs","bestHoldMs","requiredHoldMs","completionAvailable","minimumFrameIntervalMs","inferenceTimeoutMs","maximumObservationGapMs","maximumFrames","provenance"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengePoseFrameDto":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":2147483647},"nonce":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageBase64":{"type":"string","minLength":44,"maxLength":54616,"description":"Canonical base64 JPEG, without data URI, up to 40 KiB decoded; frames are not stored."},"capturedAt":{"description":"Optional client report; never used to award duration or points.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["sequence","nonce","imageBase64"],"additionalProperties":false},"ChallengePoseFrameResponseDto":{"type":"object","properties":{"frame":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"provider":{"type":"string"},"modelVersion":{"type":"string"},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confidence":{"type":"number"},"joints":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},"x":{"type":"number"},"y":{"type":"number"},"score":{"type":"number"}},"required":["name","x","y","score"]}},"angles":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"angle":{"type":["number","null"]},"minAngle":{"type":"number"},"maxAngle":{"type":"number"},"visible":{"type":"boolean"},"valid":{"type":"boolean"}},"required":["key","joints","angle","minAngle","maxAngle","visible","valid"]}},"feedback":{"type":"object","properties":{"code":{"type":"string","enum":["position_ok","adjust_position","not_visible","multiple_people"]},"valid":{"type":"boolean"},"confidence":{"type":"number"},"messages":{"type":"array","items":{"type":"string"}},"angles":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"angle":{"type":["number","null"]},"minAngle":{"type":"number"},"maxAngle":{"type":"number"},"visible":{"type":"boolean"},"valid":{"type":"boolean"}},"required":["key","joints","angle","minAngle","maxAngle","visible","valid"]}},"processedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"imageWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"personCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"clientCapturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","valid","confidence","messages","angles","processedAt","imageWidth","imageHeight","personCount"]},"valid":{"type":"boolean"}},"required":["id","sessionId","sequence","receivedAt","provider","modelVersion","latencyMs","confidence","joints","angles","feedback","valid"]},"session":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assignmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"exercise":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":200},"instructions":{"type":"string","minLength":1,"maxLength":10000},"view":{"type":"string","enum":["front","side"]},"rule":{"type":"object","properties":{"angles":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["angles"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0,"maximum":1},"holdSeconds":{"default":10,"type":"integer","minimum":1,"maximum":600},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["key","name","instructions","view","rule","id"]},"status":{"type":"string","enum":["active","completed","cancelled","expired"]},"nonce":{"type":"string"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastFrameAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"nextSequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"measurementsErased":{"type":"boolean"},"totalFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"validFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"validDurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentHoldMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bestHoldMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"requiredHoldMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionAvailable":{"type":"boolean"},"minimumFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumObservationGapMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","const":"aws_pose_estimation"}},"required":["id","assignmentId","exercise","status","nonce","startedAt","expiresAt","endedAt","lastFrameAt","nextSequence","measurementsErased","totalFrames","validFrames","validDurationMs","currentHoldMs","bestHoldMs","requiredHoldMs","completionAvailable","minimumFrameIntervalMs","inferenceTimeoutMs","maximumObservationGapMs","maximumFrames","provenance"]}},"required":["frame","session"]},"ChallengePoseFramePageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"provider":{"type":"string"},"modelVersion":{"type":"string"},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confidence":{"type":"number"},"joints":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},"x":{"type":"number"},"y":{"type":"number"},"score":{"type":"number"}},"required":["name","x","y","score"]}},"angles":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"angle":{"type":["number","null"]},"minAngle":{"type":"number"},"maxAngle":{"type":"number"},"visible":{"type":"boolean"},"valid":{"type":"boolean"}},"required":["key","joints","angle","minAngle","maxAngle","visible","valid"]}},"feedback":{"type":"object","properties":{"code":{"type":"string","enum":["position_ok","adjust_position","not_visible","multiple_people"]},"valid":{"type":"boolean"},"confidence":{"type":"number"},"messages":{"type":"array","items":{"type":"string"}},"angles":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"angle":{"type":["number","null"]},"minAngle":{"type":"number"},"maxAngle":{"type":"number"},"visible":{"type":"boolean"},"valid":{"type":"boolean"}},"required":["key","joints","angle","minAngle","maxAngle","visible","valid"]}},"processedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"imageWidth":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"imageHeight":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"personCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"clientCapturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","valid","confidence","messages","angles","processedAt","imageWidth","imageHeight","personCount"]},"valid":{"type":"boolean"}},"required":["id","sessionId","sequence","receivedAt","provider","modelVersion","latencyMs","confidence","joints","angles","feedback","valid"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ChallengeEvidenceErasureDto":{"type":"object","properties":{"confirm":{"type":"string","const":"DELETE_CHALLENGE_EVIDENCE_DATA"}},"required":["confirm"],"additionalProperties":false},"ChallengeEvidenceErasureReceiptDto":{"type":"object","properties":{"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"erasedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"participation":{"type":"string","const":"withdrawn"},"erased":{"type":"object","properties":{"evidence":{"type":"integer","minimum":0,"maximum":9007199254740991},"postureFrames":{"type":"integer","minimum":0,"maximum":9007199254740991},"postureSessions":{"type":"integer","minimum":0,"maximum":9007199254740991},"actionSessions":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["evidence","postureFrames","postureSessions","actionSessions"]},"storageCleanup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","complete"]},"pendingEvidence":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","pendingEvidence"]},"preserved":{"type":"array","items":{"type":"string","enum":["accepted_terms","challenge_completion_history","earned_points","earned_badges","audit_history"]}}},"required":["enrollmentId","erasedAt","participation","erased","storageCleanup","preserved"]},"StrengthCapabilitiesResponseDto":{"type":"object","properties":{"availabilityScope":{"type":"string","const":"configuration_and_identity"},"workouts":{"type":"object","properties":{"available":{"type":"boolean","const":true},"activitySport":{"type":"string","const":"strength_training"},"recordingRequiresHealthConsent":{"type":"boolean","const":true},"catalogueRequiresHealthConsent":{"type":"boolean","const":false}},"required":["available","activitySport","recordingRequiresHealthConsent","catalogueRequiresHealthConsent"]},"posture":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"provider":{"type":"string","const":"aws_sagemaker"},"endpointConfigured":{"type":"boolean"},"socketNamespace":{"type":"string","const":"/strength"},"minFrameIntervalMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxFrameBytes":{"type":"number","const":40960},"maxMessageBytes":{"type":"number","const":65536},"maxSessionFrames":{"type":"number","const":1800},"maxSessionDurationSeconds":{"type":"number","const":1800},"maxObservedGapMs":{"type":"number","const":2000},"requiresAwsConsent":{"type":"boolean","const":true},"frameStorage":{"type":"string","const":"ephemeral"},"modelReadiness":{"type":"string","const":"not_probed"}},"required":["available","reason","provider","endpointConfigured","socketNamespace","minFrameIntervalMs","inferenceTimeoutMs","maxFrameBytes","maxMessageBytes","maxSessionFrames","maxSessionDurationSeconds","maxObservedGapMs","requiresAwsConsent","frameStorage","modelReadiness"]},"devicePosture":{"type":"object","properties":{"available":{"type":"boolean","const":true},"source":{"type":"string","const":"device"},"payload":{"type":"string","const":"normalized_body_landmarks"},"keypointFormat":{"type":"string","const":"coco17_normalized_top_left"},"imagesLeaveDevice":{"type":"boolean","const":false},"requiresAwsConsent":{"type":"boolean","const":false},"requiresHealthConsent":{"type":"boolean","const":true},"socketNamespace":{"type":"string","const":"/strength"},"socketEvent":{"type":"string","const":"strength:observation"},"minObservationIntervalMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxSessionFrames":{"type":"number","const":1800},"maxSessionDurationSeconds":{"type":"number","const":1800},"retentionDays":{"type":"number","const":30}},"required":["available","source","payload","keypointFormat","imagesLeaveDevice","requiresAwsConsent","requiresHealthConsent","socketNamespace","socketEvent","minObservationIntervalMs","maxSessionFrames","maxSessionDurationSeconds","retentionDays"]},"measurements":{"type":"object","properties":{"heartRate":{"type":"object","properties":{"source":{"type":"string","const":"registered_ble_sensor"},"cameraSupported":{"type":"boolean","const":false},"unavailableValue":{"type":"null"}},"required":["source","cameraSupported","unavailableValue"]},"energy":{"type":"object","properties":{"sources":{"type":"array","prefixItems":[{"type":"string","const":"connected_device_report"},{"type":"string","const":"estimated"}],"items":false,"minItems":2,"maxItems":2},"cameraSupported":{"type":"boolean","const":false},"unavailableValue":{"type":"null"}},"required":["sources","cameraSupported","unavailableValue"]},"load":{"type":"object","properties":{"source":{"type":"string","const":"user_report"},"acceptedUnits":{"type":"array","prefixItems":[{"type":"string","const":"kg"},{"type":"string","const":"lb"}],"items":false,"minItems":2,"maxItems":2},"normalizedUnit":{"type":"string","const":"kg"}},"required":["source","acceptedUnits","normalizedUnit"]},"repetitions":{"type":"object","properties":{"sources":{"type":"array","prefixItems":[{"type":"string","const":"aws_pose_observations"},{"type":"string","const":"device_pose_observations"},{"type":"string","const":"user_report"}],"items":false,"minItems":3,"maxItems":3},"historiesRemainSeparate":{"type":"boolean","const":true}},"required":["sources","historiesRemainSeparate"]},"quality":{"type":"object","properties":{"method":{"type":"string","const":"observed_pose_rule_compliance"},"scope":{"type":"string","const":"image_plane_geometry"},"medicalAssessment":{"type":"boolean","const":false},"unavailableValue":{"type":"null"}},"required":["method","scope","medicalAssessment","unavailableValue"]},"effort":{"type":"object","properties":{"method":{"type":"string","const":"weighted_heart_rate_zone_minutes"},"source":{"type":"string","const":"registered_ble_sensor"},"requiresConfiguredMaximumHeartRate":{"type":"boolean","const":true}},"required":["method","source","requiresConfiguredMaximumHeartRate"]},"perceivedExertion":{"type":"object","properties":{"source":{"type":"string","const":"user_report_0_to_10"},"minimum":{"type":"number","const":0},"maximum":{"type":"number","const":10}},"required":["source","minimum","maximum"]}},"required":["heartRate","energy","load","repetitions","quality","effort","perceivedExertion"]}},"required":["availabilityScope","workouts","posture","devicePosture","measurements"]},"StrengthExercisePageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["slug","name","muscleGroup","equipment","instructions","id","revision","deletedAt","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"StrengthExerciseResponseDto":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["slug","name","muscleGroup","equipment","instructions","id","revision","deletedAt","createdAt","updatedAt"],"additionalProperties":false},"CreateStrengthExerciseDto":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"}},"required":["slug","name","muscleGroup","equipment","instructions"],"additionalProperties":false},"ReplaceStrengthExerciseDto":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["slug","name","muscleGroup","equipment","instructions","expectedRevision"],"additionalProperties":false},"PatchStrengthExerciseDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"CreateStrengthWorkoutDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"description":"An owned, recording strength_training activity; omitted to create a canonical activity.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":200},"awsConsent":{"default":false,"type":"boolean"},"exercises":{"minItems":1,"maxItems":40,"type":"array","items":{"type":"object","properties":{"exerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"load":{"default":0,"description":"External load as reported by the user; zero is allowed for bodyweight. The camera never measures load.","type":"number","minimum":0,"maximum":2000},"loadUnit":{"default":"kg","type":"string","enum":["kg","lb"]},"targetSets":{"default":3,"type":"integer","minimum":1,"maximum":50},"targetReps":{"default":10,"type":"integer","minimum":1,"maximum":200},"restSeconds":{"default":60,"type":"integer","minimum":0,"maximum":1800}},"required":["exerciseId"],"additionalProperties":false}}},"required":["clientId","exercises"],"additionalProperties":false},"StrengthWorkoutResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"array","items":{"type":"string"}},"awsConsent":{"type":"boolean"},"state":{"type":"string","enum":["recording","paused","completed","discarded"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"exercises":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"exerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"exerciseSnapshot":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["slug","name","muscleGroup","equipment","instructions","id","revision"],"additionalProperties":false},"loadKg":{"type":"number","minimum":0},"reportedLoad":{"type":"number","minimum":0},"loadUnit":{"type":"string","enum":["kg","lb"]},"targetSets":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"targetReps":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"restSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"sets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ordinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["planned","active","paused","completed","skipped","cancelled"]},"loadKg":{"type":"number","minimum":0},"reportedLoad":{"type":"number","minimum":0},"loadUnit":{"type":"string","enum":["kg","lb"]},"targetReps":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"reportedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"reportedRpe":{"type":["number","null"]},"observedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"qualityScore":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"measurementsErasedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workoutId","workoutExerciseId","ordinal","status","loadKg","reportedLoad","loadUnit","targetReps","startedAt","endedAt","pausedAt","pausedDurationMs","reportedReps","reportedRpe","observedReps","qualifiedReps","observationMs","qualityScore","measurementsErasedAt","revision","createdAt","updatedAt"]}}},"required":["id","workoutId","exerciseId","position","exerciseSnapshot","loadKg","reportedLoad","loadUnit","targetSets","targetReps","restSeconds","revision","createdAt","updatedAt","sets"]}},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","activityId","clientId","title","awsConsent","state","startedAt","endedAt","pausedAt","pausedDurationMs","revision","createdAt","updatedAt","deletedAt","exercises","serverTime"]},"StrengthWorkoutPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":["string","null"]},"awsConsent":{"type":"boolean"},"state":{"type":"string","enum":["recording","paused","completed","discarded"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"exercises":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"exerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"exerciseSnapshot":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"muscleGroup":{"type":"string","enum":["biceps","chest","triceps","back","legs","shoulders","core","glutes","full_body"]},"equipment":{"type":"string","enum":["bodyweight","dumbbell","barbell","machine","cable","kettlebell"]},"description":{"default":"","type":"string","maxLength":10000},"instructions":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"safetyNote":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"motionRule":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},{"type":"null"}]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["slug","name","muscleGroup","equipment","instructions","id","revision"],"additionalProperties":false},"loadKg":{"type":"number","minimum":0},"reportedLoad":{"type":"number","minimum":0},"loadUnit":{"type":"string","enum":["kg","lb"]},"targetSets":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"targetReps":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"restSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"sets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ordinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["planned","active","paused","completed","skipped","cancelled"]},"loadKg":{"type":"number","minimum":0},"reportedLoad":{"type":"number","minimum":0},"loadUnit":{"type":"string","enum":["kg","lb"]},"targetReps":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"reportedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"reportedRpe":{"type":["number","null"]},"observedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"qualityScore":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"measurementsErasedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workoutId","workoutExerciseId","ordinal","status","loadKg","reportedLoad","loadUnit","targetReps","startedAt","endedAt","pausedAt","pausedDurationMs","reportedReps","reportedRpe","observedReps","qualifiedReps","observationMs","qualityScore","measurementsErasedAt","revision","createdAt","updatedAt"]}}},"required":["id","workoutId","exerciseId","position","exerciseSnapshot","loadKg","reportedLoad","loadUnit","targetSets","targetReps","restSeconds","revision","createdAt","updatedAt","sets"]}},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","activityId","clientId","title","awsConsent","state","startedAt","endedAt","pausedAt","pausedDurationMs","revision","createdAt","updatedAt","deletedAt","exercises","serverTime"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"StrengthMetricsPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["recording","paused","completed","discarded"]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"workload":{"type":"object","properties":{"completedSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plannedSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reportedReps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reportedRepsSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"observedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reportedVolumeKg":{"type":"number"},"observedVolumeKg":{"type":["number","null"]},"qualifiedVolumeKg":{"type":["number","null"]},"cameraMeasurementsErased":{"type":"boolean"},"loadSource":{"type":"string","const":"user_report"},"cameraRepetitionsSource":{"type":"string","enum":["aws_pose_observations","device_pose_observations","mixed_pose_observations"]},"volumeMethod":{"type":"string","const":"reported_external_load_kg_times_repetitions"}},"required":["completedSets","plannedSets","reportedReps","reportedRepsSets","observedReps","qualifiedReps","reportedVolumeKg","observedVolumeKg","qualifiedVolumeKg","cameraMeasurementsErased","loadSource","cameraRepetitionsSource","volumeMethod"]},"timing":{"type":"object","properties":{"elapsedMs":{"type":"number"},"activeMs":{"type":"number"},"completedSetActiveMs":{"type":"number"},"observedMs":{"type":["number","null"]},"method":{"type":"string","const":"server_elapsed_excluding_recorded_pauses"}},"required":["elapsedMs","activeMs","completedSetActiveMs","observedMs","method"]},"quality":{"type":"object","properties":{"score":{"type":["number","null"]},"method":{"type":"string","const":"completed_repetition_rule_compliance_v1"},"evaluatedRepetitions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"type":["number","null"]},"completedSetCoveragePercent":{"type":["number","null"]}},"required":["score","method","evaluatedRepetitions","observationMs","completedSetCoveragePercent"]},"heartRate":{"type":"object","properties":{"averageBpm":{"type":["number","null"]},"maximumBpm":{"type":["number","null"]},"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["registered_ble_sensor","unverified_activity_samples","unavailable"]}},"required":["averageBpm","maximumBpm","sampleCount","source"]},"energy":{"type":"object","properties":{"activeKcal":{"type":["number","null"]},"source":{"type":"string","enum":["connected_device_report","estimated","unavailable"]},"deviceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"method":{"type":"string","enum":["connected_device_report","net_met_3_5_minus_rest","unavailable"]}},"required":["activeKcal","source","deviceId","method"]},"effort":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"method":{"type":"string","const":"weighted_heart_rate_zone_minutes"},"zoneMinutes":{"type":["number","null"]},"measuredSeconds":{"type":"number"},"coveragePercent":{"type":"number"}},"required":["available","reason","method","zoneMinutes","measuredSeconds","coveragePercent"]},"perceivedExertion":{"type":"object","properties":{"averageReportedRpe":{"type":["number","null"]},"reportedSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","const":"user_report_0_to_10"}},"required":["averageReportedRpe","reportedSets","source"]}},"required":["workoutId","activityId","state","serverTime","workload","timing","quality","heartRate","energy","effort","perceivedExertion"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"UpdateStrengthWorkoutDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":200},"awsConsent":{"type":"boolean"}},"required":["commandId","expectedRevision"],"additionalProperties":false},"StrengthWorkoutStateDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647},"state":{"type":"string","enum":["recording","paused","completed","discarded"]}},"required":["commandId","expectedRevision","state"],"additionalProperties":false},"StrengthDeletedResponseDto":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"]},"StrengthMetricsResponseDto":{"type":"object","properties":{"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["recording","paused","completed","discarded"]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"workload":{"type":"object","properties":{"completedSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plannedSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reportedReps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reportedRepsSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"observedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reportedVolumeKg":{"type":"number"},"observedVolumeKg":{"type":["number","null"]},"qualifiedVolumeKg":{"type":["number","null"]},"cameraMeasurementsErased":{"type":"boolean"},"loadSource":{"type":"string","const":"user_report"},"cameraRepetitionsSource":{"type":"string","enum":["aws_pose_observations","device_pose_observations","mixed_pose_observations"]},"volumeMethod":{"type":"string","const":"reported_external_load_kg_times_repetitions"}},"required":["completedSets","plannedSets","reportedReps","reportedRepsSets","observedReps","qualifiedReps","reportedVolumeKg","observedVolumeKg","qualifiedVolumeKg","cameraMeasurementsErased","loadSource","cameraRepetitionsSource","volumeMethod"]},"timing":{"type":"object","properties":{"elapsedMs":{"type":"number"},"activeMs":{"type":"number"},"completedSetActiveMs":{"type":"number"},"observedMs":{"type":["number","null"]},"method":{"type":"string","const":"server_elapsed_excluding_recorded_pauses"}},"required":["elapsedMs","activeMs","completedSetActiveMs","observedMs","method"]},"quality":{"type":"object","properties":{"score":{"type":["number","null"]},"method":{"type":"string","const":"completed_repetition_rule_compliance_v1"},"evaluatedRepetitions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"type":["number","null"]},"completedSetCoveragePercent":{"type":["number","null"]}},"required":["score","method","evaluatedRepetitions","observationMs","completedSetCoveragePercent"]},"heartRate":{"type":"object","properties":{"averageBpm":{"type":["number","null"]},"maximumBpm":{"type":["number","null"]},"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","enum":["registered_ble_sensor","unverified_activity_samples","unavailable"]}},"required":["averageBpm","maximumBpm","sampleCount","source"]},"energy":{"type":"object","properties":{"activeKcal":{"type":["number","null"]},"source":{"type":"string","enum":["connected_device_report","estimated","unavailable"]},"deviceId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"method":{"type":"string","enum":["connected_device_report","net_met_3_5_minus_rest","unavailable"]}},"required":["activeKcal","source","deviceId","method"]},"effort":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":["string","null"]},"method":{"type":"string","const":"weighted_heart_rate_zone_minutes"},"zoneMinutes":{"type":["number","null"]},"measuredSeconds":{"type":"number"},"coveragePercent":{"type":"number"}},"required":["available","reason","method","zoneMinutes","measuredSeconds","coveragePercent"]},"perceivedExertion":{"type":"object","properties":{"averageReportedRpe":{"type":["number","null"]},"reportedSets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"source":{"type":"string","const":"user_report_0_to_10"}},"required":["averageReportedRpe","reportedSets","source"]}},"required":["workoutId","activityId","state","serverTime","workload","timing","quality","heartRate","energy","effort","perceivedExertion"]},"AddStrengthWorkoutExerciseDto":{"type":"object","properties":{"exerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"load":{"default":0,"description":"External load as reported by the user; zero is allowed for bodyweight. The camera never measures load.","type":"number","minimum":0,"maximum":2000},"loadUnit":{"default":"kg","type":"string","enum":["kg","lb"]},"targetSets":{"default":3,"type":"integer","minimum":1,"maximum":50},"targetReps":{"default":10,"type":"integer","minimum":1,"maximum":200},"restSeconds":{"default":60,"type":"integer","minimum":0,"maximum":1800},"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["exerciseId","commandId","expectedRevision"],"additionalProperties":false},"ReplaceStrengthWorkoutExerciseDto":{"type":"object","properties":{"exerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"load":{"default":0,"description":"External load as reported by the user; zero is allowed for bodyweight. The camera never measures load.","type":"number","minimum":0,"maximum":2000},"loadUnit":{"default":"kg","type":"string","enum":["kg","lb"]},"targetSets":{"default":3,"type":"integer","minimum":1,"maximum":50},"targetReps":{"default":10,"type":"integer","minimum":1,"maximum":200},"restSeconds":{"default":60,"type":"integer","minimum":0,"maximum":1800},"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["exerciseId","commandId","expectedRevision"],"additionalProperties":false},"StrengthSetResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutExerciseId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ordinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["planned","active","paused","completed","skipped","cancelled"]},"loadKg":{"type":"number","minimum":0},"reportedLoad":{"type":"number","minimum":0},"loadUnit":{"type":"string","enum":["kg","lb"]},"targetReps":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"pausedDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"reportedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"reportedRpe":{"type":"array","items":{"type":"number"}},"observedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"qualityScore":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"measurementsErasedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workoutId","workoutExerciseId","ordinal","status","loadKg","reportedLoad","loadUnit","targetReps","startedAt","endedAt","pausedAt","pausedDurationMs","reportedReps","reportedRpe","observedReps","qualifiedReps","observationMs","qualityScore","measurementsErasedAt","revision","createdAt","updatedAt"]},"UpdateStrengthSetDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647},"load":{"type":"number","minimum":0,"maximum":2000},"loadUnit":{"type":"string","enum":["kg","lb"]},"targetReps":{"type":"integer","minimum":1,"maximum":200}},"required":["commandId","expectedRevision"],"additionalProperties":false},"StrengthCommandDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["commandId","expectedRevision"],"additionalProperties":false},"CompleteStrengthSetDto":{"type":"object","properties":{"commandId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647},"reportedReps":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000},{"type":"null"}]},"reportedRpe":{"description":"Perceived exertion reported by the user, on a scale from 0 to 10.","anyOf":[{"type":"number","minimum":0,"maximum":10},{"type":"null"}]},"load":{"description":"Only on completion: corrects the external load the person reports having lifted in this set. The camera never measures load.","type":"number","minimum":0,"maximum":2000},"loadUnit":{"type":"string","enum":["kg","lb"]}},"required":["commandId","expectedRevision"],"additionalProperties":false},"StrengthPoseStartDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"source":{"default":"aws","description":"aws: camera JPEGs analysed on AWS after the workout AWS opt-in. device: normalized COCO-17 body landmarks estimated on the phone; no image leaves the device.","type":"string","enum":["aws","device"]}},"required":["clientId"],"additionalProperties":false},"StrengthPoseSessionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"setId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"source":{"type":"string","enum":["aws","device"]},"status":{"type":"string","enum":["active","closed","cancelled","expired"]},"nonce":{"type":"array","items":{"type":"string"}},"rule":{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},"phase":{"anyOf":[{"type":"string","enum":["seeking_start","ready","moving_out","end_reached","moving_back"]},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastFrameAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"nextSequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"measurementsErasedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"totalFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observableFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedMovementMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minimumFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumObservationGapMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","enum":["aws_pose_estimation","device_pose_estimation"]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workoutId","setId","clientId","source","status","nonce","rule","phase","startedAt","expiresAt","endedAt","lastFrameAt","nextSequence","revision","measurementsErasedAt","totalFrames","observableFrames","observationMs","observedMovementMs","observedReps","qualifiedReps","minimumFrameIntervalMs","inferenceTimeoutMs","maximumObservationGapMs","maximumFrames","provenance","serverTime"]},"StrengthPoseSessionPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"setId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"source":{"type":"string","enum":["aws","device"]},"status":{"type":"string","enum":["active","closed","cancelled","expired"]},"nonce":{"type":["string","null"]},"rule":{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},"phase":{"anyOf":[{"type":"string","enum":["seeking_start","ready","moving_out","end_reached","moving_back"]},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastFrameAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"nextSequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"measurementsErasedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"totalFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observableFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedMovementMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minimumFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumObservationGapMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","enum":["aws_pose_estimation","device_pose_estimation"]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workoutId","setId","clientId","source","status","nonce","rule","phase","startedAt","expiresAt","endedAt","lastFrameAt","nextSequence","revision","measurementsErasedAt","totalFrames","observableFrames","observationMs","observedMovementMs","observedReps","qualifiedReps","minimumFrameIntervalMs","inferenceTimeoutMs","maximumObservationGapMs","maximumFrames","provenance","serverTime"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"StrengthPoseFrameDto":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":2147483647},"nonce":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageBase64":{"type":"string","minLength":44,"maxLength":54616,"description":"Canonical base64 JPEG up to 40 KiB; no data URI. Camera bytes are discarded after inference."},"capturedAt":{"description":"Client-reported capture time; never used to count duration or repetitions.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["sequence","nonce","imageBase64"],"additionalProperties":false},"StrengthPoseFrameResultDto":{"type":"object","properties":{"frame":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"setId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"provider":{"type":"string","enum":["aws_sagemaker","device"]},"modelVersion":{"type":"string"},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confidence":{"type":"number"},"keypoints":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},"x":{"type":"number"},"y":{"type":"number"},"score":{"type":"number"}},"required":["name","x","y","score"]}},"angles":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"angle":{"type":["number","null"]},"visible":{"type":"boolean"},"minAngle":{"type":["number","null"]},"maxAngle":{"type":["number","null"]},"valid":{"type":["boolean","null"]}},"required":["key","joints","angle","visible","minAngle","maxAngle","valid"]}},"feedback":{"type":"object","properties":{"code":{"type":"string"},"observationCode":{"type":"string","enum":["position_observed","adjust_posture","not_visible","multiple_people"]},"observable":{"type":"boolean"},"postureValid":{"type":"boolean"},"qualityScore":{"type":["number","null"]},"messages":{"type":"array","items":{"type":"string"}},"phase":{"type":"string","enum":["seeking_start","ready","moving_out","end_reached","moving_back"]},"repetitionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"processedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"personCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"observedGapMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"clientCapturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","observationCode","observable","postureValid","qualityScore","messages","phase","repetitionId","processedAt","imageWidth","imageHeight","personCount","observedGapMs"]}},"required":["id","setId","sessionId","sequence","receivedAt","provider","modelVersion","latencyMs","confidence","keypoints","angles","feedback"]},"session":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"setId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"source":{"type":"string","enum":["aws","device"]},"status":{"type":"string","enum":["active","closed","cancelled","expired"]},"nonce":{"type":["string","null"]},"rule":{"type":"object","properties":{"version":{"type":"number","const":1},"view":{"type":"string","enum":["front","side"]},"primaryAngle":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"startRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"endRange":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":180},{"type":"number","minimum":0,"maximum":180}],"items":false,"minItems":2,"maxItems":2},"hysteresisDegrees":{"default":5,"type":"number","minimum":3,"maximum":15}},"required":["key","joints","startRange","endRange"],"additionalProperties":false},"minimumConfidence":{"default":0.7,"type":"number","minimum":0.5,"maximum":1},"stableFrames":{"default":2,"type":"integer","minimum":2,"maximum":10},"minimumCycleFrames":{"default":6,"type":"integer","minimum":4,"maximum":30},"minimumCycleMs":{"default":1000,"type":"integer","minimum":250,"maximum":60000},"maximumCycleMs":{"default":30000,"type":"integer","minimum":500,"maximum":120000},"maximumGapMs":{"default":2000,"type":"integer","minimum":250,"maximum":2000},"postureChecks":{"default":[],"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"minAngle":{"type":"number","minimum":0,"maximum":180},"maxAngle":{"type":"number","minimum":0,"maximum":180},"message":{"type":"string","minLength":1,"maxLength":300},"severity":{"default":"invalid","type":"string","enum":["feedback","invalid"]}},"required":["key","joints","minAngle","maxAngle","message"],"additionalProperties":false}}},"required":["version","view","primaryAngle"],"additionalProperties":false},"phase":{"anyOf":[{"type":"string","enum":["seeking_start","ready","moving_out","end_reached","moving_back"]},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastFrameAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"nextSequence":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"measurementsErasedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"totalFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observableFrames":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedMovementMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"observedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualifiedReps":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minimumFrameIntervalMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inferenceTimeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumObservationGapMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provenance":{"type":"string","enum":["aws_pose_estimation","device_pose_estimation"]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","workoutId","setId","clientId","source","status","nonce","rule","phase","startedAt","expiresAt","endedAt","lastFrameAt","nextSequence","revision","measurementsErasedAt","totalFrames","observableFrames","observationMs","observedMovementMs","observedReps","qualifiedReps","minimumFrameIntervalMs","inferenceTimeoutMs","maximumObservationGapMs","maximumFrames","provenance","serverTime"]},"set":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"observedReps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualifiedReps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"observationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualityScore":{"type":["number","null"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","observedReps","qualifiedReps","observationMs","qualityScore","revision"]}},"required":["frame","session","set"]},"StrengthPoseObservationDto":{"type":"object","properties":{"sequence":{"type":"integer","minimum":0,"maximum":2147483647},"nonce":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pose":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"modelVersion":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[\\w.+:/@-]+$"},"imageWidth":{"type":"integer","minimum":1,"maximum":4096},"imageHeight":{"type":"integer","minimum":1,"maximum":4096},"personCount":{"type":"integer","minimum":0,"maximum":10},"keypoints":{"maxItems":17,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"score":{"type":"number","minimum":0,"maximum":1}},"required":["name","x","y","score"],"additionalProperties":false}}},"required":["schemaVersion","modelVersion","imageWidth","imageHeight","personCount","keypoints"],"additionalProperties":false,"description":"Landmarks estimated on the device for the analysed image; never an image or video."},"capturedAt":{"description":"Client-reported capture time; never used to count duration or repetitions.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["sequence","nonce","pose"],"additionalProperties":false},"StrengthPoseFramePageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"setId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"receivedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"provider":{"type":"string","enum":["aws_sagemaker","device"]},"modelVersion":{"type":"string"},"latencyMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confidence":{"type":"number"},"keypoints":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},"x":{"type":"number"},"y":{"type":"number"},"score":{"type":"number"}},"required":["name","x","y","score"]}},"angles":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"joints":{"type":"array","prefixItems":[{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]},{"type":"string","enum":["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"]}],"items":false,"minItems":3,"maxItems":3},"angle":{"type":["number","null"]},"visible":{"type":"boolean"},"minAngle":{"type":["number","null"]},"maxAngle":{"type":["number","null"]},"valid":{"type":["boolean","null"]}},"required":["key","joints","angle","visible","minAngle","maxAngle","valid"]}},"feedback":{"type":"object","properties":{"code":{"type":"string"},"observationCode":{"type":"string","enum":["position_observed","adjust_posture","not_visible","multiple_people"]},"observable":{"type":"boolean"},"postureValid":{"type":"boolean"},"qualityScore":{"type":["number","null"]},"messages":{"type":"array","items":{"type":"string"}},"phase":{"type":"string","enum":["seeking_start","ready","moving_out","end_reached","moving_back"]},"repetitionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"processedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"personCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"observedGapMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"clientCapturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["code","observationCode","observable","postureValid","qualityScore","messages","phase","repetitionId","processedAt","imageWidth","imageHeight","personCount","observedGapMs"]}},"required":["id","setId","sessionId","sequence","receivedAt","provider","modelVersion","latencyMs","confidence","keypoints","angles","feedback"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"StrengthRepetitionPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"setId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ordinal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"boolean"},"qualityScore":{"type":"number","minimum":0,"maximum":100},"metrics":{"type":"object","properties":{"method":{"type":"string","const":"image_plane_cycle_v1"},"minimumAngle":{"type":"number"},"maximumAngle":{"type":"number"},"amplitudeDegrees":{"type":"number"},"frames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postureValidFrames":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confidence":{"type":"number"},"observedMovementMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"outwardDurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"returnDurationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"qualityBasis":{"type":"string","enum":["configured_checks_and_cycle","cycle_only"]},"postureAssessedFrames":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["method","minimumAngle","maximumAngle","amplitudeDegrees","frames","postureValidFrames","confidence","observedMovementMs","outwardDurationMs","returnDurationMs","reasonCodes","qualityBasis","postureAssessedFrames"]}},"required":["id","setId","sessionId","ordinal","startedAt","endedAt","durationMs","qualified","qualityScore","metrics"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ReelMusicCatalogResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpm":{"type":["number","null"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"attribution":{"type":"string"},"exportAllowed":{"type":"boolean"},"beatSyncAvailable":{"type":"boolean"},"beatMapStatus":{"type":"string","enum":["pending","ready","unavailable"]},"beatMapEndpoint":{"type":"string"},"playbackEndpoint":{"type":"string"},"artworkUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"usesLastSevenDays":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","version","title","artist","durationMs","bpm","mood","sports","attribution","exportAllowed","beatSyncAvailable","beatMapStatus","beatMapEndpoint","playbackEndpoint","artworkUrl","usesLastSevenDays"]}},"hasMore":{"type":"boolean"},"nextOffset":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"mode":{"type":"string","enum":["for_clip","trending"]},"ordering":{"type":"string","enum":["editorial_for_clip","public_creators_last_7_days"]},"personalized":{"type":"boolean","const":false}},"required":["items","hasMore","nextOffset","mode","ordering","personalized"]},"ReelMusicPlaylistsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"eligibleTrackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"featured":{"type":"boolean"},"artworkUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id","version","title","description","eligibleTrackCount","featured","artworkUrl"]}},"hasMore":{"type":"boolean"},"nextOffset":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["items","hasMore","nextOffset"]},"ReelBeatMapResponseDto":{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"trackVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"status":{"type":"string","enum":["pending","ready","unavailable"]},"beatSyncAvailable":{"type":"boolean"},"reason":{"type":"array","items":{"type":"string"}},"retryAfterMs":{"type":"array","items":{"type":"number"}},"map":{"anyOf":[{"type":"object","properties":{"algorithmVersion":{"type":"string","const":"aubio-tempo-v1"},"durationMs":{"type":"integer","minimum":1,"maximum":600000},"beatTimesMs":{"minItems":4,"maxItems":5000,"type":"array","items":{"type":"integer","minimum":0,"maximum":600000}},"quality":{"type":"object","properties":{"source":{"type":"string","enum":["detected","annotated"]},"confidenceRawMean":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"supportedBeatFraction":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"onsetAgreementFraction":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"requiresPreview":{"type":"boolean","const":true}},"required":["source","confidenceRawMean","supportedBeatFraction","onsetAgreementFraction","requiresPreview"],"additionalProperties":false}},"required":["algorithmVersion","durationMs","beatTimesMs","quality"],"additionalProperties":false},{"type":"null"}]},"analysedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["trackId","trackVersion","checksumSha256","status","beatSyncAvailable","reason","retryAfterMs","map","analysedAt"]},"ImportReelBeatMapDto":{"type":"object","properties":{"trackVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"beatTimesMs":{"minItems":4,"maxItems":5000,"type":"array","items":{"type":"integer","minimum":0,"maximum":600000}},"reviewedAgainstAudio":{"type":"boolean","const":true},"notes":{"type":"string","minLength":10,"maxLength":1000}},"required":["trackVersion","checksumSha256","beatTimesMs","reviewedAgainstAudio","notes"],"additionalProperties":false},"ReelsFeedResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"author":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"profilePath":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","profilePath","avatarUrl"]},"caption":{"type":"string"},"tags":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"}},"required":["code","label"]}},"visibility":{"type":"string","enum":["private","followers","public"]},"publishedRevisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"thumbnailPath":{"type":"string"},"playbackEndpoint":{"type":"string"},"allowDownload":{"type":"boolean"},"activity":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averageSpeedMps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"minItems":1,"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0}},"required":["segments","hiddenStartM","hiddenEndM"],"additionalProperties":false},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"],"additionalProperties":false},{"type":"null"}]},"counts":{"type":"object","properties":{"likes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saves":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"views":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["likes","comments","saves","views"]},"liked":{"type":"boolean"},"saved":{"type":"boolean"}},"required":["id","author","caption","tags","visibility","publishedRevisionId","durationMs","publishedAt","thumbnailPath","playbackEndpoint","allowDownload","activity","counts","liked","saved"]}},"pageCursor":{"type":"string"},"nextCursor":{"type":"array","items":{"type":"string"}},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"ranking":{"type":"string","enum":["general","interests","model_topics","stable_window"]},"candidateWindowLimit":{"type":"number","const":500},"prefetch":{"type":"array","items":{"type":"object","properties":{"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"manifestUrl":{"type":"string"},"initializationUrl":{"type":["string","null"]},"firstSegmentUrl":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"requiredHeaders":{"type":"array","items":{"type":"string","const":"Authorization"}},"authentication":{"type":"string","const":"session_bearer_on_every_request"}},"required":["reelId","revisionId","manifestUrl","initializationUrl","firstSegmentUrl","expiresAt","requiredHeaders","authentication"]}}},"required":["items","pageCursor","nextCursor","expiresAt","ranking","candidateWindowLimit","prefetch"]},"ReelsLatestResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"author":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"profilePath":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","profilePath","avatarUrl"]},"caption":{"type":"string"},"tags":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"}},"required":["code","label"]}},"visibility":{"type":"string","enum":["private","followers","public"]},"publishedRevisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"thumbnailPath":{"type":"string"},"playbackEndpoint":{"type":"string"},"allowDownload":{"type":"boolean"},"activity":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averageSpeedMps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"minItems":1,"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0}},"required":["segments","hiddenStartM","hiddenEndM"],"additionalProperties":false},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"],"additionalProperties":false},{"type":"null"}]},"counts":{"type":"object","properties":{"likes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saves":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"views":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["likes","comments","saves","views"]},"liked":{"type":"boolean"},"saved":{"type":"boolean"}},"required":["id","author","caption","tags","visibility","publishedRevisionId","durationMs","publishedAt","thumbnailPath","playbackEndpoint","allowDownload","activity","counts","liked","saved"]}}},"required":["items"]},"ReelsCollectionsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"clipCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","createdAt","updatedAt","clipCount"]}}},"required":["items"]},"ReelsCollectionCreateDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["name","clientId"],"additionalProperties":false},"ReelsCollectionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","createdAt","updatedAt"]},"ReelsCollectionDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"],"additionalProperties":false},"ReelsEventsDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128},"events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["video_watch","video_skip","video_complete"]},"engagementMs":{"default":0,"type":"integer","minimum":0,"maximum":60000}},"required":["id","reelId","occurredAt","kind"],"additionalProperties":false}}},"required":["deviceId","events"],"additionalProperties":false},"PersonalisationEventsResultDto":{"type":"object","properties":{"accepted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deduplicated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"profileVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"modelRefresh":{"type":"string","enum":["pending","not_requested"]}},"required":["accepted","deduplicated","profileVersion","modelRefresh"]},"ReelsReportsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"commentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"targetType":{"type":"string","enum":["clip","comment"]},"category":{"type":"string","enum":["spam_scam","nudity_sexual_content","violence_dangerous_acts","harassment_bullying","hate_speech","health_misinformation","self_harm_suicide","intellectual_property","other"]},"note":{"type":"string"},"status":{"type":"string","enum":["pending","reviewed"]},"decision":{"anyOf":[{"type":"string","enum":["dismiss","remove","restore"]},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","reelId","commentId","targetType","category","note","status","decision","createdAt","reviewedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"ReelsAppealsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string"},"status":{"type":"string","enum":["pending","accepted","rejected"]},"decisionNote":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","reelId","body","status","decisionNote","createdAt","reviewedAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"ReelsLikedResponseDto":{"type":"object","properties":{"liked":{"type":"boolean"}},"required":["liked"],"additionalProperties":false},"ReelsSaveDto":{"type":"object","properties":{"collectionId":{"default":null,"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"additionalProperties":false},"ReelsSavedResponseDto":{"type":"object","properties":{"saved":{"type":"boolean","const":true},"collectionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["saved","collectionId"],"additionalProperties":false},"ReelsUnsavedResponseDto":{"type":"object","properties":{"saved":{"type":"boolean","const":false}},"required":["saved"],"additionalProperties":false},"ReelsHiddenResponseDto":{"type":"object","properties":{"hidden":{"type":"boolean"}},"required":["hidden"],"additionalProperties":false},"ReelsCommentsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":"string"},"body":{"type":["string","null"]},"deleted":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"likeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"liked":{"type":"boolean"},"replyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pinned":{"type":"boolean"}},"required":["id","parentId","authorId","authorName","body","deleted","createdAt","likeCount","liked","replyCount","pinned"]}},"nextCursor":{"type":"array","items":{"type":"string"}},"pinnedCommentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor","pinnedCommentId"]},"ReelsCommentDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string","minLength":1,"maxLength":1000},"parentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId","body"],"additionalProperties":false},"ReelsCommentCreatedDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created":{"type":"boolean"}},"required":["id","created"]},"ReelsPinnedResponseDto":{"type":"object","properties":{"pinnedCommentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["pinnedCommentId"],"additionalProperties":false},"ReelsReportDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["spam_scam","nudity_sexual_content","violence_dangerous_acts","harassment_bullying","hate_speech","health_misinformation","self_harm_suicide","intellectual_property","other"]},"commentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"note":{"default":"","type":"string","maxLength":2000}},"required":["clientId","category"],"additionalProperties":false},"ReelsReportCreatedDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","reviewed"]}},"required":["id","status"]},"ReelsAppealDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"body":{"type":"string","minLength":1,"maxLength":2000}},"required":["clientId","body"],"additionalProperties":false},"ReelsAppealCreatedDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["pending","accepted","rejected"]}},"required":["id","status"]},"ReelsModerationQueueResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"caption":{"type":"string"},"visibility":{"type":"string","enum":["private","followers","public"]},"moderationStatus":{"type":"string","const":"pending"},"publicationStatus":{"type":"string","const":"pending"},"revisionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","authorId","caption","visibility","moderationStatus","publicationStatus","revisionId","version","createdAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"ReelsModerationDto":{"type":"object","properties":{"action":{"type":"string","enum":["approve","reject","remove","restore"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["action","version","revisionId","reason"],"additionalProperties":false},"ReelsModeratedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"action":{"type":"string","enum":["approve","reject","remove","restore"]}},"required":["id","action"],"additionalProperties":false},"ReelsAdminReportsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"commentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"targetType":{"type":"string","enum":["clip","comment"]},"category":{"type":"string","enum":["spam_scam","nudity_sexual_content","violence_dangerous_acts","harassment_bullying","hate_speech","health_misinformation","self_harm_suicide","intellectual_property","other"]},"note":{"type":"string"},"status":{"type":"string","enum":["pending","reviewed"]},"decision":{"anyOf":[{"type":"string","enum":["dismiss","remove","restore"]},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"reporterId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","reelId","commentId","targetType","category","note","status","decision","createdAt","reviewedAt","reporterId"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"],"additionalProperties":false},"ReelsReportReviewDto":{"type":"object","properties":{"decision":{"type":"string","enum":["dismiss","remove","restore"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["decision","reason"],"additionalProperties":false},"ReelsReportReviewedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","const":"reviewed"},"decision":{"type":"string","enum":["dismiss","remove","restore"]}},"required":["id","status","decision"],"additionalProperties":false},"ReelsAppealReviewDto":{"type":"object","properties":{"decision":{"type":"string","enum":["accepted","rejected"]},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["decision","reason"],"additionalProperties":false},"ReelsAppealReviewedResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["accepted","rejected"]}},"required":["id","status"],"additionalProperties":false},"ReelDraftPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"caption":{"type":"string"},"visibility":{"type":"string","enum":["private","followers","public"]},"publicationStatus":{"type":"string","enum":["draft","pending","published"]},"moderationStatus":{"type":"string","enum":["pending","approved","rejected"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currentRevisionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"publishedRevisionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"durationMs":{"type":["number","null"]},"interestTags":{"type":"array","items":{"type":"string"}},"approximateLocation":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"precision":{"type":"string","const":"approximate"}},"required":["latitude","longitude","precision"]},{"type":"null"}]},"allowDownload":{"type":"boolean"},"activity":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averageSpeedMps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"minItems":1,"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0}},"required":["segments","hiddenStartM","hiddenEndM"],"additionalProperties":false},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"],"additionalProperties":false},{"type":"null"}]},"mentions":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"thumbnailPath":{"type":"string"},"playbackEndpoint":{"type":"string"},"recipe":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"moderationDecision":{"anyOf":[{"type":"object","properties":{"action":{"type":"string"},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["action","reason","createdAt"]},{"type":"null"}]},"editor":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"coverTimeMs":{"type":"number"},"captions":{"type":"array","items":{"type":"object","properties":{"startMs":{"type":"integer","minimum":0,"maximum":179999},"endMs":{"type":"integer","minimum":1,"maximum":180000},"text":{"type":"string","minLength":1,"maxLength":300}},"required":["startMs","endMs","text"],"additionalProperties":false}},"music":{"anyOf":[{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startMs":{"type":"integer","minimum":0,"maximum":3600000},"volume":{"default":0.5,"type":"number","minimum":0,"maximum":1},"licenseId":{"type":"string"},"attribution":{"type":"string"},"title":{"type":"string"},"artist":{"type":"string"},"durationMs":{"type":"number"}},"required":["trackId","version","startMs","licenseId","attribution","title","artist","durationMs"],"additionalProperties":false},{"type":"null"}]}},"required":["revisionId","coverTimeMs","captions","music"]},"processing":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["awaiting_upload","queued","processing","ready","failed","cancelled"]},"failureCode":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationMs":{"type":["number","null"]},"hasAudio":{"type":["boolean","null"]},"captionsAvailable":{"type":"boolean"},"music":{"anyOf":[{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attribution":{"type":"string"}},"required":["trackId","attribution"]},{"type":"null"}]}},"required":["revisionId","status","failureCode","width","height","durationMs","hasAudio","captionsAvailable","music"]}},"required":["id","authorId","caption","visibility","publicationStatus","moderationStatus","version","currentRevisionId","publishedRevisionId","durationMs","interestTags","approximateLocation","allowDownload","activity","mentions","createdAt","updatedAt","publishedAt","thumbnailPath","playbackEndpoint"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"CreateReelDto":{"type":"object","properties":{"caption":{"default":"","type":"string","maxLength":150},"visibility":{"default":"private","type":"string","enum":["private","followers","public"]},"interestTags":{"default":[],"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"approximateLocation":{"default":null,"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"allowDownload":{"default":false,"type":"boolean"},"activityId":{"default":null,"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"mentions":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"recipe":{"default":null,"anyOf":[{"type":"object","properties":{"version":{"default":1,"type":"number","const":1},"clips":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceDurationMs":{"type":"integer","minimum":1,"maximum":14400000},"inMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"outMs":{"type":"integer","minimum":1,"maximum":9007199254740991},"speed":{"default":1,"anyOf":[{"type":"number","const":0.5},{"type":"number","const":1},{"type":"number","const":2}]},"muted":{"default":false,"type":"boolean"}},"required":["id","sourceDurationMs","inMs","outMs"],"additionalProperties":false}},"originalVolume":{"default":1,"type":"number","minimum":0,"maximum":1}},"required":["clips"],"additionalProperties":false},{"type":"null"}]},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId"],"additionalProperties":false},"ReelResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"caption":{"type":"string"},"visibility":{"type":"string","enum":["private","followers","public"]},"publicationStatus":{"type":"string","enum":["draft","pending","published"]},"moderationStatus":{"type":"string","enum":["pending","approved","rejected"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currentRevisionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"publishedRevisionId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"durationMs":{"type":"array","items":{"type":"number"}},"interestTags":{"type":"array","items":{"type":"string"}},"approximateLocation":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"precision":{"type":"string","const":"approximate"}},"required":["latitude","longitude","precision"]},{"type":"null"}]},"allowDownload":{"type":"boolean"},"activity":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"type":["string","null"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averageSpeedMps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"route":{"anyOf":[{"type":"object","properties":{"segments":{"minItems":1,"type":"array","items":{"minItems":2,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false}}},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0}},"required":["segments","hiddenStartM","hiddenEndM"],"additionalProperties":false},{"type":"null"}]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route"],"additionalProperties":false},{"type":"null"}]},"mentions":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"thumbnailPath":{"type":"string"},"playbackEndpoint":{"type":"string"},"recipe":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"moderationDecision":{"anyOf":[{"type":"object","properties":{"action":{"type":"string"},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["action","reason","createdAt"]},{"type":"null"}]},"editor":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"coverTimeMs":{"type":"number"},"captions":{"type":"array","items":{"type":"object","properties":{"startMs":{"type":"integer","minimum":0,"maximum":179999},"endMs":{"type":"integer","minimum":1,"maximum":180000},"text":{"type":"string","minLength":1,"maxLength":300}},"required":["startMs","endMs","text"],"additionalProperties":false}},"music":{"anyOf":[{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startMs":{"type":"integer","minimum":0,"maximum":3600000},"volume":{"default":0.5,"type":"number","minimum":0,"maximum":1},"licenseId":{"type":"string"},"attribution":{"type":"string"},"title":{"type":"string"},"artist":{"type":"string"},"durationMs":{"type":"number"}},"required":["trackId","version","startMs","licenseId","attribution","title","artist","durationMs"],"additionalProperties":false},{"type":"null"}]}},"required":["revisionId","coverTimeMs","captions","music"]},"processing":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["awaiting_upload","queued","processing","ready","failed","cancelled"]},"failureCode":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationMs":{"type":["number","null"]},"hasAudio":{"type":["boolean","null"]},"captionsAvailable":{"type":"boolean"},"music":{"anyOf":[{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attribution":{"type":"string"}},"required":["trackId","attribution"]},{"type":"null"}]}},"required":["revisionId","status","failureCode","width","height","durationMs","hasAudio","captionsAvailable","music"]}},"required":["id","authorId","caption","visibility","publicationStatus","moderationStatus","version","currentRevisionId","publishedRevisionId","durationMs","interestTags","approximateLocation","allowDownload","activity","mentions","createdAt","updatedAt","publishedAt","thumbnailPath","playbackEndpoint"]},"UpdateReelDto":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"caption":{"type":"string","maxLength":150},"visibility":{"type":"string","enum":["private","followers","public"]},"interestTags":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"approximateLocation":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"allowDownload":{"type":"boolean"},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"mentions":{"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"recipe":{"anyOf":[{"type":"object","properties":{"version":{"default":1,"type":"number","const":1},"clips":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceDurationMs":{"type":"integer","minimum":1,"maximum":14400000},"inMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"outMs":{"type":"integer","minimum":1,"maximum":9007199254740991},"speed":{"default":1,"anyOf":[{"type":"number","const":0.5},{"type":"number","const":1},{"type":"number","const":2}]},"muted":{"default":false,"type":"boolean"}},"required":["id","sourceDurationMs","inMs","outMs"],"additionalProperties":false}},"originalVolume":{"default":1,"type":"number","minimum":0,"maximum":1}},"required":["clips"],"additionalProperties":false},{"type":"null"}]}},"required":["version"],"additionalProperties":false},"CreateReelUploadDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":1,"maximum":262144000},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentType":{"type":"string","const":"video/mp4"},"coverTimeMs":{"default":0,"type":"integer","minimum":0,"maximum":179999},"music":{"default":null,"anyOf":[{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"startMs":{"type":"integer","minimum":0,"maximum":3600000},"volume":{"default":0.5,"type":"number","minimum":0,"maximum":1}},"required":["trackId","version","startMs"],"additionalProperties":false},{"type":"null"}]},"captions":{"default":[],"maxItems":500,"type":"array","items":{"type":"object","properties":{"startMs":{"type":"integer","minimum":0,"maximum":179999},"endMs":{"type":"integer","minimum":1,"maximum":180000},"text":{"type":"string","minLength":1,"maxLength":300}},"required":["startMs","endMs","text"],"additionalProperties":false}}},"required":["clientId","version","bytes","checksumSha256","contentType"],"additionalProperties":false},"ReelUploadResponseDto":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"number"},"status":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"partSizeBytes":{"type":"number"},"partCount":{"type":"number"},"bytes":{"type":"number"},"checksumSha256":{"type":"string"},"signPartEndpoint":{"type":"string"},"completeEndpoint":{"type":"string"},"parts":{"type":"array","items":{"type":"object","properties":{"partNumber":{"type":"number"},"etag":{"type":"string"},"bytes":{"type":"number"},"checksumSha256":{"type":"string"}},"required":["partNumber","etag","bytes"]}},"pollAfterMs":{"type":"number"}},"required":["revisionId","reelId","version","status","expiresAt","partSizeBytes","partCount","bytes","checksumSha256","signPartEndpoint","completeEndpoint"]},"SignReelPartDto":{"type":"object","properties":{"partNumber":{"type":"integer","minimum":1,"maximum":32},"checksumSha256":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"}},"required":["partNumber"],"additionalProperties":false},"ReelPartResponseDto":{"type":"object","properties":{"partNumber":{"type":"number"},"bytes":{"type":"number"},"url":{"type":"string","format":"uri"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"expiresIn":{"type":"number"}},"required":["partNumber","bytes","url","headers","expiresIn"]},"CompleteReelUploadDto":{"type":"object","properties":{"parts":{"minItems":1,"maxItems":32,"type":"array","items":{"type":"object","properties":{"partNumber":{"type":"integer","minimum":1,"maximum":32},"etag":{"type":"string","pattern":"^\"[a-f0-9]{32}\"$"}},"required":["partNumber","etag"],"additionalProperties":false}}},"required":["parts"],"additionalProperties":false},"PublishReelDto":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["revisionId","version"],"additionalProperties":false},"ReelPlaybackDto":{"type":"object","properties":{"purpose":{"default":"stream","type":"string","enum":["stream","offline","export"]},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"delivery":{"default":"proxy","type":"string","enum":["proxy","cdn"]}},"additionalProperties":false},"ReelPlaybackResponseDto":{"type":"object","properties":{"grantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"purpose":{"type":"string","enum":["stream","offline","export"]},"url":{"type":"string"},"contentType":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"requiredHeaders":{"type":"array","items":{"type":"string"}},"authentication":{"type":"string","const":"session_bearer_on_every_request"},"variants":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"initializationUrl":{"type":["string","null"]},"firstSegmentUrl":{"type":["string","null"]},"estimatedBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["name","url","initializationUrl","firstSegmentUrl","estimatedBytes"]}},"durationMs":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"bytes":{"type":"number"},"checksumSha256":{"type":"string"},"thumbnailUrl":{"type":"string"},"captions":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"url":{"type":"string"},"contentType":{"type":"string"}},"required":["language","url","contentType"]}},"music":{"anyOf":[{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attribution":{"type":"string"}},"required":["trackId","attribution"]},{"type":"null"}]},"offlineValidUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"revalidateEndpoint":{"type":"string"},"storage":{"type":"string","const":"app_private"},"removeOnLogout":{"type":"boolean"},"delivery":{"type":"string","enum":["proxy","cdn"]},"cdn":{"anyOf":[{"type":"object","properties":{"baseUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cookies":{"type":"object","properties":{"CloudFront-Policy":{"type":"string"},"CloudFront-Signature":{"type":"string"},"CloudFront-Key-Pair-Id":{"type":"string"}},"required":["CloudFront-Policy","CloudFront-Signature","CloudFront-Key-Pair-Id"]}},"required":["baseUrl","expiresAt","cookies"]},{"type":"null"}]}},"required":["grantId","revisionId","purpose","url","contentType","expiresAt","requiredHeaders","authentication","variants","durationMs","width","height","bytes","checksumSha256","thumbnailUrl","captions","music","delivery","cdn"]},"ReelShareResponseDto":{"type":"object","properties":{"reelId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deepLink":{"type":"string"},"qrContent":{"type":"string"},"text":{"type":"string"},"requiresAuthentication":{"type":"boolean","const":true},"visibility":{"type":"string","enum":["private","followers","public"]}},"required":["reelId","deepLink","qrContent","text","requiresAuthentication","visibility"]},"ReelOfflineRevalidateDto":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["revisionId","checksumSha256"],"additionalProperties":false},"ReelOfflineValidityResponseDto":{"type":"object","properties":{"valid":{"type":"boolean","const":true},"revisionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"checksumSha256":{"type":"string"},"offlineValidUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"removeOnLogout":{"type":"boolean","const":true}},"required":["valid","revisionId","checksumSha256","offlineValidUntil","removeOnLogout"]},"PersonalisationPreferencesViewDto":{"type":"object","properties":{"recommendationsEnabled":{"type":"boolean"},"advertisingEnabled":{"type":"boolean"},"modelProcessingEnabled":{"type":"boolean"},"socialSuggestionsEnabled":{"type":"boolean"},"discoverable":{"type":"boolean"},"declaredInterests":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"mutedInterests":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policyVersion":{"type":"string"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"advertisingEligible":{"type":"boolean"},"rawEventRetentionDays":{"type":"number","const":30}},"required":["recommendationsEnabled","advertisingEnabled","modelProcessingEnabled","socialSuggestionsEnabled","discoverable","declaredInterests","mutedInterests","version","policyVersion","updatedAt","advertisingEligible","rawEventRetentionDays"]},"PersonalisationPreferencesDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"policyVersion":{"type":"string","const":"2026-09-10.1"},"recommendationsEnabled":{"type":"boolean"},"advertisingEnabled":{"type":"boolean"},"modelProcessingEnabled":{"type":"boolean"},"socialSuggestionsEnabled":{"type":"boolean"},"discoverable":{"type":"boolean"},"declaredInterests":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"mutedInterests":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}}},"required":["expectedVersion","policyVersion","recommendationsEnabled","advertisingEnabled","modelProcessingEnabled","socialSuggestionsEnabled","discoverable","declaredInterests","mutedInterests"],"additionalProperties":false},"PersonalisationProfileDto":{"type":"object","properties":{"algorithmVersion":{"type":"string","const":"interest-decay-v1"},"preferenceVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eventWindowLimit":{"type":"number","const":5000},"stage":{"type":"string","enum":["general","learning","established"]},"signalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confidenceMeaning":{"type":"string","const":"evidence_volume_not_probability"},"interests":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]},"weight":{"type":"number"},"source":{"type":"string","enum":["declared","behaviour","both"]}},"required":["tag","weight","source"]}},"usage":{"type":"object","properties":{"observedActiveMs":{"type":"number"},"screens":{"type":"array","items":{"type":"object","properties":{"screen":{"type":"string"},"events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"engagementMs":{"type":"number"},"maxScrollDepthPercent":{"type":"number"}},"required":["screen","events","engagementMs","maxScrollDepthPercent"]}},"timeBands":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}}},"required":["observedActiveMs","screens","timeBands"]},"model":{"type":"object","properties":{"status":{"type":"string"},"topicOrder":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"model":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["status","topicOrder","model","expiresAt"]},"serverSignals":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retentionDays":{"type":"number","const":30},"kinds":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["kind","count"]}}},"required":["total","retentionDays","kinds"]},"routine":{"type":"object","properties":{"status":{"type":"string","enum":["not_enabled","not_available","insufficient_evidence","ready","stale"]},"algorithmVersion":{"type":"string","const":"routine-bands-v2"},"windowDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sampleSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimumSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlights":{"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"band":{"type":"string","enum":["00_03","03_06","06_09","09_12","12_15","15_18","18_21","21_24"]},"sessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["weekday","band","sessions"]}},"computedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["status","algorithmVersion","windowDays","sampleSize","minimumSessions","highlights","computedAt","validUntil"]},"groupRanking":{"type":"object","properties":{"algorithmVersion":{"type":"string","const":"group-fit-v1"},"status":{"type":"string","enum":["not_consented","server_disabled","none","pending","ready","failed"]},"model":{"type":["string","null"]},"candidateCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["algorithmVersion","status","model","candidateCount","expiresAt"]},"communications":{"type":"object","properties":{"enabled":{"type":"boolean"},"serverEnabled":{"type":"boolean"},"algorithmVersion":{"type":"string","const":"community-suggestions-v1"},"policyVersion":{"type":"string"},"dailyCap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weeklyCap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retentionDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"planned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sentToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sentLast7Days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"suppressedLast7Days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"openedLast7Days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"actedLast7Days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["enabled","serverEnabled","algorithmVersion","policyVersion","dailyCap","weeklyCap","retentionDays","planned","sentToday","sentLast7Days","suppressedLast7Days","openedLast7Days","actedLast7Days"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"projection":{"type":"object","properties":{"status":{"type":"string","enum":["inline","ready","processing","not_enabled"]},"revision":{"type":["string","null"]},"preparedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"retryAfterMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["status","revision","preparedAt","validUntil","retryAfterMs"]}},"required":["algorithmVersion","preferenceVersion","eventWindowLimit","stage","signalCount","confidenceMeaning","interests","usage","model","serverSignals","routine","groupRanking","communications","generatedAt","projection"]},"PersonalisationEventsDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128},"events":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["screen_view","screen_engagement","content_view","content_click","content_dismiss","content_like","content_comment","music_play","music_skip","music_download","group_join","follow","video_watch","video_skip","video_complete"]},"screen":{"type":"string","enum":["today","community_feed","community_groups","community_group","community_profile","kyplay_home","kyplay_browse","kyplay_playlist","kyplay_player","kyplay_downloads","training_catalogue","training_plan","settings","reels_feed","kyzone_map","kyzone_summary","kyzone_leaderboard","routes_library","routes_builder","routes_detail"]},"entityType":{"type":"string","enum":["track","playlist","group","person","post","advertisement","training_plan","reel","kyzone_session","route"]},"entityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"engagementMs":{"default":0,"type":"integer","minimum":0,"maximum":60000},"scrollDepthPercent":{"default":0,"type":"integer","minimum":0,"maximum":100}},"required":["id","occurredAt","kind","screen"],"additionalProperties":false}}},"required":["deviceId","events"],"additionalProperties":false},"PersonalisationResetDto":{"type":"object","properties":{"confirmation":{"type":"string","const":"RESET"},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["confirmation","expectedVersion"],"additionalProperties":false},"PersonalisationRecommendationsDto":{"type":"object","properties":{"kind":{"type":"string","enum":["tracks","groups","connections","events","training_plans"]},"algorithmVersion":{"type":"string","const":"interest-decay-v1"},"mode":{"type":"string","enum":["general","personalised"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"score":{"type":"number"},"reasons":{"type":"array","items":{"type":"string"}},"exploration":{"type":"boolean"}},"required":["id","score","reasons","exploration"]}},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"candidateLimit":{"type":"number"},"nextCursor":{"type":"null"},"projection":{"type":"object","properties":{"status":{"type":"string","enum":["inline","ready","processing","not_enabled"]},"revision":{"type":["string","null"]},"preparedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"retryAfterMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["status","revision","preparedAt","validUntil","retryAfterMs"]}},"required":["kind","algorithmVersion","mode","items","generatedAt","candidateLimit","nextCursor","projection"]},"PersonalisationAdvertisingDto":{"type":"object","properties":{"placement":{"type":"object","properties":{"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"badge":{"type":"string","enum":["Ad","Sponsored"]},"cardWidthDp":{"type":"number"},"cardMinHeightDp":{"type":"number"},"imageWidthDp":{"type":"number"},"imageHeightDp":{"type":"number"},"imagePosition":{"type":"string","enum":["left","top"]},"heightBehavior":{"type":"string","const":"grow_with_text"},"policy":{"type":"object","properties":{"version":{"type":"number","const":1},"container":{"type":"string","const":"horizontal_lazy_row"},"minimumOrganicPostsBeforeFirst":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"organicPostsBetweenUnits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumUnitsPerPlacement":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"allowConsecutiveUnits":{"type":"boolean","const":false}},"required":["version","container","minimumOrganicPostsBeforeFirst","organicPostsBetweenUnits","maximumUnitsPerPlacement","allowConsecutiveUnits"]}},"required":["placement","format","badge","cardWidthDp","cardMinHeightDp","imageWidthDp","imageHeightDp","imagePosition","heightBehavior","policy"]},"units":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"advertiser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"]},"mode":{"type":"string","enum":["single","carousel"]},"badge":{"type":"string","enum":["Ad","Sponsored"]},"cards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"body":{"type":["string","null"]},"actionLabel":{"type":["string","null"]},"actionUrl":{"type":["string","null"]},"altText":{"type":"string"},"imageUrl":{"type":"string"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","position","title","body","actionLabel","actionUrl","altText","imageUrl","imageExpiresIn","imageWidth","imageHeight"]}},"interestTags":{"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"recommendation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"score":{"type":"number"},"reasons":{"type":"array","items":{"type":"string"}},"exploration":{"type":"boolean"}},"required":["id","score","reasons","exploration"]}},"required":["id","version","advertiser","mode","badge","cards","interestTags","recommendation"]}},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"mode":{"type":"string","enum":["general","personalised"]},"algorithmVersion":{"type":"string","const":"interest-decay-v1"},"candidateLimit":{"type":"number","const":20},"projection":{"type":"object","properties":{"status":{"type":"string","enum":["inline","ready","processing","not_enabled"]},"revision":{"type":["string","null"]},"preparedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"validUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"retryAfterMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["status","revision","preparedAt","validUntil","retryAfterMs"]}},"required":["placement","units","generatedAt","mode","algorithmVersion","candidateLimit","projection"]},"PersonalisationMetricsDto":{"type":"object","properties":{"configuredAccounts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recommendationsOptedIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"advertisingOptedIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"modelOptedIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"events30Days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"modelJobs":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["status","count"]}},"includesIndividualProfiles":{"type":"boolean","const":false},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["configuredAccounts","recommendationsOptedIn","advertisingOptedIn","modelOptedIn","events30Days","modelJobs","includesIndividualProfiles","generatedAt"]},"AdvertisingPlacementsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"badge":{"type":"string","enum":["Ad","Sponsored"]},"cardWidthDp":{"type":"number"},"cardMinHeightDp":{"type":"number"},"imageWidthDp":{"type":"number"},"imageHeightDp":{"type":"number"},"imagePosition":{"type":"string","enum":["left","top"]},"heightBehavior":{"type":"string","const":"grow_with_text"},"policy":{"type":"object","properties":{"version":{"type":"number","const":1},"container":{"type":"string","const":"horizontal_lazy_row"},"minimumOrganicPostsBeforeFirst":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"organicPostsBetweenUnits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumUnitsPerPlacement":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"allowConsecutiveUnits":{"type":"boolean","const":false}},"required":["version","container","minimumOrganicPostsBeforeFirst","organicPostsBetweenUnits","maximumUnitsPerPlacement","allowConsecutiveUnits"]}},"required":["placement","format","badge","cardWidthDp","cardMinHeightDp","imageWidthDp","imageHeightDp","imagePosition","heightBehavior","policy"]}}},"required":["items"]},"AdvertisingDeliveryDto":{"type":"object","properties":{"placement":{"type":"object","properties":{"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"badge":{"type":"string","enum":["Ad","Sponsored"]},"cardWidthDp":{"type":"number"},"cardMinHeightDp":{"type":"number"},"imageWidthDp":{"type":"number"},"imageHeightDp":{"type":"number"},"imagePosition":{"type":"string","enum":["left","top"]},"heightBehavior":{"type":"string","const":"grow_with_text"},"policy":{"type":"object","properties":{"version":{"type":"number","const":1},"container":{"type":"string","const":"horizontal_lazy_row"},"minimumOrganicPostsBeforeFirst":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"organicPostsBetweenUnits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximumUnitsPerPlacement":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"allowConsecutiveUnits":{"type":"boolean","const":false}},"required":["version","container","minimumOrganicPostsBeforeFirst","organicPostsBetweenUnits","maximumUnitsPerPlacement","allowConsecutiveUnits"]}},"required":["placement","format","badge","cardWidthDp","cardMinHeightDp","imageWidthDp","imageHeightDp","imagePosition","heightBehavior","policy"]},"units":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"advertiser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"]},"mode":{"type":"string","enum":["single","carousel"]},"badge":{"type":"string","enum":["Ad","Sponsored"]},"cards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"body":{"type":["string","null"]},"actionLabel":{"type":["string","null"]},"actionUrl":{"type":["string","null"]},"altText":{"type":"string"},"imageUrl":{"type":"string"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","position","title","body","actionLabel","actionUrl","altText","imageUrl","imageExpiresIn","imageWidth","imageHeight"]}},"interestTags":{"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}}},"required":["id","version","advertiser","mode","badge","cards","interestTags"]}},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["placement","units","generatedAt"]},"AdvertisingMetricsDto":{"type":"object","properties":{"advertiserId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"advertisers":{"type":"object","properties":{"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archived":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["active","archived"],"additionalProperties":false},"campaigns":{"type":"object","properties":{"draft":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paused":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"archived":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["draft","active","paused","archived"],"additionalProperties":false},"moderationDecisions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"metricScope":{"type":"string","const":"stored_campaign_state_and_moderation"}},"required":["advertiserId","advertisers","campaigns","moderationDecisions","metricScope"],"additionalProperties":false},"AdvertiserPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"legalName":{"type":"string"},"displayName":{"type":"string"},"taxId":{"type":["string","null"]},"countryCode":{"type":"string"},"contactName":{"type":"string"},"contactEmail":{"type":"string"},"contactPhone":{"type":["string","null"]},"website":{"type":["string","null"]},"address":{"anyOf":[{"type":"object","properties":{"line1":{"type":"string","minLength":1,"maxLength":160},"line2":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":100},"region":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"postalCode":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"required":["line1","city","countryCode"],"additionalProperties":false},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","legalName","displayName","taxId","countryCode","contactName","contactEmail","contactPhone","website","address","status","version","createdAt","updatedAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdvertiserDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"legalName":{"type":"string"},"displayName":{"type":"string"},"taxId":{"type":"array","items":{"type":"string"}},"countryCode":{"type":"string"},"contactName":{"type":"string"},"contactEmail":{"type":"string"},"contactPhone":{"type":"array","items":{"type":"string"}},"website":{"type":"array","items":{"type":"string"}},"address":{"anyOf":[{"type":"object","properties":{"line1":{"type":"string","minLength":1,"maxLength":160},"line2":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":100},"region":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"postalCode":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"required":["line1","city","countryCode"],"additionalProperties":false},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","legalName","displayName","taxId","countryCode","contactName","contactEmail","contactPhone","website","address","status","version","createdAt","updatedAt"]},"CreateAdvertiserDto":{"type":"object","properties":{"legalName":{"type":"string","minLength":2,"maxLength":160},"displayName":{"type":"string","minLength":2,"maxLength":100},"taxId":{"default":null,"anyOf":[{"type":"string","minLength":2,"maxLength":64,"pattern":"^[\\p{L}\\p{N} .\\/-]+$"},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"},"contactName":{"type":"string","minLength":2,"maxLength":100},"contactEmail":{"type":"string"},"contactPhone":{"default":null,"anyOf":[{"type":"string","minLength":5,"maxLength":40,"pattern":"^[+\\d ()\\-.]+$"},{"type":"null"}]},"website":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"address":{"anyOf":[{"type":"object","properties":{"line1":{"type":"string","minLength":1,"maxLength":160},"line2":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":100},"region":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"postalCode":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"required":["line1","city","countryCode"],"additionalProperties":false},{"type":"null"}]},"status":{"default":"active","type":"string","enum":["active","archived"]}},"required":["legalName","displayName","countryCode","contactName","contactEmail"],"additionalProperties":false},"UpdateAdvertiserDto":{"type":"object","properties":{"legalName":{"type":"string","minLength":2,"maxLength":160},"displayName":{"type":"string","minLength":2,"maxLength":100},"taxId":{"anyOf":[{"type":"string","minLength":2,"maxLength":64,"pattern":"^[\\p{L}\\p{N} .\\/-]+$"},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"},"contactName":{"type":"string","minLength":2,"maxLength":100},"contactEmail":{"type":"string"},"contactPhone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40,"pattern":"^[+\\d ()\\-.]+$"},{"type":"null"}]},"website":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"address":{"anyOf":[{"type":"object","properties":{"line1":{"type":"string","minLength":1,"maxLength":160},"line2":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":100},"region":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"postalCode":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"required":["line1","city","countryCode"],"additionalProperties":false},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false},"ReplaceAdvertiserDto":{"type":"object","properties":{"legalName":{"type":"string","minLength":2,"maxLength":160},"displayName":{"type":"string","minLength":2,"maxLength":100},"taxId":{"default":null,"anyOf":[{"type":"string","minLength":2,"maxLength":64,"pattern":"^[\\p{L}\\p{N} .\\/-]+$"},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"},"contactName":{"type":"string","minLength":2,"maxLength":100},"contactEmail":{"type":"string"},"contactPhone":{"default":null,"anyOf":[{"type":"string","minLength":5,"maxLength":40,"pattern":"^[+\\d ()\\-.]+$"},{"type":"null"}]},"website":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"address":{"anyOf":[{"type":"object","properties":{"line1":{"type":"string","minLength":1,"maxLength":160},"line2":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":100},"region":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"postalCode":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"required":["line1","city","countryCode"],"additionalProperties":false},{"type":"null"}]},"status":{"default":"active","type":"string","enum":["active","archived"]},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["legalName","displayName","countryCode","contactName","contactEmail","expectedVersion"],"additionalProperties":false},"AdvertisingCampaignPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"advertiserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"mode":{"type":"string","enum":["single","carousel"]},"status":{"type":"string","enum":["draft","active","paused","archived"]},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interestTags":{"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"cards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"body":{"type":["string","null"]},"actionLabel":{"type":["string","null"]},"actionUrl":{"type":["string","null"]},"altText":{"type":"string"},"imageUrl":{"type":"string"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"imageSha256":{"type":"string"},"imageBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","position","title","body","actionLabel","actionUrl","altText","imageUrl","imageExpiresIn","imageWidth","imageHeight","imageMediaId","imageSha256","imageBytes"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","advertiserId","name","placement","format","mode","status","startsAt","endsAt","priority","version","interestTags","cards","createdAt","updatedAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdvertisingCampaignDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"advertiserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"mode":{"type":"string","enum":["single","carousel"]},"status":{"type":"string","enum":["draft","active","paused","archived"]},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interestTags":{"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"cards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"body":{"type":["string","null"]},"actionLabel":{"type":["string","null"]},"actionUrl":{"type":["string","null"]},"altText":{"type":"string"},"imageUrl":{"type":"string"},"imageExpiresIn":{"type":"number","const":900},"imageWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"imageSha256":{"type":"string"},"imageBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","position","title","body","actionLabel","actionUrl","altText","imageUrl","imageExpiresIn","imageWidth","imageHeight","imageMediaId","imageSha256","imageBytes"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","advertiserId","name","placement","format","mode","status","startsAt","endsAt","priority","version","interestTags","cards","createdAt","updatedAt"]},"CreateAdvertisingCampaignDto":{"type":"object","properties":{"advertiserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":2,"maxLength":120},"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"mode":{"default":"single","type":"string","enum":["single","carousel"]},"cards":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"imageMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":80},"body":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":240},{"type":"null"}]},"actionLabel":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"actionUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"altText":{"type":"string","minLength":1,"maxLength":160}},"required":["imageMediaId","title","altText"],"additionalProperties":false}},"status":{"default":"draft","type":"string","enum":["draft","active","paused","archived"]},"startsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"priority":{"default":0,"type":"integer","minimum":0,"maximum":1000},"interestTags":{"default":[],"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}}},"required":["advertiserId","name","placement","format","cards"],"additionalProperties":false},"UpdateAdvertisingCampaignDto":{"type":"object","properties":{"advertiserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":2,"maxLength":120},"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"mode":{"type":"string","enum":["single","carousel"]},"cards":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"imageMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":80},"body":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":240},{"type":"null"}]},"actionLabel":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"actionUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"altText":{"type":"string","minLength":1,"maxLength":160}},"required":["imageMediaId","title","altText"],"additionalProperties":false}},"status":{"type":"string","enum":["draft","active","paused","archived"]},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"priority":{"type":"integer","minimum":0,"maximum":1000},"interestTags":{"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedVersion"],"additionalProperties":false},"ReplaceAdvertisingCampaignDto":{"type":"object","properties":{"advertiserId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":2,"maxLength":120},"placement":{"type":"string","enum":["today_sponsored","community_feed"]},"format":{"type":"string","enum":["today_wide","community_medium"]},"mode":{"default":"single","type":"string","enum":["single","carousel"]},"cards":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"imageMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":80},"body":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":240},{"type":"null"}]},"actionLabel":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}]},"actionUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"altText":{"type":"string","minLength":1,"maxLength":160}},"required":["imageMediaId","title","altText"],"additionalProperties":false}},"status":{"default":"draft","type":"string","enum":["draft","active","paused","archived"]},"startsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"priority":{"default":0,"type":"integer","minimum":0,"maximum":1000},"interestTags":{"default":[],"maxItems":12,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["advertiserId","name","placement","format","cards","expectedVersion"],"additionalProperties":false},"AdvertisingModerationDto":{"type":"object","properties":{"decision":{"type":"string","enum":["approve","pause","reject","archive"]},"reason":{"type":"string","minLength":5,"maxLength":1000},"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["decision","reason","expectedVersion"],"additionalProperties":false},"KyzoneConfigurationResponseDto":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false},"latestPolicy":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["version","policy"]},"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},{"type":"null"}]},"bonusPendingConfiguration":{"type":"boolean"},"geometry":{"type":"object","properties":{"algorithmVersion":{"type":"string"},"resolution":{"type":"number","const":10},"cellSystem":{"type":"string","const":"H3"},"sizeDescription":{"type":"string"},"maxPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxDurationS":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minLoopDistanceM":{"type":"number"},"minLoopCells":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAccuracyM":{"type":"number"},"maxGapS":{"type":"number"},"maxSpeedMps":{"type":"number"},"speedWindowS":{"type":"number"},"speedWindowMinS":{"type":"number"},"speedWindowMinSamples":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxTeleportM":{"type":"number"},"minLoopDurationS":{"type":"number"},"maxCapturedCells":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxLoopVertices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxCandidateCells":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxSegmentChecks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxSpanM":{"type":"number"}},"required":["algorithmVersion","resolution","cellSystem","sizeDescription","maxPoints","maxDurationS","minLoopDistanceM","minLoopCells","maxAccuracyM","maxGapS","maxSpeedMps","speedWindowS","speedWindowMinS","speedWindowMinSamples","maxTeleportM","minLoopDurationS","maxCapturedCells","maxLoopVertices","maxCandidateCells","maxSegmentChecks","maxSpanM"]},"gpsPersistence":{"type":"string","const":"none"},"supportedSports":{"type":"array","items":{"type":"string","enum":["running","walking","trail_running","cycling"]}},"cyclingAvailable":{"type":"boolean","const":true},"incrementalLapsAvailable":{"type":"boolean"},"arenas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["foot","cycling"]},"sports":{"type":"array","items":{"type":"string"}},"geometry":{"type":"object","properties":{"resolution":{"type":"number"},"maxPoints":{"type":"number"},"maxDurationS":{"type":"number"},"minLoopDurationS":{"type":"number"},"minLoopDistanceM":{"type":"number"},"minLoopCells":{"type":"number"},"maxCapturedCells":{"type":"number"},"maxAccuracyM":{"type":"number"},"maxGapS":{"type":"number"},"maxSpeedMps":{"type":"number"},"speedWindowS":{"type":"number"},"speedWindowMinS":{"type":"number"},"speedWindowMinSamples":{"type":"number"},"maxTeleportM":{"type":"number"},"maxLoopVertices":{"type":"number"},"maxCandidateCells":{"type":"number"},"maxSegmentChecks":{"type":"number"},"maxSpanM":{"type":"number"},"algorithmVersion":{"type":"string"}},"required":["resolution","maxPoints","maxDurationS","minLoopDurationS","minLoopDistanceM","minLoopCells","maxCapturedCells","maxAccuracyM","maxGapS","maxSpeedMps","speedWindowS","speedWindowMinS","speedWindowMinSamples","maxTeleportM","maxLoopVertices","maxCandidateCells","maxSegmentChecks","maxSpanM","algorithmVersion"]}},"required":["id","sports","geometry"]}}},"required":["version","policy","latestPolicy","season","bonusPendingConfiguration","geometry","gpsPersistence","supportedSports","cyclingAvailable","incrementalLapsAvailable","arenas"]},"KyzonePreferencesResponseDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["enabled","version","updatedAt"]},"KyzonePreferencesDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"enabled":{"type":"boolean"}},"required":["expectedVersion","enabled"],"additionalProperties":false},"KyzoneStartDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","walking","trail_running","cycling"]}},"required":["clientId","sport"],"additionalProperties":false},"KyzoneClaimResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"arena":{"type":"string","enum":["foot","cycling"]},"sport":{"type":"string","enum":["running","walking","trail_running","cycling"]},"status":{"type":"string","enum":["recording","completed","rejected","cancelled"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"result":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"algorithmVersion":{"type":"string"},"distanceM":{"type":"number"},"activeDurationS":{"type":"number"},"quality":{"type":"object","properties":{"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"validSampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gapCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invalidAccuracyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"speedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sustainedSpeedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pauseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sampleCount","validSampleCount","gapCount","invalidAccuracyCount","speedViolationCount","pauseCount"]},"qualifiedLoopCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"outcome":{"type":"string","enum":["claimed","defended","progress","private"]},"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cellId","outcome","loops","requiredLoops","ownershipVersion"]}},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["eligible","reason","algorithmVersion","distanceM","activeDurationS","quality","qualifiedLoopCount","cells","acceptedAt","policyVersion","seasonId"]},{"type":"null"}]},"presentation":{"anyOf":[{"type":"object","properties":{"claimedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defendedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"progressBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"takenFrom":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","displayName","avatarUrl","blockCount"]}},"takenFromHidden":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"energySource":{"anyOf":[{"type":"string","const":"estimated"},{"type":"null"}]}},"required":["claimedBlocks","defendedBlocks","progressBlocks","name","direction","label","areaName","takenFrom","takenFromHidden","energyKcal","energySource"]},{"type":"null"}]}},"required":["id","seasonId","sport","status","startedAt","expiresAt","result"]},"KyzoneClaimsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"arena":{"type":"string","enum":["foot","cycling"]},"sport":{"type":"string","enum":["running","walking","trail_running","cycling"]},"status":{"type":"string","enum":["recording","completed","rejected","cancelled"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"result":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"algorithmVersion":{"type":"string"},"distanceM":{"type":"number"},"activeDurationS":{"type":"number"},"quality":{"type":"object","properties":{"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"validSampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gapCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invalidAccuracyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"speedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sustainedSpeedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pauseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sampleCount","validSampleCount","gapCount","invalidAccuracyCount","speedViolationCount","pauseCount"]},"qualifiedLoopCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"outcome":{"type":"string","enum":["claimed","defended","progress","private"]},"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cellId","outcome","loops","requiredLoops","ownershipVersion"]}},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["eligible","reason","algorithmVersion","distanceM","activeDurationS","quality","qualifiedLoopCount","cells","acceptedAt","policyVersion","seasonId"]},{"type":"null"}]},"presentation":{"anyOf":[{"type":"object","properties":{"claimedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defendedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"progressBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"takenFrom":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","displayName","avatarUrl","blockCount"]}},"takenFromHidden":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"energySource":{"anyOf":[{"type":"string","const":"estimated"},{"type":"null"}]}},"required":["claimedBlocks","defendedBlocks","progressBlocks","name","direction","label","areaName","takenFrom","takenFromHidden","energyKcal","energySource"]},{"type":"null"}]}},"required":["id","seasonId","sport","status","startedAt","expiresAt","result"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"KyzoneCompleteDto":{"type":"object","properties":{"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"points":{"minItems":2,"maxItems":20000,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"accuracyM":{"type":"number","minimum":0,"maximum":10000}},"required":["latitude","longitude","recordedAt","accuracyM"],"additionalProperties":false}},"pauses":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startedAt","endedAt"],"additionalProperties":false}}},"required":["completedAt","points"],"additionalProperties":false},"KyzoneFinishDto":{"type":"object","properties":{"expectedSequence":{"type":"integer","minimum":1,"maximum":48},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["expectedSequence","completedAt"],"additionalProperties":false},"KyzoneLapDto":{"type":"object","properties":{"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"points":{"minItems":2,"maxItems":20000,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"recordedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"accuracyM":{"type":"number","minimum":0,"maximum":10000}},"required":["latitude","longitude","recordedAt","accuracyM"],"additionalProperties":false}},"pauses":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"endedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["startedAt","endedAt"],"additionalProperties":false}},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":1,"maximum":48}},"required":["completedAt","points","clientId","sequence"],"additionalProperties":false},"KyzoneLapResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"arena":{"type":"string","enum":["foot","cycling"]},"sport":{"type":"string","enum":["running","walking","trail_running","cycling"]},"status":{"type":"string","enum":["recording","completed","rejected","cancelled"]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"result":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"algorithmVersion":{"type":"string"},"distanceM":{"type":"number"},"activeDurationS":{"type":"number"},"quality":{"type":"object","properties":{"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"validSampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gapCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invalidAccuracyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"speedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sustainedSpeedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pauseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sampleCount","validSampleCount","gapCount","invalidAccuracyCount","speedViolationCount","pauseCount"]},"qualifiedLoopCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"outcome":{"type":"string","enum":["claimed","defended","progress","private"]},"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cellId","outcome","loops","requiredLoops","ownershipVersion"]}},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["eligible","reason","algorithmVersion","distanceM","activeDurationS","quality","qualifiedLoopCount","cells","acceptedAt","policyVersion","seasonId"]},{"type":"null"}]},"presentation":{"anyOf":[{"type":"object","properties":{"claimedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defendedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"progressBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"takenFrom":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","displayName","avatarUrl","blockCount"]}},"takenFromHidden":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"energySource":{"anyOf":[{"type":"string","const":"estimated"},{"type":"null"}]}},"required":["claimedBlocks","defendedBlocks","progressBlocks","name","direction","label","areaName","takenFrom","takenFromHidden","energyKcal","energySource"]},{"type":"null"}]},"lastLap":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"result":{"type":"object","properties":{"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"algorithmVersion":{"type":"string"},"distanceM":{"type":"number"},"activeDurationS":{"type":"number"},"quality":{"type":"object","properties":{"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"validSampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gapCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invalidAccuracyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"speedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sustainedSpeedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pauseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sampleCount","validSampleCount","gapCount","invalidAccuracyCount","speedViolationCount","pauseCount"]},"qualifiedLoopCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"outcome":{"type":"string","enum":["claimed","defended","progress","private"]},"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cellId","outcome","loops","requiredLoops","ownershipVersion"]}},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["eligible","reason","algorithmVersion","distanceM","activeDurationS","quality","qualifiedLoopCount","cells","acceptedAt","policyVersion","seasonId"]},"presentation":{"anyOf":[{"type":"object","properties":{"claimedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defendedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"progressBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"takenFrom":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","displayName","avatarUrl","blockCount"]}},"takenFromHidden":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"energySource":{"anyOf":[{"type":"string","const":"estimated"},{"type":"null"}]}},"required":["claimedBlocks","defendedBlocks","progressBlocks","name","direction","label","areaName","takenFrom","takenFromHidden","energyKcal","energySource"]},{"type":"null"}]}},"required":["id","clientId","sequence","startedAt","completedAt","result"]}},"required":["id","seasonId","sport","status","startedAt","expiresAt","result","lastLap"]},"KyzoneLapsResponseDto":{"type":"object","properties":{"claimId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"result":{"type":"object","properties":{"eligible":{"type":"boolean"},"reason":{"type":["string","null"]},"algorithmVersion":{"type":"string"},"distanceM":{"type":"number"},"activeDurationS":{"type":"number"},"quality":{"type":"object","properties":{"sampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"validSampleCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gapCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invalidAccuracyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"speedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sustainedSpeedViolationCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pauseCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sampleCount","validSampleCount","gapCount","invalidAccuracyCount","speedViolationCount","pauseCount"]},"qualifiedLoopCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"outcome":{"type":"string","enum":["claimed","defended","progress","private"]},"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cellId","outcome","loops","requiredLoops","ownershipVersion"]}},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["eligible","reason","algorithmVersion","distanceM","activeDurationS","quality","qualifiedLoopCount","cells","acceptedAt","policyVersion","seasonId"]},"presentation":{"anyOf":[{"type":"object","properties":{"claimedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"defendedBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"progressBlocks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"takenFrom":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","displayName","avatarUrl","blockCount"]}},"takenFromHidden":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"energyKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"energySource":{"anyOf":[{"type":"string","const":"estimated"},{"type":"null"}]}},"required":["claimedBlocks","defendedBlocks","progressBlocks","name","direction","label","areaName","takenFrom","takenFromHidden","energyKcal","energySource"]},{"type":"null"}]}},"required":["id","clientId","sequence","startedAt","completedAt","result"]}}},"required":["claimId","items"]},"KyzoneMapResponseDto":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},{"type":"null"}]},"arena":{"type":"string","enum":["foot","cycling"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"owner":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"occupied":{"type":"boolean"},"ownershipHidden":{"type":"boolean"},"strength":{"type":"integer","minimum":0,"maximum":100},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"boundary":{"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"required":["cellId","owner","occupied","ownershipHidden","strength","ownershipVersion","requiredLoops","boundary"]}}},"required":["season","arena","updatedAt","cells"]},"KyzoneMapOverviewResponseDto":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},{"type":"null"}]},"arena":{"type":"string","enum":["foot","cycling"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"resolution":{"type":"number","const":8},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"boundary":{"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}},"blocks":{"type":"integer","minimum":0,"maximum":9007199254740991},"yours":{"type":"integer","minimum":0,"maximum":9007199254740991},"owner":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"ownerBlocks":{"type":"integer","minimum":0,"maximum":9007199254740991},"hiddenBlocks":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["cellId","boundary","blocks","yours","owner","ownerBlocks","hiddenBlocks"]}}},"required":["season","arena","updatedAt","resolution","cells"]},"KyzonePlacesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["city","town","village","suburb","quarter","neighbourhood"]},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["name","kind","latitude","longitude"]}},"attribution":{"type":"string","const":"© OpenStreetMap contributors"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["items","attribution","updatedAt"]},"KyzoneTerritoryResponseDto":{"type":"object","properties":{"season":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},"arena":{"type":"string","enum":["foot","cycling"]},"cellId":{"type":"string"},"cellIds":{"type":"array","items":{"type":"string"}},"boundaries":{"type":"array","items":{"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"occupied":{"type":"boolean"},"ownershipHidden":{"type":"boolean"},"owner":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"name":{"type":"array","items":{"type":"string"}},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":"array","items":{"type":"string"}},"areaName":{"type":"array","items":{"type":"string"}},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"strength":{"type":"integer","minimum":0,"maximum":100},"strongThreshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"strengthDecayPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heldSince":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastRunAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"fallsBelowStrongAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"becomesFreeAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contested":{"type":"boolean"},"attackers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"firstLoopAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","displayName","avatarUrl","loops","firstLoopAt"]}},"yourProgress":{"anyOf":[{"type":"object","properties":{"loops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["loops","requiredLoops","expiresAt"]},{"type":"null"}]},"history":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["claimed","taken","defended","released"]},"actor":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"]},{"type":"null"}]},"previousOwner":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"}},"required":["id","displayName"]},{"type":"null"}]},"blockCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"previousHeldSince":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["kind","actor","previousOwner","blockCount","occurredAt","previousHeldSince"]}},"freeBefore":{"type":"boolean"}},"required":["season","arena","cellId","cellIds","boundaries","occupied","ownershipHidden","owner","name","direction","label","areaName","blockCount","strength","strongThreshold","strengthDecayPerDay","heldSince","lastRunAt","fallsBelowStrongAt","becomesFreeAt","requiredLoops","contested","attackers","yourProgress","history","freeBefore"]},"KyzoneCellResponseDto":{"type":"object","properties":{"cellId":{"type":"string"},"owner":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"occupied":{"type":"boolean"},"ownershipHidden":{"type":"boolean"},"strength":{"type":"integer","minimum":0,"maximum":100},"ownershipVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requiredLoops":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"boundary":{"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}},"season":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},"history":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["claimed","defended","released"]},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"ownerId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"ownerName":{"type":["string","null"]}},"required":["action","occurredAt","ownerId","ownerName"]}}},"required":["cellId","owner","occupied","ownershipHidden","strength","ownershipVersion","requiredLoops","boundary","season","history"]},"KyzoneLeaderboardResponseDto":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},{"type":"null"}]},"scoredThrough":{"type":"array","items":{"type":"string"}},"items":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scoringCells":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["userId","displayName","points","scoringCells","rank"]}}},"required":["season","scoredThrough","items"]},"KyzonePrivateZonesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"cellIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","cellIds"]}}},"required":["items"]},"KyzonePrivateZoneDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":80},"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"number","minimum":50,"maximum":1000}},"required":["clientId","name","latitude","longitude","radiusM"],"additionalProperties":false},"KyzonePrivateZoneResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"cellIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","name","cellIds"]},"KyzonePrivateZoneRenameDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"],"additionalProperties":false},"KyzoneShareResponseDto":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},{"type":"null"}]},"cells":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"strength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"boundary":{"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"required":["cellId","strength","boundary"]}},"capturedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"maximumCells":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"includesRoute":{"type":"boolean","const":false},"includesLivePosition":{"type":"boolean","const":false}},"required":["season","cells","capturedAt","includesRoute","includesLivePosition"]},"KyzoneAdminPoliciesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["version","policy","enabled","deletedAt"]}}},"required":["items"]},"KyzoneAdminPolicyResponseDto":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["version","policy","enabled","deletedAt"]},"KyzonePolicyDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":1,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["expectedVersion","policy"],"additionalProperties":false},"KyzonePolicyResponseDto":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["version","policy"]},"KyzonePolicyReplaceDto":{"type":"object","properties":{"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["policy"],"additionalProperties":false},"KyzoneAdminStateDto":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"KyzoneAdminSeasonsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","name","startsAt","endsAt","policyVersion","policy","clientId","enabled","deletedAt"]}}},"required":["items"]},"KyzoneAdminSeasonResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","name","startsAt","endsAt","policyVersion","policy","clientId","enabled","deletedAt"]},"KyzoneSeasonDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":80},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["clientId","name","startsAt","policyVersion"],"additionalProperties":false},"KyzoneSeasonResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"timezone":{"default":"UTC","type":"string","const":"UTC"},"seasonDays":{"default":28,"type":"number","const":28},"strengthDecayPerDay":{"default":7,"type":"integer","minimum":1,"maximum":100},"strongThreshold":{"default":30,"type":"integer","minimum":1,"maximum":99},"strongLoops":{"default":2,"type":"number","const":2},"attackWindowHours":{"default":24,"type":"integer","minimum":1,"maximum":48},"dailyCellPoints":{"default":1,"type":"integer","minimum":1,"maximum":100},"holdBonusEveryDays":{"default":7,"type":"integer","minimum":1,"maximum":28},"streakBonusPoints":{"default":0,"type":"integer","minimum":0,"maximum":100},"maxPrivateZones":{"default":3,"type":"integer","minimum":1,"maximum":5},"maxPrivateRadiusM":{"default":1000,"type":"integer","minimum":50,"maximum":1000}},"additionalProperties":false}},"required":["id","name","startsAt","endsAt","policyVersion","policy"]},"KyzoneAdminRankingPoliciesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":20,"maximum":1000},"thresholds":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["diamond","gold","silver","bronze"]},"topPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["tier","topPercent"],"additionalProperties":false}}},"required":["version","minimumPopulation","thresholds"],"additionalProperties":false},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["version","policy","enabled","deletedAt"]}}},"required":["items"]},"KyzoneAdminRankingPolicyResponseDto":{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"policy":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":20,"maximum":1000},"thresholds":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["diamond","gold","silver","bronze"]},"topPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["tier","topPercent"],"additionalProperties":false}}},"required":["version","minimumPopulation","thresholds"],"additionalProperties":false},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["version","policy","enabled","deletedAt"]},"KyzoneRankingPolicyDto":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"policy":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":20,"maximum":1000},"thresholds":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["diamond","gold","silver","bronze"]},"topPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["tier","topPercent"],"additionalProperties":false}}},"required":["version","minimumPopulation","thresholds"],"additionalProperties":false}},"required":["expectedVersion","policy"],"additionalProperties":false},"KyzoneRankingPolicyReplaceDto":{"type":"object","properties":{"policy":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":20,"maximum":1000},"thresholds":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["diamond","gold","silver","bronze"]},"topPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["tier","topPercent"],"additionalProperties":false}}},"required":["version","minimumPopulation","thresholds"],"additionalProperties":false}},"required":["policy"],"additionalProperties":false},"KyzoneInsightsSummaryResponse":{"type":"object","properties":{"arena":{"type":"string","enum":["foot","cycling"]},"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","name","startsAt","endsAt","policyVersion"],"additionalProperties":false},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"held":{"type":"integer","minimum":0,"maximum":9007199254740991},"taken":{"type":"integer","minimum":0,"maximum":9007199254740991},"distanceM":{"type":"number","minimum":0},"points":{"type":"integer","minimum":0,"maximum":9007199254740991},"contested":{"type":"integer","minimum":0,"maximum":9007199254740991},"scoredThrough":{"type":"array","items":{"type":"string"}},"distanceDefinition":{"type":"string","const":"verified_completed_claims"},"takenDefinition":{"type":"string","const":"confirmed_rival_transfers"},"availableScopes":{"type":"array","items":{"type":"string","enum":["global","friends","nearby","wider"]}},"friendsDefinition":{"type":"string","const":"mutual_follows"},"geographicScopesAvailable":{"type":"boolean","const":true}},"required":["season","updatedAt","held","taken","distanceM","points","contested","scoredThrough","distanceDefinition","takenDefinition","availableScopes","friendsDefinition","geographicScopesAvailable"],"additionalProperties":false},"KyzoneNearbyResponse":{"type":"object","properties":{"area":{"type":"object","properties":{"cellId":{"type":"string"},"resolution":{"type":"number","const":7},"radiusKm":{"anyOf":[{"type":"number","const":5},{"type":"number","const":25}]},"name":{"type":"string"},"approximate":{"type":"boolean","const":true},"administrativeBoundary":{"type":"boolean","const":false},"centre":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2},"coarseCellCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selection":{"type":"string","const":"coarse_cell_centres_within_approximate_radius"},"placeName":{"type":["string","null"]}},"required":["cellId","resolution","radiusKm","name","approximate","administrativeBoundary","centre","coarseCellCount","selection","placeName"]},"arena":{"type":"string","enum":["foot","cycling"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"gpsPersistence":{"type":"string","const":"none"}},"required":["area","arena","updatedAt","gpsPersistence"]},"KyzoneAreasResponse":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","name","startsAt","endsAt","policyVersion"],"additionalProperties":false},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"arena":{"type":"string","enum":["foot","cycling"]},"area":{"anyOf":[{"type":"object","properties":{"cellId":{"type":"string"},"resolution":{"type":"number","const":7},"radiusKm":{"anyOf":[{"type":"number","const":5},{"type":"number","const":25}]},"name":{"type":"string"},"approximate":{"type":"boolean","const":true},"administrativeBoundary":{"type":"boolean","const":false},"centre":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2},"coarseCellCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selection":{"type":"string","const":"coarse_cell_centres_within_approximate_radius"},"placeName":{"type":["string","null"]}},"required":["cellId","resolution","radiusKm","name","approximate","administrativeBoundary","centre","coarseCellCount","selection","placeName"]},{"type":"null"}]},"truncated":{"type":"boolean"},"items":{"type":"array","items":{"type":"object","properties":{"areaCellId":{"type":"string"},"name":{"type":"string"},"placeName":{"type":["string","null"]},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contested":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimumStrength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"state":{"type":"string","enum":["safe","contested","decaying"]},"boundary":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}},"approximate":{"type":"boolean","const":true}},"required":["areaCellId","name","placeName","held","contested","minimumStrength","state","boundary","approximate"]}}},"required":["season","updatedAt","arena","area","truncated","items"]},"KyzoneRankWatchesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"arena":{"type":"string","enum":["foot","cycling"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"metric":{"type":"string","enum":["held","taken","distance","points"]},"scope":{"type":"string","enum":["global","friends","nearby","wider"]},"areaCellId":{"type":["string","null"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["arena","version","enabled","metric","scope","areaCellId","updatedAt"]}}},"required":["items"]},"KyzoneRankWatchDto":{"type":"object","properties":{"arena":{"type":"string","enum":["foot","cycling"]},"areaCellId":{"type":"string","pattern":"^[0-9a-f]{15}$"},"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"enabled":{"type":"boolean"},"metric":{"default":"held","type":"string","enum":["held","taken","distance","points"]},"scope":{"default":"global","type":"string","enum":["global","friends","nearby","wider"]}},"required":["expectedVersion","enabled"],"additionalProperties":false},"KyzoneRankWatchResponse":{"type":"object","properties":{"arena":{"type":"string","enum":["foot","cycling"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"metric":{"type":"string","enum":["held","taken","distance","points"]},"scope":{"type":"string","enum":["global","friends","nearby","wider"]},"areaCellId":{"type":"array","items":{"type":"string"}},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["arena","version","enabled","metric","scope","areaCellId","updatedAt"]},"KyzoneRankChangesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"arena":{"type":"string","enum":["foot","cycling"]},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"metric":{"type":"string"},"scope":{"type":"string"},"areaCellId":{"type":["string","null"]},"previousRank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentRank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"population":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","arena","seasonId","metric","scope","areaCellId","previousRank","currentRank","population","occurredAt"]}}},"required":["items"]},"KyzoneInsightsTerritoriesResponse":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","name","startsAt","endsAt","policyVersion"],"additionalProperties":false},{"type":"null"}]},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"sort":{"type":"string","const":"strength_ascending_then_contested"},"arena":{"type":"string","enum":["foot","cycling"]},"area":{"anyOf":[{"type":"object","properties":{"cellId":{"type":"string"},"resolution":{"type":"number","const":7},"radiusKm":{"anyOf":[{"type":"number","const":5},{"type":"number","const":25}]},"name":{"type":"string"},"approximate":{"type":"boolean","const":true},"administrativeBoundary":{"type":"boolean","const":false},"centre":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2},"coarseCellCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selection":{"type":"string","const":"coarse_cell_centres_within_approximate_radius"},"placeName":{"type":["string","null"]}},"required":["cellId","resolution","radiusKm","name","approximate","administrativeBoundary","centre","coarseCellCount","selection","placeName"]},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string"},"areaCellId":{"type":"string"},"state":{"type":"string","enum":["safe","contested","decaying"]},"contested":{"type":"boolean"},"strength":{"type":"integer","minimum":1,"maximum":100},"ownershipVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"heldSince":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"refreshedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"boundary":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}},"fallsBelowStrongAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"becomesFreeAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["cellId","state","contested","strength","ownershipVersion","heldSince","refreshedAt","boundary","fallsBelowStrongAt","becomesFreeAt"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}},"availableScopes":{"type":"array","items":{"type":"string","enum":["global","friends","nearby","wider"]}},"friendsDefinition":{"type":"string","const":"mutual_follows"},"geographicScopesAvailable":{"type":"boolean","const":true}},"required":["season","asOf","sort","items","nextCursor","availableScopes","friendsDefinition","geographicScopesAvailable"],"additionalProperties":false},"KyzoneInsightsLeaderboardResponse":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","name","startsAt","endsAt","policyVersion"],"additionalProperties":false},{"type":"null"}]},"area":{"anyOf":[{"type":"object","properties":{"cellId":{"type":"string"},"resolution":{"type":"number","const":7},"radiusKm":{"anyOf":[{"type":"number","const":5},{"type":"number","const":25}]},"name":{"type":"string"},"approximate":{"type":"boolean","const":true},"administrativeBoundary":{"type":"boolean","const":false},"centre":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2},"coarseCellCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selection":{"type":"string","const":"coarse_cell_centres_within_approximate_radius"},"placeName":{"type":["string","null"]}},"required":["cellId","resolution","radiusKm","name","approximate","administrativeBoundary","centre","coarseCellCount","selection","placeName"]},{"type":"null"}]},"arena":{"type":"string","enum":["foot","cycling"]},"population":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tiePolicy":{"type":"string","const":"competition_rank_and_conservative_percentile"},"tierPolicy":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":20,"maximum":1000},"thresholds":{"minItems":4,"maxItems":4,"type":"array","items":{"type":"object","properties":{"tier":{"type":"string","enum":["diamond","gold","silver","bronze"]},"topPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["tier","topPercent"],"additionalProperties":false}}},"required":["version","minimumPopulation","thresholds"],"additionalProperties":false},"me":{"anyOf":[{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"value":{"type":"number"},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tier":{"type":"object","properties":{"tier":{"anyOf":[{"type":"string","enum":["diamond","gold","silver","bronze"]},{"type":"null"}]},"provisional":{"type":"boolean"},"reason":{"type":["string","null"]},"topPercent":{"type":"number"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["tier","provisional","reason","topPercent","policyVersion","minimumPopulation"]},"avatarUrl":{"type":["string","null"]},"loops":{"type":"integer","minimum":0,"maximum":9007199254740991},"taken":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["userId","displayName","value","rank","tier","avatarUrl","loops","taken"]},{"type":"null"}]},"metric":{"type":"string","enum":["held","taken","distance","points"]},"period":{"type":"string","enum":["season","all_time"]},"scope":{"type":"string","enum":["global","friends","nearby","wider"]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"availableScopes":{"type":"array","items":{"type":"string","enum":["global","friends","nearby","wider"]}},"friendsDefinition":{"type":"string","const":"mutual_follows"},"geographicScopesAvailable":{"type":"boolean","const":true},"items":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"value":{"type":"number","minimum":0},"tier":{"type":"object","properties":{"tier":{"anyOf":[{"type":"string","enum":["diamond","gold","silver","bronze"]},{"type":"null"}]},"provisional":{"type":"boolean"},"reason":{"type":["string","null"]},"topPercent":{"type":"number"},"policyVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minimumPopulation":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["tier","provisional","reason","topPercent","policyVersion","minimumPopulation"]},"rank":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"avatarUrl":{"type":["string","null"]},"loops":{"type":"integer","minimum":0,"maximum":9007199254740991},"taken":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["userId","displayName","value","rank","avatarUrl","loops","taken"],"additionalProperties":false}},"unit":{"type":"string","enum":["metres","points","cells"]},"definition":{"type":"string","enum":["verified_completed_claims","verified_claims_intersecting_approximate_area","confirmed_rival_transfers","currently_owned_cells","settled_daily_points"]},"rankingPopulation":{"type":"string","const":"visible_active_participants"}},"required":["season","metric","period","scope","updatedAt","availableScopes","friendsDefinition","geographicScopesAvailable","items","unit","definition","rankingPopulation"],"additionalProperties":false},"KyzoneInsightsLostResponse":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"windowHours":{"type":"number","const":24},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"cellId":{"type":"string"},"seasonId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","const":"taken"},"takenBy":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"],"additionalProperties":false},"takenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"outlineExpiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"boundary":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"required":["id","cellId","seasonId","state","takenBy","takenAt","outlineExpiresAt","boundary"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["asOf","windowHours","items","nextCursor"],"additionalProperties":false},"KyzoneInsightsEventsResponse":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","name","startsAt","endsAt","policyVersion"],"additionalProperties":false},{"type":"null"}]},"arena":{"type":"string","enum":["foot","cycling"]},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"items":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","const":"lost"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"counterpart":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"blockCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cellIds":{"type":"array","items":{"type":"string"}},"boundaries":{"type":"array","items":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"remainingInArea":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","kind","occurredAt","counterpart","blockCount","cellIds","boundaries","name","direction","label","areaName","remainingInArea"]},{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","const":"taken"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"counterpart":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"blockCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cellIds":{"type":"array","items":{"type":"string"}},"boundaries":{"type":"array","items":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]}},"required":["id","kind","occurredAt","counterpart","blockCount","cellIds","boundaries","name","direction","label","areaName"]},{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","const":"decaying"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"blockCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cellIds":{"type":"array","items":{"type":"string"}},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"dueAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"threshold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","kind","occurredAt","blockCount","cellIds","name","direction","label","areaName","dueAt","threshold"]},{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","const":"rank"},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"previousRank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currentRank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"metric":{"type":"string"},"scope":{"type":"string"},"areaCellId":{"type":["string","null"]},"areaName":{"type":["string","null"]}},"required":["id","kind","occurredAt","previousRank","currentRank","metric","scope","areaCellId","areaName"]}]}}},"required":["season","arena","asOf","items"]},"KyzoneTerritoryGroupsResponse":{"type":"object","properties":{"season":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"policyVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","name","startsAt","endsAt","policyVersion"],"additionalProperties":false},{"type":"null"}]},"arena":{"type":"string","enum":["foot","cycling"]},"asOf":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"area":{"anyOf":[{"type":"object","properties":{"cellId":{"type":"string"},"resolution":{"type":"number","const":7},"radiusKm":{"anyOf":[{"type":"number","const":5},{"type":"number","const":25}]},"name":{"type":"string"},"approximate":{"type":"boolean","const":true},"administrativeBoundary":{"type":"boolean","const":false},"centre":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2},"coarseCellCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"selection":{"type":"string","const":"coarse_cell_centres_within_approximate_radius"},"placeName":{"type":["string","null"]}},"required":["cellId","resolution","radiusKm","name","approximate","administrativeBoundary","centre","coarseCellCount","selection","placeName"]},{"type":"null"}]},"truncated":{"type":"boolean"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["safe","contested","decaying","taken","free"]},"name":{"type":["string","null"]},"direction":{"anyOf":[{"type":"string","enum":["north","east","south","west"]},{"type":"null"}]},"label":{"type":["string","null"]},"areaName":{"type":["string","null"]},"blockCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"cellIds":{"type":"array","items":{"type":"string"}},"boundaries":{"type":"array","items":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2}}},"strength":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"heldSince":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastRunAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"fallsBelowStrongAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"becomesFreeAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"attacker":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]},"firstLoopAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","displayName","avatarUrl","firstLoopAt"]},{"type":"null"}]},"takenBy":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatarUrl":{"type":["string","null"]}},"required":["id","displayName","avatarUrl"]},{"type":"null"}]},"takenAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"freeSince":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"distanceKm":{"type":["number","null"]}},"required":["id","state","name","direction","label","areaName","blockCount","cellIds","boundaries","strength","heldSince","lastRunAt","fallsBelowStrongAt","becomesFreeAt","attacker","takenBy","takenAt","freeSince","distanceKm"]}}},"required":["season","arena","asOf","area","truncated","items"]},"TrainingVideosResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"key":{"type":"string"},"dayOffset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"estimatedDurationMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocks":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"anyOf":[{"type":"string","enum":["warmup","main","cooldown"]},{"type":"null"}]},"targetZone":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetPaceSecondsPerKm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["title","instructions","role","targetZone","targetPaceSecondsPerKm"],"additionalProperties":false}},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"safetyNotes":{"type":["string","null"]},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references only. Resolve each id against plan.instructionVideos, or against the response-level instructionVideos dictionary in calendar and enrollment history responses."},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["kypace_storage","publisher_supplied"]},"contentType":{"type":["string","null"]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"anyOf":[{"type":"string","enum":["mobility","strength"]},{"type":"null"}]},"thumbnailUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"captionsUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"transcript":{"type":["string","null"]},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]}},"required":["url","source","contentType","expiresIn","category","thumbnailUrl","durationSeconds","captionsUrl","transcript","difficulty"]},{"type":"null"}]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]},"plan":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"goalDistanceM":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalDistanceSource":{"anyOf":[{"type":"string","const":"session_main_blocks"},{"type":"null"}]},"focusMuscles":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requirements":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"estimatedCaloriesKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationWeeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"published":{"type":"boolean"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Available rewards for this exact plan version. Awards require every scheduled session to be completed with an eligible activity belonging to the participant. Manual completion, skipped sessions or finishing an enrollment alone do not qualify."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Complete instruction snapshots for this plan. Session references resolve by their id within this list."},"sessionCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sessionsPerWeek":{"type":["number","null"]},"estimatedSessionMinutesMin":{"type":["number","null"]},"estimatedSessionMinutesMax":{"type":["number","null"]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","slug","version","title","description","sport","difficulty","goal","goalDistanceM","goalDistanceSource","focusMuscles","equipment","requirements","estimatedCaloriesKcal","durationDays","durationWeeks","author","sourceUrl","coverMediaId","coverUrl","coverExpiresIn","instructionVideo","publishedAt","published","participation","achievements","instructionVideos","sessionCount","sessionsPerWeek","estimatedSessionMinutesMin","estimatedSessionMinutesMax","isDevelopment","contentLabel"]}},"required":["id","planId","sport","key","dayOffset","position","title","description","estimatedDurationMinutes","blocks","equipment","safetyNotes","instructionVideos","video","isDevelopment","contentLabel","plan"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"TrainingPlansResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"goalDistanceM":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalDistanceSource":{"anyOf":[{"type":"string","const":"session_main_blocks"},{"type":"null"}]},"focusMuscles":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requirements":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"estimatedCaloriesKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationWeeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"published":{"type":"boolean"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Available rewards for this exact plan version. Awards require every scheduled session to be completed with an eligible activity belonging to the participant. Manual completion, skipped sessions or finishing an enrollment alone do not qualify."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Complete instruction snapshots for this plan. Session references resolve by their id within this list."},"sessionCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sessionsPerWeek":{"type":["number","null"]},"estimatedSessionMinutesMin":{"type":["number","null"]},"estimatedSessionMinutesMax":{"type":["number","null"]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","slug","version","title","description","sport","difficulty","goal","goalDistanceM","goalDistanceSource","focusMuscles","equipment","requirements","estimatedCaloriesKcal","durationDays","durationWeeks","author","sourceUrl","coverMediaId","coverUrl","coverExpiresIn","instructionVideo","publishedAt","published","participation","achievements","instructionVideos","sessionCount","sessionsPerWeek","estimatedSessionMinutesMin","estimatedSessionMinutesMax","isDevelopment","contentLabel"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"TrainingPlanResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"goalDistanceM":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalDistanceSource":{"anyOf":[{"type":"string","const":"session_main_blocks"},{"type":"null"}]},"focusMuscles":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requirements":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"estimatedCaloriesKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationWeeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"published":{"type":"boolean"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Available rewards for this exact plan version. Awards require every scheduled session to be completed with an eligible activity belonging to the participant. Manual completion, skipped sessions or finishing an enrollment alone do not qualify."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Complete instruction snapshots for this plan. Session references resolve by their id within this list."},"sessionCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sessionsPerWeek":{"type":"array","items":{"type":"number"}},"estimatedSessionMinutesMin":{"type":"array","items":{"type":"number"}},"estimatedSessionMinutesMax":{"type":"array","items":{"type":"number"}},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]},"sessions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"key":{"type":"string"},"dayOffset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"estimatedDurationMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocks":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"anyOf":[{"type":"string","enum":["warmup","main","cooldown"]},{"type":"null"}]},"targetZone":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetPaceSecondsPerKm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["title","instructions","role","targetZone","targetPaceSecondsPerKm"],"additionalProperties":false}},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"safetyNotes":{"type":["string","null"]},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references only. Resolve each id against plan.instructionVideos, or against the response-level instructionVideos dictionary in calendar and enrollment history responses."},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["kypace_storage","publisher_supplied"]},"contentType":{"type":["string","null"]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"anyOf":[{"type":"string","enum":["mobility","strength"]},{"type":"null"}]},"thumbnailUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"captionsUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"transcript":{"type":["string","null"]},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]}},"required":["url","source","contentType","expiresIn","category","thumbnailUrl","durationSeconds","captionsUrl","transcript","difficulty"]},{"type":"null"}]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","sport","key","dayOffset","position","title","description","estimatedDurationMinutes","blocks","equipment","safetyNotes","instructionVideos","video","isDevelopment","contentLabel"]}}},"required":["id","slug","version","title","description","sport","difficulty","goal","goalDistanceM","goalDistanceSource","focusMuscles","equipment","requirements","estimatedCaloriesKcal","durationDays","durationWeeks","author","sourceUrl","coverMediaId","coverUrl","coverExpiresIn","instructionVideo","publishedAt","published","participation","achievements","instructionVideos","sessionCount","sessionsPerWeek","estimatedSessionMinutesMin","estimatedSessionMinutesMax","isDevelopment","contentLabel","sessions"]},"TrainingSessionsResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"key":{"type":"string"},"dayOffset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"estimatedDurationMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocks":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"anyOf":[{"type":"string","enum":["warmup","main","cooldown"]},{"type":"null"}]},"targetZone":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetPaceSecondsPerKm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["title","instructions","role","targetZone","targetPaceSecondsPerKm"],"additionalProperties":false}},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"safetyNotes":{"type":["string","null"]},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references only. Resolve each id against plan.instructionVideos, or against the response-level instructionVideos dictionary in calendar and enrollment history responses."},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["kypace_storage","publisher_supplied"]},"contentType":{"type":["string","null"]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"anyOf":[{"type":"string","enum":["mobility","strength"]},{"type":"null"}]},"thumbnailUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"captionsUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"transcript":{"type":["string","null"]},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]}},"required":["url","source","contentType","expiresIn","category","thumbnailUrl","durationSeconds","captionsUrl","transcript","difficulty"]},{"type":"null"}]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","sport","key","dayOffset","position","title","description","estimatedDurationMinutes","blocks","equipment","safetyNotes","instructionVideos","video","isDevelopment","contentLabel"]}},"plan":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"goalDistanceM":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalDistanceSource":{"anyOf":[{"type":"string","const":"session_main_blocks"},{"type":"null"}]},"focusMuscles":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requirements":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"estimatedCaloriesKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationWeeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"published":{"type":"boolean"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Available rewards for this exact plan version. Awards require every scheduled session to be completed with an eligible activity belonging to the participant. Manual completion, skipped sessions or finishing an enrollment alone do not qualify."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Complete instruction snapshots for this plan. Session references resolve by their id within this list."},"sessionCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sessionsPerWeek":{"type":["number","null"]},"estimatedSessionMinutesMin":{"type":["number","null"]},"estimatedSessionMinutesMax":{"type":["number","null"]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","slug","version","title","description","sport","difficulty","goal","goalDistanceM","goalDistanceSource","focusMuscles","equipment","requirements","estimatedCaloriesKcal","durationDays","durationWeeks","author","sourceUrl","coverMediaId","coverUrl","coverExpiresIn","instructionVideo","publishedAt","published","participation","achievements","instructionVideos","sessionCount","sessionsPerWeek","estimatedSessionMinutesMin","estimatedSessionMinutesMax","isDevelopment","contentLabel"]}},"required":["items","plan"]},"TrainingSessionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"key":{"type":"string"},"dayOffset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"estimatedDurationMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocks":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"anyOf":[{"type":"string","enum":["warmup","main","cooldown"]},{"type":"null"}]},"targetZone":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetPaceSecondsPerKm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["title","instructions","role","targetZone","targetPaceSecondsPerKm"],"additionalProperties":false}},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"safetyNotes":{"type":"array","items":{"type":"string"}},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references only. Resolve each id against plan.instructionVideos, or against the response-level instructionVideos dictionary in calendar and enrollment history responses."},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["kypace_storage","publisher_supplied"]},"contentType":{"type":["string","null"]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"anyOf":[{"type":"string","enum":["mobility","strength"]},{"type":"null"}]},"thumbnailUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"captionsUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"transcript":{"type":["string","null"]},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]}},"required":["url","source","contentType","expiresIn","category","thumbnailUrl","durationSeconds","captionsUrl","transcript","difficulty"]},{"type":"null"}]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]},"plan":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"goalDistanceM":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalDistanceSource":{"anyOf":[{"type":"string","const":"session_main_blocks"},{"type":"null"}]},"focusMuscles":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requirements":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"estimatedCaloriesKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationWeeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"published":{"type":"boolean"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Available rewards for this exact plan version. Awards require every scheduled session to be completed with an eligible activity belonging to the participant. Manual completion, skipped sessions or finishing an enrollment alone do not qualify."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Complete instruction snapshots for this plan. Session references resolve by their id within this list."},"sessionCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sessionsPerWeek":{"type":["number","null"]},"estimatedSessionMinutesMin":{"type":["number","null"]},"estimatedSessionMinutesMax":{"type":["number","null"]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","slug","version","title","description","sport","difficulty","goal","goalDistanceM","goalDistanceSource","focusMuscles","equipment","requirements","estimatedCaloriesKcal","durationDays","durationWeeks","author","sourceUrl","coverMediaId","coverUrl","coverExpiresIn","instructionVideo","publishedAt","published","participation","achievements","instructionVideos","sessionCount","sessionsPerWeek","estimatedSessionMinutesMin","estimatedSessionMinutesMax","isDevelopment","contentLabel"]}},"required":["id","planId","sport","key","dayOffset","position","title","description","estimatedDurationMinutes","blocks","equipment","safetyNotes","instructionVideos","video","isDevelopment","contentLabel","plan"]},"TrainingEnrollmentDto":{"type":"object","properties":{"startDate":{"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])))$"},"timezone":{"default":"UTC","type":"string","maxLength":80},"restart":{"type":"boolean"}},"required":["startDate"],"additionalProperties":false},"TrainingEnrollmentResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},"TrainingEnrollmentsResponseDto":{"type":"object","properties":{"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Unique rewards across the returned history. Resolve item.plan.achievements by id in this list."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Unique instruction snapshots across the returned history. Resolve item.plan.instructionVideos references by id in this list."},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]},"plan":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"goalDistanceM":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"goalDistanceSource":{"anyOf":[{"type":"string","const":"session_main_blocks"},{"type":"null"}]},"focusMuscles":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"requirements":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"estimatedCaloriesKcal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationWeeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"author":{"type":"string"},"sourceUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"published":{"type":"boolean"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","position"]}},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references into the response-level instructionVideos dictionary."},"sessionCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sessionsPerWeek":{"type":["number","null"]},"estimatedSessionMinutesMin":{"type":["number","null"]},"estimatedSessionMinutesMax":{"type":["number","null"]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","slug","version","title","description","sport","difficulty","goal","goalDistanceM","goalDistanceSource","focusMuscles","equipment","requirements","estimatedCaloriesKcal","durationDays","durationWeeks","author","sourceUrl","coverMediaId","coverUrl","coverExpiresIn","instructionVideo","publishedAt","published","participation","achievements","instructionVideos","sessionCount","sessionsPerWeek","estimatedSessionMinutesMin","estimatedSessionMinutesMax","isDevelopment","contentLabel"]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel","plan"]}}},"required":["achievements","instructionVideos","items"]},"TrainingMetricsResponseDto":{"type":"object","properties":{"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"items":{"type":"array","items":{"type":"object","properties":{"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"completedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source":{"type":"string","enum":["healthkit","health_connect","app_recording"]},"durationSeconds":{"type":["number","null"]},"averageHeartRateBpm":{"type":["number","null"]},"maximumHeartRateBpm":{"type":["number","null"]},"activeEnergyKcal":{"type":["number","null"]}},"required":["activityId","completedAt","source","durationSeconds","averageHeartRateBpm","maximumHeartRateBpm","activeEnergyKcal"]}}},"required":["enrollmentId","progress","items"]},"TrainingInsightsResponseDto":{"type":"object","properties":{"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"modelStatus":{"type":"string","enum":["aws_bedrock","disabled","insufficient_data","unavailable"]},"model":{"type":"array","items":{"type":"string"}},"evidence":{"type":"object","properties":{"recordedSessions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heartRateReadings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeEnergyReadings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["recordedSessions","heartRateReadings","activeEnergyReadings"]},"observation":{"type":"string"},"guidance":{"type":"string"}},"required":["enrollmentId","modelStatus","model","evidence","observation","guidance"]},"TrainingCalendarResponseDto":{"type":"object","properties":{"from":{"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])))$"},"toInclusive":{"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])))$"},"timezone":{"type":"string"},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]},"description":"Unique rewards across the returned calendar. Resolve item.plan.achievements by id in this list."},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]},"description":"Unique instruction snapshots across the calendar. Resolve every item.plan.instructionVideos and item.session.instructionVideos reference by id in this list."},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scheduledFor":{"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])))$"},"status":{"type":"string","enum":["pending","completed","skipped","missed"]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completionSource":{"anyOf":[{"type":"string","enum":["activity","manual"]},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string"},"completedDurationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"session":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"key":{"type":"string"},"dayOffset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"estimatedDurationMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocks":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"anyOf":[{"type":"string","enum":["warmup","main","cooldown"]},{"type":"null"}]},"targetZone":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"targetPaceSecondsPerKm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["title","instructions","role","targetZone","targetPaceSecondsPerKm"],"additionalProperties":false}},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"safetyNotes":{"type":["string","null"]},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references only. Resolve each id against plan.instructionVideos, or against the response-level instructionVideos dictionary in calendar and enrollment history responses."},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string","enum":["kypace_storage","publisher_supplied"]},"contentType":{"type":["string","null"]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"anyOf":[{"type":"string","enum":["mobility","strength"]},{"type":"null"}]},"thumbnailUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"captionsUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"transcript":{"type":["string","null"]},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","advanced","expert"]},{"type":"null"}]}},"required":["url","source","contentType","expiresIn","category","thumbnailUrl","durationSeconds","captionsUrl","transcript","difficulty"]},{"type":"null"}]},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","sport","key","dayOffset","position","title","description","estimatedDurationMinutes","blocks","equipment","safetyNotes","instructionVideos","video","isDevelopment","contentLabel"]},"plan":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"myEnrollment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel"]},{"type":"null"}],"description":"Latest enrollment belonging to the authenticated reader, including cancelled or completed history; null when this account has never enrolled in this plan version."}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers","myEnrollment"]},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","position"]}},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sourceVideoId","position"]},"description":"Ordered references into the response-level instructionVideos dictionary."},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]}},"required":["id","title","sport","coverUrl","coverExpiresIn","participation","achievements","instructionVideos","isDevelopment","contentLabel"]}},"required":["id","enrollmentId","sessionId","scheduledFor","status","activityId","completedAt","completionSource","updatedAt","timezone","completedDurationSeconds","session","plan"]}}},"required":["from","toInclusive","timezone","achievements","instructionVideos","items"]},"TrainingCompletionDto":{"type":"object","properties":{"status":{"type":"string","enum":["pending","completed","skipped"]},"activityId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["status"],"additionalProperties":false},"TrainingScheduleResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scheduledFor":{"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])))$"},"status":{"type":"string","enum":["pending","completed","skipped","missed"]},"activityId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completionSource":{"anyOf":[{"type":"string","enum":["activity","manual"]},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","enrollmentId","sessionId","scheduledFor","status","activityId","completedAt","completionSource","updatedAt"]},"TrainingRescheduleDto":{"type":"object","properties":{"scheduledFor":{"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])))$"}},"required":["scheduledFor"],"additionalProperties":false},"AdminTrainingPlanPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"published":{"type":"boolean"},"isDevelopment":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"plan":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"type":"integer","minimum":1,"maximum":10000},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":10000},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},"focusMuscles":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"equipment":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"requirements":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"estimatedCaloriesKcal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"durationDays":{"type":"integer","minimum":1,"maximum":365},"author":{"type":"string","minLength":1,"maxLength":160},"sourceUrl":{"type":"string","format":"uri"},"coverMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"isDevelopment":{"default":false,"type":"boolean"},"published":{"default":false,"type":"boolean"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"sessions":{"minItems":1,"maxItems":730,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"dayOffset":{"type":"integer","minimum":0,"maximum":364},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":10000},"estimatedDurationMinutes":{"type":"integer","minimum":1,"maximum":1440},"blocks":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"type":"string","enum":["warmup","main","cooldown"]},"targetZone":{"type":"integer","minimum":1,"maximum":5},"targetPaceSecondsPerKm":{"type":"integer","minimum":120,"maximum":3600}},"required":["title","instructions"],"additionalProperties":false}},"videoUrl":{"type":"string","format":"uri"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"metadata":{"type":"object","properties":{"equipment":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"safetyNotes":{"type":"string","minLength":1,"maxLength":5000},"video":{"type":"object","properties":{"category":{"type":"string","enum":["mobility","strength"]},"thumbnailMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"captionsUrl":{"type":"string","format":"uri"},"transcript":{"type":"string","minLength":1,"maxLength":50000},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]}},"additionalProperties":false}},"additionalProperties":false}},"required":["key","dayOffset","title","description","blocks"],"additionalProperties":false}}},"required":["slug","version","title","description","sport","difficulty","durationDays","author","sessions"],"additionalProperties":false},"sessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]}},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]}},"required":["id","slug","version","published","isDevelopment","deletedAt","plan","sessionCount","coverUrl","coverExpiresIn","instructionVideos","instructionVideo"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdminTrainingPlanWriteDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"published":{"type":"boolean"},"isDevelopment":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"plan":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"type":"integer","minimum":1,"maximum":10000},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":10000},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},"focusMuscles":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"equipment":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"requirements":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"estimatedCaloriesKcal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"durationDays":{"type":"integer","minimum":1,"maximum":365},"author":{"type":"string","minLength":1,"maxLength":160},"sourceUrl":{"type":"string","format":"uri"},"coverMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"isDevelopment":{"default":false,"type":"boolean"},"published":{"default":false,"type":"boolean"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"sessions":{"minItems":1,"maxItems":730,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"dayOffset":{"type":"integer","minimum":0,"maximum":364},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":10000},"estimatedDurationMinutes":{"type":"integer","minimum":1,"maximum":1440},"blocks":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"type":"string","enum":["warmup","main","cooldown"]},"targetZone":{"type":"integer","minimum":1,"maximum":5},"targetPaceSecondsPerKm":{"type":"integer","minimum":120,"maximum":3600}},"required":["title","instructions"],"additionalProperties":false}},"videoUrl":{"type":"string","format":"uri"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"metadata":{"type":"object","properties":{"equipment":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"safetyNotes":{"type":"string","minLength":1,"maxLength":5000},"video":{"type":"object","properties":{"category":{"type":"string","enum":["mobility","strength"]},"thumbnailMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"captionsUrl":{"type":"string","format":"uri"},"transcript":{"type":"string","minLength":1,"maxLength":50000},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]}},"additionalProperties":false}},"additionalProperties":false}},"required":["key","dayOffset","title","description","blocks"],"additionalProperties":false}}},"required":["slug","version","title","description","sport","difficulty","durationDays","author","sessions"],"additionalProperties":false},"sessionCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"coverExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"instructionVideos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceVideoId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]}},"required":["title","description","steps","safetyNote"]}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","sourceVideoId","position","slug","category","difficulty","equipment","tags","translations","durationMs","video","thumbnail"]}},"instructionVideo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"durationSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["url","contentType","durationSeconds","expiresIn"]},{"type":"null"}]}},"required":["id","slug","version","published","isDevelopment","deletedAt","plan","sessionCount","coverUrl","coverExpiresIn","instructionVideos","instructionVideo"]},"AdminCreateTrainingPlanDto":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"version":{"type":"integer","minimum":1,"maximum":10000},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":10000},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},"focusMuscles":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"equipment":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"requirements":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"estimatedCaloriesKcal":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"durationDays":{"type":"integer","minimum":1,"maximum":365},"author":{"type":"string","minLength":1,"maxLength":160},"sourceUrl":{"type":"string","format":"uri"},"coverMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"isDevelopment":{"default":false,"type":"boolean"},"published":{"default":false,"type":"boolean"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"sessions":{"minItems":1,"maxItems":730,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"dayOffset":{"type":"integer","minimum":0,"maximum":364},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":10000},"estimatedDurationMinutes":{"type":"integer","minimum":1,"maximum":1440},"blocks":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":150},"instructions":{"type":"string","minLength":1,"maxLength":5000},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"distanceM":{"type":"number","minimum":1,"maximum":1000000},"repetitions":{"type":"integer","minimum":1,"maximum":1000},"restSeconds":{"type":"integer","minimum":0,"maximum":3600},"role":{"type":"string","enum":["warmup","main","cooldown"]},"targetZone":{"type":"integer","minimum":1,"maximum":5},"targetPaceSecondsPerKm":{"type":"integer","minimum":120,"maximum":3600}},"required":["title","instructions"],"additionalProperties":false}},"videoUrl":{"type":"string","format":"uri"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"metadata":{"type":"object","properties":{"equipment":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"safetyNotes":{"type":"string","minLength":1,"maxLength":5000},"video":{"type":"object","properties":{"category":{"type":"string","enum":["mobility","strength"]},"thumbnailMediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"durationSeconds":{"type":"integer","minimum":1,"maximum":86400},"captionsUrl":{"type":"string","format":"uri"},"transcript":{"type":"string","minLength":1,"maxLength":50000},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]}},"additionalProperties":false}},"additionalProperties":false}},"required":["key","dayOffset","title","description","blocks"],"additionalProperties":false}}},"required":["slug","version","title","description","sport","difficulty","durationDays","author","sessions"],"additionalProperties":false},"AdminTrainingPlanPatchDto":{"type":"object","properties":{"published":{"type":"boolean"},"isDevelopment":{"type":"boolean"}},"additionalProperties":false},"ReplaceTrainingInstructionVideosDto":{"type":"object","properties":{"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"sessions":{"maxItems":730,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"instructionVideoIds":{"maxItems":30,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["key","instructionVideoIds"],"additionalProperties":false}}},"required":["instructionVideoIds"],"additionalProperties":false},"AdminTrainingEnrollmentsResponseDto":{"type":"object","properties":{"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"participation":{"type":"object","properties":{"totalUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"pausedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"completedUsers":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelledUsers":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["totalUsers","activeUsers","pausedUsers","completedUsers","cancelledUsers"],"description":"Distinct non-deleted accounts, classified by their latest enrollment for this plan version. Repeating a plan does not increase the number of participants."},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"startDate":{"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])))$"},"timezone":{"type":"string"},"status":{"type":"string","enum":["active","paused","completed","cancelled"]},"progress":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"missed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completionPercent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","completed","skipped","missed","pending","completionPercent","streakDays"]},"pausedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"isDevelopment":{"type":"boolean"},"contentLabel":{"anyOf":[{"type":"string","const":"Demonstration"},{"type":"null"}]},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id","planId","startDate","timezone","status","progress","pausedAt","endedAt","createdAt","updatedAt","isDevelopment","contentLabel","userId"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["planId","participation","items","nextCursor"]},"TrainingAchievementRewardsResponseDto":{"type":"object","properties":{"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"editable":{"type":"boolean","description":"False after any enrollment in this plan version, including historical attempts."},"achievements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"description":{"type":"string"},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"metric":{"type":"string","const":"training_plan_completion"},"objective":{"type":"object","properties":{"requiredSessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"completionRequirement":{"type":"string","const":"all_sessions_with_eligible_activity"}},"required":["requiredSessions","completionRequirement"]},"planId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"goal":{"anyOf":[{"type":"string","enum":["hypertrophy","fat_loss","endurance","mobility"]},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"available":{"type":"boolean"}},"required":["id","code","version","name","description","position","metric","objective","planId","difficulty","goal","imageUrl","expiresIn","available"]}}},"required":["planId","editable","achievements"]},"ReplaceTrainingAchievementRewardsDto":{"type":"object","properties":{"achievementIds":{"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["achievementIds"],"additionalProperties":false},"ExerciseVideoPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"locale":{"type":"string"},"availableLocales":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":["string","null"]},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","slug","locale","availableLocales","title","description","steps","safetyNote","category","difficulty","equipment","tags","durationMs","video","thumbnail"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"ExerciseVideoResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"locale":{"type":"string"},"availableLocales":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"description":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"safetyNote":{"type":"array","items":{"type":"string"}},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"video":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","slug","locale","availableLocales","title","description","steps","safetyNote","category","difficulty","equipment","tags","durationMs","video","thumbnail"]},"AdminExerciseInstructionPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"boolean"},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":5000},"steps":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"safetyNote":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000},{"type":"null"}]}},"required":["title","description","steps"],"additionalProperties":false}},"durationMs":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},{"type":"null"}]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","slug","category","difficulty","equipment","tags","published","translations","durationMs","video","thumbnail"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdminExerciseInstructionDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"published":{"type":"boolean"},"translations":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":5000},"steps":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"safetyNote":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000},{"type":"null"}]}},"required":["title","description","steps"],"additionalProperties":false}},"durationMs":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"video":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"contentType":{"type":"string","const":"video/mp4"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","contentType","expiresIn"]},{"type":"null"}]},"thumbnail":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["url","expiresIn"]}},"required":["id","slug","category","difficulty","equipment","tags","published","translations","durationMs","video","thumbnail"]},"UpdateExerciseInstructionDto":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"category":{"type":"string","enum":["mobility","strength"]},"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"equipment":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"tags":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"published":{"type":"boolean"},"translations":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z]{2,3}(?:-[A-Z]{2})?$"},"additionalProperties":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","minLength":1,"maxLength":5000},"steps":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"safetyNote":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000},{"type":"null"}]}},"required":["title","description","steps"],"additionalProperties":false}}},"additionalProperties":false},"SessionMusicResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["no_scheduled_session","session_structure_unavailable","catalogue_unavailable","no_matching_music","ready","partial"]},"session":{"anyOf":[{"type":"object","properties":{"scheduledSessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"trainingSessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"enrollmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"sport":{"type":"string"},"scheduledFor":{"type":"string"},"timezone":{"type":"string"},"estimatedDurationMinutes":{"type":["number","null"]}},"required":["scheduledSessionId","trainingSessionId","enrollmentId","title","sport","scheduledFor","timezone","estimatedDurationMinutes"]},{"type":"null"}]},"selection":{"type":"string","enum":["today","scheduled_session"]},"otherSessionsAvailable":{"type":"boolean"},"segments":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"role":{"type":"string","enum":["warmup","main","cooldown"]},"repetitions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationSeconds":{"type":["number","null"]},"distanceM":{"type":["number","null"]},"targetZone":{"type":["number","null"]},"tempo":{"type":"object","properties":{"id":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","bpmMin","bpmMax"]},"trackIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"recovery":{"anyOf":[{"type":"object","properties":{"durationSeconds":{"type":"number"},"tempo":{"type":"object","properties":{"id":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","bpmMin","bpmMax"]},"trackIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["durationSeconds","tempo","trackIds"]},{"type":"null"}]}},"required":["index","title","role","repetitions","durationSeconds","distanceM","targetZone","tempo","trackIds","recovery"]}},"tracks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"instrumental":{"type":"boolean","const":true},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bpmTarget":{"type":["number","null"]},"bpmMeasured":{"type":["number","null"]},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"codec":{"type":"string","enum":["mp3","aac","flac","wav"]},"contentType":{"type":"string"},"sampleRateHz":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"channels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loudnessLufs":{"type":["number","null"]},"rights":{"type":"object","properties":{"licenseId":{"type":"string"},"licenseUrl":{"type":"string"},"attribution":{"type":"string"},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"type":"boolean"},"reelUseAllowed":{"type":"boolean"},"reelExportAllowed":{"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","instrumental","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","artworkUrl","artworkExpiresIn","bytes","checksumSha256","codec","contentType","sampleRateHz","channels","loudnessLufs","rights","createdAt"]}},"featuredPlaylist":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sort":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Editorial position; the paginated playlist endpoint retains chronological ordering."},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":["string","null"]},"sport":{"type":["string","null"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"featured":{"type":"boolean"},"trackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmMin":{"type":["number","null"]},"bpmMax":{"type":["number","null"]},"tracks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"instrumental":{"type":"boolean","const":true},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bpmTarget":{"type":["number","null"]},"bpmMeasured":{"type":["number","null"]},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"codec":{"type":"string","enum":["mp3","aac","flac","wav"]},"contentType":{"type":"string"},"sampleRateHz":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"channels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loudnessLufs":{"type":["number","null"]},"rights":{"type":"object","properties":{"licenseId":{"type":"string"},"licenseUrl":{"type":"string"},"attribution":{"type":"string"},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"type":"boolean"},"reelUseAllowed":{"type":"boolean"},"reelExportAllowed":{"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","instrumental","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","artworkUrl","artworkExpiresIn","bytes","checksumSha256","codec","contentType","sampleRateHz","channels","loudnessLufs","rights","createdAt"]}}},"required":["id","sort","slug","version","title","description","mood","sport","artworkUrl","artworkExpiresIn","featured","trackCount","durationMs","bpmMin","bpmMax","tracks"]},{"type":"null"}]},"playback":{"type":"object","properties":{"advanceOn":{"type":"string","const":"training_block_or_repetition_transition"},"automaticSpeedChange":{"type":"boolean","const":false},"playbackPathTemplate":{"type":"string"}},"required":["advanceOn","automaticSpeedChange","playbackPathTemplate"]},"catalogueTruncated":{"type":"boolean"},"policy":{"type":"object","properties":{"version":{"type":"string"},"kind":{"type":"string","const":"editorial_training_structure"},"tempoBands":{"type":"object","properties":{"calm":{"type":"object","properties":{"id":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","bpmMin","bpmMax"]},"easy":{"type":"object","properties":{"id":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","bpmMin","bpmMax"]},"steady":{"type":"object","properties":{"id":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","bpmMin","bpmMax"]},"effort":{"type":"object","properties":{"id":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","bpmMin","bpmMax"]}},"required":["calm","easy","steady","effort"]},"usesHeartRateData":{"type":"boolean","const":false},"changesTrainingTargets":{"type":"boolean","const":false}},"required":["version","kind","tempoBands","usesHeartRateData","changesTrainingTargets"]},"personalDataStored":{"type":"boolean","const":false}},"required":["status","session","selection","otherSessionsAvailable","segments","tracks","featuredPlaylist","playback","catalogueTruncated","policy","personalDataStored"]},"CreateNarrationDto":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"locale":{"type":"string","enum":["pt-PT","en-GB"]},"voice":{"type":"string","enum":["pt","en"]},"title":{"type":"string","minLength":1,"maxLength":120}},"required":["text"],"additionalProperties":false},"MusicCatalogDto":{"type":"object","properties":{"catalogVersion":{"type":"number","const":1},"playlistOrdering":{"type":"string","const":"editorial_within_recent_page","description":"The catalogue sorts its recent chronological page by editorial sort then UUID; this is not global editorial pagination."},"playlistPageSize":{"type":"number","const":100},"trackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"playlists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sort":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Editorial position; the paginated playlist endpoint retains chronological ordering."},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":["string","null"]},"sport":{"type":["string","null"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"featured":{"type":"boolean"},"trackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmMin":{"type":["number","null"]},"bpmMax":{"type":["number","null"]}},"required":["id","sort","slug","version","title","description","mood","sport","artworkUrl","artworkExpiresIn","featured","trackCount","durationMs","bpmMin","bpmMax"]}},"featured":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sort":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Editorial position; the paginated playlist endpoint retains chronological ordering."},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":["string","null"]},"sport":{"type":["string","null"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"featured":{"type":"boolean"},"trackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmMin":{"type":["number","null"]},"bpmMax":{"type":["number","null"]}},"required":["id","sort","slug","version","title","description","mood","sport","artworkUrl","artworkExpiresIn","featured","trackCount","durationMs","bpmMin","bpmMax"]},{"type":"null"}]},"taxonomy":{"type":"object","properties":{"moods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}},"required":["id","label"]}},"sports":{"type":"array","items":{"type":"string"}},"tempoBands":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"supporting":{"type":"string"},"bpmMin":{"type":"number"},"bpmMax":{"type":"number"}},"required":["id","label","supporting","bpmMin","bpmMax"]}},"frequencyProfiles":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"]}}},"required":["moods","sports","tempoBands","frequencyProfiles"]},"playlistNextCursor":{"description":"Chronological continuation for GET /kyplay/playlists; derived before the catalogue applies editorial display order.","type":"array","items":{"type":"string"}}},"required":["catalogVersion","playlistOrdering","playlistPageSize","trackCount","playlists","featured","taxonomy","playlistNextCursor"]},"MusicTrackPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"instrumental":{"type":"boolean","const":true},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bpmTarget":{"type":["number","null"]},"bpmMeasured":{"type":["number","null"]},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"codec":{"type":"string","enum":["mp3","aac","flac","wav"]},"contentType":{"type":"string"},"sampleRateHz":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"channels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loudnessLufs":{"type":["number","null"]},"rights":{"type":"object","properties":{"licenseId":{"type":"string"},"licenseUrl":{"type":"string"},"attribution":{"type":"string"},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"type":"boolean"},"reelUseAllowed":{"type":"boolean"},"reelExportAllowed":{"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","instrumental","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","artworkUrl","artworkExpiresIn","bytes","checksumSha256","codec","contentType","sampleRateHz","channels","loudnessLufs","rights","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"MusicTrackDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"instrumental":{"type":"boolean","const":true},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bpmTarget":{"type":"array","items":{"type":"number"}},"bpmMeasured":{"type":"array","items":{"type":"number"}},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"]},"artworkUrl":{"type":"array","items":{"type":"string"}},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"codec":{"type":"string","enum":["mp3","aac","flac","wav"]},"contentType":{"type":"string"},"sampleRateHz":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"channels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loudnessLufs":{"type":"array","items":{"type":"number"}},"rights":{"type":"object","properties":{"licenseId":{"type":"string"},"licenseUrl":{"type":"string"},"attribution":{"type":"string"},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"type":"boolean"},"reelUseAllowed":{"type":"boolean"},"reelExportAllowed":{"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","instrumental","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","artworkUrl","artworkExpiresIn","bytes","checksumSha256","codec","contentType","sampleRateHz","channels","loudnessLufs","rights","createdAt"]},"MusicPlaylistPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sort":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Editorial position; the paginated playlist endpoint retains chronological ordering."},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":["string","null"]},"sport":{"type":["string","null"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"featured":{"type":"boolean"},"trackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmMin":{"type":["number","null"]},"bpmMax":{"type":["number","null"]}},"required":["id","sort","slug","version","title","description","mood","sport","artworkUrl","artworkExpiresIn","featured","trackCount","durationMs","bpmMin","bpmMax"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"MusicPlaylistDetailDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sort":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Editorial position; the paginated playlist endpoint retains chronological ordering."},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":"array","items":{"type":"string"}},"sport":{"type":"array","items":{"type":"string"}},"artworkUrl":{"type":"array","items":{"type":"string"}},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"featured":{"type":"boolean"},"trackCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmMin":{"type":"array","items":{"type":"number"}},"bpmMax":{"type":"array","items":{"type":"number"}},"tracks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"instrumental":{"type":"boolean","const":true},"durationMs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bpmTarget":{"type":["number","null"]},"bpmMeasured":{"type":["number","null"]},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"]},"artworkUrl":{"type":["string","null"]},"artworkExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"codec":{"type":"string","enum":["mp3","aac","flac","wav"]},"contentType":{"type":"string"},"sampleRateHz":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"channels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loudnessLufs":{"type":["number","null"]},"rights":{"type":"object","properties":{"licenseId":{"type":"string"},"licenseUrl":{"type":"string"},"attribution":{"type":"string"},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"type":"boolean"},"reelUseAllowed":{"type":"boolean"},"reelExportAllowed":{"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","instrumental","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","artworkUrl","artworkExpiresIn","bytes","checksumSha256","codec","contentType","sampleRateHz","channels","loudnessLufs","rights","createdAt"]}}},"required":["id","sort","slug","version","title","description","mood","sport","artworkUrl","artworkExpiresIn","featured","trackCount","durationMs","bpmMin","bpmMax","tracks"]},"MusicPlaybackDto":{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"expiresIn":{"type":"number","const":900},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentType":{"type":"string"},"codec":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rangeSupported":{"type":"boolean","const":true}},"required":["trackId","version","url","expiresIn","expiresAt","contentType","codec","bytes","checksumSha256","durationMs","rangeSupported"]},"MusicDeviceDto":{"type":"object","properties":{"deviceId":{"type":"string","minLength":1,"maxLength":128}},"required":["deviceId"],"additionalProperties":false},"MusicDownloadManifestDto":{"type":"object","properties":{"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"expiresIn":{"type":"number","const":900},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentType":{"type":"string"},"codec":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rangeSupported":{"type":"boolean","const":true},"manifestVersion":{"type":"number","const":1},"downloadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string"},"offlineAllowed":{"type":"boolean","const":true},"offlineExpiresAt":{"type":"null"},"storage":{"type":"string","const":"app_private"},"removeOnLogout":{"type":"boolean","const":true},"drm":{"type":"string","const":"none"},"checksumAlgorithm":{"type":"string","const":"SHA-256"},"statusSource":{"type":"string","const":"client_reported"}},"required":["trackId","version","url","expiresIn","expiresAt","contentType","codec","bytes","checksumSha256","durationMs","rangeSupported","manifestVersion","downloadId","deviceId","offlineAllowed","offlineExpiresAt","storage","removeOnLogout","drm","checksumAlgorithm","statusSource"]},"MusicDownloadPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["requested","downloading","downloaded","failed"]},"bytesDownloaded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCode":{"type":["string","null"]},"requestedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reportedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"downloadedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"statusSource":{"type":"string","const":"client_reported"}},"required":["id","trackId","deviceId","version","checksumSha256","bytes","status","bytesDownloaded","failureCode","requestedAt","reportedAt","downloadedAt","statusSource"]}},"nextCursor":{"type":"array","items":{"type":"string"}},"deviceId":{"type":"string"},"statusSource":{"type":"string","const":"client_reported"}},"required":["items","nextCursor","deviceId","statusSource"]},"MusicDownloadAckDto":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checksumSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["downloading","downloaded","failed"]},"bytesDownloaded":{"type":"integer","minimum":0,"maximum":1073741824},"failureCode":{"default":null,"anyOf":[{"type":"string","enum":["NETWORK_ERROR","INSUFFICIENT_STORAGE","CHECKSUM_MISMATCH","CANCELLED","UNKNOWN"]},{"type":"null"}]}},"required":["version","checksumSha256","status","bytesDownloaded"],"additionalProperties":false},"MusicDownloadDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"trackId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deviceId":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["requested","downloading","downloaded","failed"]},"bytesDownloaded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failureCode":{"type":"array","items":{"type":"string"}},"requestedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"reportedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"downloadedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"statusSource":{"type":"string","const":"client_reported"}},"required":["id","trackId","deviceId","version","checksumSha256","bytes","status","bytesDownloaded","failureCode","requestedAt","reportedAt","downloadedAt","statusSource"]},"MusicPreferencesDto":{"type":"object","properties":{"downloadOverMobileData":{"type":"boolean"},"storageLimitBytes":{"type":"integer","minimum":52428800,"maximum":21474836480},"volumeLimit":{"type":"number","minimum":0,"maximum":1},"duckForNavigationAndCalls":{"type":"boolean"},"pauseWhenHeadphonesRemoved":{"type":"boolean"},"outdoorReminder":{"type":"boolean"},"allowPhoneSpeaker":{"type":"boolean"},"deviceId":{"type":"string"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"enforcement":{"type":"string","const":"client"}},"required":["downloadOverMobileData","storageLimitBytes","volumeLimit","duckForNavigationAndCalls","pauseWhenHeadphonesRemoved","outdoorReminder","allowPhoneSpeaker","deviceId","updatedAt","enforcement"]},"MusicPreferencesPatchDto":{"type":"object","properties":{"downloadOverMobileData":{"type":"boolean"},"storageLimitBytes":{"type":"integer","minimum":52428800,"maximum":21474836480},"volumeLimit":{"type":"number","minimum":0,"maximum":1},"duckForNavigationAndCalls":{"type":"boolean"},"pauseWhenHeadphonesRemoved":{"type":"boolean"},"outdoorReminder":{"type":"boolean"},"allowPhoneSpeaker":{"type":"boolean"}},"additionalProperties":false},"AdminMusicTrackPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmTarget":{"type":["number","null"]},"bpmMeasured":{"type":["number","null"]},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"],"additionalProperties":false},"loudnessLufs":{"type":["number","null"]},"rights":{"type":"object","properties":{"licenseId":{"type":"string","minLength":1,"maxLength":100},"licenseUrl":{"type":"string","format":"starts_with","pattern":"^https:\\/\\/.*"},"attribution":{"type":"string","minLength":1,"maxLength":2000},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"default":false,"type":"boolean"},"reelUseAllowed":{"default":false,"type":"boolean"},"reelExportAllowed":{"default":false,"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"],"additionalProperties":false},"published":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"audioUrl":{"type":"string","format":"uri"},"artworkUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","loudnessLufs","rights","published","deletedAt","audioUrl","artworkUrl","expiresIn","bytes","checksumSha256","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdminMusicTrackDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"artist":{"type":"string"},"description":{"type":"string"},"durationMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bpmTarget":{"type":"array","items":{"type":"number"}},"bpmMeasured":{"type":"array","items":{"type":"number"}},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string"},"sports":{"type":"array","items":{"type":"string"}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"],"additionalProperties":false},"loudnessLufs":{"type":"array","items":{"type":"number"}},"rights":{"type":"object","properties":{"licenseId":{"type":"string","minLength":1,"maxLength":100},"licenseUrl":{"type":"string","format":"starts_with","pattern":"^https:\\/\\/.*"},"attribution":{"type":"string","minLength":1,"maxLength":2000},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"default":false,"type":"boolean"},"reelUseAllowed":{"default":false,"type":"boolean"},"reelExportAllowed":{"default":false,"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"],"additionalProperties":false},"published":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"audioUrl":{"type":"string","format":"uri"},"artworkUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checksumSha256":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","artist","description","durationMs","bpmTarget","bpmMeasured","bpmSource","mood","sports","frequencyProfile","loudnessLufs","rights","published","deletedAt","audioUrl","artworkUrl","expiresIn","bytes","checksumSha256","createdAt"]},"AdminMusicTrackPatchDto":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":160},"artist":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","maxLength":2000},"bpmTarget":{"anyOf":[{"type":"number","minimum":20,"maximum":300},{"type":"null"}]},"bpmMeasured":{"anyOf":[{"type":"number","minimum":20,"maximum":300},{"type":"null"}]},"bpmSource":{"type":"string","enum":["target","measured","unknown"]},"mood":{"type":"string","minLength":1,"maxLength":60},"sports":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]}},"frequencyProfile":{"type":"object","properties":{"kind":{"type":"string","enum":["tempo_only","tuning","binaural"]},"tuningHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"carrierHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"beatHz":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"verified":{"type":"boolean"},"method":{"anyOf":[{"type":"string","enum":["dsp","analysis"]},{"type":"null"}]}},"required":["kind","tuningHz","carrierHz","beatHz","verified","method"],"additionalProperties":false},"loudnessLufs":{"anyOf":[{"type":"number","minimum":-60,"maximum":0},{"type":"null"}]},"rights":{"type":"object","properties":{"licenseId":{"type":"string","minLength":1,"maxLength":100},"licenseUrl":{"type":"string","format":"starts_with","pattern":"^https:\\/\\/.*"},"attribution":{"type":"string","minLength":1,"maxLength":2000},"commercialUseAllowed":{"type":"boolean"},"streamingAllowed":{"type":"boolean"},"offlineAllowed":{"type":"boolean"},"storyUseAllowed":{"default":false,"type":"boolean"},"reelUseAllowed":{"default":false,"type":"boolean"},"reelExportAllowed":{"default":false,"type":"boolean"}},"required":["licenseId","licenseUrl","attribution","commercialUseAllowed","streamingAllowed","offlineAllowed"],"additionalProperties":false},"published":{"type":"boolean"}},"additionalProperties":false},"AdminMusicPlaylistPageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":["string","null"]},"sport":{"type":["string","null"]},"featured":{"type":"boolean"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"published":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"trackIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"artworkUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","description","mood","sport","featured","sort","published","deletedAt","trackIds","artworkUrl","expiresIn","createdAt"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["items","nextCursor"]},"AdminMusicPlaylistDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"description":{"type":"string"},"mood":{"type":"array","items":{"type":"string"}},"sport":{"type":"array","items":{"type":"string"}},"featured":{"type":"boolean"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"published":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"trackIds":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"artworkUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"expiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","slug","version","title","description","mood","sport","featured","sort","published","deletedAt","trackIds","artworkUrl","expiresIn","createdAt"]},"AdminMusicPlaylistPatchDto":{"type":"object","properties":{"slug":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","maxLength":2000},"mood":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"sport":{"anyOf":[{"type":"string","enum":["running","walking","cycling","gym","swimming","trail"]},{"type":"null"}]},"featured":{"type":"boolean"},"sort":{"type":"integer","minimum":0,"maximum":10000},"published":{"type":"boolean"},"trackIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"additionalProperties":false},"CoachCapabilitiesDto":{"type":"object","properties":{"text":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string"},"inferenceVerified":{"type":"boolean"}},"required":["available"]},"images":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string"},"inferenceVerified":{"type":"boolean"}},"required":["available"]},"audio":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string"},"inferenceVerified":{"type":"boolean"}},"required":["available"]},"speech":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string"},"inferenceVerified":{"type":"boolean"}},"required":["available"]},"calls":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string"},"maxDurationSeconds":{"type":"number","const":120},"socketNamespace":{"type":"string","const":"/coach-call"},"inputAudio":{"type":"object","properties":{"encoding":{"type":"string","const":"pcm_s16le"},"sampleRate":{"type":"number","const":16000},"channels":{"type":"number","const":1}},"required":["encoding","sampleRate","channels"]},"outputAudio":{"type":"object","properties":{"encoding":{"type":"string","const":"pcm_s16le"},"sampleRate":{"type":"number","const":24000},"channels":{"type":"number","const":1}},"required":["encoding","sampleRate","channels"]}},"required":["available","maxDurationSeconds","socketNamespace","inputAudio","outputAudio"]},"imageGeneration":{"type":"object","properties":{"available":{"type":"boolean","const":false},"reason":{"type":"string"}},"required":["available","reason"]},"history":{"type":"boolean","const":true},"catalogueImages":{"type":"boolean","const":true},"socketNamespace":{"type":"string","const":"/coach"},"ssePath":{"type":"string","const":"/v1/coach/threads/:id/stream"},"locationRetentionSeconds":{"type":"number","const":300},"maxInputCharacters":{"type":"number","const":4000},"maxAttachments":{"type":"number","const":3},"maxAudioSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":120},"maxConcurrentRunsPerUser":{"type":"number","const":1},"retentionDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"promptBudget":{"type":"object","properties":{"contextTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxOutputTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxPromptBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"messageOverheadBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageOverheadBytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxMessages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxImages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contextTokens","maxOutputTokens","maxPromptBytes","messageOverheadBytes","imageOverheadBytes","maxMessages","maxImages"]},"domain":{"type":"array","items":{"type":"string"}}},"required":["text","images","audio","speech","calls","imageGeneration","history","catalogueImages","socketNamespace","ssePath","locationRetentionSeconds","maxInputCharacters","maxAttachments","maxAudioSeconds","maxConcurrentRunsPerUser","retentionDays","promptBudget","domain"]},"CoachKnowledgePageDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["slug","title","body","id","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"CoachKnowledgeDto":{"type":"object","properties":{"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"enabled":{"default":true,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["slug","title","body","id","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false},"CoachThreadsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"locale":{"type":"string"},"status":{"type":"string","enum":["active","archived"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","locale","status","revision","createdAt","updatedAt"]}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"CreateCoachThreadDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"default":"Kypace Coach","type":"string","minLength":1,"maxLength":160},"locale":{"default":"pt-BR","type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]}},"required":["clientId"],"additionalProperties":false},"CoachThreadDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"locale":{"type":"string"},"status":{"type":"string","enum":["active","archived"]},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","title","locale","status","revision","createdAt","updatedAt"]},"PatchCoachThreadDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string","minLength":1,"maxLength":160},"status":{"type":"string","enum":["active","archived"]},"locale":{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]}},"required":["expectedRevision"],"additionalProperties":false},"CoachMessagesDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["user","assistant"]},"status":{"type":"string","enum":["queued","generating","completed","failed","cancelled","refused"]},"text":{"type":"string"},"transcript":{"type":["string","null"]},"includeHealth":{"type":"boolean"},"locale":{"anyOf":[{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},{"type":"null"}]},"callId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"title":{"type":"string"},"path":{"type":"string"},"revision":{"type":"number"}},"required":["type","id","title","path"]}},"images":{"type":"array","items":{"type":"object","properties":{"sourceType":{"type":"string"},"sourceId":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sourceType","sourceId","title"]}},"warnings":{"type":"array","items":{"type":"string"}},"errorCode":{"type":["string","null"]},"finishReason":{"anyOf":[{"type":"string","enum":["stop","length"]},{"type":"null"}]},"model":{"type":["string","null"]},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"type":"number"},"outputTokens":{"type":"number"}}},{"type":"null"}]},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","audio"]},"mimeType":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationS":{"type":["number","null"]},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","threadId","kind","mimeType","bytes","width","height","durationS","url","expiresIn","createdAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","threadId","sequence","clientId","parentId","role","status","text","transcript","includeHealth","locale","callId","sources","images","warnings","errorCode","finishReason","model","usage","attachments","createdAt","updatedAt","completedAt"]}},"nextAfter":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},{"type":"null"}]},"eventCursor":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$","description":"Latest persisted event ID of the conversation, read before the messages. Resume GET events, SSE or Socket.IO after it."}},"required":["items","nextAfter","eventCursor"]},"SendCoachMessageDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"text":{"default":"","type":"string","maxLength":4000},"attachmentIds":{"maxItems":3,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"includeHealth":{"default":false,"type":"boolean"},"locale":{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},"callId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"location":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":5000,"type":"integer","minimum":500,"maximum":10000},"timezone":{"type":"string","maxLength":80}},"required":["latitude","longitude","timezone"],"additionalProperties":false}},"required":["clientId"],"additionalProperties":false},"CoachSendResponseDto":{"type":"object","properties":{"userMessage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["user","assistant"]},"status":{"type":"string","enum":["queued","generating","completed","failed","cancelled","refused"]},"text":{"type":"string"},"transcript":{"type":["string","null"]},"includeHealth":{"type":"boolean"},"locale":{"anyOf":[{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},{"type":"null"}]},"callId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"title":{"type":"string"},"path":{"type":"string"},"revision":{"type":"number"}},"required":["type","id","title","path"]}},"images":{"type":"array","items":{"type":"object","properties":{"sourceType":{"type":"string"},"sourceId":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sourceType","sourceId","title"]}},"warnings":{"type":"array","items":{"type":"string"}},"errorCode":{"type":["string","null"]},"finishReason":{"anyOf":[{"type":"string","enum":["stop","length"]},{"type":"null"}]},"model":{"type":["string","null"]},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"type":"number"},"outputTokens":{"type":"number"}}},{"type":"null"}]},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","audio"]},"mimeType":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationS":{"type":["number","null"]},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","threadId","kind","mimeType","bytes","width","height","durationS","url","expiresIn","createdAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","threadId","sequence","clientId","parentId","role","status","text","transcript","includeHealth","locale","callId","sources","images","warnings","errorCode","finishReason","model","usage","attachments","createdAt","updatedAt","completedAt"]},"assistantMessage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["user","assistant"]},"status":{"type":"string","enum":["queued","generating","completed","failed","cancelled","refused"]},"text":{"type":"string"},"transcript":{"type":["string","null"]},"includeHealth":{"type":"boolean"},"locale":{"anyOf":[{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},{"type":"null"}]},"callId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"title":{"type":"string"},"path":{"type":"string"},"revision":{"type":"number"}},"required":["type","id","title","path"]}},"images":{"type":"array","items":{"type":"object","properties":{"sourceType":{"type":"string"},"sourceId":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sourceType","sourceId","title"]}},"warnings":{"type":"array","items":{"type":"string"}},"errorCode":{"type":["string","null"]},"finishReason":{"anyOf":[{"type":"string","enum":["stop","length"]},{"type":"null"}]},"model":{"type":["string","null"]},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"type":"number"},"outputTokens":{"type":"number"}}},{"type":"null"}]},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","audio"]},"mimeType":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationS":{"type":["number","null"]},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","threadId","kind","mimeType","bytes","width","height","durationS","url","expiresIn","createdAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","threadId","sequence","clientId","parentId","role","status","text","transcript","includeHealth","locale","callId","sources","images","warnings","errorCode","finishReason","model","usage","attachments","createdAt","updatedAt","completedAt"]},"replayed":{"type":"boolean"}},"required":["userMessage","assistantMessage","replayed"]},"CoachMessageDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"role":{"type":"string","enum":["user","assistant"]},"status":{"type":"string","enum":["queued","generating","completed","failed","cancelled","refused"]},"text":{"type":"string"},"transcript":{"type":"array","items":{"type":"string"}},"includeHealth":{"type":"boolean"},"locale":{"anyOf":[{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},{"type":"null"}]},"callId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"sources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"title":{"type":"string"},"path":{"type":"string"},"revision":{"type":"number"}},"required":["type","id","title","path"]}},"images":{"type":"array","items":{"type":"object","properties":{"sourceType":{"type":"string"},"sourceId":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sourceType","sourceId","title"]}},"warnings":{"type":"array","items":{"type":"string"}},"errorCode":{"type":"array","items":{"type":"string"}},"finishReason":{"anyOf":[{"type":"string","enum":["stop","length"]},{"type":"null"}]},"model":{"type":"array","items":{"type":"string"}},"usage":{"anyOf":[{"type":"object","properties":{"inputTokens":{"type":"number"},"outputTokens":{"type":"number"}}},{"type":"null"}]},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","audio"]},"mimeType":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationS":{"type":["number","null"]},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","threadId","kind","mimeType","bytes","width","height","durationS","url","expiresIn","createdAt"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","threadId","sequence","clientId","parentId","role","status","text","transcript","includeHealth","locale","callId","sources","images","warnings","errorCode","finishReason","model","usage","attachments","createdAt","updatedAt","completedAt"]},"RetryCoachMessageDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId"],"additionalProperties":false},"CoachAttachmentDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","audio"]},"mimeType":{"type":"string"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"width":{"type":"array","items":{"type":"number"}},"height":{"type":"array","items":{"type":"number"}},"durationS":{"type":"array","items":{"type":"number"}},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"number","const":900},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","threadId","kind","mimeType","bytes","width","height","durationS","url","expiresIn","createdAt"]},"CoachEventsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},"messageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["queued","started","delta","sources","completed","failed","cancelled","refused"]},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","messageId","threadId","type","payload","createdAt"]}},"nextCursor":{"type":"string","pattern":"^(0|[1-9][0-9]{0,17})$"},"hasMore":{"type":"boolean"}},"required":["items","nextCursor","hasMore"]},"CreateCoachKnowledgeDto":{"type":"object","properties":{"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"enabled":{"default":true,"type":"boolean"}},"required":["slug","title","body"],"additionalProperties":false},"ReplaceCoachKnowledgeDto":{"type":"object","properties":{"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["slug","title","body","expectedRevision"],"additionalProperties":false},"PatchCoachKnowledgeDto":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"tags":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"CreateCoachCallDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locale":{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},"transcriptConsent":{"type":"boolean","const":true},"rememberTranscript":{"default":false,"type":"boolean"},"includeHealth":{"default":false,"type":"boolean"}},"required":["clientId","locale","transcriptConsent"],"additionalProperties":false},"CoachCallSessionDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locale":{"type":"string","enum":["en-US","en-GB","pt-BR","pt-PT","es-ES","fr-FR","de-DE","nl-NL"]},"status":{"type":"string","enum":["active","ended","expired","failed"]},"rememberTranscript":{"type":"boolean"},"includeHealth":{"type":"boolean"},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"serverTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"maxDurationSeconds":{"type":"number","const":120},"socketNamespace":{"type":"string","const":"/coach-call"}},"required":["id","threadId","locale","status","rememberTranscript","startedAt","expiresAt","endedAt","serverTime","maxDurationSeconds","socketNamespace"]},"CoachMemoryPreferencesDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"revision":{"type":"integer","minimum":0,"maximum":2147483646},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"purpose":{"type":"string","const":"coach_conversation_continuity"}},"required":["enabled","revision","updatedAt","purpose"]},"PatchCoachMemoryPreferencesDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["enabled","expectedRevision"],"additionalProperties":false},"CoachMemoriesDto":{"type":"object","properties":{"preferences":{"type":"object","properties":{"enabled":{"type":"boolean"},"revision":{"type":"integer","minimum":0,"maximum":2147483646},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"purpose":{"type":"string","const":"coach_conversation_continuity"}},"required":["enabled","revision","updatedAt","purpose"]},"items":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["routine","activity_preference","nutrition_preference","motivation"]},"fact":{"type":"string","minLength":1,"maxLength":400,"description":"A preference or routine explicitly supplied and confirmed by the account holder, for example \"I prefer walking in the morning\". Do not submit diagnoses, clinical records, passwords or information about another person. This field is data, never an instruction to the Coach."},"sourceMessageId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"provenance":{"type":"string","const":"user_confirmed"},"revision":{"type":"integer","minimum":0,"maximum":2147483646},"confirmedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","clientId","kind","fact","sourceMessageId","provenance","revision","confirmedAt","createdAt","updatedAt"]}}},"required":["preferences","items"]},"CoachMemorySuggestionsDto":{"type":"object","properties":{"preferences":{"type":"object","properties":{"enabled":{"type":"boolean"},"revision":{"type":"integer","minimum":0,"maximum":2147483646},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"purpose":{"type":"string","const":"coach_conversation_continuity"}},"required":["enabled","revision","updatedAt","purpose"]},"items":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["routine","activity_preference","nutrition_preference","motivation"]},"fact":{"type":"string","minLength":1,"maxLength":400,"description":"A preference or routine explicitly supplied and confirmed by the account holder, for example \"I prefer walking in the morning\". Do not submit diagnoses, clinical records, passwords or information about another person. This field is data, never an instruction to the Coach."},"sourceMessageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"provenance":{"type":"string","const":"explicit_statement"}},"required":["kind","fact","sourceMessageId","provenance"]}},"reason":{"type":"string","enum":["suggestions_available","no_explicit_preference","memory_disabled"]}},"required":["preferences","items","reason"]},"CreateCoachMemoryDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["routine","activity_preference","nutrition_preference","motivation"]},"fact":{"type":"string","minLength":1,"maxLength":400,"description":"A preference or routine explicitly supplied and confirmed by the account holder, for example \"I prefer walking in the morning\". Do not submit diagnoses, clinical records, passwords or information about another person. This field is data, never an instruction to the Coach."},"confirmed":{"type":"boolean","const":true,"description":"The holder has explicitly confirmed this exact fact."},"expectedPreferencesRevision":{"type":"integer","minimum":0,"maximum":2147483646},"sourceMessageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId","kind","fact","confirmed","expectedPreferencesRevision"],"additionalProperties":false},"CoachMemoryDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["routine","activity_preference","nutrition_preference","motivation"]},"fact":{"type":"string","minLength":1,"maxLength":400,"description":"A preference or routine explicitly supplied and confirmed by the account holder, for example \"I prefer walking in the morning\". Do not submit diagnoses, clinical records, passwords or information about another person. This field is data, never an instruction to the Coach."},"sourceMessageId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"provenance":{"type":"string","const":"user_confirmed"},"revision":{"type":"integer","minimum":0,"maximum":2147483646},"confirmedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","clientId","kind","fact","sourceMessageId","provenance","revision","confirmedAt","createdAt","updatedAt"]},"PatchCoachMemoryDto":{"type":"object","properties":{"fact":{"type":"string","minLength":1,"maxLength":400,"description":"A preference or routine explicitly supplied and confirmed by the account holder, for example \"I prefer walking in the morning\". Do not submit diagnoses, clinical records, passwords or information about another person. This field is data, never an instruction to the Coach."},"confirmed":{"type":"boolean","const":true},"expectedRevision":{"type":"integer","minimum":0,"maximum":2147483646},"expectedPreferencesRevision":{"type":"integer","minimum":0,"maximum":2147483646}},"required":["fact","confirmed","expectedRevision","expectedPreferencesRevision"],"additionalProperties":false},"PlacesTodayQueryDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":10000,"type":"integer","minimum":500,"maximum":10000},"timezone":{"type":"string","maxLength":80}},"required":["latitude","longitude","timezone"],"additionalProperties":false},"PlacesTodayPreviewResponseDto":{"type":"object","properties":{"activity":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["available","empty","unavailable"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"radiusM":{"type":"integer","exclusiveMinimum":0,"maximum":10000},"photoProviderStatus":{"type":"string","enum":["configured","not_configured"]},"attributions":{"type":"array","items":{"type":"string"}},"items":{"maxItems":6,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"reasonCodes":{"maxItems":12,"type":"array","items":{"type":"string","maxLength":80}},"condition":{"type":"string","enum":["good","mixed","unknown"]},"distanceM":{"type":"number","minimum":0,"maximum":10000},"photo":{"type":"object","properties":{"dataBase64":{"type":"string","minLength":16,"maxLength":310000},"contentType":{"type":"string","const":"image/jpeg"},"widthPx":{"type":"integer","minimum":50,"maximum":360},"heightPx":{"type":"integer","minimum":50,"maximum":540},"provider":{"type":"string","enum":["google_places","mapbox_places","wikimedia"]},"authors":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":500},"url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["name","url"]}},"sourceURL":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"license":{"type":["string","null"]},"licenseURL":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["dataBase64","contentType","widthPx","heightPx","provider","authors","sourceURL","license","licenseURL"]}},"required":["id","name","description","condition","distanceM","photo"]}}},"required":["status","fetchedAt","expiresAt","radiusM","photoProviderStatus","attributions","items"]},"PlaceDetailsResponseDto":{"type":"object","properties":{"placeId":{"type":"string"},"status":{"type":"string","enum":["available","no_match","unavailable"]},"details":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","const":"Mapbox Places"},"name":{"type":"string"},"address":{"type":["string","null"]},"openingHours":{"type":["string","null"]},"website":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"permanentlyClosed":{"type":["boolean","null"]},"walkingEntrance":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"]},{"type":"null"}]},"wheelchairEntrance":{"type":["boolean","null"]},"photo":{"anyOf":[{"type":"object","properties":{"dataBase64":{"type":"string","maxLength":700000},"contentType":{"type":"string"},"sourceURL":{"type":"string","format":"uri"}},"required":["dataBase64","contentType","sourceURL"]},{"type":"null"}]},"busyness":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","const":"historical_hourly_pattern"},"timezone":{"type":"string"},"days":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"minItems":24,"maxItems":24,"type":"array","items":{"type":"integer","minimum":0,"maximum":100}}}},"required":["scope","timezone","days"]},{"type":"null"}]}},"required":["source","name","address","openingHours","website","permanentlyClosed","walkingEntrance","wheelchairEntrance","photo","busyness"]},{"type":"null"}]}},"required":["placeId","status","details"]},"PlacesTravelTimesDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"accuracyM":{"type":"number","minimum":0,"maximum":50},"mode":{"type":"string","enum":["walking","cycling"]},"placeIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","pattern":"^osm:(?:node|way|relation):[1-9]\\d{0,18}$"}}},"required":["latitude","longitude","accuracyM","mode","placeIds"],"additionalProperties":false},"PlacesTravelTimesResponseDto":{"type":"object","properties":{"source":{"type":"string","const":"mapbox_matrix"},"mode":{"type":"string","enum":["walking","cycling"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"items":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"placeId":{"type":"string"},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"status":{"type":"string","enum":["reachable","unreachable"]}},"required":["placeId","durationS","distanceM","status"]}}},"required":["source","mode","fetchedAt","expiresAt","items"]},"PlaceContextResponseDto":{"type":"object","properties":{"placeId":{"type":"string"},"status":{"type":"string","enum":["available","no_address","unavailable"]},"address":{"anyOf":[{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":500},"source":{"type":"string","const":"Mapbox Geocoding"},"featureType":{"type":"string","const":"street"}},"required":["label","source","featureType"]},{"type":"null"}]}},"required":["placeId","status","address"]},"PlacePhotoResponseDto":{"type":"object","properties":{"placeId":{"type":"string"},"status":{"type":"string","enum":["available","no_image","unavailable"]},"photo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"sourceUrl":{"type":"string","format":"uri"},"credit":{"type":"string","minLength":1,"maxLength":500},"license":{"type":"string","minLength":1,"maxLength":500},"licenseUrl":{"type":"string","format":"uri"},"match":{"type":"string","enum":["linked","nearby_named"]},"distanceM":{"type":"integer","minimum":0,"maximum":200}},"required":["url","sourceUrl","credit","license","licenseUrl"]},{"type":"null"}]}},"required":["placeId","status","photo"]},"PlacesAreasResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"timezone":{"type":"string","maxLength":80}},"required":["id","name","region","country","latitude","longitude","timezone"]}},"attribution":{"type":"string"}},"required":["items","attribution"]},"PlacesQueryDto":{"type":"object","properties":{"areaId":{"type":"string","pattern":"^(geonames:[1-9]\\d{0,9}|amazon:[A-Za-z0-9_.\\-:]{1,200})$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":5000,"type":"integer","minimum":1000,"maximum":10000},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"default":"UTC","type":"string","maxLength":80}},"additionalProperties":false},"PlacesResponseDto":{"type":"object","properties":{"area":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"timezone":{"type":"string","maxLength":80}},"required":["id","name","region","country","latitude","longitude","timezone"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string","maxLength":80},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"status":{"type":"string","enum":["available","partial","unavailable"]},"caption":{"type":"string"},"attributions":{"type":"array","items":{"type":"string"}},"selection":{"type":"object","properties":{"mode":{"type":"string","enum":["nearest","name"]},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"requestedRadiusM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"coveredRadiusM":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"truncated":{"type":"boolean"},"source":{"anyOf":[{"type":"string","enum":["local_catalogue","openstreetmap_overpass"]},{"type":"null"}]}},"required":["mode","limit","requestedRadiusM","coveredRadiusM","truncated","source"]},"zones":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":["number","null"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string","enum":["good","mixed","poor","unknown"]},"intensity":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"reasons":{"type":"array","items":{"type":"string"}},"factors":{"type":"object","properties":{"air":{"type":"object","properties":{"europeanAqi":{"type":["number","null"]},"universalAqi":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"at":{"type":["string","null"]},"source":{"type":["string","null"]},"resolutionM":{"type":["number","null"]}},"required":["europeanAqi","at","source","resolutionM"]},"treeCover":{"type":"null"},"traffic":{"type":"null"},"lighting":{"type":["string","null"]},"surface":{"type":["string","null"]}},"required":["air","treeCover","traffic","lighting","surface"]},"source":{"type":"object","properties":{"provider":{"type":"string","const":"openstreetmap"},"url":{"type":"string","format":"uri"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":["string","null"]}},"required":["provider","url","fetchedAt","updatedAt"]}},"required":["id","name","latitude","longitude","radiusM","distanceM","rank","condition","intensity","reasons","factors","source"]}}},"required":["area","at","timezone","fetchedAt","status","caption","attributions","selection","zones"]},"PlacesRecommendationsDto":{"type":"object","properties":{"areaId":{"type":"string","pattern":"^(geonames:[1-9]\\d{0,9}|amazon:[A-Za-z0-9_.\\-:]{1,200})$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":5000,"type":"integer","minimum":1000,"maximum":10000},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"default":"UTC","type":"string","maxLength":80},"activity":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"includeMapZones":{"default":true,"type":"boolean"}},"additionalProperties":false},"PlacesRecommendationsResponseDto":{"type":"object","properties":{"area":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"timezone":{"type":"string","maxLength":80}},"required":["id","name","region","country","latitude","longitude","timezone"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string","maxLength":80},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"activity":{"anyOf":[{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},{"type":"null"}]},"personalisation":{"type":"object","properties":{"status":{"type":"string","enum":["explicit_activity","not_consented","insufficient_evidence","personalised"]},"preferenceVersion":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"matchedInterests":{"maxItems":1,"type":"array","items":{"type":"string","enum":["running","walking","cycling","gym","swimming","trail","music","footwear","apparel","equipment","outdoors","events"]}},"modelUsed":{"type":"boolean"},"usualActivityTimes":{"anyOf":[{"type":"object","properties":{"timezone":{"type":"string","maxLength":80},"computedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"windowDays":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"appliesTo":{"type":"string","const":"all_recorded_activities"},"windows":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":0,"maximum":6},"band":{"type":"string","enum":["00_03","03_06","06_09","09_12","12_15","15_18","18_21","21_24"]},"sessions":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["weekday","band","sessions"]}}},"required":["timezone","computedAt","validUntil","windowDays","appliesTo","windows"]},{"type":"null"}]}},"required":["status","preferenceVersion","matchedInterests","modelUsed","usualActivityTimes"]},"activitySupport":{"type":"string","enum":["outdoor_context_only","mapped_facility_only","no_suitable_place_data"]},"status":{"type":"string","enum":["available","partial","unavailable"]},"caption":{"type":"string"},"attributions":{"type":"array","items":{"type":"string"}},"unavailableFactors":{"type":"array","items":{"type":"string"}},"reference":{"type":"object","properties":{"kind":{"type":"string","enum":["rounded_location","area_centre"]},"coordinatePrecision":{"anyOf":[{"type":"string","const":"0.01_degree"},{"type":"null"}]}},"required":["kind","coordinatePrecision"]},"selection":{"type":"object","properties":{"candidateLimit":{"type":"number","const":200},"distanceBands":{"type":"number","const":4},"perBandLimit":{"type":"number","const":50},"resultLimit":{"type":"number","const":10},"candidateCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncatedBeforeRanking":{"type":"boolean"},"source":{"anyOf":[{"type":"string","enum":["local_catalogue","openstreetmap_overpass"]},{"type":"null"}]}},"required":["candidateLimit","distanceBands","perBandLimit","resultLimit","candidateCount","truncatedBeforeRanking","source"]},"methodology":{"type":"object","properties":{"version":{"type":"string","const":"places-recommend-v4"},"environmentFormulaVersion":{"type":"string","const":"places-heat-v1"},"environmentResolution":{"type":"number","const":6},"environmentWeight":{"anyOf":[{"type":"number","const":0.6},{"type":"number","const":0}]},"suitabilityWeight":{"anyOf":[{"type":"number","const":0.25},{"type":"number","const":0}]},"proximityWeight":{"anyOf":[{"type":"number","const":0.15},{"type":"number","const":1}]},"scope":{"type":"string","enum":["regional_context_and_approximate_distance","mapped_facility_and_approximate_distance"]}},"required":["version","environmentFormulaVersion","environmentResolution","environmentWeight","suitabilityWeight","proximityWeight","scope"]},"zones":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":["number","null"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string","enum":["good","mixed","poor","unknown"]},"intensity":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"reasons":{"type":"array","items":{"type":"string"}},"factors":{"type":"object","properties":{"air":{"type":"object","properties":{"europeanAqi":{"type":["number","null"]},"universalAqi":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"at":{"type":["string","null"]},"source":{"type":["string","null"]},"resolutionM":{"type":["number","null"]}},"required":["europeanAqi","at","source","resolutionM"]},"treeCover":{"type":"null"},"traffic":{"type":"null"},"lighting":{"type":["string","null"]},"surface":{"type":["string","null"]}},"required":["air","treeCover","traffic","lighting","surface"]},"source":{"type":"object","properties":{"provider":{"type":"string","const":"openstreetmap"},"url":{"type":"string","format":"uri"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":["string","null"]}},"required":["provider","url","fetchedAt","updatedAt"]},"recommendation":{"type":"object","properties":{"rankingScore":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"environmentalScore":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"suitabilityScore":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"proximityScore":{"type":"number","minimum":0,"maximum":1},"activityCompatibility":{"type":"string","enum":["unverified","osm_tag_match_unverified_access"]},"mappedFeature":{"type":"object","properties":{"key":{"type":"string","enum":["leisure","natural","highway"]},"value":{"type":"string"}},"required":["key","value"]},"supportedActivities":{"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"reasonCodes":{"type":"array","items":{"type":"string","enum":["mapped_leisure_or_natural_feature","mapped_park","mapped_recreation_ground","mapped_pedestrian_way","mapped_footway","mapped_path","mapped_cycleway","mapped_swimming_pool","mapped_fitness_centre","mapped_fitness_station","regional_air_favorable","regional_air_moderate","regional_air_unfavorable","regional_air_unavailable","regional_tree_cover_measured","regional_weather_comfortable","regional_weather_variable","regional_green_features_mapped","regional_conditions_unavailable"]}},"environment":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","enum":["regional_hexagon","regional_air_only"]},"cellId":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{15}$"},{"type":"null"}]},"score":{"type":"number","minimum":0,"maximum":1},"factors":{"type":"object","properties":{"air":{"anyOf":[{"type":"object","properties":{"europeanAqi":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"universalAqi":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"score":{"type":"number","minimum":0,"maximum":1},"at":{"type":["string","null"]},"source":{"type":"string"},"resolutionM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["europeanAqi","score","at","source","resolutionM"]},{"type":"null"}]},"treeCover":{"anyOf":[{"type":"object","properties":{"treePercent":{"type":"number","minimum":0,"maximum":100},"shrubPercent":{"type":"number","minimum":0,"maximum":100},"grassPercent":{"type":"number","minimum":0,"maximum":100},"cropPercent":{"type":"number","minimum":0,"maximum":100},"builtUpPercent":{"type":"number","minimum":0,"maximum":100},"waterPercent":{"type":"number","minimum":0,"maximum":100},"vegetatedPercent":{"type":"number","minimum":0,"maximum":100},"score":{"type":"number","minimum":0,"maximum":1},"samples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string"},"resolutionM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["treePercent","shrubPercent","grassPercent","cropPercent","builtUpPercent","waterPercent","vegetatedPercent","score","samples","source","resolutionM"]},{"type":"null"}]},"weather":{"anyOf":[{"type":"object","properties":{"temperatureC":{"type":["number","null"]},"windKph":{"type":["number","null"]},"precipitationProbabilityPercent":{"type":["number","null"]},"score":{"type":"number","minimum":0,"maximum":1},"at":{"type":["string","null"]},"source":{"type":"string"},"resolutionM":{"type":"null"}},"required":["temperatureC","windKph","precipitationProbabilityPercent","score","at","source","resolutionM"]},{"type":"null"}]},"green":{"anyOf":[{"type":"object","properties":{"featureCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"saturationCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"score":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"string"}},"required":["featureCount","saturationCount","score","coverage"]},{"type":"null"}]}},"required":["air","treeCover","weather","green"]}},"required":["scope","cellId","score","factors"]},{"type":"null"}]}},"required":["rankingScore","environmentalScore","suitabilityScore","proximityScore","activityCompatibility","mappedFeature","reasonCodes","environment"]}},"required":["id","name","latitude","longitude","radiusM","distanceM","rank","condition","intensity","reasons","factors","source","recommendation"]}},"mapZones":{"maxItems":60,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"number","exclusiveMinimum":0},"distanceM":{"type":["number","null"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"condition":{"type":"string","enum":["good","mixed","poor","unknown"]},"intensity":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"reasons":{"type":"array","items":{"type":"string"}},"factors":{"type":"object","properties":{"air":{"type":"object","properties":{"europeanAqi":{"type":["number","null"]},"universalAqi":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"at":{"type":["string","null"]},"source":{"type":["string","null"]},"resolutionM":{"type":["number","null"]}},"required":["europeanAqi","at","source","resolutionM"]},"treeCover":{"type":"null"},"traffic":{"type":"null"},"lighting":{"type":["string","null"]},"surface":{"type":["string","null"]}},"required":["air","treeCover","traffic","lighting","surface"]},"source":{"type":"object","properties":{"provider":{"type":"string","const":"openstreetmap"},"url":{"type":"string","format":"uri"},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":["string","null"]}},"required":["provider","url","fetchedAt","updatedAt"]},"recommendation":{"type":"object","properties":{"rankingScore":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"environmentalScore":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"suitabilityScore":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"proximityScore":{"type":"number","minimum":0,"maximum":1},"activityCompatibility":{"type":"string","enum":["unverified","osm_tag_match_unverified_access"]},"mappedFeature":{"type":"object","properties":{"key":{"type":"string","enum":["leisure","natural","highway"]},"value":{"type":"string"}},"required":["key","value"]},"supportedActivities":{"maxItems":7,"type":"array","items":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]}},"reasonCodes":{"type":"array","items":{"type":"string","enum":["mapped_leisure_or_natural_feature","mapped_park","mapped_recreation_ground","mapped_pedestrian_way","mapped_footway","mapped_path","mapped_cycleway","mapped_swimming_pool","mapped_fitness_centre","mapped_fitness_station","regional_air_favorable","regional_air_moderate","regional_air_unfavorable","regional_air_unavailable","regional_tree_cover_measured","regional_weather_comfortable","regional_weather_variable","regional_green_features_mapped","regional_conditions_unavailable"]}},"environment":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","enum":["regional_hexagon","regional_air_only"]},"cellId":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{15}$"},{"type":"null"}]},"score":{"type":"number","minimum":0,"maximum":1},"factors":{"type":"object","properties":{"air":{"anyOf":[{"type":"object","properties":{"europeanAqi":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"universalAqi":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"score":{"type":"number","minimum":0,"maximum":1},"at":{"type":["string","null"]},"source":{"type":"string"},"resolutionM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["europeanAqi","score","at","source","resolutionM"]},{"type":"null"}]},"treeCover":{"anyOf":[{"type":"object","properties":{"treePercent":{"type":"number","minimum":0,"maximum":100},"shrubPercent":{"type":"number","minimum":0,"maximum":100},"grassPercent":{"type":"number","minimum":0,"maximum":100},"cropPercent":{"type":"number","minimum":0,"maximum":100},"builtUpPercent":{"type":"number","minimum":0,"maximum":100},"waterPercent":{"type":"number","minimum":0,"maximum":100},"vegetatedPercent":{"type":"number","minimum":0,"maximum":100},"score":{"type":"number","minimum":0,"maximum":1},"samples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string"},"resolutionM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["treePercent","shrubPercent","grassPercent","cropPercent","builtUpPercent","waterPercent","vegetatedPercent","score","samples","source","resolutionM"]},{"type":"null"}]},"weather":{"anyOf":[{"type":"object","properties":{"temperatureC":{"type":["number","null"]},"windKph":{"type":["number","null"]},"precipitationProbabilityPercent":{"type":["number","null"]},"score":{"type":"number","minimum":0,"maximum":1},"at":{"type":["string","null"]},"source":{"type":"string"},"resolutionM":{"type":"null"}},"required":["temperatureC","windKph","precipitationProbabilityPercent","score","at","source","resolutionM"]},{"type":"null"}]},"green":{"anyOf":[{"type":"object","properties":{"featureCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"saturationCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"score":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"string"}},"required":["featureCount","saturationCount","score","coverage"]},{"type":"null"}]}},"required":["air","treeCover","weather","green"]}},"required":["scope","cellId","score","factors"]},{"type":"null"}]}},"required":["rankingScore","environmentalScore","suitabilityScore","proximityScore","activityCompatibility","mappedFeature","reasonCodes","environment"]}},"required":["id","name","latitude","longitude","radiusM","distanceM","rank","condition","intensity","reasons","factors","source","recommendation"]}}},"required":["area","at","timezone","fetchedAt","activity","personalisation","activitySupport","status","caption","attributions","unavailableFactors","reference","selection","methodology","zones"]},"PlacesDensityDto":{"type":"object","properties":{"areaId":{"type":"string","pattern":"^(geonames:[1-9]\\d{0,9}|amazon:[A-Za-z0-9_.\\-:]{1,200})$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":10000,"type":"integer","minimum":1000,"maximum":50000},"timezone":{"default":"UTC","type":"string","maxLength":80}},"additionalProperties":false},"PlacesDensityResponseDto":{"type":"object","properties":{"area":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"timezone":{"type":"string","maxLength":80}},"required":["id","name","region","country","latitude","longitude","timezone"]},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"radiusM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"coverage":{"type":"string","const":"portugal_osm_points"},"truncated":{"type":"boolean"},"attributions":{"type":"array","items":{"type":"string"}},"points":{"maxItems":4000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["id","latitude","longitude"]}}},"required":["area","fetchedAt","expiresAt","radiusM","coverage","truncated","attributions","points"]},"PlacesHeatmapDto":{"type":"object","properties":{"areaId":{"type":"string","pattern":"^(geonames:[1-9]\\d{0,9}|amazon:[A-Za-z0-9_.\\-:]{1,200})$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":30000,"type":"integer","minimum":10000,"maximum":50000},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"default":"UTC","type":"string","maxLength":80}},"additionalProperties":false},"PlacesHeatmapResponseDto":{"type":"object","properties":{"area":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"timezone":{"type":"string","maxLength":80}},"required":["id","name","region","country","latitude","longitude","timezone"]},"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"timezone":{"type":"string","maxLength":80},"fetchedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"radiusM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"resolution":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"formulaVersion":{"type":"string"},"status":{"type":"string","enum":["available","partial","unavailable"]},"caption":{"type":"string"},"attributions":{"type":"array","items":{"type":"string"}},"unavailableFactors":{"type":"array","items":{"type":"string"}},"cells":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"cellId":{"type":"string","pattern":"^[0-9a-f]{15}$"},"boundary":{"minItems":4,"maxItems":12,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"items":false,"minItems":2,"maxItems":2}},"distanceM":{"type":"integer","minimum":0,"maximum":9007199254740991},"score":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"condition":{"type":"string","enum":["good","mixed","poor","unknown"]},"exclusion":{"anyOf":[{"type":"string","enum":["mostly_water","no_land_cover"]},{"type":"null"}]},"factors":{"type":"object","properties":{"air":{"anyOf":[{"type":"object","properties":{"europeanAqi":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"universalAqi":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"score":{"type":"number","minimum":0,"maximum":1},"at":{"type":["string","null"]},"source":{"type":"string"},"resolutionM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["europeanAqi","score","at","source","resolutionM"]},{"type":"null"}]},"treeCover":{"anyOf":[{"type":"object","properties":{"treePercent":{"type":"number","minimum":0,"maximum":100},"shrubPercent":{"type":"number","minimum":0,"maximum":100},"grassPercent":{"type":"number","minimum":0,"maximum":100},"cropPercent":{"type":"number","minimum":0,"maximum":100},"builtUpPercent":{"type":"number","minimum":0,"maximum":100},"waterPercent":{"type":"number","minimum":0,"maximum":100},"vegetatedPercent":{"type":"number","minimum":0,"maximum":100},"score":{"type":"number","minimum":0,"maximum":1},"samples":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string"},"resolutionM":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["treePercent","shrubPercent","grassPercent","cropPercent","builtUpPercent","waterPercent","vegetatedPercent","score","samples","source","resolutionM"]},{"type":"null"}]},"weather":{"anyOf":[{"type":"object","properties":{"temperatureC":{"type":["number","null"]},"windKph":{"type":["number","null"]},"precipitationProbabilityPercent":{"type":["number","null"]},"score":{"type":"number","minimum":0,"maximum":1},"at":{"type":["string","null"]},"source":{"type":"string"},"resolutionM":{"type":"null"}},"required":["temperatureC","windKph","precipitationProbabilityPercent","score","at","source","resolutionM"]},{"type":"null"}]},"green":{"anyOf":[{"type":"object","properties":{"featureCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"saturationCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"score":{"type":"number","minimum":0,"maximum":1},"coverage":{"type":"string"}},"required":["featureCount","saturationCount","score","coverage"]},{"type":"null"}]}},"required":["air","treeCover","weather","green"]}},"required":["cellId","boundary","distanceM","score","condition","exclusion","factors"]}}},"required":["area","at","timezone","fetchedAt","radiusM","resolution","formulaVersion","status","caption","attributions","unavailableFactors","cells"]},"ShopCategoriesDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":4000},"sort":{"type":"integer","minimum":0,"maximum":1000000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["slug","name","description","sort","enabled","id","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"ShopProductsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"summary":{"default":"","type":"string","maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"source":{"default":null,"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"status":{"default":"draft","type":"string","enum":["draft","published","archived"]},"featured":{"default":false,"type":"boolean"},"sort":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"attributes":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"},{"maxItems":30,"type":"array","items":{"type":"string","maxLength":200}}]}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brand":{"type":"string","const":"Kypace"},"category":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":4000},"sort":{"type":"integer","minimum":0,"maximum":1000000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["slug","name","description","sort","enabled","id","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["gallery","advertisement"]},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"altText":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sha256":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"originalUrl":{"type":"string","format":"uri"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","productId","role","position","altText","imageUrl","imageExpiresIn","width","height","bytes","sha256","createdAt"],"additionalProperties":false}},"variants":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$"},"name":{"type":"string","minLength":1,"maxLength":200},"options":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"type":"string","minLength":1,"maxLength":500}},"weightGrams":{"type":"integer","minimum":1,"maximum":100000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"availableQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"stockOnHand":{"type":"integer","minimum":0,"maximum":9007199254740991},"stockReserved":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"prices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currency":{"type":"string","enum":["EUR","BRL"]},"amountMinor":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"compareAtMinor":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id","currency","amountMinor","compareAtMinor","enabled","revision"],"additionalProperties":false}},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["sku","name","options","weightGrams","enabled","id","productId","availableQuantity","revision","prices"],"additionalProperties":false}},"rating":{"type":"object","properties":{"average":{"anyOf":[{"type":"number","minimum":0,"maximum":5},{"type":"null"}]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["average","count"],"additionalProperties":false},"availability":{"type":"string","enum":["available","out_of_stock","not_for_sale"]},"purchaseAvailable":{"type":"boolean"},"unavailableReasons":{"type":"array","items":{"type":"string","enum":["PRODUCT_UNPUBLISHED","CATEGORY_UNAVAILABLE","VARIANT_NOT_CONFIGURED","PRICE_NOT_CONFIGURED","OUT_OF_STOCK","PAYMENTS_DISABLED"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["categoryId","slug","name","description","id","brand","category","revision","images","variants","rating","availability","purchaseAvailable","unavailableReasons","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"ShopProductDto":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"summary":{"default":"","type":"string","maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"source":{"default":null,"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"status":{"default":"draft","type":"string","enum":["draft","published","archived"]},"featured":{"default":false,"type":"boolean"},"sort":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"attributes":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"},{"maxItems":30,"type":"array","items":{"type":"string","maxLength":200}}]}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brand":{"type":"string","const":"Kypace"},"category":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":4000},"sort":{"type":"integer","minimum":0,"maximum":1000000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["slug","name","description","sort","enabled","id","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["gallery","advertisement"]},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"altText":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sha256":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"originalUrl":{"type":"string","format":"uri"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","productId","role","position","altText","imageUrl","imageExpiresIn","width","height","bytes","sha256","createdAt"],"additionalProperties":false}},"variants":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$"},"name":{"type":"string","minLength":1,"maxLength":200},"options":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"type":"string","minLength":1,"maxLength":500}},"weightGrams":{"type":"integer","minimum":1,"maximum":100000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"availableQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"stockOnHand":{"type":"integer","minimum":0,"maximum":9007199254740991},"stockReserved":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"prices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currency":{"type":"string","enum":["EUR","BRL"]},"amountMinor":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"compareAtMinor":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id","currency","amountMinor","compareAtMinor","enabled","revision"],"additionalProperties":false}},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["sku","name","options","weightGrams","enabled","id","productId","availableQuantity","revision","prices"],"additionalProperties":false}},"rating":{"type":"object","properties":{"average":{"anyOf":[{"type":"number","minimum":0,"maximum":5},{"type":"null"}]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["average","count"],"additionalProperties":false},"availability":{"type":"string","enum":["available","out_of_stock","not_for_sale"]},"purchaseAvailable":{"type":"boolean"},"unavailableReasons":{"type":"array","items":{"type":"string","enum":["PRODUCT_UNPUBLISHED","CATEGORY_UNAVAILABLE","VARIANT_NOT_CONFIGURED","PRICE_NOT_CONFIGURED","OUT_OF_STOCK","PAYMENTS_DISABLED"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["categoryId","slug","name","description","id","brand","category","revision","images","variants","rating","availability","purchaseAvailable","unavailableReasons","createdAt","updatedAt"],"additionalProperties":false},"ShopViewResultDto":{"type":"object","properties":{"accepted":{"type":"boolean"},"counted":{"type":"boolean"}},"required":["accepted","counted"],"additionalProperties":false},"ShopCategoryDto":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":4000},"sort":{"type":"integer","minimum":0,"maximum":1000000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["slug","name","description","sort","enabled","id","revision","createdAt","updatedAt","deletedAt"],"additionalProperties":false},"CreateShopCategoryDto":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":4000},"sort":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"enabled":{"default":true,"type":"boolean"}},"required":["slug","name"],"additionalProperties":false},"ReplaceShopCategoryDto":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":4000},"sort":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["slug","name","expectedRevision"],"additionalProperties":false},"PatchShopCategoryDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":4000},"sort":{"type":"integer","minimum":0,"maximum":1000000},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"CreateShopProductDto":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"summary":{"default":"","type":"string","maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"source":{"default":null,"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"status":{"default":"draft","type":"string","enum":["draft","published","archived"]},"featured":{"default":false,"type":"boolean"},"sort":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"attributes":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"},{"maxItems":30,"type":"array","items":{"type":"string","maxLength":200}}]}}},"required":["categoryId","slug","name","description"],"additionalProperties":false},"ReplaceShopProductDto":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"summary":{"default":"","type":"string","maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"source":{"default":null,"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"status":{"default":"draft","type":"string","enum":["draft","published","archived"]},"featured":{"default":false,"type":"boolean"},"sort":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"attributes":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"},{"maxItems":30,"type":"array","items":{"type":"string","maxLength":200}}]}},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["categoryId","slug","name","description","expectedRevision"],"additionalProperties":false},"PatchShopProductDto":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":200},"summary":{"type":"string","maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"status":{"type":"string","enum":["draft","published","archived"]},"featured":{"type":"boolean"},"sort":{"type":"integer","minimum":0,"maximum":1000000},"attributes":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"},{"maxItems":30,"type":"array","items":{"type":"string","maxLength":200}}]}},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"CreateShopVariantDto":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$"},"name":{"type":"string","minLength":1,"maxLength":200},"options":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"type":"string","minLength":1,"maxLength":500}},"weightGrams":{"type":"integer","minimum":1,"maximum":100000},"enabled":{"default":true,"type":"boolean"}},"required":["sku","name","weightGrams"],"additionalProperties":false},"ShopVariantDto":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$"},"name":{"type":"string","minLength":1,"maxLength":200},"options":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"type":"string","minLength":1,"maxLength":500}},"weightGrams":{"type":"integer","minimum":1,"maximum":100000},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"availableQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"stockOnHand":{"type":"integer","minimum":0,"maximum":9007199254740991},"stockReserved":{"type":"integer","minimum":0,"maximum":9007199254740991},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"prices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currency":{"type":"string","enum":["EUR","BRL"]},"amountMinor":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"compareAtMinor":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id","currency","amountMinor","compareAtMinor","enabled","revision"],"additionalProperties":false}},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["sku","name","options","weightGrams","enabled","id","productId","availableQuantity","revision","prices"],"additionalProperties":false},"ReplaceShopVariantDto":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$"},"name":{"type":"string","minLength":1,"maxLength":200},"options":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"type":"string","minLength":1,"maxLength":500}},"weightGrams":{"type":"integer","minimum":1,"maximum":100000},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["sku","name","weightGrams","expectedRevision"],"additionalProperties":false},"PatchShopVariantDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"options":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":100},"additionalProperties":{"type":"string","minLength":1,"maxLength":500}},"weightGrams":{"type":"integer","minimum":1,"maximum":100000},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"SetShopPriceDto":{"type":"object","properties":{"amountMinor":{"type":"integer","exclusiveMinimum":0,"maximum":100000000},"compareAtMinor":{"default":null,"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":100000000},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["amountMinor","expectedRevision"],"additionalProperties":false},"ShopPriceDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currency":{"type":"string","enum":["EUR","BRL"]},"amountMinor":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"compareAtMinor":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"enabled":{"type":"boolean"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id","currency","amountMinor","compareAtMinor","enabled","revision"],"additionalProperties":false},"ShopInventoryHistoryDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"kind":{"type":"string","enum":["adjustment","sale","return"]},"quantityDelta":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stockAfter":{"type":"integer","minimum":0,"maximum":9007199254740991},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","variantId","orderId","kind","quantityDelta","stockAfter","reason","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"AdjustShopInventoryDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"quantityDelta":{"type":"integer","minimum":-1000000,"maximum":1000000},"reason":{"type":"string","minLength":3,"maxLength":1000}},"required":["clientId","expectedRevision","quantityDelta","reason"],"additionalProperties":false},"ShopInventoryAdjustmentDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"kind":{"type":"string","const":"adjustment"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantityDelta":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stockAfter":{"type":"integer","minimum":0,"maximum":9007199254740991},"reason":{"type":"string"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"replayed":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","variantId","orderId","kind","clientId","quantityDelta","stockAfter","reason","revision","replayed","createdAt"],"additionalProperties":false},"ShopProductAnalyticsDto":{"type":"object","properties":{"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"days":{"type":"number","const":30},"reportedViews":{"type":"integer","minimum":0,"maximum":9007199254740991},"distinctViewers":{"type":"integer","minimum":0,"maximum":9007199254740991},"soldQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"reviewCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"ratingAverage":{"anyOf":[{"type":"number","minimum":0,"maximum":5},{"type":"null"}]},"methodology":{"type":"string"}},"required":["productId","days","reportedViews","distinctViewers","soldQuantity","reviewCount","ratingAverage","methodology"],"additionalProperties":false},"ShopCustomersDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"orderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"paidOrderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"totals":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","enum":["EUR","BRL"]},"paidMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundedMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"netMinor":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["currency","paidMinor","refundedMinor","netMinor"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"lastOrderAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["userId","displayName","email","orderCount","paidOrderCount","totals","createdAt","lastOrderAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"ShopCustomerDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"orderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"paidOrderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"totals":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","enum":["EUR","BRL"]},"paidMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundedMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"netMinor":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["currency","paidMinor","refundedMinor","netMinor"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"lastOrderAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["userId","displayName","email","orderCount","paidOrderCount","totals","createdAt","lastOrderAt"],"additionalProperties":false},"ShopAssetsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["gallery","advertisement"]},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"altText":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sha256":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"originalUrl":{"type":"string","format":"uri"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","productId","role","position","altText","imageUrl","imageExpiresIn","width","height","bytes","sha256","createdAt"],"additionalProperties":false}},"productRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["items","productRevision"],"additionalProperties":false},"ShopAssetDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["gallery","advertisement"]},"position":{"type":"integer","minimum":0,"maximum":9007199254740991},"altText":{"type":"string"},"imageUrl":{"type":"string","format":"uri"},"imageExpiresIn":{"type":"number","const":900},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sha256":{"type":"string"},"source":{"anyOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["figma","higgsfield","editorial"]},"fileKey":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9]+$"},"nodeId":{"type":"string","maxLength":100,"pattern":"^\\d+[:-]\\d+$"},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"note":{"type":"string","maxLength":1000}},"required":["provider"],"additionalProperties":false},{"type":"null"}]},"originalUrl":{"type":"string","format":"uri"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"productRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id","productId","role","position","altText","imageUrl","imageExpiresIn","width","height","bytes","sha256","createdAt","productRevision"],"additionalProperties":false},"ShopReviewsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":"string"},"verifiedPurchase":{"type":"boolean","const":true},"status":{"type":"string","enum":["pending","published","rejected"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"moderationReason":{"type":["string","null"]}},"required":["rating","title","body","id","productId","authorName","verifiedPurchase","status","revision","createdAt","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"CreateShopReviewDto":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["rating","title","body","orderItemId"],"additionalProperties":false},"ShopReviewDto":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"authorName":{"type":"string"},"verifiedPurchase":{"type":"boolean","const":true},"status":{"type":"string","enum":["pending","published","rejected"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"userId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"moderationReason":{"type":"array","items":{"type":"string"}}},"required":["rating","title","body","id","productId","authorName","verifiedPurchase","status","revision","createdAt","updatedAt"],"additionalProperties":false},"ReplaceShopReviewDto":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","minLength":1,"maxLength":200},"body":{"type":"string","minLength":1,"maxLength":10000},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["rating","title","body","expectedRevision"],"additionalProperties":false},"ModerateShopReviewDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"status":{"type":"string","enum":["pending","published","rejected"]},"reason":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]}},"required":["expectedRevision","status"],"additionalProperties":false},"ShopCartResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currency":{"type":"string","enum":["EUR","BRL"]},"status":{"type":"string","const":"active"},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sku":{"type":"string"},"name":{"type":"string"},"productName":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]},"totalMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]},"availableQuantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"available":{"type":"boolean"},"weightGrams":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","variantId","productId","sku","name","productName","quantity","unitPriceMinor","totalMinor","availableQuantity","available","weightGrams"]}},"subtotalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"promotion":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"code":{"type":["string","null"]},"name":{"type":"string"},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000}},"required":["id","code","name","discountMinor"]},{"type":"null"}]},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","currency","status","revision","items","subtotalMinor","promotion","discountMinor","updatedAt"]},"ShopCartItemDto":{"type":"object","properties":{"currency":{"type":"string","enum":["EUR","BRL"]},"quantity":{"type":"integer","minimum":1,"maximum":99},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["currency","quantity","expectedRevision"],"additionalProperties":false},"ShopApplyPromotionDto":{"type":"object","properties":{"currency":{"type":"string","enum":["EUR","BRL"]},"code":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_-]{0,49}$"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["currency","code","expectedRevision"],"additionalProperties":false},"ShopAddressPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"address":{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},"isDefault":{"default":false,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["label","address","id","revision","createdAt","updatedAt"],"additionalProperties":false}}},"required":["items"]},"ShopAddressResponseDto":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"address":{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},"isDefault":{"default":false,"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["label","address","id","revision","createdAt","updatedAt"],"additionalProperties":false},"ShopCreateAddressDto":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"address":{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},"isDefault":{"default":false,"type":"boolean"}},"required":["label","address"],"additionalProperties":false},"ShopReplaceAddressDto":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"address":{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},"isDefault":{"default":false,"type":"boolean"},"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["label","address","expectedRevision"],"additionalProperties":false},"ShopShippingQuoteDto":{"type":"object","properties":{"currency":{"type":"string","enum":["EUR","BRL"]},"addressId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"shippingMethodId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedCartRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["currency","addressId","shippingMethodId","expectedCartRevision"],"additionalProperties":false},"ShopQuoteResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cartId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"cartRevision":{"type":"integer","minimum":1,"maximum":2147483647},"shippingMethodId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currency":{"type":"string","enum":["EUR","BRL"]},"subtotalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"shippingMinor":{"type":"integer","minimum":0,"maximum":1000000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"weightGrams":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimatedBusinessDays":{"type":"object","properties":{"minimum":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maximum":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["minimum","maximum"]},"destination":{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"consumedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"source":{"type":"string","const":"configured_tariff"}},"required":["id","cartId","cartRevision","shippingMethodId","currency","subtotalMinor","discountMinor","shippingMinor","taxMode","taxRateBps","taxMinor","totalMinor","weightGrams","estimatedBusinessDays","destination","expiresAt","consumedAt","source"]},"ShopCheckoutDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quoteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedCartRevision":{"type":"integer","minimum":1,"maximum":2147483647},"billingAddressId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId","quoteId","expectedCartRevision"],"additionalProperties":false},"ShopCheckoutResponseDto":{"type":"object","properties":{"order":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":"string"},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currency":{"type":"string","enum":["EUR","BRL"]},"status":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]},"paymentStatus":{"type":"string","enum":["pending","paid","failed","cancelled","partially_refunded","refunded"]},"fulfillmentStatus":{"type":"string","enum":["unfulfilled","processing","shipped","delivered","returned"]},"subtotalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"shippingMinor":{"type":"integer","minimum":0,"maximum":1000000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"refundedMinor":{"type":"integer","minimum":0,"maximum":1000000000},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"shippingAddress":{"anyOf":[{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},{"type":"null"}]},"billingAddress":{"anyOf":[{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"paidAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancellationRequestedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"snapshot":{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"productName":{"type":"string"},"options":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"weightGrams":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"priceRevision":{"type":"integer","minimum":1,"maximum":2147483647},"variantRevision":{"type":"integer","minimum":1,"maximum":2147483647},"productRevision":{"type":"integer","minimum":1,"maximum":2147483647},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000}},"required":["sku","name","productName","options","weightGrams","priceId","priceRevision","variantRevision","productRevision","taxMode","taxRateBps","taxMinor"]}},"required":["id","productId","variantId","quantity","unitPriceMinor","discountMinor","totalMinor","snapshot"]}},"shipments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"carrier":{"type":"string"},"service":{"type":"string"},"trackingCode":{"type":["string","null"]},"trackingUrl":{"type":["string","null"]},"status":{"type":"string","enum":["pending","shipped","in_transit","delivered","returned"]},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"shippedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"items":{"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orderItemId","quantity"]}}},"required":["id","carrier","service","trackingCode","trackingUrl","status","revision","shippedAt","deliveredAt","createdAt","updatedAt","items"]}},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string"},"status":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","type","status","metadata","createdAt"]}}},"required":["id","number","userId","currency","status","paymentStatus","fulfillmentStatus","subtotalMinor","discountMinor","shippingMinor","taxMode","taxRateBps","taxMinor","totalMinor","refundedMinor","revision","shippingAddress","billingAddress","expiresAt","createdAt","updatedAt","paidAt","cancelledAt","cancellationRequestedAt","items","shipments","events"]},"payment":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"provider":{"type":"string","const":"stripe"},"paymentIntentId":{"type":"string"},"status":{"type":"string"},"currency":{"type":"string","enum":["EUR","BRL"]},"amountMinor":{"type":"integer","minimum":0,"maximum":99999999},"clientSecret":{"type":["string","null"]},"publishableKey":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["checkoutId","orderId","provider","paymentIntentId","status","currency","amountMinor","clientSecret","publishableKey","expiresAt"]}},"required":["order","payment"]},"ShopOrderPageResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":"string"},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currency":{"type":"string","enum":["EUR","BRL"]},"status":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]},"paymentStatus":{"type":"string","enum":["pending","paid","failed","cancelled","partially_refunded","refunded"]},"fulfillmentStatus":{"type":"string","enum":["unfulfilled","processing","shipped","delivered","returned"]},"subtotalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"shippingMinor":{"type":"integer","minimum":0,"maximum":1000000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"refundedMinor":{"type":"integer","minimum":0,"maximum":1000000000},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"shippingAddress":{"anyOf":[{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},{"type":"null"}]},"billingAddress":{"anyOf":[{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"paidAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancellationRequestedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"snapshot":{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"productName":{"type":"string"},"options":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"weightGrams":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"priceRevision":{"type":"integer","minimum":1,"maximum":2147483647},"variantRevision":{"type":"integer","minimum":1,"maximum":2147483647},"productRevision":{"type":"integer","minimum":1,"maximum":2147483647},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000}},"required":["sku","name","productName","options","weightGrams","priceId","priceRevision","variantRevision","productRevision","taxMode","taxRateBps","taxMinor"]}},"required":["id","productId","variantId","quantity","unitPriceMinor","discountMinor","totalMinor","snapshot"]}},"shipments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"carrier":{"type":"string"},"service":{"type":"string"},"trackingCode":{"type":["string","null"]},"trackingUrl":{"type":["string","null"]},"status":{"type":"string","enum":["pending","shipped","in_transit","delivered","returned"]},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"shippedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"items":{"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orderItemId","quantity"]}}},"required":["id","carrier","service","trackingCode","trackingUrl","status","revision","shippedAt","deliveredAt","createdAt","updatedAt","items"]}},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string"},"status":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","type","status","metadata","createdAt"]}}},"required":["id","number","userId","currency","status","paymentStatus","fulfillmentStatus","subtotalMinor","discountMinor","shippingMinor","taxMode","taxRateBps","taxMinor","totalMinor","refundedMinor","revision","shippingAddress","billingAddress","expiresAt","createdAt","updatedAt","paidAt","cancelledAt","cancellationRequestedAt","items","shipments","events"]}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"ShopOrderResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"number":{"type":"string"},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"currency":{"type":"string","enum":["EUR","BRL"]},"status":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]},"paymentStatus":{"type":"string","enum":["pending","paid","failed","cancelled","partially_refunded","refunded"]},"fulfillmentStatus":{"type":"string","enum":["unfulfilled","processing","shipped","delivered","returned"]},"subtotalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"shippingMinor":{"type":"integer","minimum":0,"maximum":1000000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"refundedMinor":{"type":"integer","minimum":0,"maximum":1000000000},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"shippingAddress":{"anyOf":[{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},{"type":"null"}]},"billingAddress":{"anyOf":[{"type":"object","properties":{"recipientName":{"type":"string","minLength":2,"maxLength":200},"line1":{"type":"string","minLength":2,"maxLength":300},"line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"city":{"type":"string","minLength":1,"maxLength":120},"region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"postalCode":{"type":"string","minLength":2,"maxLength":20},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phone":{"anyOf":[{"type":"string","minLength":5,"maxLength":40},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]}},"required":["recipientName","line1","city","postalCode","countryCode"],"additionalProperties":false},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"paidAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"cancellationRequestedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceMinor":{"type":"integer","minimum":0,"maximum":1000000000},"discountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"totalMinor":{"type":"integer","minimum":0,"maximum":1000000000},"snapshot":{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"productName":{"type":"string"},"options":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"weightGrams":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"priceRevision":{"type":"integer","minimum":1,"maximum":2147483647},"variantRevision":{"type":"integer","minimum":1,"maximum":2147483647},"productRevision":{"type":"integer","minimum":1,"maximum":2147483647},"taxMode":{"type":"string","enum":["inclusive","exclusive"]},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000},"taxMinor":{"type":"integer","minimum":0,"maximum":1000000000}},"required":["sku","name","productName","options","weightGrams","priceId","priceRevision","variantRevision","productRevision","taxMode","taxRateBps","taxMinor"]}},"required":["id","productId","variantId","quantity","unitPriceMinor","discountMinor","totalMinor","snapshot"]}},"shipments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"carrier":{"type":"string"},"service":{"type":"string"},"trackingCode":{"type":["string","null"]},"trackingUrl":{"type":["string","null"]},"status":{"type":"string","enum":["pending","shipped","in_transit","delivered","returned"]},"revision":{"type":"integer","minimum":1,"maximum":2147483647},"shippedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"items":{"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["orderItemId","quantity"]}}},"required":["id","carrier","service","trackingCode","trackingUrl","status","revision","shippedAt","deliveredAt","createdAt","updatedAt","items"]}},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sequence":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string"},"status":{"type":"string","enum":["awaiting_payment","paid","processing","shipped","delivered","cancelled","partially_refunded","refunded"]},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","sequence","type","status","metadata","createdAt"]}}},"required":["id","number","userId","currency","status","paymentStatus","fulfillmentStatus","subtotalMinor","discountMinor","shippingMinor","taxMode","taxRateBps","taxMinor","totalMinor","refundedMinor","revision","shippingAddress","billingAddress","expiresAt","createdAt","updatedAt","paidAt","cancelledAt","cancellationRequestedAt","items","shipments","events"]},"ShopRevisionDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"ShopShipmentDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"carrier":{"type":"string","minLength":1,"maxLength":200},"service":{"type":"string","minLength":1,"maxLength":200},"trackingCode":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"trackingUrl":{"default":null,"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["orderItemId","quantity"],"additionalProperties":false}}},"required":["expectedRevision","clientId","carrier","service","items"],"additionalProperties":false},"ShopShipmentUpdateDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"maximum":2147483647},"status":{"type":"string","enum":["in_transit","delivered","returned"]},"trackingCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"trackingUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]}},"required":["expectedRevision","status"],"additionalProperties":false},"ShopStatisticsResponseDto":{"type":"object","properties":{"orders":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"awaitingPayment":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paidOrders":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"products":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeCarts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","enum":["EUR","BRL"]},"paidMinor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedMinor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["currency","paidMinor","refundedMinor"]}}},"required":["orders","awaitingPayment","paidOrders","products","activeCarts","currencies"]},"ShopShippingMethodsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"countries":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"currency":{"type":"string","enum":["EUR","BRL"]},"baseMinor":{"type":"integer","minimum":0,"maximum":100000000},"perKgMinor":{"type":"integer","minimum":0,"maximum":100000000},"freeAboveMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"minBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxWeightGrams":{"type":"integer","minimum":1,"maximum":1000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"],"description":"Whether the configured rate is already included in prices or added to the order total."},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Administrator-configured tax basis points; 2300 means 23%. No tax rate is inferred."},"taxName":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"provider":{"type":"string","const":"configured"},"estimatedDelivery":{"type":"boolean","const":true}},"required":["key","name","description","countries","currency","baseMinor","perKgMinor","freeAboveMinor","minBusinessDays","maxBusinessDays","maxWeightGrams","taxMode","taxRateBps","taxName","enabled","id","revision","createdAt","updatedAt","deletedAt","provider","estimatedDelivery"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"ShopPromotionsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"currency":{"type":"string","enum":["EUR","BRL"]},"kind":{"type":"string","enum":["percentage","fixed"]},"percentBps":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Percentage in basis points; 1500 is a 15% discount. Set null for a fixed discount."},"amountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}],"description":"Fixed discount in cents. Set null for a percentage discount."},"minSubtotalMinor":{"type":"integer","minimum":0,"maximum":100000000},"maxDiscountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"maxPerUser":{"type":"integer","minimum":1,"maximum":100000},"automatic":{"type":"boolean","const":true},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eligibilityEvaluated":{"type":"boolean","const":false}},"required":["name","description","currency","kind","percentBps","amountMinor","minSubtotalMinor","maxDiscountMinor","maxPerUser","automatic","startsAt","endsAt","id","eligibilityEvaluated"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"CreateShopShippingMethodDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"countries":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"currency":{"type":"string","enum":["EUR","BRL"]},"baseMinor":{"type":"integer","minimum":0,"maximum":100000000},"perKgMinor":{"default":0,"type":"integer","minimum":0,"maximum":100000000},"freeAboveMinor":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"minBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxWeightGrams":{"default":1000000,"type":"integer","minimum":1,"maximum":1000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"],"description":"Whether the configured rate is already included in prices or added to the order total."},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Administrator-configured tax basis points; 2300 means 23%. No tax rate is inferred."},"taxName":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"}},"required":["key","name","countries","currency","baseMinor","minBusinessDays","maxBusinessDays","taxMode","taxRateBps"],"additionalProperties":false},"ShopShippingMethodDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"countries":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"currency":{"type":"string","enum":["EUR","BRL"]},"baseMinor":{"type":"integer","minimum":0,"maximum":100000000},"perKgMinor":{"type":"integer","minimum":0,"maximum":100000000},"freeAboveMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"minBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxWeightGrams":{"type":"integer","minimum":1,"maximum":1000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"],"description":"Whether the configured rate is already included in prices or added to the order total."},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Administrator-configured tax basis points; 2300 means 23%. No tax rate is inferred."},"taxName":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"provider":{"type":"string","const":"configured"},"estimatedDelivery":{"type":"boolean","const":true}},"required":["key","name","description","countries","currency","baseMinor","perKgMinor","freeAboveMinor","minBusinessDays","maxBusinessDays","maxWeightGrams","taxMode","taxRateBps","taxName","enabled","id","revision","createdAt","updatedAt","deletedAt","provider","estimatedDelivery"],"additionalProperties":false},"ReplaceShopShippingMethodDto":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"countries":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"currency":{"type":"string","enum":["EUR","BRL"]},"baseMinor":{"type":"integer","minimum":0,"maximum":100000000},"perKgMinor":{"default":0,"type":"integer","minimum":0,"maximum":100000000},"freeAboveMinor":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"minBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxWeightGrams":{"default":1000000,"type":"integer","minimum":1,"maximum":1000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"],"description":"Whether the configured rate is already included in prices or added to the order total."},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Administrator-configured tax basis points; 2300 means 23%. No tax rate is inferred."},"taxName":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["key","name","countries","currency","baseMinor","minBusinessDays","maxBusinessDays","taxMode","taxRateBps","expectedRevision"],"additionalProperties":false},"PatchShopShippingMethodDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"countries":{"minItems":1,"maxItems":250,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"baseMinor":{"type":"integer","minimum":0,"maximum":100000000},"perKgMinor":{"type":"integer","minimum":0,"maximum":100000000},"freeAboveMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"minBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxBusinessDays":{"type":"integer","minimum":0,"maximum":365},"maxWeightGrams":{"type":"integer","minimum":1,"maximum":1000000},"taxMode":{"type":"string","enum":["inclusive","exclusive"],"description":"Whether the configured rate is already included in prices or added to the order total."},"taxRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Administrator-configured tax basis points; 2300 means 23%. No tax rate is inferred."},"taxName":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"AdminShopPromotionsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"type":"string","minLength":1,"maxLength":50,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"currency":{"type":"string","enum":["EUR","BRL"]},"kind":{"type":"string","enum":["percentage","fixed"]},"percentBps":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Percentage in basis points; 1500 is a 15% discount. Set null for a fixed discount."},"amountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}],"description":"Fixed discount in cents. Set null for a percentage discount."},"minSubtotalMinor":{"type":"integer","minimum":0,"maximum":100000000},"maxDiscountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"maxRedemptions":{"anyOf":[{"type":"integer","minimum":1,"maximum":100000000},{"type":"null"}]},"maxPerUser":{"type":"integer","minimum":1,"maximum":100000},"automatic":{"type":"boolean"},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"usage":{"type":"object","properties":{"reserved":{"type":"integer","minimum":0,"maximum":9007199254740991},"redeemed":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["reserved","redeemed"],"additionalProperties":false}},"required":["code","name","description","currency","kind","percentBps","amountMinor","minSubtotalMinor","maxDiscountMinor","maxRedemptions","maxPerUser","automatic","startsAt","endsAt","enabled","id","revision","createdAt","updatedAt","deletedAt","usage"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"CreateShopPromotionDto":{"type":"object","properties":{"code":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":50,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"currency":{"type":"string","enum":["EUR","BRL"]},"kind":{"type":"string","enum":["percentage","fixed"]},"percentBps":{"default":null,"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Percentage in basis points; 1500 is a 15% discount. Set null for a fixed discount."},"amountMinor":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}],"description":"Fixed discount in cents. Set null for a percentage discount."},"minSubtotalMinor":{"default":0,"type":"integer","minimum":0,"maximum":100000000},"maxDiscountMinor":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"maxRedemptions":{"default":null,"anyOf":[{"type":"integer","minimum":1,"maximum":100000000},{"type":"null"}]},"maxPerUser":{"default":1,"type":"integer","minimum":1,"maximum":100000},"automatic":{"default":false,"type":"boolean"},"startsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"}},"required":["name","currency","kind"],"additionalProperties":false},"ShopPromotionDto":{"type":"object","properties":{"code":{"anyOf":[{"type":"string","minLength":1,"maxLength":50,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"currency":{"type":"string","enum":["EUR","BRL"]},"kind":{"type":"string","enum":["percentage","fixed"]},"percentBps":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Percentage in basis points; 1500 is a 15% discount. Set null for a fixed discount."},"amountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}],"description":"Fixed discount in cents. Set null for a percentage discount."},"minSubtotalMinor":{"type":"integer","minimum":0,"maximum":100000000},"maxDiscountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"maxRedemptions":{"anyOf":[{"type":"integer","minimum":1,"maximum":100000000},{"type":"null"}]},"maxPerUser":{"type":"integer","minimum":1,"maximum":100000},"automatic":{"type":"boolean"},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enabled":{"type":"boolean"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"usage":{"type":"object","properties":{"reserved":{"type":"integer","minimum":0,"maximum":9007199254740991},"redeemed":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["reserved","redeemed"],"additionalProperties":false}},"required":["code","name","description","currency","kind","percentBps","amountMinor","minSubtotalMinor","maxDiscountMinor","maxRedemptions","maxPerUser","automatic","startsAt","endsAt","enabled","id","revision","createdAt","updatedAt","deletedAt","usage"],"additionalProperties":false},"ReplaceShopPromotionDto":{"type":"object","properties":{"code":{"default":null,"anyOf":[{"type":"string","minLength":1,"maxLength":50,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"default":"","type":"string","maxLength":10000},"currency":{"type":"string","enum":["EUR","BRL"]},"kind":{"type":"string","enum":["percentage","fixed"]},"percentBps":{"default":null,"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Percentage in basis points; 1500 is a 15% discount. Set null for a fixed discount."},"amountMinor":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}],"description":"Fixed discount in cents. Set null for a percentage discount."},"minSubtotalMinor":{"default":0,"type":"integer","minimum":0,"maximum":100000000},"maxDiscountMinor":{"default":null,"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"maxRedemptions":{"default":null,"anyOf":[{"type":"integer","minimum":1,"maximum":100000000},{"type":"null"}]},"maxPerUser":{"default":1,"type":"integer","minimum":1,"maximum":100000},"automatic":{"default":false,"type":"boolean"},"startsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"default":null,"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enabled":{"default":true,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["name","currency","kind","expectedRevision"],"additionalProperties":false},"PatchShopPromotionDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":10000},"kind":{"type":"string","enum":["percentage","fixed"]},"percentBps":{"anyOf":[{"type":"integer","minimum":1,"maximum":10000},{"type":"null"}],"description":"Percentage in basis points; 1500 is a 15% discount. Set null for a fixed discount."},"amountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}],"description":"Fixed discount in cents. Set null for a percentage discount."},"minSubtotalMinor":{"type":"integer","minimum":0,"maximum":100000000},"maxDiscountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"maxRedemptions":{"anyOf":[{"type":"integer","minimum":1,"maximum":100000000},{"type":"null"}]},"maxPerUser":{"type":"integer","minimum":1,"maximum":100000},"automatic":{"type":"boolean"},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enabled":{"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"ShopPaymentCapabilitiesDto":{"type":"object","properties":{"provider":{"type":"string","const":"stripe"},"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["test","live"]},"currencies":{"type":"array","items":{"type":"string","enum":["EUR","BRL"]}},"paymentMethodSelection":{"type":"string","const":"stripe_dynamic"},"savedPaymentMethods":{"type":"boolean"},"publishableKey":{"type":"array","items":{"type":"string"}},"unavailableReason":{"anyOf":[{"type":"string","enum":["payments_disabled","provider_not_configured"]},{"type":"null"}]}},"required":["provider","enabled","mode","currencies","paymentMethodSelection","savedPaymentMethods","publishableKey","unavailableReason"]},"ShopOrderPaymentDto":{"type":"object","properties":{"checkoutId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"provider":{"type":"string","const":"stripe"},"paymentIntentId":{"type":"string"},"status":{"type":"string"},"currency":{"type":"string","enum":["EUR","BRL"]},"amountMinor":{"type":"integer","minimum":0,"maximum":99999999},"clientSecret":{"type":"array","items":{"type":"string"}},"publishableKey":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["checkoutId","orderId","provider","paymentIntentId","status","currency","amountMinor","clientSecret","publishableKey","expiresAt"]},"ShopRefundsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountMinor":{"type":"integer","minimum":0,"maximum":99999999},"currency":{"type":"string","enum":["EUR","BRL"]},"reason":{"type":"string"},"status":{"type":"string","enum":["pending","processing","requires_action","succeeded","failed","cancelled"]},"providerRefundId":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orderId","clientId","amountMinor","currency","reason","status","providerRefundId","createdAt","updatedAt"]}}},"required":["items"]},"ShopPaymentMethodsDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"provider":{"type":"string","const":"stripe"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"brand":{"type":["string","null"]},"last4":{"type":["string","null"]},"expiryMonth":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiryYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","type","brand","last4","expiryMonth","expiryYear"]}},"hasMore":{"type":"boolean"}},"required":["enabled","provider","items","hasMore"]},"ShopPaymentSetupRequestDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["clientId"],"additionalProperties":false},"ShopPaymentSetupDto":{"type":"object","properties":{"provider":{"type":"string","const":"stripe"},"customerId":{"type":"string"},"setupIntentId":{"type":"string"},"clientSecret":{"type":"string"},"publishableKey":{"type":"string"},"usage":{"type":"string","const":"on_session"}},"required":["provider","customerId","setupIntentId","clientSecret","publishableKey","usage"]},"ShopPaymentCustomerSessionDto":{"type":"object","properties":{"provider":{"type":"string","const":"stripe"},"customerId":{"type":"string"},"clientSecret":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"publishableKey":{"type":"string"}},"required":["provider","customerId","clientSecret","expiresAt","publishableKey"]},"ShopRefundRequestDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountMinor":{"type":"integer","minimum":0,"maximum":99999999},"reason":{"type":"string","minLength":3,"maxLength":500}},"required":["clientId","amountMinor","reason"],"additionalProperties":false},"ShopRefundDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"amountMinor":{"type":"integer","minimum":0,"maximum":99999999},"currency":{"type":"string","enum":["EUR","BRL"]},"reason":{"type":"string"},"status":{"type":"string","enum":["pending","processing","requires_action","succeeded","failed","cancelled"]},"providerRefundId":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orderId","clientId","amountMinor","currency","reason","status","providerRefundId","createdAt","updatedAt"]},"ShopOrderPaymentsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["creating","ready","completed","failed","expired","cancelled"]},"providerStatus":{"type":["string","null"]},"providerPaymentIntentId":{"type":["string","null"]},"mode":{"type":"string","enum":["test","live"]},"environment":{"type":"string"},"lastErrorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","orderId","status","providerStatus","providerPaymentIntentId","mode","environment","lastErrorCode","createdAt","updatedAt","expiresAt"]}}},"required":["items"]},"ShopRefundReconciliationRequestDto":{"type":"object","properties":{"providerRefundId":{"type":"string","maxLength":255,"pattern":"^re_[A-Za-z0-9]+$"}},"required":["providerRefundId"],"additionalProperties":false},"ShopPaymentReconciliationRequestDto":{"type":"object","properties":{"paymentIntentId":{"type":"string","maxLength":255,"pattern":"^pi_[A-Za-z0-9]+$"}},"required":["paymentIntentId"],"additionalProperties":false},"ShopPaymentMaintenanceDto":{"type":"object","properties":{"webhooks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"payments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refunds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["webhooks","payments","refunds"]},"ShopWebhookReceiptDto":{"type":"object","properties":{"received":{"type":"boolean","const":true},"duplicate":{"type":"boolean"}},"required":["received","duplicate"]},"RequestShopSupportDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"subject":{"type":"string","minLength":1,"maxLength":160},"message":{"type":"string","minLength":1,"maxLength":4000},"context":{"type":"object","properties":{"platform":{"type":"string","enum":["android","ios","web"]},"appVersion":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[a-zA-Z0-9.+_-]+$"},"locale":{"type":"string","minLength":2,"maxLength":24,"pattern":"^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["platform","appVersion"],"additionalProperties":false},"contextConsent":{"type":"object","properties":{"version":{"type":"string","minLength":1,"maxLength":64},"accepted":{"type":"boolean","const":true}},"required":["version","accepted"],"additionalProperties":false}},"required":["clientId","category","subject","message"],"additionalProperties":false},"ShopSupportReceiptDto":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"operation":{"type":"string","const":"create"},"messageId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"supportPath":{"type":"string","pattern":"^\\/v1\\/me\\/support-requests\\/[0-9a-f-]{36}$"},"messagesPath":{"type":"string","pattern":"^\\/v1\\/me\\/support-requests\\/[0-9a-f-]{36}\\/messages$"}},"required":["requestId","version","operation","messageId","orderId","supportPath","messagesPath"],"additionalProperties":false},"ShopSupportListDto":{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"category":{"type":"string","enum":["general","technical_issue","feedback","account_privacy"]},"subject":{"type":"string"},"status":{"type":"string","enum":["open","in_progress","waiting_user","resolved","closed"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"messageCount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"assigned":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"closedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"supportPath":{"type":"string","pattern":"^\\/v1\\/me\\/support-requests\\/[0-9a-f-]{36}$"},"messagesPath":{"type":"string","pattern":"^\\/v1\\/me\\/support-requests\\/[0-9a-f-]{36}\\/messages$"}},"required":["requestId","category","subject","status","version","messageCount","assigned","createdAt","updatedAt","closedAt","supportPath","messagesPath"],"additionalProperties":false}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["orderId","items","nextCursor"],"additionalProperties":false},"RequestShopReturnDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reason":{"type":"string","minLength":3,"maxLength":2000},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["orderItemId","quantity"],"additionalProperties":false}}},"required":["clientId","reason","items"],"additionalProperties":false},"ShopReturnDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderNumber":{"type":"string"},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["requested","approved","rejected","received","refund_pending","refunded","cancelled"]},"currency":{"type":"string","enum":["EUR","BRL"]},"reason":{"type":"string"},"adminResponse":{"type":"array","items":{"type":"string"}},"refundAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]},"refundId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"refundStatus":{"anyOf":[{"type":"string","enum":["pending","processing","requires_action","succeeded","failed","cancelled"]},{"type":"null"}]},"lastErrorCode":{"type":"array","items":{"type":"string"}},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"refundedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"replayed":{"type":"boolean"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"receivedQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"restockQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundAmountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"inspectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orderItemId","productId","variantId","quantity","receivedQuantity","restockQuantity","refundAmountMinor","inspectedAt"],"additionalProperties":false}}},"required":["id","orderId","orderNumber","userId","clientId","status","currency","reason","adminResponse","refundAmountMinor","refundId","refundStatus","lastErrorCode","receivedAt","refundedAt","revision","createdAt","updatedAt","items"],"additionalProperties":false},"ShopReturnsDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderNumber":{"type":"string"},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["requested","approved","rejected","received","refund_pending","refunded","cancelled"]},"currency":{"type":"string","enum":["EUR","BRL"]},"reason":{"type":"string"},"adminResponse":{"type":["string","null"]},"refundAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000},{"type":"null"}]},"refundId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"refundStatus":{"anyOf":[{"type":"string","enum":["pending","processing","requires_action","succeeded","failed","cancelled"]},{"type":"null"}]},"lastErrorCode":{"type":["string","null"]},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"refundedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"replayed":{"type":"boolean"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"productId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"receivedQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"restockQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundAmountMinor":{"type":"integer","minimum":0,"maximum":1000000000},"inspectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["id","orderItemId","productId","variantId","quantity","receivedQuantity","restockQuantity","refundAmountMinor","inspectedAt"],"additionalProperties":false}}},"required":["id","orderId","orderNumber","userId","clientId","status","currency","reason","adminResponse","refundAmountMinor","refundId","refundStatus","lastErrorCode","receivedAt","refundedAt","revision","createdAt","updatedAt","items"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false},"CancelShopReturnDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["expectedRevision"],"additionalProperties":false},"DecideShopReturnDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"decision":{"type":"string","enum":["approved","rejected"]},"adminResponse":{"type":"string","minLength":3,"maxLength":2000},"refundAmountMinor":{"type":"integer","minimum":0,"maximum":1000000000}},"required":["expectedRevision","decision","adminResponse"],"additionalProperties":false},"ReceiveShopReturnDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"restockQuantity":{"type":"integer","minimum":0,"maximum":99}},"required":["orderItemId","restockQuantity"],"additionalProperties":false}}},"required":["clientId","expectedRevision","items"],"additionalProperties":false},"RefundShopReturnDto":{"type":"object","properties":{"clientId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["clientId","expectedRevision"],"additionalProperties":false},"UpdateQuickTipDto":{"type":"object","properties":{"state":{"type":"string","enum":["snoozed","done"]},"outcome":{"type":"string","enum":["acted","dismissed"]}},"required":["state"],"additionalProperties":false},"ThemeCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"group":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","key","name","sort"]},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accentLight":{"type":"string"},"accentDark":{"type":"string"},"usesBrandGradient":{"type":"boolean"},"isDefault":{"type":"boolean"},"artMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"artUrl":{"description":"Presigned GET for the artwork, minted per read. Null for a brand-gradient theme.","type":["string","null"]},"artExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Seconds artUrl stays valid. Re-read the catalogue rather than caching the URL."}},"required":["key","groupId","group","name","sort","accentLight","accentDark","usesBrandGradient","isDefault","artMediaId","artUrl","artExpiresIn"]}},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","key","name","sort"]}}},"required":["items","groups"]},"AdminThemeGroupCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","key","name","sort","enabled","deletedAt","createdAt","updatedAt"]}}},"required":["items"]},"AdminThemeGroupDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","key","name","sort","enabled","deletedAt","createdAt","updatedAt"]},"CreateThemeGroupDto":{"type":"object","properties":{"key":{"type":"string","minLength":2,"maxLength":40,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":60},"sort":{"default":0,"type":"integer","minimum":0,"maximum":10000},"enabled":{"default":true,"type":"boolean"}},"required":["key","name"],"additionalProperties":false},"UpdateThemeGroupDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"sort":{"type":"integer","minimum":0,"maximum":10000},"enabled":{"type":"boolean"}},"additionalProperties":false},"AdminThemeCatalogueDto":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"group":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","key","name","sort"]},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accentLight":{"type":"string"},"accentDark":{"type":"string"},"usesBrandGradient":{"type":"boolean"},"isDefault":{"type":"boolean"},"artMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"artUrl":{"description":"Presigned GET for the artwork, minted per read. Null for a brand-gradient theme.","type":["string","null"]},"artExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Seconds artUrl stays valid. Re-read the catalogue rather than caching the URL."},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["key","groupId","group","name","sort","accentLight","accentDark","usesBrandGradient","isDefault","artMediaId","artUrl","artExpiresIn","enabled","deletedAt","createdAt","updatedAt"]}},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","key","name","sort","enabled","deletedAt","createdAt","updatedAt"]}}},"required":["items","groups"]},"AdminThemeDto":{"type":"object","properties":{"key":{"type":"string"},"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"group":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","key","name","sort"]},"name":{"type":"string"},"sort":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accentLight":{"type":"string"},"accentDark":{"type":"string"},"usesBrandGradient":{"type":"boolean"},"isDefault":{"type":"boolean"},"artMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"artUrl":{"description":"Presigned GET for the artwork, minted per read. Null for a brand-gradient theme.","type":"array","items":{"type":"string"}},"artExpiresIn":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Seconds artUrl stays valid. Re-read the catalogue rather than caching the URL."},"enabled":{"type":"boolean"},"deletedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["key","groupId","group","name","sort","accentLight","accentDark","usesBrandGradient","isDefault","artMediaId","artUrl","artExpiresIn","enabled","deletedAt","createdAt","updatedAt"]},"CreateThemeDto":{"type":"object","properties":{"key":{"type":"string","minLength":2,"maxLength":40,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"groupId":{"description":"Theme group UUID. Omit on creation to use Kypace; omit on replacement to keep the current group.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":60},"sort":{"default":0,"type":"integer","minimum":0,"maximum":10000},"enabled":{"default":true,"type":"boolean"},"accentLight":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"accentDark":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"artMediaId":{"default":null,"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"usesBrandGradient":{"default":false,"type":"boolean"},"isDefault":{"default":false,"type":"boolean"}},"required":["key","name","accentLight","accentDark"],"additionalProperties":false},"UpdateThemeDto":{"type":"object","properties":{"groupId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":60},"sort":{"type":"integer","minimum":0,"maximum":10000},"enabled":{"type":"boolean"},"accentLight":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"accentDark":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"artMediaId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"usesBrandGradient":{"type":"boolean"},"isDefault":{"type":"boolean"}},"additionalProperties":false},"ThemeArtDto":{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["mediaId"],"additionalProperties":false},"FriendsActivityRoutesQueryDto":{"type":"object","properties":{"latitude":{"type":"number","minimum":-85,"maximum":85},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"default":10000,"type":"integer","minimum":250,"maximum":25000},"limit":{"default":8,"type":"integer","minimum":1,"maximum":12},"cursor":{"type":"string","minLength":1,"maxLength":512}},"required":["latitude","longitude"],"additionalProperties":false},"FriendsActivityRoutesResponseDto":{"type":"object","properties":{"source":{"type":"string","const":"shared_recorded_activities"},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"origin":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"radiusM":{"type":"integer","minimum":250,"maximum":25000}},"required":["latitude","longitude","radiusM"]},"items":{"maxItems":12,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"author":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"displayName":{"type":"string"},"avatar":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","url","expiresIn"]},{"type":"null"}]}},"required":["id","displayName","avatar"]},"sharedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"activity":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sport":{"type":"string","enum":["running","trail_running","walking","cycling","swimming","hiking","strength_training"]},"title":{"anyOf":[{"type":"string","maxLength":150},{"type":"null"}]},"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"distanceM":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"durationS":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"averageSpeedMps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"route":{"type":"object","properties":{"segments":{"minItems":1,"maxItems":256,"type":"array","items":{"minItems":2,"maxItems":512,"type":"array","items":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]}}},"hiddenStartM":{"type":"number","minimum":0},"hiddenEndM":{"type":"number","minimum":0},"privateZonesApplied":{"type":"boolean","const":true},"startVisible":{"type":"boolean"},"endVisible":{"type":"boolean"},"kilometreMarks":{"maxItems":512,"type":"array","items":{"type":"object","properties":{"kilometre":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"segmentIndex":{"type":"integer","minimum":0,"maximum":9007199254740991},"pointIndex":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kilometre","segmentIndex","pointIndex"]}}},"required":["segments","hiddenStartM","hiddenEndM","privateZonesApplied","startVisible","endVisible","kilometreMarks"]},"options":{"type":"object","properties":{"includeRoute":{"type":"boolean","const":true},"includePaceTime":{"type":"boolean"},"includeEndpoints":{"type":"boolean"}},"required":["includeRoute","includePaceTime","includeEndpoints"]}},"required":["id","sport","title","startedAt","distanceM","durationS","averageSpeedMps","route","options"]}},"required":["id","author","sharedAt","activity"]}},"nextCursor":{"type":"array","items":{"type":"string"}}},"required":["source","generatedAt","expiresAt","origin","items","nextCursor"]},"AdminBulkImportResponseDto":{"type":"object","properties":{"created":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":0,"maximum":9007199254740991},"unknown":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["themes","plans","videos","tracks","playlists","groups","events"]},"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["created","failed","skipped","unknown"]},"ref":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,59}$"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"key":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["kind","index","status"],"additionalProperties":false}}},"required":["created","failed","skipped","unknown","items"],"additionalProperties":false},"AdminApiError":{"type":"object","required":["code","message","traceId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"traceId":{"type":"string"},"details":{}}}}}}