{"openapi":"3.0.1","info":{"title":"Api documentation","version":"1.0.0"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"AdRewardMetricsResponse":{"type":"object","properties":{"windowDays":{"type":"number"},"rawRetentionDays":{"type":"number"},"generatedAt":{"type":"string"},"totals":{"$ref":"#/components/schemas/AdRewardMetricsTotals"},"series":{"type":"array","items":{}},"byPlatform":{"type":"array","items":{}},"byCountry":{"type":"array","items":{}},"byPolicy":{"type":"array","items":{}},"byRejection":{"type":"array","items":{}},"topEarners":{"type":"array","items":{}},"lifetime":{"$ref":"#/components/schemas/AdRewardMetricsTotals"}}},"AdRewardMetricsTotals":{"type":"object","properties":{"adsStarted":{"type":"number"},"adsShown":{"type":"number"},"adsCompleted":{"type":"number"},"adsRejected":{"type":"number"},"adsAbandoned":{"type":"number"},"adsInvalid":{"type":"number"},"completionRate":{"type":"number"},"creditsGranted":{"type":"string"},"creditsPerCompletedAd":{"type":"string"},"uniqueEarners":{"type":"number"},"cappedUsers":{"type":"number"},"medianSsvLatencyMs":{"type":"number","nullable":true},"p95SsvLatencyMs":{"type":"number","nullable":true}},"required":["medianSsvLatencyMs","p95SsvLatencyMs"]},"Unauthorized":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The error name","example":"UNAUTHORIZED","default":"UNAUTHORIZED"},"message":{"type":"string","minLength":1,"description":"An error message"},"status":{"type":"number","description":"The status code of the exception","example":401,"default":401},"errors":{"type":"array","items":{"$ref":"#/components/schemas/GenericError"},"description":"A list of related errors"},"stack":{"type":"string","description":"The stack trace (only in development mode)"}},"required":["name","message","status"]},"GenericError":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The error name"},"message":{"type":"string","minLength":1,"description":"An error message"}},"additionalProperties":true,"required":["name","message"]},"Forbidden":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The error name","example":"FORBIDDEN","default":"FORBIDDEN"},"message":{"type":"string","minLength":1,"description":"An error message"},"status":{"type":"number","description":"The status code of the exception","example":403,"default":403},"errors":{"type":"array","items":{"$ref":"#/components/schemas/GenericError"},"description":"A list of related errors"},"stack":{"type":"string","description":"The stack trace (only in development mode)"}},"required":["name","message","status"]},"GetItemsResponseRead":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserPaymentOrderModel"}},"total":{"type":"number"}}},"AdRewardSessionModel":{"type":"object","properties":{"nonce":{"type":"string","minLength":1}},"required":["nonce"]},"AdRewardSessionSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","nonce","userId","policyId","placement","status","policySnapshot","platform","appVersion","deviceId","ipHash","countryIso2","adUnitId","creditsOnCompletion","bundleIndex","createdAt","expiresAt","shownAt","ssvReceivedAt","rewardedAt","ssvTransactionId","ssvAdNetwork","ssvKeyId","ssvRewardAmount","ssvRewardItem","creditsGranted","creditTransactionId","rejectionReason","rawCallback","updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","policy.id","policy.name","policy.description","policy.placement","policy.isActive","policy.sortOrder","policy.platforms","policy.targetCountries","policy.startsAt","policy.endsAt","policy.rewardMode","policy.creditsPerAd","policy.adsRequiredPerReward","policy.creditsPerReward","policy.maxAdsPerDay","policy.maxAdsPerHour","policy.maxCreditsPerDay","policy.maxCreditsPerMonth","policy.minSecondsBetweenAds","policy.maxAdsPerDevicePerDay","policy.maxAdsPerIpPerDay","policy.maxAccountsPerDevicePerDay","policy.requireEmailVerified","policy.minAccountAgeHours","policy.adUnitIdAndroid","policy.adUnitIdIos","policy.ssvRequired","policy.dailyResetTimezone","policy.createdAt","policy.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","nonce":"asc","userId":"asc","policyId":"asc","placement":"asc","status":"asc","policySnapshot":"asc","platform":"asc","appVersion":"asc","deviceId":"asc","ipHash":"asc","countryIso2":"asc","adUnitId":"asc","creditsOnCompletion":"asc","bundleIndex":"asc","createdAt":"asc","expiresAt":"asc","shownAt":"asc","ssvReceivedAt":"asc","rewardedAt":"asc","ssvTransactionId":"asc","ssvAdNetwork":"asc","ssvKeyId":"asc","ssvRewardAmount":"asc","ssvRewardItem":"asc","creditsGranted":"asc","creditTransactionId":"asc","rejectionReason":"asc","rawCallback":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":"example"},"nonce":{"mode":"EQ","value":"example"},"userId":{"mode":"EQ","value":123},"policyId":{"mode":"EQ","value":123},"placement":{"mode":"EQ","value":"example"},"status":{"mode":"EQ","value":"example"},"policySnapshot":{"mode":"EQ","value":{"key":"value"}},"platform":{"mode":"EQ","value":"example"},"appVersion":{"mode":"EQ","value":"example"},"deviceId":{"mode":"EQ","value":"example"},"ipHash":{"mode":"EQ","value":"example"},"countryIso2":{"mode":"EQ","value":"example"},"adUnitId":{"mode":"EQ","value":"example"},"creditsOnCompletion":{"mode":"EQ","value":"12.34"},"bundleIndex":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:27.537Z"},"expiresAt":{"mode":"EQ","value":"2026-11-02T19:39:27.537Z"},"shownAt":{"mode":"EQ","value":"2026-11-02T19:39:27.537Z"},"ssvReceivedAt":{"mode":"EQ","value":"2026-11-02T19:39:27.537Z"},"rewardedAt":{"mode":"EQ","value":"2026-11-02T19:39:27.537Z"},"ssvTransactionId":{"mode":"EQ","value":"example"},"ssvAdNetwork":{"mode":"EQ","value":"example"},"ssvKeyId":{"mode":"EQ","value":"example"},"ssvRewardAmount":{"mode":"EQ","value":"example"},"ssvRewardItem":{"mode":"EQ","value":"example"},"creditsGranted":{"mode":"EQ","value":"12.34"},"creditTransactionId":{"mode":"EQ","value":123},"rejectionReason":{"mode":"EQ","value":"example"},"rawCallback":{"mode":"EQ","value":{"key":"value"}},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:27.537Z"}}]}},"required":["fields"]},"AdRewardDailyUsageSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","userId","usageDate","policyId","adsStarted","adsCompleted","adsRejected","creditsGranted","firstAdAt","lastAdAt","createdAt","updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","policy.id","policy.name","policy.description","policy.placement","policy.isActive","policy.sortOrder","policy.platforms","policy.targetCountries","policy.startsAt","policy.endsAt","policy.rewardMode","policy.creditsPerAd","policy.adsRequiredPerReward","policy.creditsPerReward","policy.maxAdsPerDay","policy.maxAdsPerHour","policy.maxCreditsPerDay","policy.maxCreditsPerMonth","policy.minSecondsBetweenAds","policy.maxAdsPerDevicePerDay","policy.maxAdsPerIpPerDay","policy.maxAccountsPerDevicePerDay","policy.requireEmailVerified","policy.minAccountAgeHours","policy.adUnitIdAndroid","policy.adUnitIdIos","policy.ssvRequired","policy.dailyResetTimezone","policy.createdAt","policy.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","userId":"asc","usageDate":"asc","policyId":"asc","adsStarted":"asc","adsCompleted":"asc","adsRejected":"asc","creditsGranted":"asc","firstAdAt":"asc","lastAdAt":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"usageDate":{"mode":"EQ","value":"2026-11-02T19:39:27.538Z"},"policyId":{"mode":"EQ","value":123},"adsStarted":{"mode":"EQ","value":123},"adsCompleted":{"mode":"EQ","value":123},"adsRejected":{"mode":"EQ","value":123},"creditsGranted":{"mode":"EQ","value":"12.34"},"firstAdAt":{"mode":"EQ","value":"2026-11-02T19:39:27.538Z"},"lastAdAt":{"mode":"EQ","value":"2026-11-02T19:39:27.538Z"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:27.538Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:27.538Z"}}]}},"required":["fields"]},"AdRewardPolicyBodyModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"AdRewardPolicyBodyModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"placement":{"type":"string","enum":["WALLET_REWARDED","LOW_BALANCE_REWARDED","CREATE_HUB_REWARDED"],"minLength":1},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"rewardMode":{"type":"string","enum":["PER_AD","PER_BUNDLE"],"minLength":1},"creditsPerAd":{"type":"number"},"adsRequiredPerReward":{"type":"number","multipleOf":1},"creditsPerReward":{"type":"number"},"maxAdsPerDay":{"type":"number","multipleOf":1},"maxAdsPerHour":{"type":"number","multipleOf":1},"maxCreditsPerDay":{"type":"number"},"maxCreditsPerMonth":{"type":"number"},"minSecondsBetweenAds":{"type":"number","multipleOf":1},"maxAdsPerDevicePerDay":{"type":"number","multipleOf":1},"maxAdsPerIpPerDay":{"type":"number","multipleOf":1},"maxAccountsPerDevicePerDay":{"type":"number","multipleOf":1},"requireEmailVerified":{"type":"boolean"},"minAccountAgeHours":{"type":"number","multipleOf":1},"adUnitIdAndroid":{"type":"string","minLength":1,"nullable":true},"adUnitIdIos":{"type":"string","minLength":1,"nullable":true},"ssvRequired":{"type":"boolean"},"dailyResetTimezone":{"type":"string","minLength":1},"platforms":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"targetCountries":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["name","platforms","targetCountries"]},"AdRewardPolicyBodyModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"placement":{"type":"string","enum":["WALLET_REWARDED","LOW_BALANCE_REWARDED","CREATE_HUB_REWARDED"],"minLength":1},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"rewardMode":{"type":"string","enum":["PER_AD","PER_BUNDLE"],"minLength":1},"creditsPerAd":{"type":"number"},"adsRequiredPerReward":{"type":"number","multipleOf":1},"creditsPerReward":{"type":"number"},"maxAdsPerDay":{"type":"number","multipleOf":1},"maxAdsPerHour":{"type":"number","multipleOf":1},"maxCreditsPerDay":{"type":"number"},"maxCreditsPerMonth":{"type":"number"},"minSecondsBetweenAds":{"type":"number","multipleOf":1},"maxAdsPerDevicePerDay":{"type":"number","multipleOf":1},"maxAdsPerIpPerDay":{"type":"number","multipleOf":1},"maxAccountsPerDevicePerDay":{"type":"number","multipleOf":1},"requireEmailVerified":{"type":"boolean"},"minAccountAgeHours":{"type":"number","multipleOf":1},"adUnitIdAndroid":{"type":"string","minLength":1,"nullable":true},"adUnitIdIos":{"type":"string","minLength":1,"nullable":true},"ssvRequired":{"type":"boolean"},"dailyResetTimezone":{"type":"string","minLength":1},"platforms":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"targetCountries":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["platforms","targetCountries"]},"AdRewardPolicyModelDelete":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"placement":{"type":"string","enum":["WALLET_REWARDED","LOW_BALANCE_REWARDED","CREATE_HUB_REWARDED"],"minLength":1},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"platforms":{"type":"object"},"targetCountries":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"rewardMode":{"type":"string","enum":["PER_AD","PER_BUNDLE"],"minLength":1},"creditsPerAd":{"type":"number"},"adsRequiredPerReward":{"type":"number","multipleOf":1},"creditsPerReward":{"type":"number"},"maxAdsPerDay":{"type":"number","multipleOf":1},"maxAdsPerHour":{"type":"number","multipleOf":1},"maxCreditsPerDay":{"type":"number"},"maxCreditsPerMonth":{"type":"number"},"minSecondsBetweenAds":{"type":"number","multipleOf":1},"maxAdsPerDevicePerDay":{"type":"number","multipleOf":1},"maxAdsPerIpPerDay":{"type":"number","multipleOf":1},"maxAccountsPerDevicePerDay":{"type":"number","multipleOf":1},"requireEmailVerified":{"type":"boolean"},"minAccountAgeHours":{"type":"number","multipleOf":1},"adUnitIdAndroid":{"type":"string","minLength":1,"nullable":true},"adUnitIdIos":{"type":"string","minLength":1,"nullable":true},"ssvRequired":{"type":"boolean"},"dailyResetTimezone":{"type":"string","minLength":1}},"required":["description","placement","isActive","sortOrder","platforms","targetCountries","startsAt","endsAt","rewardMode","creditsPerAd","adsRequiredPerReward","creditsPerReward","maxAdsPerDay","maxAdsPerHour","maxCreditsPerDay","maxCreditsPerMonth","minSecondsBetweenAds","maxAdsPerDevicePerDay","maxAdsPerIpPerDay","maxAccountsPerDevicePerDay","requireEmailVerified","minAccountAgeHours","adUnitIdAndroid","adUnitIdIos","ssvRequired","dailyResetTimezone"]},"AdRewardPolicyModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"placement":{"type":"string","enum":["WALLET_REWARDED","LOW_BALANCE_REWARDED","CREATE_HUB_REWARDED"],"minLength":1},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"platforms":{"type":"object"},"targetCountries":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"rewardMode":{"type":"string","enum":["PER_AD","PER_BUNDLE"],"minLength":1},"creditsPerAd":{"type":"number"},"adsRequiredPerReward":{"type":"number","multipleOf":1},"creditsPerReward":{"type":"number"},"maxAdsPerDay":{"type":"number","multipleOf":1},"maxAdsPerHour":{"type":"number","multipleOf":1},"maxCreditsPerDay":{"type":"number"},"maxCreditsPerMonth":{"type":"number"},"minSecondsBetweenAds":{"type":"number","multipleOf":1},"maxAdsPerDevicePerDay":{"type":"number","multipleOf":1},"maxAdsPerIpPerDay":{"type":"number","multipleOf":1},"maxAccountsPerDevicePerDay":{"type":"number","multipleOf":1},"requireEmailVerified":{"type":"boolean"},"minAccountAgeHours":{"type":"number","multipleOf":1},"adUnitIdAndroid":{"type":"string","minLength":1,"nullable":true},"adUnitIdIos":{"type":"string","minLength":1,"nullable":true},"ssvRequired":{"type":"boolean"},"dailyResetTimezone":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardSessionModel"}},"dailyUsages":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardDailyUsageModel"}}},"required":["id","description","placement","isActive","sortOrder","platforms","targetCountries","startsAt","endsAt","rewardMode","creditsPerAd","adsRequiredPerReward","creditsPerReward","maxAdsPerDay","maxAdsPerHour","maxCreditsPerDay","maxCreditsPerMonth","minSecondsBetweenAds","maxAdsPerDevicePerDay","maxAdsPerIpPerDay","maxAccountsPerDevicePerDay","requireEmailVerified","minAccountAgeHours","adUnitIdAndroid","adUnitIdIos","ssvRequired","dailyResetTimezone","createdAt","updatedAt","sessions","dailyUsages"]},"AdRewardDailyUsageModel":{"type":"object"},"AdRewardPolicyModel":{"type":"object"},"AdRewardPolicySearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","description","placement","isActive","sortOrder","platforms","targetCountries","startsAt","endsAt","rewardMode","creditsPerAd","adsRequiredPerReward","creditsPerReward","maxAdsPerDay","maxAdsPerHour","maxCreditsPerDay","maxCreditsPerMonth","minSecondsBetweenAds","maxAdsPerDevicePerDay","maxAdsPerIpPerDay","maxAccountsPerDevicePerDay","requireEmailVerified","minAccountAgeHours","adUnitIdAndroid","adUnitIdIos","ssvRequired","dailyResetTimezone","createdAt","updatedAt","sessions.id","sessions.nonce","sessions.userId","sessions.policyId","sessions.placement","sessions.status","sessions.policySnapshot","sessions.platform","sessions.appVersion","sessions.deviceId","sessions.ipHash","sessions.countryIso2","sessions.adUnitId","sessions.creditsOnCompletion","sessions.bundleIndex","sessions.createdAt","sessions.expiresAt","sessions.shownAt","sessions.ssvReceivedAt","sessions.rewardedAt","sessions.ssvTransactionId","sessions.ssvAdNetwork","sessions.ssvKeyId","sessions.ssvRewardAmount","sessions.ssvRewardItem","sessions.creditsGranted","sessions.creditTransactionId","sessions.rejectionReason","sessions.rawCallback","sessions.updatedAt","dailyUsages.id","dailyUsages.userId","dailyUsages.usageDate","dailyUsages.policyId","dailyUsages.adsStarted","dailyUsages.adsCompleted","dailyUsages.adsRejected","dailyUsages.creditsGranted","dailyUsages.firstAdAt","dailyUsages.lastAdAt","dailyUsages.createdAt","dailyUsages.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","description":"asc","placement":"asc","isActive":"asc","sortOrder":"asc","platforms":"asc","targetCountries":"asc","startsAt":"asc","endsAt":"asc","rewardMode":"asc","creditsPerAd":"asc","adsRequiredPerReward":"asc","creditsPerReward":"asc","maxAdsPerDay":"asc","maxAdsPerHour":"asc","maxCreditsPerDay":"asc","maxCreditsPerMonth":"asc","minSecondsBetweenAds":"asc","maxAdsPerDevicePerDay":"asc","maxAdsPerIpPerDay":"asc","maxAccountsPerDevicePerDay":"asc","requireEmailVerified":"asc","minAccountAgeHours":"asc","adUnitIdAndroid":"asc","adUnitIdIos":"asc","ssvRequired":"asc","dailyResetTimezone":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"},"placement":{"mode":"EQ","value":"example"},"isActive":{"mode":"EQ","value":true},"sortOrder":{"mode":"EQ","value":123},"platforms":{"mode":"EQ","value":{"key":"value"}},"targetCountries":{"mode":"EQ","value":{"key":"value"}},"startsAt":{"mode":"EQ","value":"2026-11-02T19:39:27.536Z"},"endsAt":{"mode":"EQ","value":"2026-11-02T19:39:27.536Z"},"rewardMode":{"mode":"EQ","value":"example"},"creditsPerAd":{"mode":"EQ","value":"12.34"},"adsRequiredPerReward":{"mode":"EQ","value":123},"creditsPerReward":{"mode":"EQ","value":"12.34"},"maxAdsPerDay":{"mode":"EQ","value":123},"maxAdsPerHour":{"mode":"EQ","value":123},"maxCreditsPerDay":{"mode":"EQ","value":"12.34"},"maxCreditsPerMonth":{"mode":"EQ","value":"12.34"},"minSecondsBetweenAds":{"mode":"EQ","value":123},"maxAdsPerDevicePerDay":{"mode":"EQ","value":123},"maxAdsPerIpPerDay":{"mode":"EQ","value":123},"maxAccountsPerDevicePerDay":{"mode":"EQ","value":123},"requireEmailVerified":{"mode":"EQ","value":true},"minAccountAgeHours":{"mode":"EQ","value":123},"adUnitIdAndroid":{"mode":"EQ","value":"example"},"adUnitIdIos":{"mode":"EQ","value":"example"},"ssvRequired":{"mode":"EQ","value":true},"dailyResetTimezone":{"mode":"EQ","value":"example"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:27.536Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:27.536Z"}}]}},"required":["fields"]},"AdRewardConfigResponse":{"type":"object","properties":{"available":{"type":"boolean"},"adUnitId":{"type":"string","nullable":true},"placement":{"type":"string","minLength":1},"creditsOnNextCompletion":{"type":"string","minLength":1},"progress":{"$ref":"#/components/schemas/AdRewardProgressView"},"adsRemainingToday":{"type":"number","nullable":true},"adsWatchedToday":{"type":"number"},"creditsEarnedToday":{"type":"string","minLength":1},"cooldownSecondsRemaining":{"type":"number"},"reason":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["available","placement","creditsOnNextCompletion","progress","adsWatchedToday","creditsEarnedToday","cooldownSecondsRemaining"]},"AdRewardProgressView":{"type":"object","properties":{"rewardMode":{"type":"string","minLength":1},"adsWatched":{"type":"number"},"adsRequired":{"type":"number"},"creditsPerReward":{"type":"string","minLength":1}},"required":["rewardMode","adsWatched","adsRequired","creditsPerReward"]},"CreateAdRewardSessionResponse":{"type":"object","properties":{"sessionId":{"type":"string","minLength":1},"nonce":{"type":"string","minLength":1},"ssvUserId":{"type":"string","minLength":1},"adUnitId":{"type":"string","minLength":1},"creditsOnCompletion":{"type":"string","minLength":1},"expiresAt":{"type":"string","minLength":1}},"required":["sessionId","nonce","ssvUserId","adUnitId","creditsOnCompletion","expiresAt"]},"CreateAdRewardSessionPayload":{"type":"object","properties":{"placement":{"type":"string","enum":["WALLET_REWARDED","LOW_BALANCE_REWARDED","CREATE_HUB_REWARDED"]},"platform":{"type":"string","enum":["android","ios"],"minLength":1},"appVersion":{"type":"string","nullable":true},"deviceId":{"type":"string","nullable":true}},"required":["platform"]},"MarkAdShownResponse":{"type":"object","properties":{"sessionId":{"type":"string","minLength":1},"status":{"type":"string","minLength":1}},"required":["sessionId","status"]},"AdRewardSessionStatusResponse":{"type":"object","properties":{"sessionId":{"type":"string","minLength":1},"status":{"type":"string","minLength":1},"settled":{"type":"boolean"},"creditsGranted":{"type":"string","minLength":1},"balance":{"type":"string","nullable":true},"progress":{"$ref":"#/components/schemas/AdRewardProgressView"},"reason":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["sessionId","status","settled","creditsGranted","progress"]},"AdRewardSummaryResponse":{"type":"object","properties":{"lifetimeAdsCompleted":{"type":"number"},"lifetimeCreditsGranted":{"type":"string","minLength":1},"adsWatchedToday":{"type":"number"},"creditsEarnedToday":{"type":"string","minLength":1},"recent":{"type":"array","items":{}}},"required":["lifetimeAdsCompleted","lifetimeCreditsGranted","adsWatchedToday","creditsEarnedToday","recent"]},"AdminAnalyticsPresence":{"type":"object","properties":{"generatedAt":{"type":"string","minLength":1},"onlineThresholdSeconds":{"type":"number"},"onlineUsers":{"type":"number"}},"required":["generatedAt","onlineThresholdSeconds","onlineUsers"]},"AdminAnalyticsSnapshot":{"type":"object","properties":{"generatedAt":{"type":"string","minLength":1},"onlineThresholdMinutes":{"type":"number"},"onlineUsers":{"type":"number"},"totalRegisteredUsers":{"type":"number"},"ordersSucceededCount":{"type":"number"},"totalRevenueBase":{"type":"string","minLength":1},"baseCurrencyCode":{"type":"string","minLength":1},"currencyConversionBasis":{"type":"string","description":"Revenue uses each currency current configured exchange rate. Historical event-time FX is not persisted.","minLength":1},"revenue":{"allOf":[{"$ref":"#/components/schemas/AdminAnalyticsRevenue"},{"type":"object","description":"Successful orders are recognized at paidAt, falling back to updatedAt for legacy rows with no paidAt value."}]},"customerHealth":{"$ref":"#/components/schemas/AdminAnalyticsCustomerHealth"},"operations":{"$ref":"#/components/schemas/AdminAnalyticsOperations"},"monthlySeries":{"type":"array","items":{"$ref":"#/components/schemas/AdminAnalyticsMonthlyRow"}},"revenueByCurrency":{"type":"array","items":{"$ref":"#/components/schemas/RevenueByCurrencyRow"}},"usersByCountry":{"type":"array","items":{"$ref":"#/components/schemas/UsersByCountryRow"}},"series":{"$ref":"#/components/schemas/AdminAnalyticsSeries"}},"required":["generatedAt","onlineThresholdMinutes","onlineUsers","totalRegisteredUsers","ordersSucceededCount","totalRevenueBase","baseCurrencyCode","currencyConversionBasis","revenue","customerHealth","operations","monthlySeries","revenueByCurrency","usersByCountry","series"]},"AdminAnalyticsRevenue":{"type":"object","properties":{"currentMonthBase":{"type":"string","description":"Successful-order revenue recognized in the current partial UTC calendar month.","minLength":1},"lastCompletedMonthBase":{"type":"string","minLength":1},"averageCompletedMonthBase":{"type":"string","description":"Mean of up to six completed UTC months inside observed operating history, including zero-revenue gaps but excluding the current partial month.","minLength":1,"nullable":true},"averageCompletedMonthCount":{"type":"number"},"currentMonthReturningCustomerBase":{"type":"string","description":"Current-month revenue from users whose first successful order predates the month. This is not subscription MRR.","minLength":1},"averageCompletedMonthReturningCustomerBase":{"type":"string","minLength":1,"nullable":true},"currentMonthReturningCustomerSharePct":{"type":"string","minLength":1,"nullable":true},"lastCompletedMonthGrowthPct":{"type":"string","description":"Growth of the last completed UTC month versus the completed month before it. Null when the prior value is zero.","minLength":1,"nullable":true},"successfulOrdersCurrentMonth":{"type":"number"},"payingUsersCurrentMonth":{"type":"number"},"averageOrderValueCurrentMonthBase":{"type":"string","minLength":1,"nullable":true},"arppuCurrentMonthBase":{"type":"string","minLength":1,"nullable":true}},"required":["currentMonthBase","lastCompletedMonthBase","averageCompletedMonthBase","averageCompletedMonthCount","currentMonthReturningCustomerBase","averageCompletedMonthReturningCustomerBase","currentMonthReturningCustomerSharePct","lastCompletedMonthGrowthPct","successfulOrdersCurrentMonth","payingUsersCurrentMonth","averageOrderValueCurrentMonthBase","arppuCurrentMonthBase"]},"AdminAnalyticsCustomerHealth":{"type":"object","properties":{"allTimePayingUsers":{"type":"number"},"allTimeRepeatPayingUsers":{"type":"number"},"repeatPurchaserRatePct":{"type":"string","description":"Share of all-time paying users with at least two successful one-time orders. This is a recurrence proxy, not a subscription metric.","minLength":1,"nullable":true},"payerConversionRatePct":{"type":"string","minLength":1,"nullable":true}},"required":["allTimePayingUsers","allTimeRepeatPayingUsers","repeatPurchaserRatePct","payerConversionRatePct"]},"AdminAnalyticsOperations":{"type":"object","properties":{"periodStart":{"type":"string","minLength":1},"periodEnd":{"type":"string","minLength":1},"succeededTerminalJobs":{"type":"number"},"failedOrCancelledTerminalJobs":{"type":"number"},"jobSuccessRatePct":{"type":"string","minLength":1,"nullable":true},"paidEligibleSuccessfulJobs":{"type":"number"},"purchasedPaidEligibleSuccessfulJobs":{"type":"number"},"previewUnlockRatePct":{"type":"string","minLength":1,"nullable":true}},"required":["periodStart","periodEnd","succeededTerminalJobs","failedOrCancelledTerminalJobs","jobSuccessRatePct","paidEligibleSuccessfulJobs","purchasedPaidEligibleSuccessfulJobs","previewUnlockRatePct"]},"AdminAnalyticsMonthlyRow":{"type":"object","properties":{"month":{"type":"string","description":"UTC calendar month key in YYYY-MM form. The final row is the current partial month.","minLength":1},"revenueBase":{"type":"string","minLength":1},"successfulOrders":{"type":"number"},"payingUsers":{"type":"number"},"newPayingUsers":{"type":"number"},"returningPayingUsers":{"type":"number"},"newCustomerRevenueBase":{"type":"string","minLength":1},"returningCustomerRevenueBase":{"type":"string","description":"Revenue from users whose first successful order occurred before this month. This is a repeat-purchase signal, not subscription MRR.","minLength":1}},"required":["month","revenueBase","successfulOrders","payingUsers","newPayingUsers","returningPayingUsers","newCustomerRevenueBase","returningCustomerRevenueBase"]},"RevenueByCurrencyRow":{"type":"object","properties":{"currencyCode":{"type":"string","minLength":1},"amount":{"type":"string","minLength":1},"amountBase":{"type":"string","minLength":1}},"required":["currencyCode","amount","amountBase"]},"UsersByCountryRow":{"type":"object","properties":{"iso2":{"type":"object"},"label":{"type":"string","minLength":1},"userCount":{"type":"number"}},"required":["iso2","label","userCount"]},"AdminAnalyticsSeries":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string"}},"revenueBaseByDay":{"type":"array","items":{"type":"string"}},"newUsersByDay":{"type":"array","items":{"type":"number"}}},"required":["days","revenueBaseByDay","newUsersByDay"]},"AdminConversationSearchResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AdminConversationRow"}},"total":{"type":"number"}},"required":["items","total"]},"AdminConversationRow":{"type":"object","properties":{"id":{"type":"number"},"type":{"type":"string","minLength":1},"name":{"type":"object"},"participants":{"type":"string","minLength":1},"participantCount":{"type":"number"},"moderationCandidates":{"type":"array","items":{"$ref":"#/components/schemas/AdminModerationCandidate"}},"messageCount":{"type":"number"},"reportCount":{"type":"number"},"moderationStatus":{"type":"string","minLength":1},"lastMessageAt":{"type":"object"},"createdAt":{"type":"string","minLength":1}},"required":["id","type","participants","participantCount","moderationCandidates","messageCount","reportCount","moderationStatus","createdAt"]},"AdminModerationCandidate":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","minLength":1},"email":{"type":"string","minLength":1},"handle":{"type":"object"},"bannedAt":{"type":"object"},"canBan":{"type":"boolean"},"isReporter":{"type":"boolean"}},"required":["id","name","email","canBan"]},"AdminConversationSearchBody":{"type":"object","properties":{"orderBy":{"type":"object"},"filters":{"type":"array","items":{"type":"object"}},"limit":{"type":"integer","multipleOf":1},"offset":{"type":"integer","multipleOf":1}}},"AdminReportSearchResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AdminReportRow"}},"total":{"type":"number"}},"required":["items","total"]},"AdminReportRow":{"type":"object","properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"subjectType":{"type":"string","minLength":1},"subjectId":{"type":"object"},"reporter":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1},"details":{"type":"object"},"reportedAccount":{"type":"object"},"reportedUserId":{"type":"object"},"moderationCandidates":{"type":"array","items":{"$ref":"#/components/schemas/AdminModerationCandidate"}},"status":{"type":"string","minLength":1},"decisionReason":{"type":"object"},"decisionNotifiedAt":{"type":"object"},"moderationStatus":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1}},"required":["id","source","subjectType","reporter","reason","moderationCandidates","status","moderationStatus","createdAt"]},"AdminModerationBody":{"type":"object","properties":{"action":{"type":"string","minLength":1},"reason":{"type":"string","maxLength":500},"banUserId":{"type":"integer","multipleOf":1}},"required":["action"]},"AdminReportStatusBody":{"type":"object","properties":{"status":{"type":"string","minLength":1},"reason":{"type":"string","maxLength":500}},"required":["status"]},"BadRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The error name","example":"BAD_REQUEST","default":"BAD_REQUEST"},"message":{"type":"string","minLength":1,"description":"An error message"},"status":{"type":"number","description":"The status code of the exception","example":400,"default":400},"errors":{"type":"array","items":{"$ref":"#/components/schemas/GenericError"},"description":"A list of related errors"},"stack":{"type":"string","description":"The stack trace (only in development mode)"}},"required":["name","message","status"]},"AiStudioYoutubeReferenceResponse":{"type":"object","properties":{"attachmentId":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1},"videoId":{"type":"string","minLength":1},"sourceUrl":{"type":"string","minLength":1}},"required":["attachmentId","fileName","videoId","sourceUrl"]},"AiStudioYoutubeReferenceRequest":{"type":"object","properties":{"sessionId":{"type":"number","minimum":1},"requestId":{"type":"string","description":"Idempotency key so a retried import does not consume a second YouTube download allowance.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1},"url":{"type":"string","description":"Public YouTube URL for audio the user owns or has permission to process.","maxLength":500,"minLength":1}},"required":["sessionId","requestId","url"]},"AiStudioYoutubeSourceRequest":{"type":"object","properties":{"sessionId":{"type":"number","minimum":1},"requestId":{"type":"string","description":"Idempotency key so a retried import does not consume a second YouTube download allowance.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1},"url":{"type":"string","description":"Public YouTube URL for audio the user owns or has permission to process.","maxLength":500,"minLength":1}},"required":["sessionId","requestId","url"]},"AiStudioChatRequest":{"type":"object","properties":{"message":{"type":"string","maxLength":8000,"minLength":1},"sessionId":{"type":"number","minimum":1},"requestId":{"type":"string","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1},"reference_audio_attachment_id":{"type":"string","description":"Private attachment ID returned by /ai-studio/upload-reference.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$"},"answers":{"type":"object","description":"Structured answers to a clarify-questions card, keyed by question label. Sent instead of concatenating answers into the message text."},"history":{"type":"array","items":{"type":"object"},"description":"Legacy client history. The server loads canonical session history and does not trust this field for actions.","maxItems":50}},"additionalProperties":false,"required":["message","sessionId","requestId"]},"AgentStopBody":{"type":"object","properties":{"turn_id":{"type":"string","description":"The turn the member is looking at: a Stop that arrives after it ended never stops the next one.","pattern":"^[A-Za-z0-9._:-]{1,80}$"}}},"AgentSteerBody":{"type":"object","properties":{"id":{"type":"string","description":"The client's id for the note; the turn's `steer` event names it when the note is read. Sending the same one again adds nothing.","pattern":"^[A-Za-z0-9_-]{1,100}$","minLength":1},"text":{"type":"string","description":"What the member typed.","maxLength":4000,"minLength":1},"turn_id":{"type":"string","description":"The turn the member is looking at: a note meant for a turn that has ended is refused (409), never read by the next one.","pattern":"^[A-Za-z0-9._:-]{1,80}$"}},"required":["id","text"]},"AiStudioChatResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"messages":{"type":"array","items":{}},"content":{"type":"string"},"toolCalls":{"type":"array","description":"Transparent log of tools the assistant executed this turn.","items":{}},"sessionVersion":{"type":"number"}}},"AiStudioRefineResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"value":{"type":"string","minLength":1},"note":{"type":"string","minLength":1},"error":{"type":"string"},"sessionVersion":{"type":"number"}},"required":["ok","value","note"]},"AiStudioRefineRequest":{"type":"object","properties":{"target":{"type":"string","enum":["prompt","lyrics"],"minLength":1},"content":{"type":"string","description":"The complete editable Song Studio draft. May be empty when asking AI to create a first draft.","maxLength":50000,"minLength":0},"context":{"type":"string","description":"The other Song Studio field, supplied only as creative context.","maxLength":50000},"instruction":{"type":"string","maxLength":500,"minLength":1},"sessionId":{"type":"number","minimum":1},"requestId":{"type":"string","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1}},"additionalProperties":false,"required":["target","content","instruction","sessionId","requestId"]},"AiStudioGenerateResponse":{"type":"object","properties":{"jobId":{"type":"number"},"status":{"type":"string","minLength":1},"title":{"type":"string"},"sessionVersion":{"type":"number"}},"required":["jobId","status","sessionVersion"]},"AiStudioGenerateRequest":{"type":"object","properties":{"sessionId":{"type":"number","minimum":1},"requestId":{"type":"string","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1},"prompt":{"type":"string","maxLength":8000,"minLength":1},"title":{"type":"string","maxLength":200},"lyrics":{"type":"string","description":"Full lyrics text ([lang] format). Omit for an instrumental.","maxLength":50000},"lora_name":{"type":"string","description":"Voice checkpoint name, or \"none\".","maxLength":200},"audio_duration":{"type":"number","description":"Song length in seconds (or minutes when <= 10). Defaults to 180.","maximum":300,"minimum":60},"quality":{"type":"string","description":"Quality level: normal | medium | high | max. Defaults to normal.","enum":["normal","medium","high","max"]},"reference_audio_attachment_id":{"type":"string","description":"Private reference-audio attachment ID.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$"},"remix":{"type":"boolean","description":"Remix the attached track instead of generating a new song: the real recording is re-rendered singing the lyrics above, keeping its melody and arrangement. Requires reference_audio_attachment_id."},"source_audio_attachment_id":{"type":"string","description":"Remix only. The track to re-render (a staged source-media attachment). When omitted, reference_audio_attachment_id is used as the source and no separate style reference is sent.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$"},"remix_level":{"type":"string","description":"Remix only. How much of the original survives, as a named level: keep-the-music (only the words change) | faithful | balanced | bold. Decides which model path runs, not just how hard it is pushed.","enum":["keep-the-music","faithful","balanced","bold"]},"original_lyrics":{"type":"string","description":"Remix only, and required for remix_level=\"keep-the-music\": the words the source currently sings. The edit works between these and the new lyrics.","maxLength":50000},"target_duration":{"type":"number","description":"Remix only. Total length in seconds. Omit to follow the source track, which is the default and the only length that costs a single generation pass.","maximum":300,"minimum":60},"cover_strength":{"type":"number","description":"Remix only. Semantic adherence to the source (fraction of steps guided by its codes). 0.7–1 faithful, 0.1–0.4 loose. Default 0.3.","maximum":1,"minimum":0},"melody_strength":{"type":"number","description":"Remix only. Melody retention: the diffusion starts from the source latents, so pitch, key and texture survive. 0.1–0.25 recommended; default 0.25.","maximum":0.5,"minimum":0},"bpm":{"type":"number","description":"Remix only. Lock the tempo to the source's BPM when known.","maximum":300,"minimum":30},"key_scale":{"type":"string","description":"Remix only. Lock the key in the model notation, e.g. \"A# major\", when known.","maxLength":20},"genre":{"type":"string","maxLength":100},"tempo":{"type":"number","maximum":300,"minimum":20},"key":{"type":"string","maxLength":20},"mode":{"type":"string","enum":["lyrics","caption","song"]}},"additionalProperties":false,"required":["sessionId","requestId","prompt"]},"AiStudioJobStatusResponse":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","minLength":1},"progress":{"type":"number"},"title":{"type":"string"},"downloadUrl":{"type":"string"},"previewUrl":{"type":"string"},"error":{"type":"string"}},"required":["id","status"]},"AiStudioSessionSaveRequest":{"type":"object","properties":{"id":{"type":"number","minimum":1},"title":{"type":"string","maxLength":120,"minLength":1},"data":{"type":"object"},"expectedVersion":{"type":"number","minimum":0}},"additionalProperties":false,"required":["title","data"]},"AiStudioConsoleEditRequest":{"type":"object","properties":{"type":{"type":"string","enum":["lyric-sheet","caption"],"minLength":1},"content":{"type":"object"},"sessionId":{"type":"number","minimum":1}},"additionalProperties":false,"required":["type","content","sessionId"]},"LoginResponse":{"type":"object","properties":{"accessToken":{"type":"string","default":"bhvfcdxrx"},"refreshToken":{"type":"string","default":"bhvfcdxrx"},"accessTokenWillExpireAt":{"type":"number"},"refreshTokenWillExpireAt":{"type":"number"},"success":{"type":"boolean","default":true}}},"LoginRequestLogin":{"type":"object","properties":{"email":{"type":"string","format":"email","minLength":1,"default":"admin@januscaler.com"},"password":{"type":"string","default":"admin","minLength":1}},"required":["email","password"]},"LogoutResponse":{"type":"object","properties":{"cleared":{"type":"boolean"},"scope":{"type":"string"}}},"LogoutRequest":{"type":"object","properties":{"refreshToken":{"type":"string","description":"Refresh token for the browser/device session being revoked"},"token":{"type":"string","description":"Deprecated access-token fallback retained for rolling deployments"}}},"ValidateTokenResponse":{"type":"object","properties":{"isValid":{"type":"boolean"},"isExternalUser":{"type":"boolean"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/ValidateTokenResponseRole"}},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/ValidateTokenResponsePermission"}},"userId":{"type":"number"}}},"ValidateTokenResponseRole":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"}}},"ValidateTokenResponsePermission":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"permissionUid":{"type":"string"},"permissionType":{"type":"string"},"resource":{"type":"string"},"method":{"type":"string"}}},"ValidateTokenRequest":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]},"ValidateAccessTokenForPermissionResponse":{"type":"object","properties":{"userId":{"type":"object"},"roles":{"type":"array","items":{"type":"number"}},"permissions":{"type":"array","items":{"type":"number"}},"isExternalUser":{"type":"boolean"},"countryId":{"type":"object"}},"required":["isExternalUser"]},"ValidateAccessTokenForPermissionRequest":{"type":"object","properties":{"token":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"resource":{"type":"string","minLength":1}},"required":["token","method","resource"]},"RefreshAccessTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"accessTokenWillExpireAt":{"type":"number"},"refreshTokenWillExpireAt":{"type":"number"}}},"RefreshAccessTokenRequest":{"type":"object","properties":{"refreshToken":{"type":"string","minLength":1}},"required":["refreshToken"]},"UserModelSignupResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"createdAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"googleSub":{"type":"string","minLength":1,"nullable":true},"sentFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"receivedFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"blocksMade":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"blocksReceived":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"chatRoomsCreated":{"type":"array","items":{"$ref":"#/components/schemas/ChatRoomModel"}},"chatParticipants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"chatMessages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"chatMessageReactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}},"chatReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"chatReportsAbout":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"feedReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}}},"required":["createdAt","googleSub","sentFollowRequests","receivedFollowRequests","blocksMade","blocksReceived","chatRoomsCreated","chatParticipants","chatMessages","chatMessageReactions","chatReportsMade","chatReportsAbout","feedReportsMade"]},"FollowRequestModel":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"requesterId":{"type":"number","multipleOf":1},"targetId":{"type":"number","multipleOf":1},"status":{"type":"string","enum":["PENDING","ACCEPTED","REJECTED","CANCELLED"],"minLength":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"respondedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"requester":{"$ref":"#/components/schemas/UserModel"},"target":{"$ref":"#/components/schemas/UserModel"},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}}},"required":["id","requesterId","targetId","status","createdAt","updatedAt","respondedAt","requester","target","notifications"]},"UserModel":{"type":"object","properties":{"serviceDownloaderUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"rvcVoiceModels":{"type":"array","items":{"$ref":"#/components/schemas/RvcVoiceModelModel"}},"rvcTrainingRuns":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingRunModel"}},"rvcTrainingSources":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingSourceModel"}},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"creditReservations":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditReservationModel"}},"googleSub":{"type":"string","minLength":1,"nullable":true},"bannedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"bannedById":{"type":"number","multipleOf":1,"nullable":true},"banReason":{"type":"string","minLength":1,"nullable":true},"faceSwapTermsAcceptedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"faceSwapTermsVersion":{"type":"string","minLength":1,"nullable":true},"voiceTermsAcceptedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"voiceTermsVersion":{"type":"string","minLength":1,"nullable":true},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"feedPosts":{"type":"array","items":{"$ref":"#/components/schemas/FeedPostModel"}},"postReactions":{"type":"array","items":{"$ref":"#/components/schemas/PostReactionModel"}},"postComments":{"type":"array","items":{"$ref":"#/components/schemas/PostCommentModel"}},"notificationsReceived":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"notificationActions":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"playlists":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistModel"}},"feedDeletionClaimedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isDeleted":{"type":"boolean"},"deletedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"deletedEmail":{"type":"string","minLength":1,"nullable":true},"sentFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"receivedFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"blocksMade":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"blocksReceived":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"chatRoomsCreated":{"type":"array","items":{"$ref":"#/components/schemas/ChatRoomModel"}},"chatParticipants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"chatMessages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"chatMessageReactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}},"chatReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"chatReportsAbout":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"feedReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}},"adRewardSessions":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardSessionModel"}},"adRewardDailyUsages":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardDailyUsageModel"}},"adRewardProgress":{"oneOf":[{"$ref":"#/components/schemas/AdRewardProgressModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["serviceDownloaderUsages","rvcVoiceModels","rvcTrainingRuns","rvcTrainingSources","cueSheets","creditReservations","googleSub","bannedAt","bannedById","banReason","faceSwapTermsAcceptedAt","faceSwapTermsVersion","voiceTermsAcceptedAt","voiceTermsVersion","performances","feedPosts","postReactions","postComments","notificationsReceived","communityBroadcasts","notificationActions","playlists","feedDeletionClaimedAt","isDeleted","deletedAt","deletedEmail","sentFollowRequests","receivedFollowRequests","blocksMade","blocksReceived","chatRoomsCreated","chatParticipants","chatMessages","chatMessageReactions","chatReportsMade","chatReportsAbout","feedReportsMade","adRewardSessions","adRewardDailyUsages","adRewardProgress"]},"ServiceDownloaderUsageModel":{"type":"object","properties":{"id":{"type":"string","minLength":1},"quotaIdentityKey":{"type":"string","minLength":1},"userId":{"type":"number","multipleOf":1,"nullable":true},"ipAddress":{"type":"string","minLength":1,"nullable":true},"videoId":{"type":"string","minLength":1},"variant":{"type":"string","enum":["AUDIO","VIDEO"],"minLength":1},"purpose":{"type":"string","enum":["DIRECT_DOWNLOAD","KARAOKE_JOB","LYRICAL_JOB","AI_STUDIO_REFERENCE","LYRICS_EDITOR_PLAYBACK"],"minLength":1},"jobId":{"type":"number","multipleOf":1,"nullable":true},"creditsCharged":{"type":"number"},"creditsRefunded":{"type":"number"},"refundedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"user":{"oneOf":[{"$ref":"#/components/schemas/UserModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"quota":{"$ref":"#/components/schemas/ServiceDownloaderQuotaModel"},"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["id","quotaIdentityKey","userId","ipAddress","videoId","variant","purpose","jobId","creditsCharged","creditsRefunded","refundedAt","createdAt","user","quota","job"]},"ServiceDownloaderQuotaModel":{"type":"object","properties":{"identityKey":{"type":"string","minLength":1},"userId":{"type":"number","multipleOf":1,"nullable":true},"ipAddress":{"type":"string","minLength":1,"nullable":true},"downloadCount":{"type":"number","multipleOf":1},"periodStartedAt":{"type":"string","minLength":1,"format":"date-time"},"periodEndsAt":{"type":"string","minLength":1,"format":"date-time"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"usages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}}},"required":["identityKey","userId","ipAddress","downloadCount","periodStartedAt","periodEndsAt","createdAt","updatedAt","usages"]},"JobModel":{"type":"object","properties":{"searchTitle":{"type":"string","minLength":1,"nullable":true},"communitySourceJobId":{"type":"number","multipleOf":1,"nullable":true},"runnerId":{"type":"string","minLength":1,"nullable":true},"youtubeUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"rvcTrainingRun":{"oneOf":[{"$ref":"#/components/schemas/RvcTrainingRunModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"floGenerationRun":{"oneOf":[{"$ref":"#/components/schemas/FloGenerationRunModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"playlistItems":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}},"youtubeLibraryEntry":{"oneOf":[{"$ref":"#/components/schemas/YoutubeLibraryEntryModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["searchTitle","communitySourceJobId","runnerId","youtubeUsages","performances","notifications","communityBroadcasts","rvcTrainingRun","cueSheets","floGenerationRun","playlistItems","youtubeLibraryEntry"]},"PerformanceModel":{"type":"object","properties":{"searchName":{"type":"string","minLength":1},"stagingStorageKey":{"type":"string","minLength":1},"storageKey":{"type":"string","minLength":1},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"playlistItems":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}}},"required":["searchName","stagingStorageKey","storageKey","notifications","communityBroadcasts","playlistItems"]},"NotificationModel":{"type":"object","properties":{"id":{"type":"string","minLength":1},"recipientId":{"type":"number","multipleOf":1},"actorId":{"type":"number","multipleOf":1},"type":{"type":"string","enum":["FOLLOW_REQUEST","FOLLOW_REQUEST_ACCEPTED","NEW_FOLLOWER","POST_REACTION","POST_COMMENT","COMMENT_REPLY","NEW_POST","POST_PUBLISHED","EXPLORE_TRACK_SHARED","EXPLORE_COVER_SHARED"],"minLength":1},"dedupeKey":{"type":"string","minLength":1},"postId":{"type":"string","minLength":1,"nullable":true},"commentId":{"type":"string","minLength":1,"nullable":true},"followRequestId":{"type":"number","multipleOf":1,"nullable":true},"jobId":{"type":"number","multipleOf":1,"nullable":true},"performanceId":{"type":"string","minLength":1,"nullable":true},"readAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"recipient":{"$ref":"#/components/schemas/UserModel"},"actor":{"$ref":"#/components/schemas/UserModel"},"post":{"oneOf":[{"$ref":"#/components/schemas/FeedPostModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"comment":{"oneOf":[{"$ref":"#/components/schemas/PostCommentModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"followRequest":{"oneOf":[{"$ref":"#/components/schemas/FollowRequestModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"performance":{"oneOf":[{"$ref":"#/components/schemas/PerformanceModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["id","recipientId","actorId","type","dedupeKey","postId","commentId","followRequestId","jobId","performanceId","readAt","createdAt","updatedAt","recipient","actor","post","comment","followRequest","job","performance"]},"FeedPostModel":{"type":"object","properties":{"mediaItems":{"type":"object","nullable":true},"uploadProtocol":{"type":"string","enum":["STAGING_COPY_V1","DIRECT_CREATE_ONLY_V2"],"minLength":1},"storageIdentity":{"type":"string","minLength":1,"nullable":true},"posterKey":{"type":"string","minLength":1,"nullable":true},"posterService":{"type":"string","minLength":1,"nullable":true},"posterBucket":{"type":"string","minLength":1,"nullable":true},"posterMimeType":{"type":"string","minLength":1,"nullable":true},"posterSize":{"type":"number","multipleOf":1,"nullable":true},"failureCode":{"type":"string","minLength":1,"enum":["UPLOAD_NOT_COMMITTED","EMPTY_UPLOAD","SIZE_MISMATCH","CONTENT_TYPE_MISMATCH","BINDING_MISMATCH"],"nullable":true},"ticketExpiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"operation":{"type":"string","minLength":1,"enum":["SIGNING","COMPLETING","VERIFYING","SEALING","DELETING"],"nullable":true},"operationToken":{"type":"string","minLength":1,"nullable":true},"operationExpiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"moderatedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"moderatedById":{"type":"number","multipleOf":1,"nullable":true},"moderationReason":{"type":"string","minLength":1,"nullable":true},"reactions":{"type":"array","items":{"$ref":"#/components/schemas/PostReactionModel"}},"comments":{"type":"array","items":{"$ref":"#/components/schemas/PostCommentModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"reports":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}}},"required":["mediaItems","uploadProtocol","storageIdentity","posterKey","posterService","posterBucket","posterMimeType","posterSize","failureCode","ticketExpiresAt","operation","operationToken","operationExpiresAt","moderatedAt","moderatedById","moderationReason","reactions","comments","notifications","reports","communityBroadcasts"]},"PostReactionModel":{"type":"object"},"PostCommentModel":{"type":"object","properties":{"replies":{"type":"array","items":{"$ref":"#/components/schemas/PostCommentModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}}},"required":["replies","notifications"]},"FeedReportModel":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"reporterId":{"type":"number","multipleOf":1},"postId":{"type":"string","minLength":1,"nullable":true},"reason":{"type":"string","enum":["SPAM","HARASSMENT","HATE_SPEECH","SEXUAL_CONTENT","VIOLENCE","SCAM","IMPERSONATION","OTHER"],"minLength":1},"details":{"type":"string","minLength":1,"nullable":true},"status":{"type":"string","enum":["OPEN","REVIEWING","RESOLVED","DISMISSED"],"minLength":1},"snapshot":{"type":"object"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"resolvedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"decisionReason":{"type":"string","minLength":1,"nullable":true},"decidedById":{"type":"number","multipleOf":1,"nullable":true},"decisionNotifiedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"reporter":{"$ref":"#/components/schemas/UserModel"},"post":{"oneOf":[{"$ref":"#/components/schemas/FeedPostModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["id","reporterId","postId","reason","details","status","snapshot","createdAt","updatedAt","resolvedAt","decisionReason","decidedById","decisionNotifiedAt","reporter","post"]},"CommunityBroadcastModel":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"kind":{"type":"string","enum":["EXPLORE_TRACK","EXPLORE_COVER","FEED_POST"],"minLength":1},"targetKey":{"type":"string","minLength":1},"actorId":{"type":"number","multipleOf":1},"jobId":{"type":"number","multipleOf":1,"nullable":true},"performanceId":{"type":"string","minLength":1,"nullable":true},"postId":{"type":"string","minLength":1,"nullable":true},"notifyEnabled":{"type":"boolean"},"emailEnabled":{"type":"boolean"},"status":{"type":"string","enum":["PENDING","RUNNING","DONE","FAILED"],"minLength":1},"attempts":{"type":"number","multipleOf":1},"claimedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"notifiedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"emailedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"emailCursorUserId":{"type":"number","multipleOf":1},"notificationsCreated":{"type":"number","multipleOf":1},"emailsSent":{"type":"number","multipleOf":1},"lastError":{"type":"string","minLength":1,"nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"actor":{"$ref":"#/components/schemas/UserModel"},"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"performance":{"oneOf":[{"$ref":"#/components/schemas/PerformanceModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"post":{"oneOf":[{"$ref":"#/components/schemas/FeedPostModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["id","kind","targetKey","actorId","jobId","performanceId","postId","notifyEnabled","emailEnabled","status","attempts","claimedAt","notifiedAt","emailedAt","emailCursorUserId","notificationsCreated","emailsSent","lastError","createdAt","updatedAt","actor","job","performance","post"]},"PlaylistItemModel":{"type":"object","properties":{"playlist":{"$ref":"#/components/schemas/PlaylistModel"},"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"performance":{"oneOf":[{"$ref":"#/components/schemas/PerformanceModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["playlist","job","performance"]},"PlaylistModel":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserModel"},"items":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}}},"required":["user","items"]},"RvcTrainingRunModel":{"type":"object"},"CueSheetModel":{"type":"object"},"FloGenerationRunModel":{"type":"object"},"YoutubeLibraryEntryModel":{"type":"object","properties":{"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["job"]},"RvcVoiceModelModel":{"type":"object"},"RvcTrainingSourceModel":{"type":"object"},"UserCreditReservationModel":{"type":"object"},"UserBlockModel":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"blockerId":{"type":"number","multipleOf":1},"blockedId":{"type":"number","multipleOf":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"blocker":{"$ref":"#/components/schemas/UserModel"},"blocked":{"$ref":"#/components/schemas/UserModel"}},"required":["id","blockerId","blockedId","createdAt","blocker","blocked"]},"ChatRoomModel":{"type":"object","properties":{"directUserLowId":{"type":"number","multipleOf":1,"nullable":true},"directUserHighId":{"type":"number","multipleOf":1,"nullable":true},"lastMessageAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"moderatedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"moderatedById":{"type":"number","multipleOf":1,"nullable":true},"moderationReason":{"type":"string","minLength":1,"nullable":true},"createdBy":{"$ref":"#/components/schemas/UserModel"},"participants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"reports":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}}},"required":["directUserLowId","directUserHighId","lastMessageAt","moderatedAt","moderatedById","moderationReason","createdBy","participants","messages","reports"]},"ChatParticipantModel":{"type":"object","properties":{"leftAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"hiddenAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"historyClearedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"typingExpiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"unreadEmailSentAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"unreadEmailedMessageId":{"type":"number","multipleOf":1,"nullable":true},"room":{"$ref":"#/components/schemas/ChatRoomModel"},"user":{"$ref":"#/components/schemas/UserModel"}},"required":["leftAt","hiddenAt","historyClearedAt","typingExpiresAt","unreadEmailSentAt","unreadEmailedMessageId","room","user"]},"ChatMessageModel":{"type":"object","properties":{"clientId":{"type":"string","minLength":1,"nullable":true},"attachment":{"type":"object","nullable":true},"room":{"$ref":"#/components/schemas/ChatRoomModel"},"sender":{"$ref":"#/components/schemas/UserModel"},"outbox":{"oneOf":[{"$ref":"#/components/schemas/ChatOutboxEventModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"reactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}}},"required":["clientId","attachment","room","sender","outbox","reactions"]},"ChatOutboxEventModel":{"type":"object","properties":{"id":{"type":"string","minLength":1},"messageId":{"type":"number","multipleOf":1},"channel":{"type":"string","minLength":1},"payload":{"type":"object"},"status":{"type":"string","enum":["PENDING","PROCESSING","CANCELLED","SENT"],"minLength":1},"attempts":{"type":"number","multipleOf":1},"availableAt":{"type":"string","minLength":1,"format":"date-time"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"sentAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"message":{"$ref":"#/components/schemas/ChatMessageModel"}},"required":["id","messageId","channel","payload","status","attempts","availableAt","createdAt","sentAt","message"]},"ChatMessageReactionModel":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"messageId":{"type":"number","multipleOf":1},"userId":{"type":"number","multipleOf":1},"emoji":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"message":{"$ref":"#/components/schemas/ChatMessageModel"},"user":{"$ref":"#/components/schemas/UserModel"}},"required":["id","messageId","userId","emoji","createdAt","updatedAt","message","user"]},"ChatReportModel":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"reporterId":{"type":"number","multipleOf":1},"targetUserId":{"type":"number","multipleOf":1,"nullable":true},"roomId":{"type":"number","multipleOf":1,"nullable":true},"reason":{"type":"string","enum":["SPAM","HARASSMENT","HATE_SPEECH","SEXUAL_CONTENT","VIOLENCE","SCAM","IMPERSONATION","OTHER"],"minLength":1},"details":{"type":"string","minLength":1,"nullable":true},"status":{"type":"string","enum":["OPEN","REVIEWING","RESOLVED","DISMISSED"],"minLength":1},"snapshot":{"type":"object"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"resolvedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"decisionReason":{"type":"string","minLength":1,"nullable":true},"decidedById":{"type":"number","multipleOf":1,"nullable":true},"decisionNotifiedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"reporter":{"$ref":"#/components/schemas/UserModel"},"targetUser":{"oneOf":[{"$ref":"#/components/schemas/UserModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]},"room":{"oneOf":[{"$ref":"#/components/schemas/ChatRoomModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["id","reporterId","targetUserId","roomId","reason","details","status","snapshot","createdAt","updatedAt","resolvedAt","decisionReason","decidedById","decisionNotifiedAt","reporter","targetUser","room"]},"AdRewardProgressModel":{"type":"object"},"UserModelCreate":{"type":"object","properties":{"email":{"type":"string","format":"email","minLength":1},"name":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"countryId":{"type":"number","multipleOf":1,"nullable":true},"handle":{"type":"string","minLength":1,"nullable":true}},"required":["email","name","password"]},"GoogleLoginRequest":{"type":"object","properties":{"idToken":{"type":"string","description":"Google Identity Services credential JWT","minLength":1}},"required":["idToken"]},"ForgotPasswordResponse":{"type":"object","properties":{"message":{"type":"string"}}},"ForgotPasswordRequest":{"type":"object","properties":{"email":{"type":"string","format":"email","minLength":1}},"required":["email"]},"ResetPasswordResponse":{"type":"object","properties":{"success":{"type":"boolean"}}},"ResetPasswordRequest":{"type":"object","properties":{"token":{"type":"string","minLength":1},"newPassword":{"type":"string","minLength":1}},"required":["token","newPassword"]},"BannerInteractionPayload":{"type":"object","properties":{"visitorId":{"type":"string","nullable":true}},"required":["visitorId"]},"BannerBodyModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"BannerBodyModelCreate":{"type":"object","properties":{"bannerType":{"type":"string","enum":["DIALOG","INLINE"],"minLength":1},"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"bodyHtml":{"type":"string","minLength":1,"nullable":true},"variant":{"type":"string","minLength":1},"backgroundColor":{"type":"string","minLength":1,"nullable":true},"textColor":{"type":"string","minLength":1,"nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonHref":{"type":"string","minLength":1,"nullable":true},"buttonTo":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"buttonTextColor":{"type":"string","minLength":1,"nullable":true},"position":{"type":"string","enum":["TOP","TOP_BANNER","BOTTOM","FLOATING"],"minLength":1},"dismissible":{"type":"boolean"},"closeButtonColor":{"type":"string","minLength":1,"nullable":true},"targetAudience":{"type":"string","enum":["ALL","AUTHENTICATED","UNAUTHENTICATED"],"minLength":1},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"width":{"type":"number","multipleOf":1,"nullable":true},"height":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsGlobal":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsPerUser":{"type":"number","multipleOf":1,"nullable":true},"dismissCooldownHours":{"type":"number","multipleOf":1,"nullable":true},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"targetPages":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"targetCountries":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["title","targetPages","targetCountries"]},"BannerModelDelete":{"type":"object","properties":{"bannerType":{"type":"string","enum":["DIALOG","INLINE"],"minLength":1},"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"bodyHtml":{"type":"string","minLength":1,"nullable":true},"variant":{"type":"string","minLength":1},"backgroundColor":{"type":"string","minLength":1,"nullable":true},"textColor":{"type":"string","minLength":1,"nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonHref":{"type":"string","minLength":1,"nullable":true},"buttonTo":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"buttonTextColor":{"type":"string","minLength":1,"nullable":true},"position":{"type":"string","enum":["TOP","TOP_BANNER","BOTTOM","FLOATING"],"minLength":1},"dismissible":{"type":"boolean"},"closeButtonColor":{"type":"string","minLength":1,"nullable":true},"targetPages":{"type":"object"},"targetAudience":{"type":"string","enum":["ALL","AUTHENTICATED","UNAUTHENTICATED"],"minLength":1},"targetCountries":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"width":{"type":"number","multipleOf":1,"nullable":true},"height":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsGlobal":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsPerUser":{"type":"number","multipleOf":1,"nullable":true},"dismissCooldownHours":{"type":"number","multipleOf":1,"nullable":true},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1}},"required":["bannerType","description","bodyHtml","variant","backgroundColor","textColor","buttonLabel","buttonHref","buttonTo","buttonColor","buttonTextColor","position","dismissible","closeButtonColor","targetPages","targetAudience","targetCountries","startsAt","endsAt","width","height","maxImpressionsGlobal","maxImpressionsPerUser","dismissCooldownHours","isActive","sortOrder"]},"BannerModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"bannerType":{"type":"string","enum":["DIALOG","INLINE"],"minLength":1},"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"bodyHtml":{"type":"string","minLength":1,"nullable":true},"variant":{"type":"string","minLength":1},"backgroundColor":{"type":"string","minLength":1,"nullable":true},"textColor":{"type":"string","minLength":1,"nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonHref":{"type":"string","minLength":1,"nullable":true},"buttonTo":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"buttonTextColor":{"type":"string","minLength":1,"nullable":true},"position":{"type":"string","enum":["TOP","TOP_BANNER","BOTTOM","FLOATING"],"minLength":1},"dismissible":{"type":"boolean"},"closeButtonColor":{"type":"string","minLength":1,"nullable":true},"targetPages":{"type":"object"},"targetAudience":{"type":"string","enum":["ALL","AUTHENTICATED","UNAUTHENTICATED"],"minLength":1},"targetCountries":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"width":{"type":"number","multipleOf":1,"nullable":true},"height":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsGlobal":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsPerUser":{"type":"number","multipleOf":1,"nullable":true},"dismissCooldownHours":{"type":"number","multipleOf":1,"nullable":true},"impressionCount":{"type":"number","multipleOf":1},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"impressions":{"type":"array","items":{"$ref":"#/components/schemas/BannerImpressionModel"}}},"required":["id","bannerType","description","bodyHtml","variant","backgroundColor","textColor","buttonLabel","buttonHref","buttonTo","buttonColor","buttonTextColor","position","dismissible","closeButtonColor","targetPages","targetAudience","targetCountries","startsAt","endsAt","width","height","maxImpressionsGlobal","maxImpressionsPerUser","dismissCooldownHours","impressionCount","isActive","sortOrder","createdAt","updatedAt","impressions"]},"BannerImpressionModel":{"type":"object"},"BannerBodyModelUpdate":{"type":"object","properties":{"bannerType":{"type":"string","enum":["DIALOG","INLINE"],"minLength":1},"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"bodyHtml":{"type":"string","minLength":1,"nullable":true},"variant":{"type":"string","minLength":1},"backgroundColor":{"type":"string","minLength":1,"nullable":true},"textColor":{"type":"string","minLength":1,"nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonHref":{"type":"string","minLength":1,"nullable":true},"buttonTo":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"buttonTextColor":{"type":"string","minLength":1,"nullable":true},"position":{"type":"string","enum":["TOP","TOP_BANNER","BOTTOM","FLOATING"],"minLength":1},"dismissible":{"type":"boolean"},"closeButtonColor":{"type":"string","minLength":1,"nullable":true},"targetAudience":{"type":"string","enum":["ALL","AUTHENTICATED","UNAUTHENTICATED"],"minLength":1},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"endsAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"width":{"type":"number","multipleOf":1,"nullable":true},"height":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsGlobal":{"type":"number","multipleOf":1,"nullable":true},"maxImpressionsPerUser":{"type":"number","multipleOf":1,"nullable":true},"dismissCooldownHours":{"type":"number","multipleOf":1,"nullable":true},"isActive":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"targetPages":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"targetCountries":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["targetPages","targetCountries"]},"BannerModel":{"type":"object"},"BannerSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","bannerType","title","description","bodyHtml","variant","backgroundColor","textColor","buttonLabel","buttonHref","buttonTo","buttonColor","buttonTextColor","position","dismissible","closeButtonColor","targetPages","targetAudience","targetCountries","startsAt","endsAt","width","height","maxImpressionsGlobal","maxImpressionsPerUser","dismissCooldownHours","impressionCount","isActive","sortOrder","createdAt","updatedAt","impressions.id","impressions.bannerId","impressions.visitorKey","impressions.userId","impressions.count","impressions.lastShownAt","impressions.dismissedAt","impressions.createdAt","impressions.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","bannerType":"asc","title":"asc","description":"asc","bodyHtml":"asc","variant":"asc","backgroundColor":"asc","textColor":"asc","buttonLabel":"asc","buttonHref":"asc","buttonTo":"asc","buttonColor":"asc","buttonTextColor":"asc","position":"asc","dismissible":"asc","closeButtonColor":"asc","targetPages":"asc","targetAudience":"asc","targetCountries":"asc","startsAt":"asc","endsAt":"asc","width":"asc","height":"asc","maxImpressionsGlobal":"asc","maxImpressionsPerUser":"asc","dismissCooldownHours":"asc","impressionCount":"asc","isActive":"asc","sortOrder":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"bannerType":{"mode":"EQ","value":"example"},"title":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"},"bodyHtml":{"mode":"EQ","value":"example"},"variant":{"mode":"EQ","value":"example"},"backgroundColor":{"mode":"EQ","value":"example"},"textColor":{"mode":"EQ","value":"example"},"buttonLabel":{"mode":"EQ","value":"example"},"buttonHref":{"mode":"EQ","value":"example"},"buttonTo":{"mode":"EQ","value":"example"},"buttonColor":{"mode":"EQ","value":"example"},"buttonTextColor":{"mode":"EQ","value":"example"},"position":{"mode":"EQ","value":"example"},"dismissible":{"mode":"EQ","value":true},"closeButtonColor":{"mode":"EQ","value":"example"},"targetPages":{"mode":"EQ","value":{"key":"value"}},"targetAudience":{"mode":"EQ","value":"example"},"targetCountries":{"mode":"EQ","value":{"key":"value"}},"startsAt":{"mode":"EQ","value":"2026-11-02T19:39:28.209Z"},"endsAt":{"mode":"EQ","value":"2026-11-02T19:39:28.209Z"},"width":{"mode":"EQ","value":123},"height":{"mode":"EQ","value":123},"maxImpressionsGlobal":{"mode":"EQ","value":123},"maxImpressionsPerUser":{"mode":"EQ","value":123},"dismissCooldownHours":{"mode":"EQ","value":123},"impressionCount":{"mode":"EQ","value":123},"isActive":{"mode":"EQ","value":true},"sortOrder":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:28.209Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:28.209Z"}}]}},"required":["fields"]},"ChatRoomResponse":{"type":"object","properties":{"id":{"type":"number"},"type":{"type":"string","minLength":1},"name":{"type":"object"},"avatar":{"type":"object"},"avatarUrl":{"type":"object"},"createdById":{"type":"number"},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string"},"participants":{"type":"array","items":{}},"token":{"type":"string"},"realtimeUrl":{"type":"string"},"channels":{"type":"array","items":{}},"lastMessage":{"type":"object"},"unreadCount":{"type":"number"}},"required":["id","type","createdById","createdAt","participants"]},"CreateRoomBodyCreate":{"type":"object","properties":{"type":{"type":"string","minLength":1},"name":{"type":"string"},"participantIds":{"type":"array","items":{}}},"required":["type","participantIds"]},"ChatRoomListResponse":{"type":"object","properties":{"items":{"type":"array","items":{}},"nextCursor":{"type":"number"},"token":{"type":"string"},"realtimeUrl":{"type":"string"}},"required":["items"]},"BulkChatRoomsBody":{"type":"object","properties":{"roomIds":{"type":"array","items":{}}},"required":["roomIds"]},"ChatMessageResponse":{"type":"object","properties":{"id":{"type":"number"},"roomId":{"type":"number"},"senderId":{"type":"number"},"content":{"type":"string","minLength":1},"attachment":{"type":"object"},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string"},"sender":{"$ref":"#/components/schemas/ChatUser"},"reactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionResponse"}}},"required":["id","roomId","senderId","content","createdAt","sender","reactions"]},"ChatUser":{"type":"object","properties":{"id":{"type":"number"},"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"avatar":{"type":"object"},"avatarUrl":{"type":"object"},"isOnline":{"type":"boolean"},"lastSeenAt":{"type":"object"}},"required":["id","handle","name","isOnline"]},"ChatMessageReactionResponse":{"type":"object","properties":{"emoji":{"type":"string","minLength":1},"count":{"type":"number"},"reactors":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionUserResponse"}}},"required":["emoji","count","reactors"]},"ChatMessageReactionUserResponse":{"type":"object","properties":{"userId":{"type":"number"},"name":{"type":"string","minLength":1}},"required":["userId","name"]},"SendMessageBodyCreate":{"type":"object","properties":{"content":{"type":"string","minLength":1},"clientId":{"type":"string","minLength":1}},"required":["content","clientId"]},"ChatMediaLinkResponse":{"type":"object","properties":{"messageId":{"type":"number"},"url":{"type":"string","minLength":1},"expiresAt":{"type":"string","minLength":1},"expiresInSeconds":{"type":"number"},"kind":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1},"mimeType":{"type":"string","minLength":1},"size":{"type":"number"}},"required":["messageId","url","expiresAt","expiresInSeconds","kind","fileName","mimeType","size"]},"UpdateChatRoomNameBody":{"type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1}},"required":["name"]},"ChatRoomReportResponse":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1},"left":{"type":"boolean"}},"required":["id","status","createdAt","left"]},"ReportChatRoomBody":{"type":"object","properties":{"reason":{"type":"string","minLength":1},"details":{"type":"string"},"leave":{"type":"boolean"}},"required":["reason"]},"ChatMessagesResponse":{"type":"object","properties":{"items":{"type":"array","items":{}},"nextCursor":{"type":"number"}},"required":["items"]},"ChatMessageReactionsResponse":{"type":"object","properties":{"roomId":{"type":"number"},"messageId":{"type":"number"},"reactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionResponse"}}},"required":["roomId","messageId","reactions"]},"PutChatMessageReactionBody":{"type":"object","properties":{"emoji":{"type":"string","minLength":1}},"required":["emoji"]},"AddParticipantsBodyCreate":{"type":"object","properties":{"userIds":{"type":"array","items":{}}},"required":["userIds"]},"ChatPresenceResponse":{"type":"object","properties":{"roomId":{"type":"number"},"users":{"type":"array","items":{"$ref":"#/components/schemas/ChatPresenceUser"}}},"required":["roomId","users"]},"ChatPresenceUser":{"type":"object","properties":{"userId":{"type":"number"},"name":{"type":"string","minLength":1},"isOnline":{"type":"boolean"},"isTyping":{"type":"boolean"},"lastSeenAt":{"type":"object"},"lastReadAt":{"type":"object"}},"required":["userId","name","isOnline","isTyping"]},"ChatPresenceOverviewResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ChatPresenceResponse"}}},"required":["items"]},"SetTypingBody":{"type":"object","properties":{"isTyping":{"type":"boolean"}},"required":["isTyping"]},"UnreadCountResponse":{"type":"object","properties":{"total":{"type":"number"}},"required":["total"]},"UserCreditAccountModelCreateResponse":{"type":"object"},"UserCreditAccountModelCreate":{"type":"object"},"UserCreditAccountModelDelete":{"type":"object"},"UserCreditAccountModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"userId":{"type":"number","multipleOf":1},"balance":{"type":"number"},"reservedBalance":{"type":"number"},"currencyId":{"type":"number","multipleOf":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"user":{"$ref":"#/components/schemas/UserModel"},"currency":{"oneOf":[{"$ref":"#/components/schemas/CurrencyModel"},{"nullable":true},{"nullable":true}]},"transactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"reservations":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditReservationModel"}}},"required":["id","userId","balance","reservedBalance","currencyId","createdAt","updatedAt","user","currency","transactions","reservations"]},"CurrencyModel":{"type":"object"},"UserCreditTransactionModel":{"type":"object"},"UserCreditAccountModelUpdate":{"type":"object","properties":{"balance":{"type":"number"}},"required":["balance"]},"UserCreditAccountModel":{"type":"object"},"CreditAccountSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","userId","balance","reservedBalance","currencyId","createdAt","updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt","transactions.id","transactions.accountId","transactions.userId","transactions.direction","transactions.amount","transactions.balanceAfter","transactions.currencyId","transactions.description","transactions.referenceType","transactions.referenceId","transactions.metadata","transactions.jobId","transactions.createdAt","transactions.updatedAt","reservations.id","reservations.accountId","reservations.userId","reservations.referenceType","reservations.referenceId","reservations.amount","reservations.status","reservations.metadata","reservations.settledAt","reservations.releasedAt","reservations.expiresAt","reservations.createdAt","reservations.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","userId":"asc","balance":"asc","reservedBalance":"asc","currencyId":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"balance":{"mode":"EQ","value":"12.34"},"reservedBalance":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:28.678Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:28.679Z"}}]}},"required":["fields"]},"CreditPlanPriceModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"CreditPlanPriceModelCreate":{"type":"object","properties":{"planId":{"type":"number","multipleOf":1},"currencyId":{"type":"number","multipleOf":1},"price":{"type":"number"}},"required":["planId","currencyId","price"]},"CreditPlanPriceModelDelete":{"type":"object","properties":{"planId":{"type":"number","multipleOf":1},"currencyId":{"type":"number","multipleOf":1},"price":{"type":"number"}}},"CreditPlanPriceModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"planId":{"type":"number","multipleOf":1},"plan":{"$ref":"#/components/schemas/CreditPlanModel"},"currencyId":{"type":"number","multipleOf":1},"currency":{"$ref":"#/components/schemas/CurrencyModel"},"price":{"type":"number"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"}},"required":["id","plan","currency","createdAt","updatedAt"]},"CreditPlanModel":{"type":"object"},"CreditPlanPriceModelUpdate":{"type":"object","properties":{"planId":{"type":"number","multipleOf":1},"currencyId":{"type":"number","multipleOf":1},"price":{"type":"number"}}},"CreditPlanPriceModel":{"type":"object"},"CreditPlanPriceSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","planId","currencyId","price","createdAt","updatedAt","plan.id","plan.name","plan.description","plan.priceInr","plan.credits","plan.badge","plan.features","plan.buttonLabel","plan.buttonColor","plan.isActive","plan.scale","plan.sortOrder","plan.countryId","plan.createdAt","plan.updatedAt","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","planId":"asc","currencyId":"asc","price":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"planId":{"mode":"EQ","value":123},"currencyId":{"mode":"EQ","value":123},"price":{"mode":"EQ","value":"12.34"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:29.417Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:29.417Z"}}]}},"required":["fields"]},"CreditPlanBodyModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"CreditPlanBodyModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"priceInr":{"type":"number"},"credits":{"type":"number","multipleOf":1},"badge":{"type":"string","minLength":1,"nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"isActive":{"type":"boolean"},"scale":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"countryId":{"type":"number","multipleOf":1,"nullable":true},"features":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["name","priceInr","credits","features"]},"CreditPlanModelDelete":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"priceInr":{"type":"number"},"credits":{"type":"number","multipleOf":1},"badge":{"type":"string","minLength":1,"nullable":true},"features":{"type":"object","nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"isActive":{"type":"boolean"},"scale":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"countryId":{"type":"number","multipleOf":1,"nullable":true}},"required":["description","badge","features","buttonLabel","buttonColor","isActive","scale","sortOrder","countryId"]},"CreditPlanModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"priceInr":{"type":"number"},"credits":{"type":"number","multipleOf":1},"badge":{"type":"string","minLength":1,"nullable":true},"features":{"type":"object","nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"isActive":{"type":"boolean"},"scale":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"countryId":{"type":"number","multipleOf":1,"nullable":true},"country":{"oneOf":[{"$ref":"#/components/schemas/CountryModel"},{"nullable":true}]},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"prices":{"type":"array","items":{"$ref":"#/components/schemas/CreditPlanPriceModel"}}},"required":["id","description","badge","features","buttonLabel","buttonColor","isActive","scale","sortOrder","countryId","country","createdAt","updatedAt","prices"]},"CountryModel":{"type":"object"},"CreditPlanBodyModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"priceInr":{"type":"number"},"credits":{"type":"number","multipleOf":1},"badge":{"type":"string","minLength":1,"nullable":true},"buttonLabel":{"type":"string","minLength":1,"nullable":true},"buttonColor":{"type":"string","minLength":1,"nullable":true},"isActive":{"type":"boolean"},"scale":{"type":"boolean"},"sortOrder":{"type":"number","multipleOf":1},"countryId":{"type":"number","multipleOf":1,"nullable":true},"features":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["features"]},"CreditPlanSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","description","priceInr","credits","badge","features","buttonLabel","buttonColor","isActive","scale","sortOrder","countryId","createdAt","updatedAt","country.id","country.name","country.displayName","country.iso2","country.iso3","country.numCode","country.metadata","country.currencyId","prices.id","prices.planId","prices.currencyId","prices.price","prices.createdAt","prices.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","description":"asc","priceInr":"asc","credits":"asc","badge":"asc","features":"asc","buttonLabel":"asc","buttonColor":"asc","isActive":"asc","scale":"asc","sortOrder":"asc","countryId":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"},"priceInr":{"mode":"EQ","value":"12.34"},"credits":{"mode":"EQ","value":123},"badge":{"mode":"EQ","value":"example"},"features":{"mode":"EQ","value":{"key":"value"}},"buttonLabel":{"mode":"EQ","value":"example"},"buttonColor":{"mode":"EQ","value":"example"},"isActive":{"mode":"EQ","value":true},"scale":{"mode":"EQ","value":true},"sortOrder":{"mode":"EQ","value":123},"countryId":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:30.161Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:30.161Z"}}]}},"required":["fields"]},"CreditOrderResponse":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"amount":{"type":"string","minLength":1},"currencyCode":{"type":"string","minLength":1},"provider":{"type":"string","minLength":1},"serviceName":{"type":"object"},"checkoutUrl":{"type":"string"}},"required":["orderId","amount","currencyCode","provider"]},"UserCreditTransactionModelCreateResponse":{"type":"object"},"UserCreditTransactionModelCreate":{"type":"object"},"UserCreditTransactionModelDelete":{"type":"object"},"UserCreditTransactionModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"accountId":{"type":"number","multipleOf":1},"userId":{"type":"number","multipleOf":1},"direction":{"type":"string","enum":["CREDIT","DEBIT"],"minLength":1},"amount":{"type":"number"},"balanceAfter":{"type":"number"},"currencyId":{"type":"number","multipleOf":1},"description":{"type":"string","minLength":1,"nullable":true},"referenceType":{"type":"string","minLength":1,"nullable":true},"referenceId":{"type":"string","minLength":1,"nullable":true},"metadata":{"type":"object","nullable":true},"jobId":{"type":"number","multipleOf":1,"nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"account":{"$ref":"#/components/schemas/UserCreditAccountModel"},"currency":{"oneOf":[{"$ref":"#/components/schemas/CurrencyModel"},{"nullable":true},{"nullable":true}]},"user":{"$ref":"#/components/schemas/UserModel"},"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true},{"nullable":true}]}},"required":["id","accountId","userId","direction","amount","balanceAfter","currencyId","description","referenceType","referenceId","metadata","jobId","createdAt","updatedAt","account","currency","user","job"]},"UserCreditTransactionModelUpdate":{"type":"object"},"CreditTransactionSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","accountId","userId","direction","amount","balanceAfter","currencyId","description","referenceType","referenceId","metadata","jobId","createdAt","updatedAt","account.id","account.userId","account.balance","account.reservedBalance","account.currencyId","account.createdAt","account.updatedAt","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","job.id","job.userId","job.rvcVoiceModelId","job.type","job.status","job.estimatedDebitAmount","job.debitedAmount","job.currencyId","job.payload","job.result","job.error","job.metadata","job.videoTitle","job.searchTitle","job.videoUrl","job.thumbnailUrl","job.isPublic","job.isPurchased","job.isCommunityPurchase","job.communitySourceJobId","job.startedAt","job.runnerId","job.completedAt","job.nextRetryAt","job.retryLog","job.automatedRetryCount","job.clientRequestId","job.createdAt","job.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","accountId":"asc","userId":"asc","direction":"asc","amount":"asc","balanceAfter":"asc","currencyId":"asc","description":"asc","referenceType":"asc","referenceId":"asc","metadata":"asc","jobId":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"accountId":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"direction":{"mode":"EQ","value":"example"},"amount":{"mode":"EQ","value":"12.34"},"balanceAfter":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"description":{"mode":"EQ","value":"example"},"referenceType":{"mode":"EQ","value":"example"},"referenceId":{"mode":"EQ","value":"example"},"metadata":{"mode":"EQ","value":{"key":"value"}},"jobId":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:30.775Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:30.775Z"}}]}},"required":["fields"]},"CueSheetResponse":{"type":"object","properties":{"id":{"type":"number"},"kind":{"type":"string","enum":["LYRICS"],"minLength":1},"jobId":{"nullable":true,"type":"number"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/CueSegment"}},"metadata":{"type":"object"},"version":{"type":"number"},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string","minLength":1},"warnings":{"type":"array","items":{"type":"string"}}},"required":["id","kind","segments","version","createdAt","updatedAt"]},"CueSegment":{"type":"object","properties":{"start":{"type":"number"},"end":{"type":"number"},"text":{"type":"string","minLength":1},"words":{"type":"array","items":{"$ref":"#/components/schemas/CueWord"}}},"required":["start","end","text"]},"CueWord":{"type":"object","properties":{"word":{"type":"string","minLength":1},"start":{"type":"number"},"end":{"type":"number"}},"required":["word","start","end"]},"CreateCueSheetPayload":{"type":"object","properties":{"kind":{"type":"string","enum":["LYRICS"]},"segments":{"type":"array","items":{"$ref":"#/components/schemas/CueSegment"}},"metadata":{"type":"object"},"render":{"type":"object"}},"required":["segments"]},"CueSheetFromJobPayload":{"type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/CueSegment"}}}},"CueSheetSourceResponse":{"type":"object","properties":{"cueSheetId":{"type":"number"},"kind":{"type":"string","minLength":1},"videoId":{"type":"string"},"playable":{"type":"boolean"},"url":{"type":"string"},"fileName":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"number"},"expiresInSeconds":{"type":"number"},"expiresAt":{"type":"string"},"cachedUntil":{"type":"string"}},"required":["cueSheetId","kind","playable"]},"PrepareCueSheetSourcePayload":{"type":"object","properties":{"requestId":{"type":"string"}}},"SingingLyricsResponse":{"type":"object","properties":{"jobId":{"type":"number"},"status":{"type":"string","enum":["ready","pending","none"],"minLength":1},"segments":{"type":"array","items":{"$ref":"#/components/schemas/CueSegment"}}},"required":["jobId","status","segments"]},"UpdateCueSheetPayload":{"type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/CueSegment"}},"render":{"type":"object"},"expectedVersion":{"type":"number"}}},"CurrencyModelCreateResponse":{"type":"object"},"CurrencyModelCreate":{"type":"object","properties":{"code":{"type":"string","minLength":1},"symbol":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"isActive":{"type":"boolean"},"isBase":{"type":"boolean"},"exchangeRate":{"oneOf":[{"$ref":"#/components/schemas/CurrencyExchangeModel"},{"nullable":true}]}},"required":["code","symbol","name","isActive","isBase"]},"CurrencyExchangeModel":{"type":"object"},"CurrencyModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"code":{"type":"string","minLength":1},"symbol":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"isActive":{"type":"boolean"},"isBase":{"type":"boolean"},"exchangeRate":{"oneOf":[{"$ref":"#/components/schemas/CurrencyExchangeModel"},{"nullable":true}]},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceModel"}},"creditAccounts":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditAccountModel"}},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobModel"}},"paymentOrders":{"type":"array","items":{"$ref":"#/components/schemas/UserPaymentOrderModel"}},"countries":{"type":"array","items":{"$ref":"#/components/schemas/CountryModel"}},"creditPlanPrices":{"type":"array","items":{"$ref":"#/components/schemas/CreditPlanPriceModel"}}},"required":["id","code","symbol","name","isActive","isBase","exchangeRate","invoices","creditAccounts","creditTransactions","jobs","paymentOrders","countries","creditPlanPrices"]},"InvoiceModel":{"type":"object"},"UserPaymentOrderModel":{"type":"object"},"CurrencyModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"code":{"type":"string","minLength":1},"symbol":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"isActive":{"type":"boolean"},"isBase":{"type":"boolean"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"exchangeRate":{"oneOf":[{"$ref":"#/components/schemas/CurrencyExchangeModel"},{"nullable":true}]},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceModel"}},"creditAccounts":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditAccountModel"}},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobModel"}},"paymentOrders":{"type":"array","items":{"$ref":"#/components/schemas/UserPaymentOrderModel"}},"countries":{"type":"array","items":{"$ref":"#/components/schemas/CountryModel"}},"creditPlanPrices":{"type":"array","items":{"$ref":"#/components/schemas/CreditPlanPriceModel"}}},"required":["id","code","symbol","name","isActive","isBase","createdAt","updatedAt","exchangeRate","invoices","creditAccounts","creditTransactions","jobs","paymentOrders","countries","creditPlanPrices"]},"CurrencyModelUpdate":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"code":{"type":"string","minLength":1},"symbol":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"isActive":{"type":"boolean"},"isBase":{"type":"boolean"},"exchangeRate":{"oneOf":[{"$ref":"#/components/schemas/CurrencyExchangeModel"},{"nullable":true}]},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceModel"}},"creditAccounts":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditAccountModel"}},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobModel"}},"paymentOrders":{"type":"array","items":{"$ref":"#/components/schemas/UserPaymentOrderModel"}},"countries":{"type":"array","items":{"$ref":"#/components/schemas/CountryModel"}},"creditPlanPrices":{"type":"array","items":{"$ref":"#/components/schemas/CreditPlanPriceModel"}}}},"CurrencySearchResponseModel":{"type":"object","properties":{"hello":{"type":"string"}}},"CurrencySearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","code","symbol","name","isActive","isBase","createdAt","updatedAt","exchangeRate.id","exchangeRate.currencyId","exchangeRate.exchangeRate","exchangeRate.lastUpdated","invoices.id","invoices.invoiceStartDate","invoices.invoiceCreatedAt","invoices.userId","invoices.totalAmount","invoices.exchangeRate","invoices.currencyId","invoices.isPaid","invoices.transactionId","invoices.invoiceNumber","invoices.paymentID","creditAccounts.id","creditAccounts.userId","creditAccounts.balance","creditAccounts.reservedBalance","creditAccounts.currencyId","creditAccounts.createdAt","creditAccounts.updatedAt","creditTransactions.id","creditTransactions.accountId","creditTransactions.userId","creditTransactions.direction","creditTransactions.amount","creditTransactions.balanceAfter","creditTransactions.currencyId","creditTransactions.description","creditTransactions.referenceType","creditTransactions.referenceId","creditTransactions.metadata","creditTransactions.jobId","creditTransactions.createdAt","creditTransactions.updatedAt","jobs.id","jobs.userId","jobs.rvcVoiceModelId","jobs.type","jobs.status","jobs.estimatedDebitAmount","jobs.debitedAmount","jobs.currencyId","jobs.payload","jobs.result","jobs.error","jobs.metadata","jobs.videoTitle","jobs.searchTitle","jobs.videoUrl","jobs.thumbnailUrl","jobs.isPublic","jobs.isPurchased","jobs.isCommunityPurchase","jobs.communitySourceJobId","jobs.startedAt","jobs.runnerId","jobs.completedAt","jobs.nextRetryAt","jobs.retryLog","jobs.automatedRetryCount","jobs.clientRequestId","jobs.createdAt","jobs.updatedAt","paymentOrders.id","paymentOrders.userId","paymentOrders.provider","paymentOrders.serviceName","paymentOrders.orderId","paymentOrders.amount","paymentOrders.currencyId","paymentOrders.status","paymentOrders.notes","paymentOrders.paymentId","paymentOrders.signature","paymentOrders.metadata","paymentOrders.createdAt","paymentOrders.updatedAt","paymentOrders.paidAt","countries.id","countries.name","countries.displayName","countries.iso2","countries.iso3","countries.numCode","countries.metadata","countries.currencyId","creditPlanPrices.id","creditPlanPrices.planId","creditPlanPrices.currencyId","creditPlanPrices.price","creditPlanPrices.createdAt","creditPlanPrices.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","code":"asc","symbol":"asc","name":"asc","isActive":"asc","isBase":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"code":{"mode":"EQ","value":"example"},"symbol":{"mode":"EQ","value":"example"},"name":{"mode":"EQ","value":"example"},"isActive":{"mode":"EQ","value":true},"isBase":{"mode":"EQ","value":true},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:31.231Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:31.231Z"}}]}},"required":["fields"]},"CurrencyExchangeModelCreateResponse":{"type":"object"},"CurrencyExchangeModelCreate":{"type":"object","properties":{"currencyId":{"type":"number","multipleOf":1},"exchangeRate":{"type":"number"},"lastUpdated":{"type":"string","minLength":1,"format":"date-time"}},"required":["currencyId","exchangeRate"]},"CurrencyExchangeModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"currencyId":{"type":"number","multipleOf":1},"exchangeRate":{"type":"number"},"lastUpdated":{"type":"string","minLength":1,"format":"date-time"}},"required":["id","currencyId","exchangeRate","lastUpdated"]},"CurrencyExchangeModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"currencyId":{"type":"number","multipleOf":1},"currency":{"$ref":"#/components/schemas/CurrencyModel"},"exchangeRate":{"type":"number"},"lastUpdated":{"type":"string","minLength":1,"format":"date-time"}},"required":["id","currencyId","currency","exchangeRate","lastUpdated"]},"CurrencyExchangeModelUpdate":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"currencyId":{"type":"number","multipleOf":1},"exchangeRate":{"type":"number"},"lastUpdated":{"type":"string","minLength":1,"format":"date-time"}}},"CurrencyExchangeSearchResponseModel":{"type":"object","properties":{"currencyName":{"type":"string"}}},"CurrencyExchangeSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","currencyId","exchangeRate","lastUpdated","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","currencyId":"asc","exchangeRate":"asc","lastUpdated":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"currencyId":{"mode":"EQ","value":123},"exchangeRate":{"mode":"EQ","value":12.34},"lastUpdated":{"mode":"EQ","value":"2026-11-02T19:39:31.860Z"}}]}},"required":["fields"]},"DemoSongPublicConfigResponse":{"type":"object","properties":{"durationSeconds":{"type":"number"},"limit":{"type":"number"},"windowDays":{"type":"number"},"retentionHours":{"type":"number"},"quota":{"$ref":"#/components/schemas/DemoSongQuotaResponse"},"reference":{"$ref":"#/components/schemas/DemoSongReferenceLimitsResponse"}},"required":["durationSeconds","limit","windowDays","retentionHours","quota","reference"]},"DemoSongQuotaResponse":{"type":"object","properties":{"used":{"type":"number"},"limit":{"type":"number"},"remaining":{"type":"number"},"windowDays":{"type":"number"},"periodStartedAt":{"type":"string","minLength":1},"periodEndsAt":{"type":"string","minLength":1}},"required":["used","limit","remaining","windowDays","periodStartedAt","periodEndsAt"]},"DemoSongReferenceLimitsResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"youtubeEnabled":{"type":"boolean"},"maxBytes":{"type":"number"},"maxSeconds":{"type":"number"},"retentionHours":{"type":"number"},"acceptedMimeTypes":{"type":"array","items":{}}},"required":["enabled","youtubeEnabled","maxBytes","maxSeconds","retentionHours","acceptedMimeTypes"]},"DemoSongReferenceResponse":{"type":"object","properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","enum":["UPLOAD","YOUTUBE"],"minLength":1},"fileName":{"type":"string","minLength":1},"mimeType":{"type":"string","minLength":1},"fileSize":{"type":"number"},"durationSeconds":{"type":"number"},"sourceUrl":{"type":"string"},"expiresAt":{"type":"string","minLength":1}},"required":["id","source","fileName","mimeType","fileSize","expiresAt"]},"DemoSongYoutubeReferenceRequest":{"type":"object","properties":{"clientRequestId":{"type":"string","description":"Idempotency key so a retried import does not consume a second YouTube allowance.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1},"url":{"type":"string","description":"Public YouTube URL for audio the visitor owns or has permission to process.","maxLength":500,"minLength":1}},"additionalProperties":false,"required":["clientRequestId","url"]},"DemoSongPublicResponse":{"type":"object","properties":{"id":{"type":"string","minLength":1},"status":{"type":"string","minLength":1},"stage":{"type":"string","minLength":1},"durationSeconds":{"type":"number"},"requestedDurationSeconds":{"type":"number"},"renderedDurationSeconds":{"type":"number"},"quality":{"type":"string","minLength":1},"reference":{"$ref":"#/components/schemas/DemoSongJobReferenceResponse"},"queuePosition":{"type":"number"},"title":{"type":"string"},"lyrics":{"type":"string"},"caption":{"type":"string"},"audioUrl":{"type":"string"},"expiresAt":{"type":"string"},"error":{"type":"string"},"quota":{"$ref":"#/components/schemas/DemoSongQuotaResponse"}},"required":["id","status","stage","durationSeconds","requestedDurationSeconds","quality","quota"]},"DemoSongJobReferenceResponse":{"type":"object","properties":{"source":{"type":"string","enum":["UPLOAD","YOUTUBE"],"minLength":1},"fileName":{"type":"string","minLength":1},"sourceUrl":{"type":"string"},"durationSeconds":{"type":"number"}},"required":["source","fileName"]},"DemoSongCreateRequest":{"type":"object","properties":{"clientRequestId":{"type":"string","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$","minLength":1},"occasion":{"type":"string","enum":["love","birthday","anniversary","wedding","christian-worship","proposal","friendship","family","memorial","baby","brand","creator","celebration"],"minLength":1},"mood":{"type":"string","enum":["romantic","joyful","heartfelt","uplifting","peaceful","energetic","nostalgic","hopeful"],"minLength":1},"genre":{"type":"string","enum":["pop","acoustic-pop","rnb","folk","gospel","worship","rock","electronic","cinematic","country","hip-hop","bollywood"],"minLength":1},"language":{"type":"string","enum":["English","Hindi","Spanish","French","Portuguese"]},"dedication":{"type":"string","description":"Optional person, memory, or message to personalize the original demo lyrics.","maxLength":160},"referenceId":{"type":"string","description":"Handle returned by POST /demo-song/references when a reference recording is attached.","pattern":"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[1-8][0-9A-Fa-f]{3}-[89AaBb][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$"}},"additionalProperties":false,"required":["clientRequestId","occasion","mood","genre"]},"DemoSongJobListModel":{"type":"object"},"DemoSongJobSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","quotaIdentityKey","clientRequestId","status","stage","occasion","mood","genre","language","dedication","title","lyrics","caption","prompt","llmModel","promptTokens","completionTokens","cachedPromptTokens","llmProviderCostUsd","renderGpuSeconds","songProviderCostUsd","totalProviderCostUsd","durationSeconds","renderedDurationMs","inferStep","referenceId","storageService","storageBucket","storageKey","mimeType","fileSize","checksumSha256","error","attempts","nextRetryAt","startedAt","completedAt","expiresAt","purgedAt","createdAt","updatedAt","quota.identityKey","quota.ipAddress","quota.countryId","quota.countryIso2","quota.countryDetectionSource","quota.usageCount","quota.periodStartedAt","quota.periodEndsAt","quota.firstUsedAt","quota.lastUsedAt","quota.createdAt","quota.updatedAt","reference.id","reference.quotaIdentityKey","reference.source","reference.fileName","reference.mimeType","reference.fileSize","reference.durationMs","reference.sourceUrl","reference.sourceVideoId","reference.storageService","reference.storageBucket","reference.storageKey","reference.checksumSha256","reference.consumedAt","reference.expiresAt","reference.purgedAt","reference.createdAt","reference.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","quotaIdentityKey":"asc","clientRequestId":"asc","status":"asc","stage":"asc","occasion":"asc","mood":"asc","genre":"asc","language":"asc","dedication":"asc","title":"asc","lyrics":"asc","caption":"asc","prompt":"asc","llmModel":"asc","promptTokens":"asc","completionTokens":"asc","cachedPromptTokens":"asc","llmProviderCostUsd":"asc","renderGpuSeconds":"asc","songProviderCostUsd":"asc","totalProviderCostUsd":"asc","durationSeconds":"asc","renderedDurationMs":"asc","inferStep":"asc","referenceId":"asc","storageService":"asc","storageBucket":"asc","storageKey":"asc","mimeType":"asc","fileSize":"asc","checksumSha256":"asc","error":"asc","attempts":"asc","nextRetryAt":"asc","startedAt":"asc","completedAt":"asc","expiresAt":"asc","purgedAt":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":"example"},"quotaIdentityKey":{"mode":"EQ","value":"example"},"clientRequestId":{"mode":"EQ","value":"example"},"status":{"mode":"EQ","value":"example"},"stage":{"mode":"EQ","value":"example"},"occasion":{"mode":"EQ","value":"example"},"mood":{"mode":"EQ","value":"example"},"genre":{"mode":"EQ","value":"example"},"language":{"mode":"EQ","value":"example"},"dedication":{"mode":"EQ","value":"example"},"title":{"mode":"EQ","value":"example"},"lyrics":{"mode":"EQ","value":"example"},"caption":{"mode":"EQ","value":"example"},"prompt":{"mode":"EQ","value":"example"},"llmModel":{"mode":"EQ","value":"example"},"promptTokens":{"mode":"EQ","value":123},"completionTokens":{"mode":"EQ","value":123},"cachedPromptTokens":{"mode":"EQ","value":123},"llmProviderCostUsd":{"mode":"EQ","value":"12.34"},"renderGpuSeconds":{"mode":"EQ","value":123},"songProviderCostUsd":{"mode":"EQ","value":"12.34"},"totalProviderCostUsd":{"mode":"EQ","value":"12.34"},"durationSeconds":{"mode":"EQ","value":123},"renderedDurationMs":{"mode":"EQ","value":123},"inferStep":{"mode":"EQ","value":123},"referenceId":{"mode":"EQ","value":"example"},"storageService":{"mode":"EQ","value":"example"},"storageBucket":{"mode":"EQ","value":"example"},"storageKey":{"mode":"EQ","value":"example"},"mimeType":{"mode":"EQ","value":"example"},"fileSize":{"mode":"EQ","value":123},"checksumSha256":{"mode":"EQ","value":"example"},"error":{"mode":"EQ","value":"example"},"attempts":{"mode":"EQ","value":123},"nextRetryAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"startedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"completedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"expiresAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"purgedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"}}]}},"required":["fields"]},"DemoSongAdminSummary":{"type":"object","properties":{"totalJobs":{"type":"number"},"uniqueGuestIps":{"type":"number"},"readyJobs":{"type":"number"},"failedJobs":{"type":"number"},"llmProviderCostUsd":{"type":"string","description":"Total LLM spend on demo lyrics and captions, in USD.","minLength":1},"electricityCostUsd":{"type":"string","description":"Total electricity cost of demo renders on the self-hosted GPU, in USD.","minLength":1},"totalProviderCostUsd":{"type":"string","minLength":1},"avgLlmProviderCostUsdPerReadyJob":{"type":"string","description":"LLM spend divided by delivered demos, in USD.","minLength":1},"avgElectricityCostUsdPerReadyJob":{"type":"string","description":"Render electricity divided by delivered demos, in USD.","minLength":1},"avgTotalProviderCostUsdPerReadyJob":{"type":"string","description":"All-in cost of one delivered demo, in USD.","minLength":1},"promptTokens":{"type":"number"},"completionTokens":{"type":"number"},"cachedPromptTokens":{"type":"number","description":"Prompt tokens served from the provider prefix cache at the reduced rate."},"promptCacheHitRatePercent":{"type":"number","description":"Share of prompt tokens that hit the cache. A low value means the shared prompt prefix is drifting."},"renderGpuSeconds":{"type":"number","description":"Total measured GPU wall-clock seconds spent rendering demos."},"countries":{"type":"array","items":{}}},"required":["totalJobs","uniqueGuestIps","readyJobs","failedJobs","llmProviderCostUsd","electricityCostUsd","totalProviderCostUsd","avgLlmProviderCostUsdPerReadyJob","avgElectricityCostUsdPerReadyJob","avgTotalProviderCostUsdPerReadyJob","promptTokens","completionTokens","cachedPromptTokens","promptCacheHitRatePercent","renderGpuSeconds","countries"]},"DemoSongPlaybackLinkResponse":{"type":"object","properties":{"playbackUrl":{"type":"string","minLength":1},"mimeType":{"type":"string","minLength":1},"expiresInSeconds":{"type":"number","description":"Seconds until the signed link stops working."},"durationSeconds":{"type":"number","description":"Measured length of the render, when the container could be parsed."},"fileName":{"type":"string"}},"required":["playbackUrl","mimeType","expiresInSeconds"]},"DemoSongQuotaListModel":{"type":"object"},"DemoSongQuotaSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["identityKey","ipAddress","countryId","countryIso2","countryDetectionSource","usageCount","periodStartedAt","periodEndsAt","firstUsedAt","lastUsedAt","createdAt","updatedAt","country.id","country.name","country.displayName","country.iso2","country.iso3","country.numCode","country.metadata","country.currencyId","jobs.id","jobs.quotaIdentityKey","jobs.clientRequestId","jobs.status","jobs.stage","jobs.occasion","jobs.mood","jobs.genre","jobs.language","jobs.dedication","jobs.title","jobs.lyrics","jobs.caption","jobs.prompt","jobs.llmModel","jobs.promptTokens","jobs.completionTokens","jobs.cachedPromptTokens","jobs.llmProviderCostUsd","jobs.renderGpuSeconds","jobs.songProviderCostUsd","jobs.totalProviderCostUsd","jobs.durationSeconds","jobs.renderedDurationMs","jobs.inferStep","jobs.referenceId","jobs.storageService","jobs.storageBucket","jobs.storageKey","jobs.mimeType","jobs.fileSize","jobs.checksumSha256","jobs.error","jobs.attempts","jobs.nextRetryAt","jobs.startedAt","jobs.completedAt","jobs.expiresAt","jobs.purgedAt","jobs.createdAt","jobs.updatedAt"]},"orderBy":{"type":"object","example":{"identityKey":"asc","ipAddress":"asc","countryId":"asc","countryIso2":"asc","countryDetectionSource":"asc","usageCount":"asc","periodStartedAt":"asc","periodEndsAt":"asc","firstUsedAt":"asc","lastUsedAt":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"identityKey":{"mode":"EQ","value":"example"},"ipAddress":{"mode":"EQ","value":"example"},"countryId":{"mode":"EQ","value":123},"countryIso2":{"mode":"EQ","value":"example"},"countryDetectionSource":{"mode":"EQ","value":"example"},"usageCount":{"mode":"EQ","value":123},"periodStartedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"periodEndsAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"firstUsedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"lastUsedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:32.407Z"}}]}},"required":["fields"]},"DiscountModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"DiscountModelCreate":{"type":"object","properties":{"discountName":{"type":"string","minLength":1},"discountType":{"type":"string","enum":["PERCENTAGE","FIXED_AMOUNT"],"minLength":1},"discountValue":{"type":"number"}}},"DiscountModelDelete":{"type":"object","properties":{"discountName":{"type":"string","minLength":1},"promoCodes":{"type":"array","items":{"$ref":"#/components/schemas/PromoCodeModel"}}},"required":["discountName","promoCodes"]},"PromoCodeModel":{"type":"object"},"DiscountModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"discountName":{"type":"string","minLength":1},"discountType":{"type":"string","enum":["PERCENTAGE","FIXED_AMOUNT"],"minLength":1},"discountValue":{"type":"number"}},"required":["id","discountName","discountType","discountValue"]},"DiscountModelUpdate":{"type":"object","properties":{"discountName":{"type":"string","minLength":1},"discountType":{"type":"string","enum":["PERCENTAGE","FIXED_AMOUNT"],"minLength":1},"discountValue":{"type":"number"}}},"DiscountModel":{"type":"object","properties":{"promoCodes":{"type":"array","items":{"$ref":"#/components/schemas/PromoCodeModel"}}},"required":["promoCodes"]},"DiscountSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","discountName","discountType","discountValue","promoCodes.id","promoCodes.code","promoCodes.expiryDate","promoCodes.discountID"]},"orderBy":{"type":"object","example":{"id":"asc","discountName":"asc","discountType":"asc","discountValue":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"discountName":{"mode":"EQ","value":"example"},"discountType":{"mode":"EQ","value":"example"},"discountValue":{"mode":"EQ","value":12.34}}]}},"required":["fields"]},"RenderEmailTemplateResponse":{"type":"object","properties":{"html":{"type":"string"}}},"RenderEmailTemplateRequest":{"type":"object","properties":{"mjmlSource":{"type":"string","minLength":1},"variables":{"type":"object"}},"required":["mjmlSource"]},"EmailTemplateBodyModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"marketingEmails":{"type":"array","items":{"type":"object"}}},"required":["id"]},"EmailTemplateBodyModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"subject":{"type":"string","minLength":1},"mjmlSource":{"type":"string","minLength":1},"isActive":{"type":"boolean"},"variables":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["name","subject","mjmlSource","variables"]},"EmailTemplateModel":{"type":"object"},"EmailTemplateModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"subject":{"type":"string","minLength":1},"mjmlSource":{"type":"string","minLength":1},"variables":{"type":"object","nullable":true},"isActive":{"type":"boolean"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"marketingEmails":{"type":"array","items":{"$ref":"#/components/schemas/MarketingEmailModel"}}},"required":["id","description","variables","isActive","createdAt","updatedAt","marketingEmails"]},"MarketingEmailModel":{"type":"object"},"EmailTemplateBodyModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"subject":{"type":"string","minLength":1},"mjmlSource":{"type":"string","minLength":1},"isActive":{"type":"boolean"},"variables":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["variables"]},"EmailTemplateModelDelete":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"subject":{"type":"string","minLength":1},"mjmlSource":{"type":"string","minLength":1},"variables":{"type":"object","nullable":true},"isActive":{"type":"boolean"}},"required":["description","variables","isActive"]},"ExternalApiModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"ExternalApiModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"userName":{"type":"string","minLength":1,"nullable":true},"host":{"type":"string","minLength":1,"nullable":true},"token":{"type":"string","minLength":1,"nullable":true},"apiService":{"type":"string","minLength":1,"nullable":true},"isActive":{"type":"boolean"}},"required":["name","apiService","isActive"]},"ExternalApiModelDelete":{"type":"object"},"ExternalApiModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"userName":{"type":"string","minLength":1,"nullable":true},"host":{"type":"string","minLength":1,"nullable":true},"token":{"type":"string","minLength":1,"nullable":true},"apiService":{"type":"string","minLength":1,"nullable":true},"apiSettings":{"type":"object","nullable":true},"isActive":{"type":"boolean"}},"required":["id","description","userName","host","token","apiSettings","isActive"]},"ExternalApiModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"userName":{"type":"string","minLength":1,"nullable":true},"host":{"type":"string","minLength":1,"nullable":true},"token":{"type":"string","minLength":1,"nullable":true},"apiService":{"type":"string","minLength":1,"nullable":true},"apiSettings":{"type":"object","nullable":true},"isActive":{"type":"boolean"}},"required":["isActive"]},"ExternalApiModel":{"type":"object"},"ExternalApiSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","description","userName","host","token","apiService","apiSettings","isActive"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","description":"asc","userName":"asc","host":"asc","token":"asc","apiService":"asc","apiSettings":"asc","isActive":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"},"userName":{"mode":"EQ","value":"example"},"host":{"mode":"EQ","value":"example"},"token":{"mode":"EQ","value":"example"},"apiService":{"mode":"EQ","value":"example"},"apiSettings":{"mode":"EQ","value":{"key":"value"}},"isActive":{"mode":"EQ","value":true}}]}},"required":["fields"]},"ExternalUserModelAuthorizations":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"country":{"oneOf":[{"$ref":"#/components/schemas/CountryModel"},{"nullable":true}]},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleModel"}},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionModel"}}},"required":["id","country","roles","permissions"]},"RoleModel":{"type":"object"},"PermissionModel":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalUserModel"}},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserModel"}}},"required":["externalUsers","users"]},"ExternalUserModel":{"type":"object","properties":{"country":{"oneOf":[{"$ref":"#/components/schemas/CountryModel"},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true},{"nullable":true}]}},"required":["country"]},"AuthorizationsPayloadAuthorizations":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"number"}},"permissions":{"type":"array","items":{"type":"number"}}}},"ExternalUserModelCreateResponse":{"type":"object","properties":{"country":{"oneOf":[{"$ref":"#/components/schemas/CountryModel"},{"nullable":true}]}},"required":["country"]},"ExternalUserModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"countryId":{"type":"number","multipleOf":1,"nullable":true}},"required":["name","countryId"]},"ExternalUserModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"ExternalUserModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"token":{"type":"string","minLength":1},"countryId":{"type":"number","multipleOf":1,"nullable":true},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleModel"}},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionModel"}}},"required":["id","token","countryId","roles","permissions"]},"ExternalUserModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"countryId":{"type":"number","multipleOf":1,"nullable":true}}},"ExternalUserSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","token","countryId","country.id","country.name","country.displayName","country.iso2","country.iso3","country.numCode","country.metadata","country.currencyId","roles.id","roles.name","roles.description","permissions.id","permissions.permissionUid","permissions.name","permissions.resource","permissions.method","permissions.description","permissions.permissionType"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","token":"asc","countryId":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"token":{"mode":"EQ","value":"example"},"countryId":{"mode":"EQ","value":123}}]}},"required":["fields"]},"FaceSwapTakedownBody":{"type":"object","properties":{"reason":{"type":"string","maxLength":500,"minLength":1}},"required":["reason"]},"FaceSwapResolveReportBody":{"type":"object","properties":{"action":{"type":"string","enum":["dismiss","takedown"],"minLength":1},"reason":{"type":"string","maxLength":500}},"required":["action"]},"FaceSwapTermsBody":{"type":"object","properties":{"version":{"type":"string","maxLength":32,"minLength":1}},"required":["version"]},"FaceRefineCreateBody":{"type":"object","properties":{"imageId":{"type":"string","maxLength":64,"minLength":1},"presets":{"type":"array","items":{"type":"string"},"maxItems":4},"custom":{"type":"string","maxLength":200},"clientRequestId":{"type":"string","maxLength":100,"minLength":8}},"required":["imageId","clientRequestId"]},"FaceSwapRenameBody":{"type":"object","properties":{"name":{"type":"string","maxLength":60,"minLength":1}},"required":["name"]},"FaceSwapDetectBody":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/FaceSwapTargetBody"},"startFrame":{"type":"integer","minimum":0,"multipleOf":1},"endFrame":{"type":"integer","minimum":0,"multipleOf":1},"frameRate":{"type":"number","maximum":1000,"minimum":1}},"required":["target"]},"FaceSwapTargetBody":{"type":"object","properties":{"kind":{"type":"string","enum":["upload","flo"],"minLength":1},"uploadId":{"type":"string","maxLength":64},"floProjectId":{"type":"string","maxLength":128},"mediaId":{"type":"string","maxLength":128}},"required":["kind"]},"FaceSwapDetectGroupsBody":{"type":"object","properties":{"detectIds":{"type":"array","items":{"type":"string"},"maxItems":100,"minItems":1}},"required":["detectIds"]},"FaceSwapCreateBody":{"type":"object","properties":{"mode":{"type":"string","enum":["image","frame","video"],"minLength":1},"target":{"$ref":"#/components/schemas/FaceSwapTargetBody"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/FaceSwapMappingBody"},"maxItems":8,"minItems":1},"frame":{"type":"integer","minimum":0,"multipleOf":1},"startFrame":{"type":"integer","minimum":0,"multipleOf":1},"endFrame":{"type":"integer","minimum":0,"multipleOf":1},"options":{"$ref":"#/components/schemas/FaceSwapOptionsBody"},"clientRequestId":{"type":"string","maxLength":100,"minLength":8}},"required":["mode","target","mappings","clientRequestId"]},"FaceSwapMappingBody":{"type":"object","properties":{"person":{"$ref":"#/components/schemas/FaceSwapPersonBody"},"faceId":{"type":"string","maxLength":64,"minLength":1}},"required":["person","faceId"]},"FaceSwapPersonBody":{"type":"object","properties":{"frame":{"type":"integer","minimum":0,"multipleOf":1},"bbox":{"type":"array","items":{"type":"number"},"maxItems":4,"minItems":4}},"required":["frame","bbox"]},"FaceSwapOptionsBody":{"type":"object","properties":{"enhance":{"type":"boolean"}}},"FaceEditCreateBody":{"type":"object","properties":{"kind":{"type":"string","enum":["enhance","age","expression","lipsync"],"minLength":1},"mode":{"type":"string","enum":["image","frame","video"],"minLength":1},"target":{"$ref":"#/components/schemas/FaceSwapTargetBody"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/FaceEditTargetBody"},"maxItems":8},"params":{"type":"object"},"audio":{"$ref":"#/components/schemas/FaceSwapTargetBody"},"frame":{"type":"integer","minimum":0,"multipleOf":1},"startFrame":{"type":"integer","minimum":0,"multipleOf":1},"endFrame":{"type":"integer","minimum":0,"multipleOf":1},"clientRequestId":{"type":"string","maxLength":100,"minLength":8}},"required":["kind","mode","target","clientRequestId"]},"FaceEditTargetBody":{"type":"object","properties":{"person":{"$ref":"#/components/schemas/FaceSwapPersonBody"}},"required":["person"]},"FaceSwapReportBody":{"type":"object","properties":{"watermarkId":{"type":"string","maxLength":64},"swapId":{"type":"string","maxLength":64},"reason":{"type":"string","enum":["impersonation","sexual_content","minor","no_consent","harassment","other"],"minLength":1},"details":{"type":"string","maxLength":2000}},"required":["reason"]},"ImportUrlPreviewBody":{"type":"object","properties":{"url":{"type":"string","description":"The link to the video page, as the member pasted it. Only ytbd ever fetches it.","maxLength":2048,"minLength":8}},"required":["url"]},"ImportUrlCreateBody":{"type":"object","properties":{"url":{"type":"string","description":"The link to the video page, as the member pasted it. Only ytbd ever fetches it.","maxLength":2048,"minLength":8},"segmentSeconds":{"type":"integer","description":"Seconds per part — one of the offered lengths (5–3600). Omit for the whole video in one piece.","multipleOf":1},"quality":{"type":"string","description":"best | 2160p | 1440p | 1080p | 720p | 480p | 360p. Omit for the downloader’s own default.","maxLength":16},"afterClipId":{"type":"string","description":"Flo Studio only: the clip the new clips go after (the playhead clip). Omit to append to the end of the track.","maxLength":128},"clientRequestId":{"type":"string","description":"De-duplicates a retried request, as on every other create route.","maxLength":96}},"required":["url"]},"SharedFeedPostResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"clientId":{"type":"string","format":"uuid","minLength":1},"userId":{"type":"integer","multipleOf":1},"creator":{"$ref":"#/components/schemas/FeedCreator"},"text":{"type":"object"},"mediaType":{"type":"string","enum":["NONE","IMAGE","VIDEO","AUDIO","PERFORMANCE"],"minLength":1},"status":{"type":"string","enum":["UPLOADING","READY","FAILED"],"minLength":1},"performanceId":{"type":"object","format":"uuid"},"performance":{"type":"object"},"media":{"type":"array","items":{"$ref":"#/components/schemas/FeedPostMediaItem"}},"reactionCounts":{"$ref":"#/components/schemas/ReactionCounts"},"viewerReaction":{"type":"object"},"commentCount":{"type":"number"},"latestComment":{"type":"object"},"createdAt":{"type":"string","format":"date-time","minLength":1},"updatedAt":{"type":"string","format":"date-time","minLength":1},"viewerCanInteract":{"type":"boolean"}},"required":["id","clientId","userId","creator","mediaType","status","media","reactionCounts","commentCount","createdAt","updatedAt","viewerCanInteract"]},"FeedCreator":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","minLength":1},"handle":{"type":"object"},"avatarUrl":{"type":"object"}},"required":["id","name"]},"FeedPostMediaItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"position":{"type":"integer","minimum":0,"multipleOf":1},"mediaType":{"type":"string","enum":["NONE","IMAGE","VIDEO","AUDIO","PERFORMANCE"],"minLength":1},"thumbnailUrl":{"type":"object"}},"required":["id","position","mediaType"]},"ReactionCounts":{"type":"object","properties":{"LIKE":{"type":"number"},"LOVE":{"type":"number"},"FIRE":{"type":"number"},"APPLAUSE":{"type":"number"}},"required":["LIKE","LOVE","FIRE","APPLAUSE"]},"FeedMediaResponse":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","minLength":1},"mediaId":{"type":"string","format":"uuid"},"url":{"type":"string","minLength":1},"expiresAt":{"type":"string","format":"date-time","minLength":1},"expiresInSeconds":{"type":"number"},"mimeType":{"type":"string","minLength":1}},"required":["postId","url","expiresAt","expiresInSeconds","mimeType"]},"CreatePostResponse":{"type":"object","properties":{"post":{"$ref":"#/components/schemas/FeedPostResponse"},"upload":{"type":"object"},"uploads":{"type":"array","items":{"$ref":"#/components/schemas/FeedUploadTicket"}}},"required":["post"]},"FeedPostResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"clientId":{"type":"string","format":"uuid","minLength":1},"userId":{"type":"integer","multipleOf":1},"creator":{"$ref":"#/components/schemas/FeedCreator"},"text":{"type":"object"},"mediaType":{"type":"string","enum":["NONE","IMAGE","VIDEO","AUDIO","PERFORMANCE"],"minLength":1},"status":{"type":"string","enum":["UPLOADING","READY","FAILED"],"minLength":1},"performanceId":{"type":"object","format":"uuid"},"performance":{"type":"object"},"media":{"type":"array","items":{"$ref":"#/components/schemas/FeedPostMediaItem"}},"reactionCounts":{"$ref":"#/components/schemas/ReactionCounts"},"viewerReaction":{"type":"object"},"commentCount":{"type":"number"},"latestComment":{"type":"object"},"createdAt":{"type":"string","format":"date-time","minLength":1},"updatedAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","clientId","userId","creator","mediaType","status","media","reactionCounts","commentCount","createdAt","updatedAt"]},"FeedUploadTicket":{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid"},"url":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"headers":{"type":"object"},"expiresAt":{"type":"string","format":"date-time","minLength":1}},"required":["url","method","headers","expiresAt"]},"CreatePostBody":{"type":"object","properties":{"clientId":{"type":"string","maxLength":36,"minLength":1},"text":{"type":"string","maxLength":2000},"performanceId":{"type":"string","format":"uuid"},"attachment":{"$ref":"#/components/schemas/CreatePostAttachment"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/CreatePostAttachment"}}},"required":["clientId"]},"CreatePostAttachment":{"type":"object","properties":{"mediaType":{"type":"string","enum":["NONE","IMAGE","VIDEO","AUDIO","PERFORMANCE"],"minLength":1},"mimeType":{"type":"string","maxLength":128,"minLength":1},"size":{"type":"integer","minimum":1,"multipleOf":1},"thumbnail":{"$ref":"#/components/schemas/CreatePostThumbnail"}},"required":["mediaType","mimeType","size"]},"CreatePostThumbnail":{"type":"object","properties":{"mediaType":{"type":"string","enum":["NONE","IMAGE","VIDEO","AUDIO","PERFORMANCE"],"minLength":1},"mimeType":{"type":"string","maxLength":128,"minLength":1},"size":{"type":"integer","minimum":1,"multipleOf":1}},"required":["mediaType","mimeType","size"]},"FeedListResponse":{"type":"object","properties":{"token":{"type":"string"},"realtimeUrl":{"type":"string"},"channel":{"type":"string"},"expiresAt":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/FeedPostResponse"}},"nextCursor":{"type":"object"}},"required":["items"]},"FeedThumbnailUploadResponse":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","minLength":1},"mediaId":{"type":"string","format":"uuid","minLength":1},"url":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"headers":{"type":"object"},"expiresAt":{"type":"string","format":"date-time","minLength":1},"expiresInSeconds":{"type":"integer","multipleOf":1}},"required":["postId","mediaId","url","method","headers","expiresAt","expiresInSeconds"]},"SignThumbnailUploadBody":{"type":"object","properties":{"mimeType":{"type":"string","maxLength":128,"minLength":1},"size":{"type":"integer","minimum":1,"multipleOf":1}},"required":["mimeType","size"]},"FeedPostReportResponse":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","minLength":1},"createdAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","status","createdAt"]},"ReportFeedPostBody":{"type":"object","properties":{"reason":{"type":"string","minLength":1},"details":{"type":"string","maxLength":1000}},"required":["reason"]},"FeedRealtimeResponse":{"type":"object","properties":{"token":{"type":"string"},"realtimeUrl":{"type":"string"},"channel":{"type":"string"},"expiresAt":{"type":"string"}}},"PutReactionBody":{"type":"object","properties":{"type":{"type":"string","enum":["LIKE","LOVE","FIRE","APPLAUSE"],"minLength":1}},"required":["type"]},"CommentListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommentResponse"}},"nextCursor":{"type":"object"}},"required":["items"]},"CommentResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"postId":{"type":"string","format":"uuid","minLength":1},"userId":{"type":"integer","multipleOf":1},"creator":{"$ref":"#/components/schemas/CommentCreator"},"body":{"type":"object"},"parentId":{"type":"object","format":"uuid"},"depth":{"type":"number"},"isDeleted":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","minLength":1},"replyCount":{"type":"number"}},"required":["id","postId","userId","creator","depth","isDeleted","createdAt","replyCount"]},"CommentCreator":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","minLength":1},"handle":{"type":"object"},"avatarUrl":{"type":"object"}},"required":["id","name"]},"CreateCommentBody":{"type":"object","properties":{"body":{"type":"string","maxLength":1000,"minLength":1},"parentId":{"type":"string","format":"uuid"}},"required":["body"]},"FloAgentChatBody":{"type":"object","properties":{"project_id":{"type":"string","maxLength":128,"minLength":1},"message":{"type":"string","maxLength":20000},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/FloChatAttachment"},"maxItems":6},"clip_id":{"nullable":true,"type":"string","maxLength":128},"scope":{"type":"string","maxLength":32}},"required":["project_id","message"]},"FloChatAttachment":{"type":"object","properties":{"media_id":{"type":"string","pattern":"^[A-Za-z0-9_.-]+$","maxLength":64,"minLength":1},"kind":{"type":"string","maxLength":16}},"required":["media_id"]},"FloAgentProjectBody":{"type":"object","properties":{"project_id":{"type":"string","maxLength":128,"minLength":1}},"required":["project_id"]},"FloAgentUndoTurnBody":{"type":"object","properties":{"project_id":{"type":"string","maxLength":128,"minLength":1},"turn_id":{"type":"string","pattern":"^[A-Za-z0-9_.:-]+$","maxLength":128,"minLength":1}},"required":["project_id","turn_id"]},"FloCreateProjectBody":{"type":"object","properties":{"title":{"type":"string","maxLength":200},"tier":{"type":"string","maxLength":40},"model":{"type":"string","maxLength":40},"aspectRatio":{"type":"string","maxLength":8}}},"FloDuplicateProjectBody":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"clientRequestId":{"type":"string","maxLength":100}}},"FloRenderTierBody":{"type":"object","properties":{"tier":{"type":"string","maxLength":40,"minLength":1},"model":{"type":"string","maxLength":40,"minLength":1}}},"FloSegmentLengthBody":{"type":"object","properties":{"seconds":{"type":"number"}},"required":["seconds"]},"FollowActionResponse":{"type":"object","properties":{"status":{"type":"string","minLength":1}},"required":["status"]},"FollowRequestListResponse":{"type":"object","properties":{"items":{"type":"array","items":{}},"total":{"type":"number"},"nextCursor":{"type":"number"}},"required":["items","total"]},"BlockedUserListResponse":{"type":"object","properties":{"items":{"type":"array","items":{}}},"required":["items"]},"FollowListResponse":{"type":"object","properties":{"items":{"type":"array","items":{}},"total":{"type":"number"},"nextCursor":{"type":"number"}},"required":["items","total"]},"ImageEditorChatBody":{"type":"object","properties":{"designId":{"type":"string","description":"The design open in the editor (one of the member's).","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","minLength":1},"requestId":{"type":"string","description":"A new UUID per message; sending the same one again replays its answer (the same op batches under the same keys).","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","minLength":1},"message":{"type":"string","maxLength":8000,"minLength":1},"answers":{"type":"object","description":"Answers to the assistant's last questions, keyed by question label."},"opsVersion":{"type":"integer","description":"The op contract version the editor speaks (`editorOps.contract.json` opsVersion); another one answers 409.","multipleOf":1},"document":{"type":"object","description":"The editor's document summary (`describeDocument`), at most 64 KB."},"selection":{"type":"object","description":"What is selected: { bbox: { x, y, w, h } in canvas pixels, maskImageId?: the selection as one of the design's mask assets }.","nullable":true},"pixels":{"type":"object","description":"The design as it looks, flattened: { snapshotImageId (a snapshot asset), coversLayersUpTo (the top layer it shows, or null), width, height }.","nullable":true},"attachments":{"type":"array","items":{"type":"object"},"description":"Gallery pictures attached to the message: [{ imageId }].","maxItems":8},"review":{"type":"object","description":"A check the editor sends by itself after a turn called check_result: { round (1 or 2), focus, failures? (what it could not apply of that turn, at most 5) }, with the design's new picture in pixels.","nullable":true}},"required":["designId","requestId","message","opsVersion","document"]},"EditorBatchFailedBody":{"type":"object","properties":{"key":{"type":"string","description":"The batch's key, `<requestId>:<n>`, as its tool result gave it.","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}:[0-9]{1,4}$","minLength":1},"message":{"type":"string","description":"Why the editor could not apply it, as it said so under the reply.","maxLength":600,"minLength":1}},"required":["key","message"]},"ImageStudioGenerationBody":{"type":"object","properties":{"mode":{"type":"string","enum":["create","edit","transform","inpaint","extend","upscale","reference","erase","remove_background","variation"],"minLength":1},"prompt":{"type":"string","maxLength":2000},"aspectRatio":{"type":"string","maxLength":8},"count":{"type":"integer","maximum":4,"minimum":1,"multipleOf":1},"style":{"type":"string","maxLength":40},"presetId":{"type":"string","maxLength":40},"seed":{"type":"integer","maximum":2147483647,"minimum":0,"multipleOf":1},"source":{"type":"object"},"mask":{"type":"object"},"maskUploadId":{"type":"string","maxLength":64},"references":{"type":"array","items":{"type":"object"},"maxItems":3},"extendTo":{"type":"string","maxLength":8},"extend":{"type":"object"},"upscale":{"type":"object"},"outputTier":{"type":"string","enum":["standard","4k","8k","canvas"]},"canvasSize":{"type":"object"},"clientRequestId":{"type":"string","maxLength":100,"minLength":8}},"required":["mode","clientRequestId"]},"ImageStudioDesignBody":{"type":"object","properties":{"baseUpdatedAt":{"type":"string","maxLength":40},"name":{"type":"string","maxLength":120},"width":{"type":"integer","maximum":16384,"minimum":16,"multipleOf":1},"height":{"type":"integer","maximum":16384,"minimum":16,"multipleOf":1},"document":{"type":"object"}}},"ImageStudioNameBody":{"type":"object","properties":{"name":{"type":"string","maxLength":120}}},"PublicJobListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PublicJobResponse"}},"total":{"type":"integer","minimum":0,"multipleOf":1}},"required":["items","total"]},"PublicJobResponse":{"type":"object","properties":{"id":{"type":"integer","multipleOf":1},"creator":{"$ref":"#/components/schemas/PublicJobCreatorResponse"},"title":{"type":"string","maxLength":300,"minLength":1},"thumbnailUrl":{"type":"object"},"kind":{"type":"string","enum":["KARAOKE","LYRICAL","AUDIO","SONG"],"minLength":1},"source":{"type":"string","enum":["YOUTUBE","UPLOAD","AI"],"minLength":1},"jobType":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"mimeType":{"type":"object","maxLength":127},"cost":{"type":"integer","minimum":0,"multipleOf":1},"isPurchased":{"type":"boolean"},"isOwner":{"type":"boolean"},"canPurchase":{"type":"boolean"},"createdAt":{"type":"string","minLength":1}},"required":["id","creator","title","kind","source","jobType","cost","isPurchased","isOwner","canPurchase","createdAt"]},"PublicJobCreatorResponse":{"type":"object","properties":{"id":{"type":"integer","multipleOf":1},"name":{"type":"string","maxLength":120,"minLength":1},"handle":{"type":"object","maxLength":30},"avatarUrl":{"type":"object"}},"required":["id","name"]},"PublicJobMediaResponse":{"type":"object","properties":{"jobId":{"type":"integer","multipleOf":1},"downloadUrl":{"type":"string","minLength":1},"expiresAt":{"type":"string","minLength":1},"expiresInSeconds":{"type":"integer","multipleOf":1},"mimeType":{"type":"string","maxLength":127},"extension":{"type":"string","maxLength":20},"size":{"type":"integer","multipleOf":1}},"required":["jobId","downloadUrl","expiresAt","expiresInSeconds"]},"JobResponse":{"type":"object","properties":{"id":{"type":"number"},"userId":{"type":"number"},"rvcVoiceModelId":{"type":"object"},"type":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"status":{"type":"string","enum":["PENDING","QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED","PAUSED"],"minLength":1},"estimatedDebitAmount":{"type":"object"},"debitedAmount":{"type":"object"},"currencyCode":{"type":"object","maxLength":16},"payload":{"type":"object"},"result":{"type":"object"},"error":{"type":"object"},"metadata":{"type":"object"},"videoTitle":{"type":"object"},"videoUrl":{"type":"object"},"thumbnailUrl":{"type":"object"},"isPublic":{"type":"boolean"},"isPurchased":{"type":"boolean","description":"Whether the final output has been purchased (unlocked for download). Free jobs and grandfathered rows are true."},"isCommunityPurchase":{"type":"boolean","description":"Whether this private-only job was purchased from the Explore community catalog."},"previewReady":{"type":"boolean","description":"True when a playable preview clip has been generated and stored (see metadata.preview)."},"previewFailed":{"type":"boolean","description":"True when preview generation was attempted but permanently failed (see metadata.preview.error)."},"startedAt":{"type":"object"},"completedAt":{"type":"object"},"nextRetryAt":{"type":"object"},"retryLog":{"type":"object"},"automatedRetryCount":{"type":"number"},"retry":{"$ref":"#/components/schemas/JobRetryAvailability"},"clientRequestId":{"type":"object"},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string","minLength":1},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/CreditTransactionResponse"}}},"required":["id","userId","type","status","createdAt","updatedAt"]},"JobRetryAvailability":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"object","description":"A sentence to show the member when the job cannot be tried again (for example, its upload is no longer stored). Null when it can, or when it needs no retry."},"code":{"type":"object","description":"The same reason as a stable key (uploadGone, noPlan, sourceRefused, voiceGone, coverSongGone, coverLinkGone, recordingGone, trainingBeingChecked, trainingRecordingsGone) for clients to translate."}},"required":["available"]},"CreditTransactionResponse":{"type":"object","properties":{"id":{"type":"number"},"direction":{"type":"string","enum":["CREDIT","DEBIT"],"minLength":1},"amount":{"type":"string","minLength":1},"balanceAfter":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1},"jobId":{"type":"object"},"description":{"type":"string","maxLength":256},"referenceType":{"type":"string","maxLength":64},"referenceId":{"type":"string","maxLength":64},"metadata":{"type":"object"},"currencyCode":{"type":"object","maxLength":16},"job":{"$ref":"#/components/schemas/TransactionJobSnapshot"}},"required":["id","direction","amount","balanceAfter","createdAt"]},"TransactionJobSnapshot":{"type":"object","properties":{"id":{"type":"number"},"type":{"type":"string","minLength":1},"status":{"type":"string","minLength":1},"videoTitle":{"type":"object"},"videoUrl":{"type":"object"},"thumbnailUrl":{"type":"object"}},"required":["id","type","status"]},"CreateJobPayload":{"type":"object","properties":{"type":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"clientRequestId":{"type":"string","description":"Client-generated idempotency key. Repeating it returns the original job.","maxLength":100},"payload":{"description":"Job parameters. Select the schema matching the chosen job type.","anyOf":[{"$ref":"#/components/schemas/YouTubeKaraokePayloadDto"},{"$ref":"#/components/schemas/YouTubeDownloadPayloadDto"},{"$ref":"#/components/schemas/UploadKaraokePayloadDto"},{"$ref":"#/components/schemas/LyricalPayloadDto"}]},"metadata":{"type":"object"}},"required":["type"]},"YouTubeKaraokePayloadDto":{"type":"object","properties":{"videoId":{"type":"string","example":"dQw4w9WgXcQ","description":"YouTube video identifier to convert into karaoke output.","minLength":1}},"additionalProperties":false,"required":["videoId"]},"YouTubeDownloadPayloadDto":{"type":"object","properties":{"videoId":{"type":"string","example":"dQw4w9WgXcQ","description":"YouTube video identifier to download.","minLength":1},"video":{"type":"boolean","example":true,"description":"When true, request MP4/Video output. Defaults based on job type if omitted."},"audio":{"type":"boolean","example":false,"description":"When true, request MP3/Audio output. Defaults based on job type if omitted."}},"additionalProperties":false,"required":["videoId"]},"UploadKaraokePayloadDto":{"type":"object","additionalProperties":false},"LyricalPayloadDto":{"type":"object","properties":{"videoId":{"type":"string","example":"dQw4w9WgXcQ","description":"YouTube video identifier."},"enableLyrics":{"type":"boolean","description":"Enable AI-powered lyric generation."},"enableKaraoke":{"type":"boolean","description":"Enable vocal removal (karaoke audio)."},"translate":{"type":"boolean","description":"Enable translation of lyrics."},"translateTo":{"type":"string","description":"Target language for translation."},"translateModel":{"type":"string","description":"Translation model identifier."},"translateBackend":{"type":"string","description":"Translation backend provider."},"translationFontName":{"type":"string","description":"Font family for translated lyrics."},"translationFontSize":{"type":"integer","description":"Font size in pixels for translated lyrics.","maximum":80,"minimum":8,"multipleOf":1},"translationColor":{"type":"string","description":"Color of translated lyrics text."},"translationOutlineSize":{"type":"number","description":"Thickness of the translated lyrics text outline.","maximum":10,"minimum":0},"translationShadowSize":{"type":"number","description":"Drop shadow size for translated lyrics text.","maximum":10,"minimum":0},"language":{"type":"string","description":"Source language code for transcription."},"useVideoBackground":{"type":"boolean","description":"Use original video as background instead of a custom image."},"fontName":{"type":"string","description":"Font family for lyrics text."},"fontSize":{"type":"number","description":"Font size in pixels."},"baseColor":{"type":"string","description":"Color of the un-sung lyrics text."},"highlightColor":{"type":"string","description":"Color of the currently singing lyrics text."},"outlineSize":{"type":"number","description":"Thickness of the text outline."},"shadowSize":{"type":"number","description":"Drop shadow size for depth."},"overlayColor":{"type":"string","description":"Background tint color behind lyrics."},"overlayOpacity":{"type":"number","description":"Transparency of the background tint (0 to 1)."},"model":{"type":"string","description":"Transcription model identifier."},"computeType":{"type":"string","description":"Transcription compute type (auto, float16, int8)."},"batchSize":{"type":"number","description":"Transcription batch size."},"chunkSize":{"type":"number","description":"Transcription chunk size in seconds."},"vadMethod":{"type":"string","description":"VAD method (silero)."},"vadOnset":{"type":"number","description":"VAD onset threshold."},"vadOffset":{"type":"number","description":"VAD offset threshold."},"videoWidth":{"type":"number","description":"Output video width in pixels."},"videoHeight":{"type":"number","description":"Output video height in pixels."},"karaokeMode":{"type":"boolean","description":"Enable word-by-word karaoke highlighting."},"karaokeOffset":{"type":"number","description":"Seconds to show each lyric line before the singer starts."},"slidingWindowSize":{"type":"number","description":"Karaoke sliding window size in seconds."},"scrollLyrics":{"type":"boolean","description":"Show current and upcoming lyric groups and scroll them upward. Also enables word-by-word timing."},"scrollWordsPerSlide":{"type":"integer","description":"Maximum words shown in each scrolling lyric group.","maximum":12,"minimum":3,"multipleOf":1,"default":10},"romanizeSrcLanguage":{"type":"boolean","description":"Romanize source-language words to Latin script when the video is rendered."},"romanize":{"type":"boolean","description":"Romanize the stored lyrics sheet to Latin script, so the words you edit are the words the video shows. Defaults to romanizeSrcLanguage when omitted."},"lineMaxGap":{"type":"integer","description":"Seconds of silence that end a lyric line when grouping words.","maximum":60,"minimum":1,"multipleOf":1},"lineMaxWords":{"type":"integer","description":"Maximum words in a grouped lyric line. Karaoke groups far more tightly than a lyric video.","maximum":60,"minimum":1,"multipleOf":1},"useDemucs":{"type":"boolean","description":"Separate vocals from the backing track before transcribing."},"cueSheetId":{"type":"integer","description":"Render from an existing lyrics sheet instead of transcribing again.","multipleOf":1},"render":{"type":"object","description":"The studio's render settings, carried on a lyrics job and attached to the sheet it produces."},"renderJob":{"type":"object","description":"A render job to create the moment these lyrics land, for going straight through to a video."},"forceFresh":{"type":"boolean","description":"Bypass the result cache and force a fresh run."}}},"JobListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/JobResponse"}},"total":{"type":"number"},"unpurchasedJobRetentionDays":{"type":"number","description":"System-wide retention days for unpurchased SUCCEEDED jobs. Used by the frontend to compute per-job cleanup deadlines."},"maxUnpurchasedJobs":{"type":"number","description":"System-configured max unpurchased jobs a user can hold without a balance check."},"unpurchasedJobCount":{"type":"number","description":"Current count of unpurchased jobs for this user (QUEUED, RUNNING, or SUCCEEDED+isPurchased=false)."},"statusCounts":{"allOf":[{"$ref":"#/components/schemas/JobStatusCounts"},{"type":"object","description":"Jobs per status across the whole filtered history, ignoring the status filter itself. Drives the list page filter chips."}]},"totalIgnoringStatus":{"type":"number","description":"Total jobs matching every filter except status. The denominator the status chips are read against."}},"required":["items","total"]},"JobStatusCounts":{"type":"object","properties":{"PENDING":{"type":"number"},"QUEUED":{"type":"number"},"RUNNING":{"type":"number"},"SUCCEEDED":{"type":"number"},"FAILED":{"type":"number"},"CANCELLED":{"type":"number"},"PAUSED":{"type":"number"}}},"ServiceDownloadQuotaResponse":{"type":"object","properties":{"authenticated":{"type":"boolean"},"freeLimit":{"type":"number"},"used":{"type":"number"},"freeRemaining":{"type":"number"},"creditCost":{"type":"number"},"requiresCredits":{"type":"boolean"},"canDownload":{"type":"boolean"},"canUseYoutube":{"type":"boolean"},"quotaExhausted":{"type":"boolean"},"windowDays":{"type":"number"},"periodStartedAt":{"type":"string","minLength":1},"periodEndsAt":{"type":"string","minLength":1},"creditBalance":{"type":"number"},"creditsCharged":{"type":"number"}},"required":["authenticated","freeLimit","used","freeRemaining","creditCost","requiresCredits","canDownload","canUseYoutube","quotaExhausted","windowDays","periodStartedAt","periodEndsAt"]},"JobRealtimeSessionResponse":{"type":"object","properties":{"realtimeUrl":{"type":"string","description":"Public Centrifugo WebSocket URL. Absent when realtime is not configured."},"token":{"type":"string","description":"Connection token carrying a server-side subscription to the channel below. Short-lived; fetch a new one on reconnect."},"channel":{"type":"string","example":"user:42","description":"The channel this token subscribes to, for logging and diagnostics."},"expiresAt":{"type":"string","description":"When the token stops working, so a client can renew before it does rather than after."}}},"LyricalFontsResponse":{"type":"object","properties":{"fonts":{"type":"array","items":{"type":"string"},"description":"Font family names supported by the lyrical renderer."},"defaultFont":{"type":"string","description":"Default font family used when none is selected.","minLength":1},"total":{"type":"number","description":"Total number of matching fonts (for pagination)."}},"required":["fonts","defaultFont"]},"ReanalyzeLyricsPayload":{"type":"object","properties":{"romanize":{"type":"boolean","description":"Romanize the lyrics to Latin script. Defaults to whatever the job last used."},"language":{"type":"string","description":"Source language of the song, as an ISO 639-1 code.","maxLength":20},"lineMaxGap":{"type":"integer","description":"Seconds of silence that end a lyric line when grouping words.","maximum":60,"minimum":1,"multipleOf":1},"lineMaxWords":{"type":"integer","description":"Maximum words in a grouped lyric line.","maximum":60,"minimum":1,"multipleOf":1},"model":{"type":"string","description":"Transcription model to read the song with.","maxLength":64},"computeType":{"type":"string","description":"Compute type for the transcription model.","maxLength":32},"useDemucs":{"type":"boolean","description":"Separate vocals from the backing track before transcribing."},"discardEdits":{"type":"boolean","description":"Confirms that re-reading may replace lyrics corrected by hand. Required when the sheet has been edited."}},"additionalProperties":false},"ImmediateRetryResponse":{"type":"object","properties":{"requeued":{"type":"number"},"skipped":{"type":"number"},"outcomes":{"type":"array","items":{"$ref":"#/components/schemas/ImmediateRetryOutcomeResponse"}}},"required":["requeued","skipped","outcomes"]},"ImmediateRetryOutcomeResponse":{"type":"object","properties":{"jobId":{"type":"number"},"requeued":{"type":"boolean"},"previousStatus":{"type":"string","description":"Status the job was re-queued from."},"reason":{"type":"string","description":"Why an ineligible job was left alone."},"newJobId":{"type":"number","description":"A face swap or import runs again as a new job: its id."}},"required":["jobId","requeued"]},"ImmediateRetryPayload":{"type":"object","properties":{"jobIds":{"type":"array","items":{"type":"number"},"description":"Job ids to re-queue immediately. Send one id for a row action, several for a bulk selection."}},"additionalProperties":false,"required":["jobIds"]},"JobStatusUpdateResponse":{"type":"object","properties":{"job":{"$ref":"#/components/schemas/JobResponse"},"transaction":{"$ref":"#/components/schemas/RecordCreditTransactionResponse"}},"required":["job"]},"RecordCreditTransactionResponse":{"type":"object","properties":{"balance":{"type":"string","minLength":1},"currencyCode":{"type":"object"},"updatedAt":{"type":"string","minLength":1},"transaction":{"$ref":"#/components/schemas/CreditTransactionResponse"}},"required":["balance","updatedAt","transaction"]},"JobStatusUpdatePayload":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED","PAUSED"],"minLength":1},"debitedAmount":{"type":"number","minimum":0},"result":{"type":"object"},"error":{"type":"object"},"metadata":{"type":"object"},"description":{"type":"string","maxLength":256}},"required":["status"]},"JobDownloadLinkResponse":{"type":"object","properties":{"jobId":{"type":"number"},"downloadUrl":{"type":"string","description":"Temporary download URL valid for the specified duration.","minLength":1},"expiresAt":{"type":"string","description":"Timestamp when the generated download URL expires.","minLength":1},"expiresInSeconds":{"type":"number","description":"Validity window (in seconds) for the generated link."},"storageService":{"type":"string"},"storageKey":{"type":"string"},"bucket":{"type":"string"},"mimeType":{"type":"string"},"size":{"type":"number"},"checksumSha256":{"type":"string"},"extension":{"type":"string"}},"required":["jobId","downloadUrl","expiresAt","expiresInSeconds"]},"TogglePublicResponse":{"type":"object","properties":{"job":{"$ref":"#/components/schemas/JobResponse"},"rewardTransaction":{"allOf":[{"$ref":"#/components/schemas/RecordCreditTransactionResponse"},{"type":"object","description":"Credit transaction issued when the job was made public using the configured reward rule."}]},"rewardAmount":{"type":"string","description":"Decimal string of the credit amount granted as the sharing reward."},"revokeTransaction":{"allOf":[{"$ref":"#/components/schemas/RecordCreditTransactionResponse"},{"type":"object","description":"Credit transaction issued when the previously granted reward was revoked."}]},"revokedAmount":{"type":"string","description":"Decimal string of the credit amount revoked when the job became private again."}},"required":["job"]},"JobSharingQuoteResponse":{"type":"object","properties":{"jobId":{"type":"number"},"willBecomePublic":{"type":"boolean","description":"True when confirming the visibility action will publish the job; false when it will make the job private."},"rewardAmount":{"type":"string","description":"Exact decimal credit reward that will be granted when the job is published. Zero means no reward.","minLength":1},"rewardPercent":{"type":"number","description":"Configured reward percentage for this job type. Zero means rewards are disabled or inapplicable."},"rewardEnabled":{"type":"boolean"}},"required":["jobId","willBecomePublic","rewardAmount","rewardPercent","rewardEnabled"]},"PurchaseJobResponse":{"type":"object","properties":{"job":{"$ref":"#/components/schemas/JobResponse"},"transaction":{"allOf":[{"$ref":"#/components/schemas/RecordCreditTransactionResponse"},{"type":"object","description":"Credit transaction created when the job was purchased (debit). Absent for free jobs."}]}},"required":["job"]},"JobPreviewLinkResponse":{"type":"object","properties":{"jobId":{"type":"number"},"previewUrl":{"type":"string","description":"Signed, short-lived URL that streams the preview clip. No purchase required.","minLength":1},"expiresAt":{"type":"string","description":"Timestamp when the preview URL expires.","minLength":1},"expiresInSeconds":{"type":"number","description":"Validity window (in seconds) for the preview URL."},"storageService":{"type":"string"},"storageKey":{"type":"string"},"mimeType":{"type":"string"},"extension":{"type":"string"},"durationSeconds":{"type":"number","description":"Configured clip length in seconds."},"startOffsetSeconds":{"type":"number","description":"Where in the source media the preview starts (seconds)."}},"required":["jobId","previewUrl","expiresAt","expiresInSeconds"]},"JobModelCreateResponse":{"type":"object","properties":{"searchTitle":{"type":"string","minLength":1,"nullable":true},"communitySourceJobId":{"type":"number","multipleOf":1,"nullable":true},"runnerId":{"type":"string","minLength":1,"nullable":true},"youtubeUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"rvcTrainingRun":{"oneOf":[{"$ref":"#/components/schemas/RvcTrainingRunModel"},{"nullable":true}]},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"floGenerationRun":{"oneOf":[{"$ref":"#/components/schemas/FloGenerationRunModel"},{"nullable":true}]},"playlistItems":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}},"youtubeLibraryEntry":{"oneOf":[{"$ref":"#/components/schemas/YoutubeLibraryEntryModel"},{"nullable":true}]}},"required":["searchTitle","communitySourceJobId","runnerId","youtubeUsages","performances","notifications","communityBroadcasts","rvcTrainingRun","cueSheets","floGenerationRun","playlistItems","youtubeLibraryEntry"]},"JobModelCreate":{"type":"object","properties":{"clientRequestId":{"type":"string","minLength":1,"nullable":true}}},"JobModelDelete":{"type":"object","properties":{"searchTitle":{"type":"string","minLength":1,"nullable":true},"communitySourceJobId":{"type":"number","multipleOf":1,"nullable":true},"youtubeUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"rvcTrainingRun":{"oneOf":[{"$ref":"#/components/schemas/RvcTrainingRunModel"},{"nullable":true}]},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"floGenerationRun":{"oneOf":[{"$ref":"#/components/schemas/FloGenerationRunModel"},{"nullable":true}]},"playlistItems":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}},"youtubeLibraryEntry":{"oneOf":[{"$ref":"#/components/schemas/YoutubeLibraryEntryModel"},{"nullable":true}]}},"required":["searchTitle","communitySourceJobId","youtubeUsages","performances","notifications","communityBroadcasts","rvcTrainingRun","cueSheets","floGenerationRun","playlistItems","youtubeLibraryEntry"]},"JobModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"userId":{"type":"number","multipleOf":1},"rvcVoiceModelId":{"type":"number","multipleOf":1,"nullable":true},"type":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"status":{"type":"string","enum":["PENDING","QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED","PAUSED"],"minLength":1},"estimatedDebitAmount":{"type":"number","nullable":true},"debitedAmount":{"type":"number","nullable":true},"currencyId":{"type":"number","multipleOf":1,"nullable":true},"payload":{"type":"object","nullable":true},"result":{"type":"object","nullable":true},"error":{"type":"object","nullable":true},"metadata":{"type":"object","nullable":true},"videoTitle":{"type":"string","minLength":1,"nullable":true},"searchTitle":{"type":"string","minLength":1,"nullable":true},"videoUrl":{"type":"string","minLength":1,"nullable":true},"thumbnailUrl":{"type":"string","minLength":1,"nullable":true},"isPublic":{"type":"boolean"},"isPurchased":{"type":"boolean"},"isCommunityPurchase":{"type":"boolean"},"communitySourceJobId":{"type":"number","multipleOf":1,"nullable":true},"startedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"completedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"nextRetryAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"retryLog":{"type":"object","nullable":true},"automatedRetryCount":{"type":"number","multipleOf":1},"clientRequestId":{"type":"string","minLength":1,"nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"user":{"$ref":"#/components/schemas/UserModel"},"rvcVoiceModel":{"oneOf":[{"$ref":"#/components/schemas/RvcVoiceModelModel"},{"nullable":true}]},"currency":{"oneOf":[{"$ref":"#/components/schemas/CurrencyModel"},{"nullable":true}]},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"youtubeUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"rvcTrainingRun":{"oneOf":[{"$ref":"#/components/schemas/RvcTrainingRunModel"},{"nullable":true}]},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"floGenerationRun":{"oneOf":[{"$ref":"#/components/schemas/FloGenerationRunModel"},{"nullable":true}]},"playlistItems":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}},"youtubeLibraryEntry":{"oneOf":[{"$ref":"#/components/schemas/YoutubeLibraryEntryModel"},{"nullable":true}]}},"required":["id","userId","rvcVoiceModelId","type","status","estimatedDebitAmount","debitedAmount","currencyId","payload","result","error","metadata","videoTitle","searchTitle","videoUrl","thumbnailUrl","isPublic","isPurchased","isCommunityPurchase","communitySourceJobId","startedAt","completedAt","nextRetryAt","retryLog","automatedRetryCount","clientRequestId","createdAt","updatedAt","user","rvcVoiceModel","currency","creditTransactions","youtubeUsages","performances","notifications","communityBroadcasts","rvcTrainingRun","cueSheets","floGenerationRun","playlistItems","youtubeLibraryEntry"]},"JobModelUpdate":{"type":"object"},"JobControllerListModel":{"type":"object","properties":{"searchTitle":{"type":"string","minLength":1,"nullable":true},"communitySourceJobId":{"type":"number","multipleOf":1,"nullable":true},"runnerId":{"type":"string","minLength":1,"nullable":true},"youtubeUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"rvcTrainingRun":{"oneOf":[{"$ref":"#/components/schemas/RvcTrainingRunModel"},{"nullable":true}]},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"floGenerationRun":{"oneOf":[{"$ref":"#/components/schemas/FloGenerationRunModel"},{"nullable":true}]},"playlistItems":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemModel"}},"youtubeLibraryEntry":{"oneOf":[{"$ref":"#/components/schemas/YoutubeLibraryEntryModel"},{"nullable":true}]},"previewReady":{"type":"boolean","description":"True when a playable preview clip has been generated and stored (see metadata.preview)."},"previewFailed":{"type":"boolean","description":"True when preview generation was attempted but permanently failed (see metadata.preview.error)."}},"required":["searchTitle","communitySourceJobId","runnerId","youtubeUsages","performances","notifications","communityBroadcasts","rvcTrainingRun","cueSheets","floGenerationRun","playlistItems","youtubeLibraryEntry"]},"JobSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","userId","rvcVoiceModelId","type","status","estimatedDebitAmount","debitedAmount","currencyId","payload","result","error","metadata","videoTitle","searchTitle","videoUrl","thumbnailUrl","isPublic","isPurchased","isCommunityPurchase","communitySourceJobId","startedAt","runnerId","completedAt","nextRetryAt","retryLog","automatedRetryCount","clientRequestId","createdAt","updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","rvcVoiceModel.id","rvcVoiceModel.userId","rvcVoiceModel.externalSingerId","rvcVoiceModel.name","rvcVoiceModel.description","rvcVoiceModel.status","rvcVoiceModel.version","rvcVoiceModel.parentModelId","rvcVoiceModel.rvcVersion","rvcVoiceModel.sourceCount","rvcVoiceModel.sourceDurationSeconds","rvcVoiceModel.modelSha256","rvcVoiceModel.providerMetadata","rvcVoiceModel.trainedAt","rvcVoiceModel.lastVerifiedAt","rvcVoiceModel.archivedAt","rvcVoiceModel.createdAt","rvcVoiceModel.updatedAt","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt","creditTransactions.id","creditTransactions.accountId","creditTransactions.userId","creditTransactions.direction","creditTransactions.amount","creditTransactions.balanceAfter","creditTransactions.currencyId","creditTransactions.description","creditTransactions.referenceType","creditTransactions.referenceId","creditTransactions.metadata","creditTransactions.jobId","creditTransactions.createdAt","creditTransactions.updatedAt","youtubeUsages.id","youtubeUsages.quotaIdentityKey","youtubeUsages.userId","youtubeUsages.ipAddress","youtubeUsages.videoId","youtubeUsages.variant","youtubeUsages.purpose","youtubeUsages.jobId","youtubeUsages.creditsCharged","youtubeUsages.creditsRefunded","youtubeUsages.refundedAt","youtubeUsages.createdAt","performances.id","performances.userId","performances.karaokeJobId","performances.uploadId","performances.name","performances.searchName","performances.mediaType","performances.visibility","performances.status","performances.collaborationType","performances.mimeType","performances.size","performances.durationMs","performances.koreQuality","performances.storageService","performances.storageBucket","performances.stagingStorageKey","performances.storageKey","performances.createdAt","performances.updatedAt","notifications.id","notifications.recipientId","notifications.actorId","notifications.type","notifications.dedupeKey","notifications.postId","notifications.commentId","notifications.followRequestId","notifications.jobId","notifications.performanceId","notifications.readAt","notifications.createdAt","notifications.updatedAt","communityBroadcasts.id","communityBroadcasts.kind","communityBroadcasts.targetKey","communityBroadcasts.actorId","communityBroadcasts.jobId","communityBroadcasts.performanceId","communityBroadcasts.postId","communityBroadcasts.notifyEnabled","communityBroadcasts.emailEnabled","communityBroadcasts.status","communityBroadcasts.attempts","communityBroadcasts.claimedAt","communityBroadcasts.notifiedAt","communityBroadcasts.emailedAt","communityBroadcasts.emailCursorUserId","communityBroadcasts.notificationsCreated","communityBroadcasts.emailsSent","communityBroadcasts.lastError","communityBroadcasts.createdAt","communityBroadcasts.updatedAt","rvcTrainingRun.id","rvcTrainingRun.userId","rvcTrainingRun.modelId","rvcTrainingRun.jobId","rvcTrainingRun.clientRequestId","rvcTrainingRun.status","rvcTrainingRun.billingStatus","rvcTrainingRun.providerRequestId","rvcTrainingRun.trainEpochs","rvcTrainingRun.trainBatchSize","rvcTrainingRun.rvcVersion","rvcTrainingRun.creditsPerGpuMinute","rvcTrainingRun.maxAuthorizedCredits","rvcTrainingRun.maxGpuSeconds","rvcTrainingRun.maxSourceSeconds","rvcTrainingRun.maxTotalSourceSeconds","rvcTrainingRun.gpuSeconds","rvcTrainingRun.billableMinutes","rvcTrainingRun.chargedCredits","rvcTrainingRun.provider","rvcTrainingRun.gpuSku","rvcTrainingRun.providerCostPerGpuMinuteUsd","rvcTrainingRun.creditValueUsd","rvcTrainingRun.providerCostUsd","rvcTrainingRun.estimatedRevenueUsd","rvcTrainingRun.estimatedGrossProfitUsd","rvcTrainingRun.providerMetadata","rvcTrainingRun.error","rvcTrainingRun.leaseOwner","rvcTrainingRun.leaseExpiresAt","rvcTrainingRun.startedAt","rvcTrainingRun.completedAt","rvcTrainingRun.cancelRequestedAt","rvcTrainingRun.rightsConfirmedAt","rvcTrainingRun.createdAt","rvcTrainingRun.updatedAt","cueSheets.id","cueSheets.userId","cueSheets.kind","cueSheets.jobId","cueSheets.segments","cueSheets.metadata","cueSheets.sourceFingerprint","cueSheets.version","cueSheets.createdAt","cueSheets.updatedAt","floGenerationRun.id","floGenerationRun.jobId","floGenerationRun.userId","floGenerationRun.floProjectId","floGenerationRun.flowProjectId","floGenerationRun.clipId","floGenerationRun.mediaId","floGenerationRun.requestKey","floGenerationRun.purpose","floGenerationRun.tier","floGenerationRun.jobType","floGenerationRun.preferredKind","floGenerationRun.workerKind","floGenerationRun.workflow","floGenerationRun.task","floGenerationRun.status","floGenerationRun.attempts","floGenerationRun.priorityClass","floGenerationRun.batchRemaining","floGenerationRun.width","floGenerationRun.height","floGenerationRun.steps","floGenerationRun.frames","floGenerationRun.requestFields","floGenerationRun.inputKeys","floGenerationRun.outputKey","floGenerationRun.outputContentType","floGenerationRun.outputBytes","floGenerationRun.wrapperMeta","floGenerationRun.creditsPerUnit","floGenerationRun.heldCredits","floGenerationRun.chargedCredits","floGenerationRun.creditValueUsd","floGenerationRun.minimaxUsdPerSecond","floGenerationRun.podId","floGenerationRun.workerName","floGenerationRun.gpuTypeId","floGenerationRun.podCostPerHrUsd","floGenerationRun.podPromptId","floGenerationRun.coldStart","floGenerationRun.modelSwap","floGenerationRun.requestedSeconds","floGenerationRun.deliveredSeconds","floGenerationRun.queueWaitSeconds","floGenerationRun.gpuExecSeconds","floGenerationRun.gpuWallSeconds","floGenerationRun.enqueuedAt","floGenerationRun.warmingSince","floGenerationRun.assignedAt","floGenerationRun.submittedAt","floGenerationRun.startedAt","floGenerationRun.completedAt","floGenerationRun.deliveredAt","floGenerationRun.lastPolledAt","floGenerationRun.directCostUsd","floGenerationRun.allocatedOverheadUsd","floGenerationRun.revenueUsd","floGenerationRun.grossProfitUsd","floGenerationRun.minimaxEquivalentUsd","floGenerationRun.lastError","floGenerationRun.leaseOwner","floGenerationRun.leaseExpiresAt","floGenerationRun.trackRunId","floGenerationRun.createdAt","floGenerationRun.updatedAt","playlistItems.id","playlistItems.playlistId","playlistItems.position","playlistItems.itemType","playlistItems.jobId","playlistItems.performanceId","playlistItems.addedAt","youtubeLibraryEntry.id","youtubeLibraryEntry.videoId","youtubeLibraryEntry.channelId","youtubeLibraryEntry.title","youtubeLibraryEntry.displayTitle","youtubeLibraryEntry.songTitle","youtubeLibraryEntry.artist","youtubeLibraryEntry.language","youtubeLibraryEntry.description","youtubeLibraryEntry.thumbnailUrl","youtubeLibraryEntry.durationSeconds","youtubeLibraryEntry.publishedAt","youtubeLibraryEntry.viewCount","youtubeLibraryEntry.status","youtubeLibraryEntry.statusReason","youtubeLibraryEntry.isHidden","youtubeLibraryEntry.isFeatured","youtubeLibraryEntry.sortOrder","youtubeLibraryEntry.jobId","youtubeLibraryEntry.attempts","youtubeLibraryEntry.searchText","youtubeLibraryEntry.editedAt","youtubeLibraryEntry.lastSeenAt","youtubeLibraryEntry.readyAt","youtubeLibraryEntry.createdAt","youtubeLibraryEntry.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","userId":"asc","rvcVoiceModelId":"asc","type":"asc","status":"asc","estimatedDebitAmount":"asc","debitedAmount":"asc","currencyId":"asc","payload":"asc","result":"asc","error":"asc","metadata":"asc","videoTitle":"asc","searchTitle":"asc","videoUrl":"asc","thumbnailUrl":"asc","isPublic":"asc","isPurchased":"asc","isCommunityPurchase":"asc","communitySourceJobId":"asc","startedAt":"asc","runnerId":"asc","completedAt":"asc","nextRetryAt":"asc","retryLog":"asc","automatedRetryCount":"asc","clientRequestId":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"rvcVoiceModelId":{"mode":"EQ","value":123},"type":{"mode":"EQ","value":"example"},"status":{"mode":"EQ","value":"example"},"estimatedDebitAmount":{"mode":"EQ","value":"12.34"},"debitedAmount":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"payload":{"mode":"EQ","value":{"key":"value"}},"result":{"mode":"EQ","value":{"key":"value"}},"error":{"mode":"EQ","value":{"key":"value"}},"metadata":{"mode":"EQ","value":{"key":"value"}},"videoTitle":{"mode":"EQ","value":"example"},"searchTitle":{"mode":"EQ","value":"example"},"videoUrl":{"mode":"EQ","value":"example"},"thumbnailUrl":{"mode":"EQ","value":"example"},"isPublic":{"mode":"EQ","value":true},"isPurchased":{"mode":"EQ","value":true},"isCommunityPurchase":{"mode":"EQ","value":true},"communitySourceJobId":{"mode":"EQ","value":123},"startedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.102Z"},"runnerId":{"mode":"EQ","value":"example"},"completedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.102Z"},"nextRetryAt":{"mode":"EQ","value":"2026-11-02T19:39:26.102Z"},"retryLog":{"mode":"EQ","value":{"key":"value"}},"automatedRetryCount":{"mode":"EQ","value":123},"clientRequestId":{"mode":"EQ","value":"example"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:26.102Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.102Z"}}]}},"required":["fields"]},"JobPricingConfigModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"JobPricingConfigModelCreate":{"type":"object","properties":{"jobType":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"creditsPerConversion":{"type":"number"},"pricingModel":{"type":"string","enum":["FIXED","METERED","COST_PLUS","PERCENT_OF_SOURCE"],"minLength":1},"billingUnit":{"type":"string","enum":["CONVERSION","GPU_MINUTE","VIDEO_SECOND","MILLION_TOKENS","SOURCE_JOB"],"minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"marginPercent":{"type":"number","nullable":true},"creditValueUsd":{"type":"number","nullable":true}},"required":["jobType","creditsPerConversion","pricingModel","billingUnit"]},"JobPricingConfigModelDelete":{"type":"object","properties":{"jobType":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"creditsPerConversion":{"type":"number"},"pricingModel":{"type":"string","enum":["FIXED","METERED","COST_PLUS","PERCENT_OF_SOURCE"],"minLength":1},"billingUnit":{"type":"string","enum":["CONVERSION","GPU_MINUTE","VIDEO_SECOND","MILLION_TOKENS","SOURCE_JOB"],"minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"marginPercent":{"type":"number","nullable":true},"creditValueUsd":{"type":"number","nullable":true}},"required":["pricingModel","billingUnit","description","marginPercent","creditValueUsd"]},"JobPricingConfigModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"jobType":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"creditsPerConversion":{"type":"number"},"pricingModel":{"type":"string","enum":["FIXED","METERED","COST_PLUS","PERCENT_OF_SOURCE"],"minLength":1},"billingUnit":{"type":"string","enum":["CONVERSION","GPU_MINUTE","VIDEO_SECOND","MILLION_TOKENS","SOURCE_JOB"],"minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"marginPercent":{"type":"number","nullable":true},"creditValueUsd":{"type":"number","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"}},"required":["id","pricingModel","billingUnit","description","marginPercent","creditValueUsd","createdAt","updatedAt"]},"JobPricingConfigModelUpdate":{"type":"object","properties":{"jobType":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"],"minLength":1},"creditsPerConversion":{"type":"number"},"pricingModel":{"type":"string","enum":["FIXED","METERED","COST_PLUS","PERCENT_OF_SOURCE"],"minLength":1},"billingUnit":{"type":"string","enum":["CONVERSION","GPU_MINUTE","VIDEO_SECOND","MILLION_TOKENS","SOURCE_JOB"],"minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"marginPercent":{"type":"number","nullable":true},"creditValueUsd":{"type":"number","nullable":true}},"required":["pricingModel","billingUnit"]},"JobPricingConfigModel":{"type":"object"},"JobPricingConfigSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","jobType","creditsPerConversion","pricingModel","billingUnit","description","marginPercent","creditValueUsd","createdAt","updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","jobType":"asc","creditsPerConversion":"asc","pricingModel":"asc","billingUnit":"asc","description":"asc","marginPercent":"asc","creditValueUsd":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"jobType":{"mode":"EQ","value":"example"},"creditsPerConversion":{"mode":"EQ","value":"12.34"},"pricingModel":{"mode":"EQ","value":"example"},"billingUnit":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"},"marginPercent":{"mode":"EQ","value":"12.34"},"creditValueUsd":{"mode":"EQ","value":"12.34"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:34.678Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:34.678Z"}}]}},"required":["fields"]},"KoreHealthResponse":{"type":"object","properties":{"status":{"type":"string","minLength":1},"engine":{"type":"string","minLength":1},"presets":{"type":"array","items":{}}},"required":["status","engine","presets"]},"KorePresetsResponse":{"type":"object","properties":{"presets":{"type":"array","items":{}},"default_preset":{"type":"string","minLength":1},"parameters":{"type":"object"},"base_defaults":{"type":"object"}},"required":["presets","default_preset","parameters","base_defaults"]},"KoreRefsResponse":{"type":"object","properties":{"references":{"type":"array","items":{}},"references_dir":{"type":"string","minLength":1}},"required":["references","references_dir"]},"PreviewAudienceResponse":{"type":"object","properties":{"total":{"type":"number"},"sample":{"type":"array","items":{"$ref":"#/components/schemas/RecipientInfo"}},"selected":{"type":"array","items":{"$ref":"#/components/schemas/RecipientInfo"}},"excluded":{"type":"array","items":{"$ref":"#/components/schemas/RecipientInfo"}}}},"RecipientInfo":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"email":{"type":"string"}}},"SendMarketingEmailResponse":{"type":"object","properties":{"sentCount":{"type":"number"},"failedCount":{"type":"number"},"skippedCount":{"type":"number"},"status":{"type":"string"}}},"PreviewMarketingEmailResponse":{"type":"object","properties":{"html":{"type":"string"},"recipients":{"type":"array","items":{"$ref":"#/components/schemas/RecipientInfo"}},"subject":{"type":"string"},"totalRecipients":{"type":"number"}}},"MarketingEmailBodyModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"MarketingEmailBodyModelCreate":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"nullable":true},"description":{"type":"string","minLength":1,"nullable":true},"templateId":{"type":"number","multipleOf":1},"recipientUserIds":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"variables":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["templateId","recipientUserIds","variables"]},"MarketingEmailModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"subject":{"type":"string","minLength":1,"nullable":true},"description":{"type":"string","minLength":1,"nullable":true},"templateId":{"type":"number","multipleOf":1},"template":{"$ref":"#/components/schemas/EmailTemplateModel"},"recipientUserIds":{"type":"object"},"variables":{"type":"object","nullable":true},"status":{"type":"string","enum":["DRAFT","SENDING","SENT","FAILED"],"minLength":1},"sentAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"sentCount":{"type":"number","multipleOf":1},"failedCount":{"type":"number","multipleOf":1},"errorLog":{"type":"object","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"}},"required":["id","subject","description","template","recipientUserIds","variables","status","sentAt","sentCount","failedCount","errorLog","createdAt","updatedAt"]},"MarketingEmailBodyModelUpdate":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"nullable":true},"description":{"type":"string","minLength":1,"nullable":true},"templateId":{"type":"number","multipleOf":1},"recipientUserIds":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"variables":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]}},"required":["recipientUserIds","variables"]},"MarketingEmailModelDelete":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"nullable":true},"description":{"type":"string","minLength":1,"nullable":true},"templateId":{"type":"number","multipleOf":1},"recipientUserIds":{"type":"object"},"variables":{"type":"object","nullable":true}},"required":["subject","description","recipientUserIds","variables"]},"NewsletterSubscribeResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"NewsletterSubscribeBody":{"type":"object","properties":{"email":{"type":"string","format":"email","minLength":1}},"required":["email"]},"NewsletterSubscriberModelCreateResponse":{"type":"object"},"NewsletterSubscriberModelCreate":{"type":"object","properties":{"email":{"type":"string","minLength":1}},"required":["email"]},"NewsletterSubscriberModel":{"type":"object"},"NewsletterSubscriberModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"email":{"type":"string","minLength":1},"userId":{"type":"number","multipleOf":1,"nullable":true},"user":{"oneOf":[{"$ref":"#/components/schemas/UserModel"},{"nullable":true}]},"unsubscribed":{"type":"boolean"},"unsubscribeToken":{"type":"string","minLength":1},"unsubscribedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"}},"required":["id","userId","user","unsubscribed","unsubscribeToken","unsubscribedAt","createdAt","updatedAt"]},"NewsletterSubscriberModelUpdate":{"type":"object","properties":{"email":{"type":"string","minLength":1}}},"NewsletterSubscriberModelDelete":{"type":"object"},"NotificationListResponse":{"type":"object","properties":{"token":{"type":"string"},"realtimeUrl":{"type":"string"},"channel":{"type":"string"},"expiresAt":{"type":"string"},"unreadCount":{"type":"number"},"items":{"type":"array","items":{"$ref":"#/components/schemas/NotificationItemResponse"}},"nextCursor":{"type":"object"}},"required":["unreadCount","items"]},"NotificationItemResponse":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","minLength":1},"actor":{"$ref":"#/components/schemas/NotificationActorResponse"},"postId":{"type":"object"},"postText":{"type":"object"},"postMediaType":{"type":"object"},"commentId":{"type":"object"},"commentBody":{"type":"object"},"followRequestId":{"type":"object"},"followRequestStatus":{"type":"object"},"jobId":{"type":"object"},"jobTitle":{"type":"object"},"jobType":{"type":"object"},"performanceId":{"type":"object"},"performanceName":{"type":"object"},"isRead":{"type":"boolean"},"createdAt":{"type":"string","minLength":1}},"required":["id","type","actor","isRead","createdAt"]},"NotificationActorResponse":{"type":"object","properties":{"id":{"type":"number"},"handle":{"type":"object"},"name":{"type":"string","minLength":1},"avatar":{"type":"object"},"avatarUrl":{"type":"object"}},"required":["id","name"]},"NotificationSummaryResponse":{"type":"object","properties":{"token":{"type":"string"},"realtimeUrl":{"type":"string"},"channel":{"type":"string"},"expiresAt":{"type":"string"},"unreadCount":{"type":"number"}},"required":["unreadCount"]},"PaymentOrderListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PaymentOrderResponse"}},"total":{"type":"number"}},"required":["items","total"]},"PaymentOrderResponse":{"type":"object","properties":{"id":{"type":"number"},"userId":{"type":"number"},"provider":{"type":"string","minLength":1},"serviceName":{"type":"object","maxLength":64},"orderId":{"type":"string","minLength":1},"amount":{"type":"string","minLength":1},"currencyCode":{"type":"string","minLength":1},"status":{"type":"string","enum":["PENDING","SUCCEEDED","FAILED","CANCELLED"],"minLength":1},"notes":{"type":"object"},"paymentId":{"type":"object"},"signature":{"type":"object"},"metadata":{"type":"object"},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string","minLength":1},"paidAt":{"type":"object"}},"required":["id","userId","provider","orderId","amount","currencyCode","status","createdAt","updatedAt"]},"InvoiceRelayResponse":{"type":"object","properties":{"indian":{"type":"object"},"foreign":{"type":"object"},"recipients":{"type":"array","items":{"type":"string"}},"period":{"type":"object"}},"required":["indian","foreign","recipients","period"]},"InvoiceRelayRequest":{"type":"object","properties":{"from":{"type":"string","minLength":1,"nullable":true},"to":{"type":"string","minLength":1,"nullable":true},"recipients":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}}}},"UserPaymentOrderModelCreateResponse":{"type":"object"},"UserPaymentOrderModelCreate":{"type":"object"},"UserPaymentOrderModelDelete":{"type":"object"},"UserPaymentOrderModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"userId":{"type":"number","multipleOf":1},"provider":{"type":"string","minLength":1},"serviceName":{"type":"string","minLength":1,"nullable":true},"orderId":{"type":"string","minLength":1},"amount":{"type":"number"},"currencyId":{"type":"number","multipleOf":1,"nullable":true},"status":{"type":"string","enum":["PENDING","SUCCEEDED","FAILED","CANCELLED"],"minLength":1},"notes":{"type":"object","nullable":true},"paymentId":{"type":"string","minLength":1,"nullable":true},"signature":{"type":"string","minLength":1,"nullable":true},"metadata":{"type":"object","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"paidAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"user":{"$ref":"#/components/schemas/UserModel"},"currency":{"oneOf":[{"$ref":"#/components/schemas/CurrencyModel"},{"nullable":true},{"nullable":true}]}},"required":["id","userId","provider","serviceName","orderId","amount","currencyId","status","notes","paymentId","signature","metadata","createdAt","updatedAt","paidAt","user","currency"]},"UserPaymentOrderModelUpdate":{"type":"object"},"PaymentOrderSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","userId","provider","serviceName","orderId","amount","currencyId","status","notes","paymentId","signature","metadata","createdAt","updatedAt","paidAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","userId":"asc","provider":"asc","serviceName":"asc","orderId":"asc","amount":"asc","currencyId":"asc","status":"asc","notes":"asc","paymentId":"asc","signature":"asc","metadata":"asc","createdAt":"asc","updatedAt":"asc","paidAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"provider":{"mode":"EQ","value":"example"},"serviceName":{"mode":"EQ","value":"example"},"orderId":{"mode":"EQ","value":"example"},"amount":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"status":{"mode":"EQ","value":"example"},"notes":{"mode":"EQ","value":{"key":"value"}},"paymentId":{"mode":"EQ","value":"example"},"signature":{"mode":"EQ","value":"example"},"metadata":{"mode":"EQ","value":{"key":"value"}},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:35.308Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:35.308Z"},"paidAt":{"mode":"EQ","value":"2026-11-02T19:39:35.308Z"}}]}},"required":["fields"]},"PaypalCheckoutResponse":{"type":"object","properties":{"clientId":{"type":"string","minLength":1},"orderId":{"type":"string","minLength":1},"amount":{"type":"string","minLength":1},"currencyCode":{"type":"string","minLength":1},"provider":{"type":"string","minLength":1},"status":{"type":"string","enum":["PENDING","SUCCEEDED","FAILED","CANCELLED"],"minLength":1},"serviceName":{"type":"object"}},"required":["clientId","orderId","amount","currencyCode","provider","status"]},"PaypalCaptureResponse":{"type":"object","properties":{"status":{"type":"string","minLength":1},"orderId":{"type":"string","minLength":1},"captureId":{"type":"object"},"amount":{"type":"string","minLength":1},"currencyCode":{"type":"string","minLength":1},"provider":{"type":"string","minLength":1}},"required":["status","orderId","amount","currencyCode","provider"]},"PaypalCaptureRequest":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]},"RazorpayCheckoutResponse":{"type":"object","properties":{"keyId":{"type":"string","minLength":1},"orderId":{"type":"string","minLength":1},"amount":{"type":"string","minLength":1},"amountSubUnits":{"type":"number"},"currencyCode":{"type":"string","minLength":1},"provider":{"type":"string","minLength":1},"status":{"type":"string","enum":["PENDING","SUCCEEDED","FAILED","CANCELLED"],"minLength":1},"serviceName":{"type":"object"},"userName":{"type":"object"},"userEmail":{"type":"object"},"notes":{"type":"object"},"metadata":{"type":"object"}},"required":["keyId","orderId","amount","amountSubUnits","currencyCode","provider","status"]},"RazorpayPaymentConfirmationRequest":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"paymentId":{"type":"string","minLength":1},"signature":{"type":"string","minLength":1}},"required":["orderId","paymentId","signature"]},"InitUploadResponse":{"type":"object","properties":{"performance":{"$ref":"#/components/schemas/PerformanceResponse"},"upload":{"type":"object"}},"required":["performance"]},"PerformanceResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"userId":{"type":"number"},"karaokeJobId":{"type":"object"},"uploadId":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","minLength":1},"mediaType":{"type":"string","enum":["AUDIO","VIDEO"],"minLength":1},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"],"minLength":1},"status":{"type":"string","enum":["UPLOADING","READY","FAILED"],"minLength":1},"mimeType":{"type":"string","minLength":1},"size":{"type":"number"},"durationMs":{"type":"object"},"collaborationType":{"type":"string","enum":["SOLO"],"minLength":1},"quality":{"$ref":"#/components/schemas/PerformanceQualityResponse"},"createdAt":{"type":"string","format":"date-time","minLength":1},"updatedAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","userId","uploadId","name","mediaType","visibility","status","mimeType","size","collaborationType","createdAt","updatedAt"]},"PerformanceQualityResponse":{"type":"object","properties":{"qc":{"type":"object"},"loudnessLufs":{"type":"object"},"truePeakDbtp":{"type":"object"},"vocalBalanceLu":{"type":"object"},"vocalOffsetMs":{"type":"object"},"tuning":{"type":"object"},"tuningMode":{"type":"object"},"tuningKey":{"type":"object"},"tuningConfidence":{"type":"object"},"tuningSupport":{"type":"object"}}},"InitUploadBody":{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","maxLength":120,"minLength":1},"karaokeJobId":{"type":"integer","minimum":1,"multipleOf":1},"mediaType":{"type":"string","enum":["AUDIO","VIDEO"],"minLength":1},"mimeType":{"type":"string","maxLength":128,"minLength":1},"size":{"type":"integer","minimum":1,"multipleOf":1},"durationMs":{"type":"integer","maximum":86400000,"minimum":0,"multipleOf":1},"visibility":{"type":"string","default":"PRIVATE","enum":["PRIVATE","PUBLIC"]},"coverJobId":{"type":"integer","minimum":1,"multipleOf":1}},"required":["uploadId","name","karaokeJobId","mediaType","mimeType","size"]},"PerformanceListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PublicPerformance"}},"total":{"type":"number"}},"required":["items","total"]},"PerformanceProgressResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceProgressItem"}},"total":{"type":"number"}},"required":["items","total"]},"PerformanceProgressItem":{"type":"object","properties":{"performanceId":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","maxLength":120,"minLength":1},"createdAt":{"type":"string","format":"date-time","minLength":1},"quality":{"$ref":"#/components/schemas/PerformanceQualityResponse"}},"required":["performanceId","name","createdAt","quality"]},"PublicPerformanceListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PublicPerformanceResponse"}},"total":{"type":"number"}},"required":["items","total"]},"PublicPerformanceResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","maxLength":120,"minLength":1},"mediaType":{"type":"string","enum":["AUDIO","VIDEO"],"minLength":1},"mimeType":{"type":"string","minLength":1},"durationMs":{"type":"object"},"creator":{"$ref":"#/components/schemas/PublicPerformanceCreatorResponse"},"isOwner":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","name","mediaType","mimeType","creator","isOwner","createdAt"]},"PublicPerformanceCreatorResponse":{"type":"object","properties":{"id":{"type":"integer","multipleOf":1},"name":{"type":"string","maxLength":120,"minLength":1},"handle":{"type":"object","maxLength":30},"avatarUrl":{"type":"object"}},"required":["id","name"]},"PerformanceMediaResponse":{"type":"object","properties":{"performanceId":{"type":"string","format":"uuid","minLength":1},"url":{"type":"string","minLength":1},"expiresAt":{"type":"string","format":"date-time","minLength":1},"expiresInSeconds":{"type":"number"},"mimeType":{"type":"string","minLength":1}},"required":["performanceId","url","expiresAt","expiresInSeconds","mimeType"]},"UpdatePerformanceBody":{"type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"]}}},"PermissionModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"permissionUid":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"resource":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissionType":{"type":"string","minLength":1,"nullable":true}},"required":["id","permissionUid","name","resource","method","description","permissionType"]},"PermissionModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"resource":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissionType":{"type":"string","minLength":1,"nullable":true}},"required":["name","resource","method","permissionType"]},"PermissionModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"permissionUid":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"resource":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissionType":{"type":"string","minLength":1,"nullable":true}},"required":["id","permissionUid","name","resource","method","description","permissionType"]},"PermissionModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"permissionUid":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"resource":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissionType":{"type":"string","minLength":1,"nullable":true},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleModel"}}},"required":["id","permissionUid","name","resource","method","description","permissionType","roles"]},"PermissionModelUpdate":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"resource":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissionType":{"type":"string","minLength":1,"nullable":true}}},"PermissionSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","permissionUid","name","resource","method","description","permissionType","roles.id","roles.name","roles.description","externalUsers.id","externalUsers.name","externalUsers.token","externalUsers.countryId","users.id","users.email","users.name","users.createdAt","users.password","users.countryId","users.avatar","users.isVerified","users.verificationToken","users.googleSub","users.lastActiveAt","users.bannedAt","users.bannedById","users.banReason","users.faceSwapTermsAcceptedAt","users.faceSwapTermsVersion","users.voiceTermsAcceptedAt","users.voiceTermsVersion","users.faceSwapBypassFilters","users.feedDeletionClaimedAt","users.isDeleted","users.deletedAt","users.deletedEmail","users.bio","users.privacySetting","users.handle"]},"orderBy":{"type":"object","example":{"id":"asc","permissionUid":"asc","name":"asc","resource":"asc","method":"asc","description":"asc","permissionType":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"permissionUid":{"mode":"EQ","value":"example"},"name":{"mode":"EQ","value":"example"},"resource":{"mode":"EQ","value":"example"},"method":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"},"permissionType":{"mode":"EQ","value":"example"}}]}},"required":["fields"]},"PlaylistDetailResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","maxLength":80,"minLength":1},"description":{"type":"object","nullable":true},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"],"minLength":1},"itemCount":{"type":"integer","multipleOf":1},"owner":{"$ref":"#/components/schemas/PlaylistOwnerResponse"},"isOwner":{"type":"boolean"},"containsItemId":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time","minLength":1},"updatedAt":{"type":"string","format":"date-time","minLength":1},"items":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistItemResponse"}}},"required":["id","name","visibility","itemCount","owner","isOwner","createdAt","updatedAt","items"]},"PlaylistItemResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"position":{"type":"integer","multipleOf":1},"itemType":{"type":"string","enum":["JOB","PERFORMANCE"],"minLength":1},"jobId":{"type":"object","nullable":true},"performanceId":{"type":"object","nullable":true},"available":{"type":"boolean"},"job":{"oneOf":[{"$ref":"#/components/schemas/PublicJobResponse"},{"nullable":true}]},"performance":{"oneOf":[{"$ref":"#/components/schemas/PublicPerformanceResponse"},{"nullable":true}]},"addedAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","position","itemType","available","addedAt"]},"PlaylistOwnerResponse":{"type":"object","properties":{"id":{"type":"integer","multipleOf":1},"name":{"type":"string","maxLength":120,"minLength":1},"handle":{"type":"object","nullable":true},"avatarUrl":{"type":"object","nullable":true}},"required":["id","name"]},"CreatePlaylistBody":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"minLength":1},"description":{"type":"object","maxLength":500,"nullable":true},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"]}},"required":["name"]},"PlaylistListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistSummaryResponse"}},"total":{"type":"integer","multipleOf":1}},"required":["items","total"]},"PlaylistSummaryResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","maxLength":80,"minLength":1},"description":{"type":"object","nullable":true},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"],"minLength":1},"itemCount":{"type":"integer","multipleOf":1},"owner":{"$ref":"#/components/schemas/PlaylistOwnerResponse"},"isOwner":{"type":"boolean"},"containsItemId":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time","minLength":1},"updatedAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","name","visibility","itemCount","owner","isOwner","createdAt","updatedAt"]},"UpdatePlaylistBody":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"minLength":1},"description":{"type":"object","maxLength":500,"nullable":true},"visibility":{"type":"string","enum":["PRIVATE","PUBLIC"]}}},"AddPlaylistItemBody":{"type":"object","properties":{"jobId":{"type":"integer","minimum":1,"multipleOf":1},"performanceId":{"type":"string","format":"uuid"}}},"ReorderPlaylistItemsBody":{"type":"object","properties":{"itemIds":{"type":"array","items":{"type":"string"},"maxItems":200}},"required":["itemIds"]},"PublicPresenceSnapshot":{"type":"object","properties":{"generatedAt":{"type":"string","minLength":1},"onlineThresholdSeconds":{"type":"number"},"onlineUsers":{"type":"number"},"totalRegisteredUsers":{"type":"number"}},"required":["generatedAt","onlineThresholdSeconds","onlineUsers","totalRegisteredUsers"]},"UserSearchResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserSearchItem"}},"total":{"type":"number"},"skip":{"type":"number"},"limit":{"type":"number"}},"required":["items","total","skip","limit"]},"UserSearchItem":{"type":"object","properties":{"id":{"type":"number"},"handle":{"type":"object"},"name":{"type":"string","minLength":1},"privacySetting":{"type":"string","minLength":1},"avatar":{"type":"object"},"avatarUrl":{"type":"object"},"followerCount":{"type":"number"},"isFollowing":{"type":"boolean"},"isFollowRequested":{"type":"boolean"},"canMessage":{"type":"boolean"},"isOnline":{"type":"boolean"},"lastSeenAt":{"type":"object"}},"required":["id","name","privacySetting","isFollowing","isFollowRequested","canMessage","isOnline"]},"PublicProfileUser":{"type":"object","properties":{"id":{"type":"number"},"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"bio":{"type":"object"},"privacySetting":{"type":"string","minLength":1},"avatar":{"type":"object"},"avatarUrl":{"type":"object"},"followerCount":{"type":"number"},"followingCount":{"type":"number"},"isFollowing":{"type":"boolean"},"isFollowRequested":{"type":"boolean"},"isOwner":{"type":"boolean"},"isRestricted":{"type":"boolean"},"canMessage":{"type":"boolean"},"isOnline":{"type":"boolean"},"lastSeenAt":{"type":"object"}},"required":["handle","name","privacySetting","isFollowing","isFollowRequested","isOwner","isRestricted","canMessage","isOnline"]},"PublicPerformance":{"type":"object","properties":{"id":{"type":"string","format":"uuid","minLength":1},"name":{"type":"string","minLength":1},"mediaType":{"type":"string","minLength":1},"durationMs":{"type":"object"},"collaborationType":{"type":"string","minLength":1},"createdAt":{"type":"string","format":"date-time","minLength":1},"updatedAt":{"type":"string","format":"date-time","minLength":1}},"required":["id","name","mediaType","collaborationType","createdAt","updatedAt"]},"PromotionBodyModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"PromotionBodyModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"triggerEvent":{"type":"string","minLength":1},"conditions":{"type":"object"},"actionType":{"type":"string","minLength":1},"actionPayload":{"type":"object"},"limits":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"expiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isActive":{"type":"boolean"}},"required":["name","triggerEvent","actionType","actionPayload"]},"PromotionModelDelete":{"type":"object","properties":{"name":{"type":"string","minLength":1},"triggerEvent":{"type":"string","minLength":1},"conditions":{"type":"object"},"actionType":{"type":"string","minLength":1},"actionPayload":{"type":"object"},"limits":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"expiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isActive":{"type":"boolean"}},"required":["conditions","limits","startsAt","expiresAt","isActive"]},"PromotionModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"triggerEvent":{"type":"string","minLength":1},"conditions":{"type":"object"},"actionType":{"type":"string","minLength":1},"actionPayload":{"type":"object"},"limits":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"expiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isActive":{"type":"boolean"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"redemptions":{"type":"array","items":{"$ref":"#/components/schemas/PromotionRedemptionModel"}}},"required":["id","conditions","limits","startsAt","expiresAt","isActive","createdAt","updatedAt","redemptions"]},"PromotionRedemptionModel":{"type":"object"},"PromotionBodyModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"triggerEvent":{"type":"string","minLength":1},"conditions":{"type":"object"},"actionType":{"type":"string","minLength":1},"actionPayload":{"type":"object"},"limits":{"type":"object"},"startsAt":{"type":"string","minLength":1,"format":"date-time"},"expiresAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isActive":{"type":"boolean"}}},"PromotionModel":{"type":"object"},"PromotionSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","triggerEvent","conditions","actionType","actionPayload","limits","startsAt","expiresAt","isActive","createdAt","updatedAt","redemptions.id","redemptions.promotionId","redemptions.userId","redemptions.status","redemptions.error","redemptions.createdAt"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","triggerEvent":"asc","conditions":"asc","actionType":"asc","actionPayload":"asc","limits":"asc","startsAt":"asc","expiresAt":"asc","isActive":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"triggerEvent":{"mode":"EQ","value":"example"},"conditions":{"mode":"EQ","value":{"key":"value"}},"actionType":{"mode":"EQ","value":"example"},"actionPayload":{"mode":"EQ","value":{"key":"value"}},"limits":{"mode":"EQ","value":{"key":"value"}},"startsAt":{"mode":"EQ","value":"2026-11-02T19:39:41.144Z"},"expiresAt":{"mode":"EQ","value":"2026-11-02T19:39:41.144Z"},"isActive":{"mode":"EQ","value":true},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:41.144Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:41.144Z"}}]}},"required":["fields"]},"PromotionRedemptionSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","promotionId","userId","status","error","createdAt","promotion.id","promotion.name","promotion.triggerEvent","promotion.conditions","promotion.actionType","promotion.actionPayload","promotion.limits","promotion.startsAt","promotion.expiresAt","promotion.isActive","promotion.createdAt","promotion.updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle"]},"orderBy":{"type":"object","example":{"id":"asc","promotionId":"asc","userId":"asc","status":"asc","error":"asc","createdAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"promotionId":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"status":{"mode":"EQ","value":"example"},"error":{"mode":"EQ","value":"example"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:41.146Z"}}]}},"required":["fields"]},"PushTokenItemResponse":{"type":"object","properties":{"id":{"type":"number"},"userId":{"type":"number"},"type":{"type":"string","enum":["ANDROID_FCM","IOS_APNS","WEB_FCM","IOS_APNS_VOIP","MACOS_APNS"],"minLength":1},"token":{"type":"string","minLength":1},"deviceId":{"type":"string"},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string","minLength":1}},"required":["id","userId","type","token","createdAt","updatedAt"]},"RegisterPushTokenBody":{"type":"object","properties":{"token":{"type":"string","minLength":1},"type":{"type":"string","enum":["ANDROID_FCM","IOS_APNS","WEB_FCM","IOS_APNS_VOIP","MACOS_APNS"],"minLength":1},"deviceId":{"type":"string"}},"required":["token","type"]},"DeletePushTokenBody":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]},"CountryModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"CountryModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1,"nullable":true},"iso2":{"type":"string","minLength":1,"nullable":true},"iso3":{"type":"string","minLength":1,"nullable":true},"numCode":{"type":"string","minLength":1,"nullable":true},"metadata":{"type":"object","nullable":true},"currencyId":{"type":"number","multipleOf":1,"nullable":true}},"required":["name","displayName"]},"CountryModelDelete":{"type":"object"},"CountryModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1,"nullable":true},"iso2":{"type":"string","minLength":1,"nullable":true},"iso3":{"type":"string","minLength":1,"nullable":true},"numCode":{"type":"string","minLength":1,"nullable":true},"metadata":{"type":"object","nullable":true},"currencyId":{"type":"number","multipleOf":1,"nullable":true},"currency":{"oneOf":[{"$ref":"#/components/schemas/CurrencyModel"},{"nullable":true}]},"User":{"type":"array","items":{"$ref":"#/components/schemas/UserModel"}},"ExternalUser":{"type":"array","items":{"$ref":"#/components/schemas/ExternalUserModel"}},"creditPlans":{"type":"array","items":{"$ref":"#/components/schemas/CreditPlanModel"}},"demoSongQuotas":{"type":"array","items":{"$ref":"#/components/schemas/DemoSongQuotaModel"}}},"required":["id","iso2","iso3","numCode","metadata","currencyId","currency","User","ExternalUser","creditPlans","demoSongQuotas"]},"DemoSongQuotaModel":{"type":"object"},"CountryModelUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1,"nullable":true},"iso2":{"type":"string","minLength":1,"nullable":true},"iso3":{"type":"string","minLength":1,"nullable":true},"numCode":{"type":"string","minLength":1,"nullable":true},"metadata":{"type":"object","nullable":true},"currencyId":{"type":"number","multipleOf":1,"nullable":true},"User":{"type":"array","items":{"$ref":"#/components/schemas/UserModel"}},"ExternalUser":{"type":"array","items":{"$ref":"#/components/schemas/ExternalUserModel"}}}},"CountrySearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","displayName","iso2","iso3","numCode","metadata","currencyId","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt","User.id","User.email","User.name","User.createdAt","User.password","User.countryId","User.avatar","User.isVerified","User.verificationToken","User.googleSub","User.lastActiveAt","User.bannedAt","User.bannedById","User.banReason","User.faceSwapTermsAcceptedAt","User.faceSwapTermsVersion","User.voiceTermsAcceptedAt","User.voiceTermsVersion","User.faceSwapBypassFilters","User.feedDeletionClaimedAt","User.isDeleted","User.deletedAt","User.deletedEmail","User.bio","User.privacySetting","User.handle","ExternalUser.id","ExternalUser.name","ExternalUser.token","ExternalUser.countryId","creditPlans.id","creditPlans.name","creditPlans.description","creditPlans.priceInr","creditPlans.credits","creditPlans.badge","creditPlans.features","creditPlans.buttonLabel","creditPlans.buttonColor","creditPlans.isActive","creditPlans.scale","creditPlans.sortOrder","creditPlans.countryId","creditPlans.createdAt","creditPlans.updatedAt","demoSongQuotas.identityKey","demoSongQuotas.ipAddress","demoSongQuotas.countryId","demoSongQuotas.countryIso2","demoSongQuotas.countryDetectionSource","demoSongQuotas.usageCount","demoSongQuotas.periodStartedAt","demoSongQuotas.periodEndsAt","demoSongQuotas.firstUsedAt","demoSongQuotas.lastUsedAt","demoSongQuotas.createdAt","demoSongQuotas.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","displayName":"asc","iso2":"asc","iso3":"asc","numCode":"asc","metadata":"asc","currencyId":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"displayName":{"mode":"EQ","value":"example"},"iso2":{"mode":"EQ","value":"example"},"iso3":{"mode":"EQ","value":"example"},"numCode":{"mode":"EQ","value":"example"},"metadata":{"mode":"EQ","value":{"key":"value"}},"currencyId":{"mode":"EQ","value":123}}]}},"required":["fields"]},"RoleModelCreateResponse":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"RoleModelCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true}},"required":["name","description"]},"RoleModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"RoleModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionModel"}},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserModel"}},"externalUsers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalUserModel"}}},"required":["id","name","description","permissions","users","externalUsers"]},"RoleModelUpdate":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1,"nullable":true},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionModel"}},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserModel"}},"externalUsers":{"type":"array","items":{"$ref":"#/components/schemas/ExternalUserModel"}}},"required":["name","description"]},"RoleSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","name","description","permissions.id","permissions.permissionUid","permissions.name","permissions.resource","permissions.method","permissions.description","permissions.permissionType","users.id","users.email","users.name","users.createdAt","users.password","users.countryId","users.avatar","users.isVerified","users.verificationToken","users.googleSub","users.lastActiveAt","users.bannedAt","users.bannedById","users.banReason","users.faceSwapTermsAcceptedAt","users.faceSwapTermsVersion","users.voiceTermsAcceptedAt","users.voiceTermsVersion","users.faceSwapBypassFilters","users.feedDeletionClaimedAt","users.isDeleted","users.deletedAt","users.deletedEmail","users.bio","users.privacySetting","users.handle","externalUsers.id","externalUsers.name","externalUsers.token","externalUsers.countryId"]},"orderBy":{"type":"object","example":{"id":"asc","name":"asc","description":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"name":{"mode":"EQ","value":"example"},"description":{"mode":"EQ","value":"example"}}]}},"required":["fields"]},"PermissionsLink":{"type":"object","properties":{"permissions":{"type":"array","items":{"type":"number"}}},"required":["permissions"]},"RvcAdminTrainingReportResponse":{"type":"object","properties":{"jobId":{"type":"integer","multipleOf":1},"jobStatus":{"type":"string","minLength":1},"member":{"type":"object","description":"The member who trained it: id, email, name"},"voice":{"type":"object","description":"The voice: name, status, version, total recording length, trainedAt, model checksum"},"training":{"type":"object","description":"The run: status, billing, settings and limits, provider progress, GPU seconds and share of the limit, economics (charged credits, provider cost, revenue, margin), failure, timings"},"recordings":{"type":"object","description":"What the member gave: each recording with its duration, and a one-hour playUrl while its file is stored (YouTube sources carry their link)"},"covers":{"type":"object","description":"How the voice has done since: covers made with it by status, success rate, and the latest succeeded covers"}},"required":["jobId","jobStatus","member","voice","training","recordings","covers"]},"RvcVoiceStudioConfigResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxSources":{"type":"number"},"maxSourceSeconds":{"type":"number"},"maxTotalSourceSeconds":{"type":"number"},"maxUploadBytes":{"type":"number"},"creditsPerGpuMinute":{"type":"number"},"maxAuthorizedCredits":{"type":"number"},"youtubeCoverCredits":{"type":"number"},"uploadCoverCredits":{"type":"number"},"availableCredits":{"type":"number"},"currencyCode":{"type":"object"}},"required":["enabled","maxSources","maxSourceSeconds","maxTotalSourceSeconds","maxUploadBytes","creditsPerGpuMinute","maxAuthorizedCredits","youtubeCoverCredits","uploadCoverCredits","availableCredits","currencyCode"]},"RvcUploadResponse":{"type":"object","properties":{"id":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1},"size":{"type":"number"},"mimeType":{"type":"string","minLength":1},"durationSeconds":{"type":"number"}},"required":["id","displayName","fileName","size","mimeType"]},"RvcVoiceModelResponse":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"status":{"type":"string","minLength":1},"version":{"type":"number"},"rvcVersion":{"type":"string","minLength":1},"sourceCount":{"type":"number"},"coverCount":{"type":"number"},"trainedAt":{"type":"string"},"archivedAt":{"type":"string"},"createdAt":{"type":"string","minLength":1},"latestTraining":{"$ref":"#/components/schemas/RvcTrainingRunResponse"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingSourceResponse"}},"canDelete":{"type":"boolean"}},"required":["id","name","status","version","rvcVersion","sourceCount","coverCount","createdAt","canDelete"]},"RvcTrainingRunResponse":{"type":"object","properties":{"id":{"type":"number"},"status":{"type":"string","minLength":1},"stage":{"type":"string","minLength":1},"progress":{"type":"number"},"currentEpoch":{"type":"number"},"totalEpochs":{"type":"number"},"epochProgress":{"type":"number"},"progressUpdatedAt":{"type":"string"},"creditsPerGpuMinute":{"type":"number"},"maxAuthorizedCredits":{"type":"number"},"gpuSeconds":{"type":"number"},"gpuMinutes":{"type":"number"},"billableMinutes":{"type":"number"},"chargedCredits":{"type":"number"},"estimatedChargeCredits":{"type":"number"},"gpuMeteringActive":{"type":"boolean"},"error":{"type":"string"},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"retryAttempt":{"type":"number"},"nextRetryAt":{"type":"string"},"canRetry":{"type":"boolean"},"canResume":{"type":"boolean"},"pauseReason":{"type":"string"},"requiredCredits":{"type":"number"},"availableCredits":{"type":"number"},"creditDeficit":{"type":"number"},"canCancel":{"type":"boolean"},"canReconcile":{"type":"boolean"},"cancellationRequested":{"type":"boolean"},"cancelRequestedAt":{"type":"string"}},"required":["id","status","stage","progress","totalEpochs","creditsPerGpuMinute","maxAuthorizedCredits","gpuMeteringActive","retryAttempt","canRetry","canResume","canCancel","canReconcile","cancellationRequested"]},"RvcTrainingSourceResponse":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1},"youtubeUrl":{"type":"string"},"fileName":{"type":"string"},"size":{"type":"number"},"durationSeconds":{"type":"number"},"isVocals":{"type":"boolean"}},"required":["id","type","displayName","isVocals"]},"CreateRvcVoiceModelRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"minLength":2},"description":{"type":"string","maxLength":280},"clientRequestId":{"type":"string","maxLength":100,"minLength":8},"uploadIds":{"type":"array","items":{"type":"string"}},"youtubeUrls":{"type":"array","items":{"type":"string"}},"referenceIsVocals":{"type":"boolean","default":false},"rightsConfirmed":{"type":"boolean","description":"Confirms the user owns or has permission to process all submitted recordings."},"expectedCreditsPerGpuMinute":{"type":"number","minimum":0},"expectedMaxAuthorizedCredits":{"type":"number","minimum":0}},"additionalProperties":false,"required":["name","clientRequestId","rightsConfirmed","expectedCreditsPerGpuMinute","expectedMaxAuthorizedCredits"]},"RvcVoiceModelListResponse":{"type":"object","properties":{"total":{"type":"number"},"items":{"type":"array","items":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"required":["total","items"]},"CreateRvcCoverRequest":{"type":"object","properties":{"youtubeUrl":{"type":"string","maxLength":500,"minLength":1},"clientRequestId":{"type":"string","maxLength":100,"minLength":8},"f0Method":{"type":"string","enum":["rmvpe","harvest","crepe","pm"]},"f0UpKey":{"type":"integer","maximum":12,"minimum":-12,"multipleOf":1},"expectedCredits":{"type":"number","minimum":0}},"additionalProperties":false,"required":["youtubeUrl","clientRequestId","expectedCredits"]},"ServiceDownloadResponse":{"type":"object","properties":{"id":{"type":"number"},"videoId":{"type":"string","minLength":1},"originalUrl":{"type":"string","minLength":1},"title":{"type":"object"},"description":{"type":"object"},"durationSeconds":{"type":"object"},"metadata":{"type":"object"},"audio":{"$ref":"#/components/schemas/ServiceDownloadArtifactResponse"},"video":{"$ref":"#/components/schemas/ServiceDownloadArtifactResponse"},"quota":{"$ref":"#/components/schemas/ServiceDownloadQuotaResponse"},"ttlSeconds":{"type":"number"},"expiresAt":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1},"updatedAt":{"type":"string","minLength":1},"lastAccessedAt":{"type":"object"}},"required":["id","videoId","originalUrl","quota","ttlSeconds","expiresAt","createdAt","updatedAt"]},"ServiceDownloadArtifactResponse":{"type":"object","properties":{"storageService":{"type":"string","minLength":1},"bucket":{"type":"object"},"key":{"type":"string","minLength":1},"size":{"type":"object"},"mimeType":{"type":"object"},"checksumSha256":{"type":"object"},"downloadUrl":{"type":"object"},"expiresInSeconds":{"type":"number"}},"required":["storageService","key","expiresInSeconds"]},"ServiceDownloadRequest":{"type":"object","properties":{"url":{"type":"string","description":"YouTube video URL or identifier","minLength":1},"forceRefresh":{"type":"boolean"},"variant":{"type":"string","enum":["audio","video"],"minLength":1},"requestId":{"type":"string","description":"Client-generated UUID used to make retries idempotent","minLength":1}},"required":["url","variant","requestId"]},"ServiceYoutubePreviewResponse":{"type":"object","properties":{"videoId":{"type":"string","minLength":1},"originalUrl":{"type":"string","minLength":1},"metadata":{"type":"object"},"quota":{"$ref":"#/components/schemas/ServiceDownloadQuotaResponse"}},"required":["videoId","originalUrl","quota"]},"ServiceYoutubePreviewRequest":{"type":"object","properties":{"url":{"type":"string","description":"YouTube video URL or identifier","minLength":1}},"required":["url"]},"ServiceDownloaderQuotaListModel":{"type":"object","properties":{"identityKey":{"type":"string","minLength":1},"userId":{"type":"number","multipleOf":1,"nullable":true},"ipAddress":{"type":"string","minLength":1,"nullable":true},"downloadCount":{"type":"number","multipleOf":1},"periodStartedAt":{"type":"string","minLength":1,"format":"date-time"},"periodEndsAt":{"type":"string","minLength":1,"format":"date-time"},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"updatedAt":{"type":"string","minLength":1,"format":"date-time"},"usages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}}},"required":["identityKey","userId","ipAddress","downloadCount","periodStartedAt","periodEndsAt","createdAt","updatedAt","usages"]},"ServiceDownloaderQuotaSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["identityKey","userId","ipAddress","downloadCount","periodStartedAt","periodEndsAt","createdAt","updatedAt","usages.id","usages.quotaIdentityKey","usages.userId","usages.ipAddress","usages.videoId","usages.variant","usages.purpose","usages.jobId","usages.creditsCharged","usages.creditsRefunded","usages.refundedAt","usages.createdAt"]},"orderBy":{"type":"object","example":{"identityKey":"asc","userId":"asc","ipAddress":"asc","downloadCount":"asc","periodStartedAt":"asc","periodEndsAt":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"identityKey":{"mode":"EQ","value":"example"},"userId":{"mode":"EQ","value":123},"ipAddress":{"mode":"EQ","value":"example"},"downloadCount":{"mode":"EQ","value":123},"periodStartedAt":{"mode":"EQ","value":"2026-11-02T19:39:38.404Z"},"periodEndsAt":{"mode":"EQ","value":"2026-11-02T19:39:38.404Z"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:38.404Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:38.404Z"}}]}},"required":["fields"]},"ServiceDownloaderUsageListModel":{"type":"object","properties":{"id":{"type":"string","minLength":1},"quotaIdentityKey":{"type":"string","minLength":1},"userId":{"type":"number","multipleOf":1,"nullable":true},"ipAddress":{"type":"string","minLength":1,"nullable":true},"videoId":{"type":"string","minLength":1},"variant":{"type":"string","enum":["AUDIO","VIDEO"],"minLength":1},"purpose":{"type":"string","enum":["DIRECT_DOWNLOAD","KARAOKE_JOB","LYRICAL_JOB","AI_STUDIO_REFERENCE","LYRICS_EDITOR_PLAYBACK"],"minLength":1},"jobId":{"type":"number","multipleOf":1,"nullable":true},"creditsCharged":{"type":"number"},"creditsRefunded":{"type":"number"},"refundedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"user":{"oneOf":[{"$ref":"#/components/schemas/UserModel"},{"nullable":true}]},"quota":{"$ref":"#/components/schemas/ServiceDownloaderQuotaModel"},"job":{"oneOf":[{"$ref":"#/components/schemas/JobModel"},{"nullable":true}]},"youtubeUrl":{"type":"string","description":"Canonical YouTube watch URL reconstructed from the stored video ID."}},"required":["id","quotaIdentityKey","userId","ipAddress","videoId","variant","purpose","jobId","creditsCharged","creditsRefunded","refundedAt","createdAt","user","quota","job"]},"ServiceDownloaderUsageSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","quotaIdentityKey","userId","ipAddress","videoId","variant","purpose","jobId","creditsCharged","creditsRefunded","refundedAt","createdAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","quota.identityKey","quota.userId","quota.ipAddress","quota.downloadCount","quota.periodStartedAt","quota.periodEndsAt","quota.createdAt","quota.updatedAt","job.id","job.userId","job.rvcVoiceModelId","job.type","job.status","job.estimatedDebitAmount","job.debitedAmount","job.currencyId","job.payload","job.result","job.error","job.metadata","job.videoTitle","job.searchTitle","job.videoUrl","job.thumbnailUrl","job.isPublic","job.isPurchased","job.isCommunityPurchase","job.communitySourceJobId","job.startedAt","job.runnerId","job.completedAt","job.nextRetryAt","job.retryLog","job.automatedRetryCount","job.clientRequestId","job.createdAt","job.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","quotaIdentityKey":"asc","userId":"asc","ipAddress":"asc","videoId":"asc","variant":"asc","purpose":"asc","jobId":"asc","creditsCharged":"asc","creditsRefunded":"asc","refundedAt":"asc","createdAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":"example"},"quotaIdentityKey":{"mode":"EQ","value":"example"},"userId":{"mode":"EQ","value":123},"ipAddress":{"mode":"EQ","value":"example"},"videoId":{"mode":"EQ","value":"example"},"variant":{"mode":"EQ","value":"example"},"purpose":{"mode":"EQ","value":"example"},"jobId":{"mode":"EQ","value":123},"creditsCharged":{"mode":"EQ","value":"12.34"},"creditsRefunded":{"mode":"EQ","value":"12.34"},"refundedAt":{"mode":"EQ","value":"2026-11-02T19:39:39.958Z"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:39.958Z"}}]}},"required":["fields"]},"SystemConfigModel":{"type":"object","properties":{"floStudioOwnGpuExclusive":{"type":"boolean"}},"required":["floStudioOwnGpuExclusive"]},"SystemConfigUpdateBody":{"type":"object","properties":{"maxConcurrentJobs":{"type":"integer","maximum":1000,"minimum":1,"multipleOf":1},"disableChunking":{"type":"boolean"},"chunkDuration":{"type":"integer","maximum":86400,"minimum":10,"multipleOf":1,"nullable":true},"gstInvoiceEmails":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"previewDurationSeconds":{"type":"integer","maximum":86400,"minimum":1,"multipleOf":1},"previewVideoStartMode":{"type":"string"},"previewAudioStartMode":{"type":"string"},"maxUnpurchasedJobs":{"type":"integer","maximum":1000000,"minimum":0,"multipleOf":1},"unpurchasedJobRetentionDays":{"type":"integer","maximum":36500,"minimum":1,"multipleOf":1},"lyricsReanalyzeFreeRuns":{"type":"integer","maximum":100,"minimum":0,"multipleOf":1},"aiStudioWeeklyTokenQuota":{"type":"integer","maximum":2000000000,"minimum":0,"multipleOf":1},"aiStudioWeeklyFreeCostCapUsd":{"type":"number","maximum":999999,"minimum":0},"aiStudioInputCostPerMillionUsd":{"type":"number","maximum":999999,"minimum":0.000001},"aiStudioCachedInputCostPerMillionUsd":{"type":"number","maximum":999999,"minimum":0},"aiStudioOutputCostPerMillionUsd":{"type":"number","maximum":999999,"minimum":0.000001},"aiStudioRequestsPerMinute":{"type":"integer","maximum":1000000,"minimum":1,"multipleOf":1},"aiStudioModel":{"type":"string"},"aiStudioGuardModel":{"type":"string","nullable":true},"demoSongBriefModel":{"type":"string","nullable":true},"cueSheetRomanizeModel":{"type":"string","nullable":true},"aiStudioTemperature":{"type":"number","maximum":2,"minimum":0},"aiStudioMaxTokens":{"type":"integer","maximum":131072,"minimum":4096,"multipleOf":1},"guestFreeDownloadLimit":{"type":"integer","maximum":1000000,"minimum":0,"multipleOf":1},"userFreeDownloadLimit":{"type":"integer","maximum":1000000,"minimum":0,"multipleOf":1},"aiStudioMaxToolRounds":{"type":"integer","maximum":100,"minimum":1,"multipleOf":1},"youtubeQuotaWindowDays":{"type":"integer","maximum":36500,"minimum":1,"multipleOf":1},"exploreUnlockCostRules":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"exploreSharingRewardsEnabled":{"type":"boolean"},"exploreSharingRewardRules":{"nullable":true,"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}]},"explorePreviewDurationSeconds":{"type":"integer","maximum":600,"minimum":5,"multipleOf":1},"demoSongEnabled":{"type":"boolean"},"demoSongGuestLimit":{"type":"integer","maximum":1000000,"minimum":0,"multipleOf":1},"demoSongQuotaWindowDays":{"type":"integer","maximum":36500,"minimum":1,"multipleOf":1},"demoSongMaxConcurrentJobs":{"type":"integer","maximum":1000,"minimum":1,"multipleOf":1},"demoSongMaxDurationSeconds":{"type":"integer","maximum":300,"minimum":10,"multipleOf":1},"demoSongRetentionHours":{"type":"integer","maximum":876000,"minimum":1,"multipleOf":1},"demoSongGenerationCostUsd":{"type":"number","maximum":999999,"minimum":0},"demoSongGpuCostUsdPerMinute":{"nullable":true,"type":"number","minimum":0,"maximum":990000},"demoSongReferenceEnabled":{"type":"boolean"},"demoSongReferenceYoutubeEnabled":{"type":"boolean"},"demoSongReferenceMaxMb":{"type":"integer","maximum":200,"minimum":1,"multipleOf":1},"demoSongReferenceRetentionHours":{"type":"integer","maximum":876000,"minimum":1,"multipleOf":1},"rvcVoiceStudioEnabled":{"type":"boolean"},"rvcTrainingProviderCostUsdPerGpuMinute":{"nullable":true,"type":"number","minimum":0,"maximum":990000},"rvcTrainingCreditValueUsd":{"type":"number","maximum":9,"minimum":0},"rvcTrainingGpuSku":{"nullable":true,"type":"string"},"rvcTrainingMaxSources":{"type":"integer","maximum":100,"minimum":1,"multipleOf":1},"rvcTrainingMaxSourceSeconds":{"type":"integer","maximum":86400,"minimum":1,"multipleOf":1},"rvcTrainingMaxTotalSourceSeconds":{"type":"integer","maximum":604800,"minimum":1,"multipleOf":1},"rvcTrainingMaxUploadBytes":{"type":"integer","maximum":524288000,"minimum":1048576,"multipleOf":1},"rvcTrainingMaxGpuMinutes":{"type":"integer","maximum":10080,"minimum":1,"multipleOf":1},"rvcTrainingReservedCredits":{"type":"number","maximum":9999999999,"minimum":0},"rvcTrainingMaxConcurrentJobs":{"type":"integer","maximum":1000,"minimum":0,"multipleOf":1},"rvcTrainingEpochs":{"type":"integer","maximum":10000,"minimum":1,"multipleOf":1},"rvcTrainingBatchSize":{"type":"integer","maximum":512,"minimum":1,"multipleOf":1},"rvcTrainingVersion":{"type":"string","enum":["v1","v2"]},"rvcTrainingInputRetentionDays":{"type":"integer","maximum":3650,"minimum":1,"multipleOf":1},"adRewardsEnabled":{"type":"boolean"},"chatUnreadEmailEnabled":{"type":"boolean"},"chatUnreadEmailDelayMinutes":{"type":"integer","maximum":10080,"minimum":1,"multipleOf":1},"chatUnreadEmailCooldownMinutes":{"type":"integer","maximum":10080,"minimum":1,"multipleOf":1},"chatUnreadEmailMaxAgeHours":{"type":"integer","maximum":8760,"minimum":1,"multipleOf":1},"chatUnreadEmailMaxMessages":{"type":"integer","maximum":20,"minimum":1,"multipleOf":1},"exploreShareNotificationsEnabled":{"type":"boolean"},"exploreShareEmailsEnabled":{"type":"boolean"},"feedPostNotificationsEnabled":{"type":"boolean"},"feedPostEmailsEnabled":{"type":"boolean"},"floStudioEnabled":{"type":"boolean"},"floStudioGpuEnabled":{"type":"boolean"},"floStudioRunpodEnabled":{"type":"boolean"},"floStudioCreditValueUsd":{"type":"number","maximum":1,"minimum":0.0001},"floStudioMinimaxUsdPerSecond":{"type":"number","maximum":5,"minimum":0},"floStudioMaxProjectsPerUser":{"type":"integer","maximum":1000,"minimum":1,"multipleOf":1},"floStudioMaxQueuedPerUser":{"type":"integer","maximum":500,"minimum":1,"multipleOf":1},"floStudioMaxRunningPerUser":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1},"floStudioMaxStillsAtOnce":{"type":"integer","maximum":8,"minimum":1,"multipleOf":1},"floStudioMaxSecondsPerJob":{"type":"number","maximum":15.1,"minimum":1},"floStudioRunpodMaxSecondsPerJob":{"type":"number","maximum":15.1,"minimum":1},"floStudioMaxQueueWaitSeconds":{"type":"integer","maximum":86400,"minimum":60,"multipleOf":1},"floStudioAbandonedOutputGraceSeconds":{"type":"integer","maximum":86400,"minimum":60,"multipleOf":1},"floStudioAgentTurnsPerHour":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1},"floStudioVoiceMaxSecondsPerDay":{"type":"integer","maximum":604800,"minimum":0,"multipleOf":1},"floStudioMusicMaxSecondsPerDay":{"type":"integer","maximum":604800,"minimum":0,"multipleOf":1},"floStudioMyVoicesMax":{"type":"integer","maximum":50,"minimum":0,"multipleOf":1},"floStudioVoiceSampleMaxSeconds":{"type":"integer","maximum":30,"minimum":5,"multipleOf":1},"floStudioVoiceTermsVersion":{"type":"string","maxLength":32},"floStudioVoiceTermsText":{"type":"string","maxLength":20000},"floStudioAgentCreditsPerTurn":{"type":"number","maximum":1000,"minimum":0},"floStudioAgentModel":{"nullable":true,"type":"string","maxLength":200},"floStudioChatModel":{"nullable":true,"type":"string","maxLength":200},"floStudioAgentMaxSteps":{"type":"integer","maximum":60,"minimum":2,"multipleOf":1},"floStudioAgentThinking":{"type":"boolean"},"floStudioWriterModel":{"nullable":true,"type":"string","maxLength":200},"floStudioDesignerModel":{"nullable":true,"type":"string","maxLength":200},"floStudioVisionModel":{"nullable":true,"type":"string","maxLength":200},"floStudioAllowedWorkflows":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"floStudioSegmentSeconds":{"type":"array","items":{"type":"number"}},"floStudioSegmentSecondsCustom":{"type":"array","items":{"type":"number"}},"floStudioImageWorkflow":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$","maxLength":64},"floStudioImageEditWorkflow":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$","maxLength":64},"floStudioLocationImageWorkflow":{"nullable":true,"type":"string","maxLength":64},"floStudioLocationImageEditWorkflow":{"nullable":true,"type":"string","maxLength":64},"floStudioLocationViews":{"type":"integer","maximum":3,"minimum":0,"multipleOf":1},"floStudioAudioChecks":{"type":"boolean"},"floStudioRetakeBadAudio":{"type":"boolean"},"floStudioSpeakerChecks":{"type":"boolean"},"floStudioRetakeWrongSpeaker":{"type":"boolean"},"floStudioAiEffects":{"type":"boolean"},"floStudioObjectTracking":{"type":"boolean"},"floStudioObjectSelectDailyLimit":{"type":"integer","maximum":100000,"minimum":0,"multipleOf":1},"floStudioObjectTrackDailyLimit":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1},"floStudioMaxUploadMb":{"type":"integer","maximum":2048,"minimum":1,"multipleOf":1},"floStudioMaxConcurrentJobs":{"type":"integer","maximum":64,"minimum":1,"multipleOf":1},"floStudioMaxPods":{"type":"integer","maximum":32,"minimum":0,"multipleOf":1},"floStudioMinWarmPods":{"type":"integer","maximum":8,"minimum":0,"multipleOf":1},"floStudioPodQueueDepth":{"type":"integer","maximum":4,"minimum":1,"multipleOf":1},"floStudioIdleTimeoutMode":{"type":"string","enum":["LEARNED","FIXED"]},"floStudioIdleTimeoutSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"floStudioIdleTimeoutMinSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"floStudioIdleTimeoutMaxSeconds":{"type":"integer","maximum":7200,"minimum":0,"multipleOf":1},"floStudioExtraPodIdleSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"floStudioColdStartPenaltyWeight":{"type":"number","maximum":10,"minimum":0},"floStudioFollowUpGraceSeconds":{"type":"integer","maximum":1800,"minimum":0,"multipleOf":1},"floStudioTargetMaxQueueWaitSeconds":{"type":"integer","maximum":7200,"minimum":10,"multipleOf":1},"floStudioHardMaxQueueWaitSeconds":{"type":"integer","maximum":14400,"minimum":30,"multipleOf":1},"floStudioOverheadBudgetRatio":{"type":"number","maximum":10,"minimum":0.01},"floStudioScaleUpCooldownSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"floStudioBootTimeoutSeconds":{"type":"integer","maximum":7200,"minimum":60,"multipleOf":1},"floStudioBootAbandonSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"floStudioCancelRenderingMaxPercent":{"type":"integer","maximum":100,"minimum":0,"multipleOf":1},"floStudioWarmupOnBoot":{"type":"boolean"},"floStudioScalingMode":{"type":"string","enum":["USERS","QUEUE_WAIT"]},"floStudioRunpodProfileOrder":{"type":"string","enum":["BALANCED","CHEAPEST","FASTEST","PRIORITY"]},"floStudioUsersPerPod":{"type":"integer","maximum":16,"minimum":1,"multipleOf":1},"floStudioIdleAction":{"type":"string","enum":["STOP","TERMINATE"]},"floStudioStoppedPodRetentionHours":{"type":"integer","maximum":168,"minimum":1,"multipleOf":1},"floStudioMaxPodLifetimeHours":{"type":"integer","maximum":168,"minimum":1,"multipleOf":1},"floStudioStillAgingSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"floStudioMaxSteps":{"type":"integer","maximum":100,"minimum":1,"multipleOf":1},"floStudioMaxPixelFrames":{"type":"integer","maximum":1000000000,"minimum":1000000,"multipleOf":1},"floStudioRunpodMaxPixelFrames":{"type":"integer","maximum":1000000000,"minimum":1000000,"multipleOf":1},"floStudioPrewarmOnEditorOpen":{"type":"boolean"},"floStudioSchedulerTickMs":{"type":"integer","maximum":60000,"minimum":500,"multipleOf":1},"floStudioMaxHourlySpendUsd":{"type":"number","maximum":1000,"minimum":0},"floStudioMaxDailySpendUsd":{"type":"number","maximum":20000,"minimum":0},"floStudioStaticWorkers":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"floStudioStaticRespectExternalLoad":{"type":"boolean"},"floStudioOwnGpuExclusive":{"type":"boolean"},"floStudioServerlessEnabled":{"type":"boolean"},"floStudioServerlessEndpoints":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"floStudioCloudOrder":{"type":"string","enum":["SERVERLESS_FIRST","PODS_FIRST"]},"floStudioServerlessQueueTimeoutSeconds":{"type":"integer","maximum":3600,"minimum":30,"multipleOf":1},"floStudioServerlessCooldownSeconds":{"type":"integer","maximum":86400,"minimum":0,"multipleOf":1},"floStudioStaticMaxQueueWaitBeforeBurstSeconds":{"type":"integer","maximum":7200,"minimum":0,"multipleOf":1},"floStudioRenderTiers":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"floStudioHdLocalEtaTolerance":{"type":"number","maximum":5,"minimum":0},"floStudioRunpodGpuProfiles":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"floStudioRunpodCloudType":{"type":"string","enum":["SECURE","COMMUNITY"]},"floStudioRunpodInterruptible":{"type":"boolean"},"floStudioRunpodDataCenterId":{"nullable":true,"type":"string","maxLength":200},"floStudioRunpodNetworkVolumeId":{"nullable":true,"type":"string","maxLength":200},"floStudioRunpodGlobalVolumeId":{"nullable":true,"type":"string","maxLength":200},"floStudioRunpodNetworkVolumeGb":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1},"floStudioRunpodVolumeMountPath":{"type":"string","maxLength":200,"pattern":"^\\/"},"floStudioRunpodImageName":{"nullable":true,"type":"string","maxLength":200},"floStudioRunpodTemplateId":{"nullable":true,"type":"string","maxLength":200},"floStudioRunpodContainerDiskGb":{"type":"integer","maximum":500,"minimum":10,"multipleOf":1},"floStudioBootSecondsPrior":{"type":"integer","maximum":3600,"minimum":10,"multipleOf":1},"floStudioRenderSpeedPrior":{"type":"number","maximum":1000,"minimum":0.1},"youtubeLibraryEnabled":{"type":"boolean"},"youtubeLibraryChannels":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"youtubeLibrarySyncEnabled":{"type":"boolean"},"youtubeLibrarySyncIntervalMinutes":{"type":"integer","maximum":10080,"minimum":5,"multipleOf":1},"youtubeLibraryListingSource":{"type":"string","enum":["AUTO","DATA_API","CHANNEL_PAGE","RSS"]},"youtubeLibraryAutoProcess":{"type":"boolean"},"youtubeLibraryProcessingMode":{"type":"string","enum":["MIRROR","KARAOKE_PIPELINE"]},"youtubeLibraryMaxInFlight":{"type":"integer","maximum":20,"minimum":1,"multipleOf":1},"youtubeLibraryMaxAttempts":{"type":"integer","maximum":10,"minimum":1,"multipleOf":1},"youtubeLibraryMinDurationSeconds":{"type":"integer","maximum":3600,"minimum":0,"multipleOf":1},"youtubeLibraryMaxDurationSeconds":{"type":"integer","maximum":14400,"minimum":0,"multipleOf":1},"youtubeLibraryTitleInclude":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"youtubeLibraryTitleExclude":{"type":"array","items":{"oneOf":[{"type":"integer","multipleOf":1},{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"array","items":{}},{"type":"object"}],"nullable":true}},"youtubeLibraryOwnerUserId":{"nullable":true,"type":"number","minimum":0,"multipleOf":1},"youtubeLibraryGuestBrowsing":{"type":"boolean"},"youtubeLibrarySingEnabled":{"type":"boolean"},"youtubeLibraryDownloadEnabled":{"type":"boolean"},"youtubeLibraryAccessMode":{"type":"string","enum":["FREE","UNLOCK"]},"youtubeLibraryShowInExplore":{"type":"boolean"},"youtubeLibraryShowYoutubeLink":{"type":"boolean"},"youtubeLibraryAutoHideRemoved":{"type":"boolean"},"youtubePublishEnabled":{"type":"boolean"},"youtubePublishEmail":{"type":"string","nullable":true},"youtubePublishPassword":{"type":"string","nullable":true},"youtubePublishDefaultPrivacy":{"type":"string","enum":["PUBLIC","UNLISTED","PRIVATE"]},"youtubePublishMadeForKids":{"type":"boolean"},"youtubePublishTitleTemplate":{"type":"string"},"youtubePublishDescriptionTemplate":{"type":"string"},"youtubePublishTags":{"type":"array","items":{"type":"string"}},"youtubePublishCategory":{"type":"string","nullable":true},"youtubePublishPlaylistId":{"type":"string","nullable":true},"youtubePublishAddToLibrary":{"type":"boolean"},"faceSwapEnabled":{"type":"boolean"},"faceSwapModel":{"type":"string","pattern":"^[a-z0-9_]+$","maxLength":64},"faceSwapEnhance":{"type":"boolean"},"faceSwapRefineWorkflow":{"type":"string","pattern":"^[A-Za-z0-9._-]+$","maxLength":64},"faceSwapMaxVideoSeconds":{"type":"integer","maximum":600,"minimum":1,"multipleOf":1},"faceSwapDailyLimit":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1},"faceSwapMaxUploadMb":{"type":"integer","maximum":1024,"minimum":1,"multipleOf":1},"faceSwapMaxRunningPerMember":{"type":"integer","maximum":20,"minimum":1,"multipleOf":1},"faceSwapMaxRunningTotal":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1},"faceSwapMaxDetectsRunning":{"type":"integer","maximum":20,"minimum":1,"multipleOf":1},"faceSwapMaxOpenDetectsPerMember":{"type":"integer","maximum":20,"minimum":1,"multipleOf":1},"faceSwapMaxOpenExtractsPerMember":{"type":"integer","maximum":10,"minimum":1,"multipleOf":1},"faceSwapMaxPeople":{"type":"integer","maximum":8,"minimum":1,"multipleOf":1},"faceSwapMaxPhotosPerFace":{"type":"integer","maximum":10,"minimum":1,"multipleOf":1},"faceSwapMaxSourcesPerSwap":{"type":"integer","maximum":40,"minimum":1,"multipleOf":1},"faceSwapDetectCacheDays":{"type":"integer","maximum":90,"minimum":0,"multipleOf":1},"faceSwapDetectSamplesPerSecond":{"type":"number","maximum":10,"minimum":0.25},"faceSwapDetectMaxSamples":{"type":"integer","maximum":2000,"minimum":10,"multipleOf":1},"faceSwapUploadTtlHours":{"type":"integer","maximum":720,"minimum":1,"multipleOf":1},"faceSwapQueueTimeoutMinutes":{"type":"integer","maximum":1440,"minimum":5,"multipleOf":1},"faceSwapQueueMaxWaitHours":{"type":"integer","maximum":72,"minimum":1,"multipleOf":1},"faceSwapRunTimeoutMinutes":{"type":"integer","maximum":1440,"minimum":10,"multipleOf":1},"faceSwapTermsVersion":{"type":"string","maxLength":32},"faceSwapTermsText":{"type":"string","maxLength":20000},"importUrlEnabled":{"type":"boolean"},"importUrlSegmentSeconds":{"type":"array","items":{"type":"number"}},"importUrlMaxMinutes":{"type":"integer","maximum":600,"minimum":1,"multipleOf":1},"importUrlDailyLimit":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1},"imageStudioEnabled":{"type":"boolean"},"imageStudioImageWorkflow":{"type":"string","pattern":"^[A-Za-z0-9._-]+$","maxLength":64},"imageStudioEditWorkflow":{"type":"string","pattern":"^[A-Za-z0-9._-]+$","maxLength":64},"imageStudioUpscaleWorkflow":{"type":"string","pattern":"^[A-Za-z0-9._-]*$","maxLength":64},"imageStudioBackgroundWorkflow":{"type":"string","pattern":"^[A-Za-z0-9._-]*$","maxLength":64},"imageStudioMaxImagesPerRequest":{"type":"integer","maximum":4,"minimum":1,"multipleOf":1},"imageStudioUploadMaxMb":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1},"imageStudioAssetMaxMb":{"type":"integer","maximum":128,"minimum":1,"multipleOf":1},"imageStudioDesignMaxAssets":{"type":"integer","maximum":5000,"minimum":1,"multipleOf":1},"contentChecksPictures":{"type":"boolean"},"mcpEnabled":{"type":"boolean"}}},"UserDevicesResponse":{"type":"object","properties":{"userId":{"type":"number"},"devices":{"type":"array","items":{"type":"array","items":{}}},"unassignedTokens":{"type":"array","items":{"type":"array","items":{}}}},"required":["userId","devices","unassignedTokens"]},"ApiKeyModelCreate":{"type":"object","properties":{"description":{"type":"string","minLength":1,"nullable":true}},"required":["description"]},"CreditBalanceResponse":{"type":"object","properties":{"balance":{"type":"string","minLength":1},"currencyCode":{"type":"object"},"updatedAt":{"type":"string","minLength":1}},"required":["balance","updatedAt"]},"CreditTransactionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CreditTransactionResponse"}},"total":{"type":"number"}},"required":["items","total"]},"CreateCreditOrderPayload":{"type":"object","properties":{"amount":{"type":"number","minimum":0.01},"currencyCode":{"type":"string"},"notes":{"type":"object"}},"required":["amount"]},"PurchasePlanByIdPayload":{"type":"object","properties":{"planId":{"type":"number","minimum":1}},"required":["planId"]},"UserProfileResponse":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string","minLength":1},"email":{"type":"string","minLength":1},"avatar":{"type":"object"},"handle":{"type":"object"},"bio":{"type":"object"},"privacySetting":{"type":"string"}},"required":["id","name","email"]},"UpdateUserProfilePayload":{"type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1},"bio":{"nullable":true,"type":"string","maxLength":500},"privacySetting":{"type":"string","enum":["PUBLIC","PRIVATE"]},"countryId":{"nullable":true,"type":"number","minimum":1}}},"UpdateHandleResponse":{"type":"object","properties":{"handle":{"type":"string","minLength":1}},"required":["handle"]},"UpdateHandlePayload":{"type":"object","properties":{"handle":{"type":"string","maxLength":30,"minLength":1}},"required":["handle"]},"UploadAvatarResponse":{"type":"object","properties":{"storageKey":{"type":"string","minLength":1},"storageService":{"type":"string","minLength":1}},"required":["storageKey","storageService"]},"AvatarDownloadLinkResponse":{"type":"object","properties":{"downloadUrl":{"type":"string","minLength":1},"expiresAt":{"type":"string","minLength":1},"expiresInSeconds":{"type":"number"},"storageKey":{"type":"string","minLength":1},"storageService":{"type":"string","minLength":1}},"required":["downloadUrl","expiresAt","expiresInSeconds","storageKey","storageService"]},"UserModelUpdatePassword":{"type":"object","properties":{"email":{"type":"string","format":"email","minLength":1},"password":{"type":"string","minLength":1},"serviceDownloaderUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"rvcVoiceModels":{"type":"array","items":{"$ref":"#/components/schemas/RvcVoiceModelModel"}},"rvcTrainingRuns":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingRunModel"}},"rvcTrainingSources":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingSourceModel"}},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"creditReservations":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditReservationModel"}},"googleSub":{"type":"string","minLength":1,"nullable":true},"bannedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"bannedById":{"type":"number","multipleOf":1,"nullable":true},"banReason":{"type":"string","minLength":1,"nullable":true},"faceSwapTermsAcceptedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"faceSwapTermsVersion":{"type":"string","minLength":1,"nullable":true},"voiceTermsAcceptedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"voiceTermsVersion":{"type":"string","minLength":1,"nullable":true},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"feedPosts":{"type":"array","items":{"$ref":"#/components/schemas/FeedPostModel"}},"postReactions":{"type":"array","items":{"$ref":"#/components/schemas/PostReactionModel"}},"postComments":{"type":"array","items":{"$ref":"#/components/schemas/PostCommentModel"}},"notificationsReceived":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"notificationActions":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"playlists":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistModel"}},"feedDeletionClaimedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isDeleted":{"type":"boolean"},"deletedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"deletedEmail":{"type":"string","minLength":1,"nullable":true},"sentFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"receivedFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"blocksMade":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"blocksReceived":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"chatRoomsCreated":{"type":"array","items":{"$ref":"#/components/schemas/ChatRoomModel"}},"chatParticipants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"chatMessages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"chatMessageReactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}},"chatReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"chatReportsAbout":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"feedReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}},"adRewardSessions":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardSessionModel"}},"adRewardDailyUsages":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardDailyUsageModel"}},"adRewardProgress":{"oneOf":[{"$ref":"#/components/schemas/AdRewardProgressModel"},{"nullable":true}]}},"required":["email","password","serviceDownloaderUsages","rvcVoiceModels","rvcTrainingRuns","rvcTrainingSources","cueSheets","creditReservations","googleSub","bannedAt","bannedById","banReason","faceSwapTermsAcceptedAt","faceSwapTermsVersion","voiceTermsAcceptedAt","voiceTermsVersion","performances","feedPosts","postReactions","postComments","notificationsReceived","communityBroadcasts","notificationActions","playlists","feedDeletionClaimedAt","isDeleted","deletedAt","deletedEmail","sentFollowRequests","receivedFollowRequests","blocksMade","blocksReceived","chatRoomsCreated","chatParticipants","chatMessages","chatMessageReactions","chatReportsMade","chatReportsAbout","feedReportsMade","adRewardSessions","adRewardDailyUsages","adRewardProgress"]},"UpdatePasswordRequest":{"type":"object","properties":{"email":{"type":"string","format":"email","minLength":1},"password":{"type":"string","minLength":1}},"required":["email","password"]},"DeleteAccountResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string","minLength":1}},"required":["success","message"]},"DeleteAccountRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":120,"minLength":1}},"required":["name"]},"ApiKeyModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"AdminGrantCreditResponse":{"type":"object","properties":{"userId":{"type":"number"},"balance":{"type":"string","minLength":1},"updatedAt":{"type":"string","minLength":1},"transaction":{"$ref":"#/components/schemas/CreditTransactionResponse"}},"required":["userId","balance","updatedAt","transaction"]},"AdminGrantCreditPayload":{"type":"object","properties":{"amount":{"type":"number","minimum":0.01},"reason":{"type":"string","maxLength":512,"minLength":1}},"required":["amount","reason"]},"UserModelAuthorizations":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"createdAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleModel"}},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionModel"}},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceModel"}},"creditAccount":{"oneOf":[{"$ref":"#/components/schemas/UserCreditAccountModel"},{"nullable":true}]},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobModel"}},"paymentOrders":{"type":"array","items":{"$ref":"#/components/schemas/UserPaymentOrderModel"}},"promotionRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/PromotionRedemptionModel"}},"bannerImpressions":{"type":"array","items":{"$ref":"#/components/schemas/BannerImpressionModel"}},"newsletterSubscription":{"oneOf":[{"$ref":"#/components/schemas/NewsletterSubscriberModel"},{"nullable":true}]},"pushTokens":{"type":"array","items":{"$ref":"#/components/schemas/PushTokenModel"}},"devices":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceModel"}},"aiStudioSessions":{"type":"array","items":{"$ref":"#/components/schemas/AiStudioSessionModel"}},"aiStudioTokenUsages":{"type":"array","items":{"$ref":"#/components/schemas/AiStudioTokenUsageModel"}},"aiStudioAttachments":{"type":"array","items":{"$ref":"#/components/schemas/AiStudioAttachmentModel"}},"googleSub":{"type":"string","minLength":1,"nullable":true},"lastActiveAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"sentFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"receivedFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"blocksMade":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"blocksReceived":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"chatRoomsCreated":{"type":"array","items":{"$ref":"#/components/schemas/ChatRoomModel"}},"chatParticipants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"chatMessages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"chatMessageReactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}},"chatReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"chatReportsAbout":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"feedReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}}},"required":["createdAt","roles","permissions","invoices","creditAccount","creditTransactions","jobs","paymentOrders","promotionRedemptions","bannerImpressions","newsletterSubscription","pushTokens","devices","aiStudioSessions","aiStudioTokenUsages","aiStudioAttachments","googleSub","lastActiveAt","sentFollowRequests","receivedFollowRequests","blocksMade","blocksReceived","chatRoomsCreated","chatParticipants","chatMessages","chatMessageReactions","chatReportsMade","chatReportsAbout","feedReportsMade"]},"PushTokenModel":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserModel"},"userDevice":{"oneOf":[{"$ref":"#/components/schemas/UserDeviceModel"},{"nullable":true}]}},"required":["user","userDevice"]},"UserDeviceModel":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserModel"},"pushTokens":{"type":"array","items":{"$ref":"#/components/schemas/PushTokenModel"}}},"required":["user","pushTokens"]},"AiStudioSessionModel":{"type":"object"},"AiStudioTokenUsageModel":{"type":"object"},"AiStudioAttachmentModel":{"type":"object"},"AuthorizationsPayload":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"number"}},"permissions":{"type":"array","items":{"type":"number"}}}},"UserModelCreateResponse":{"type":"object","properties":{"googleSub":{"type":"string","minLength":1,"nullable":true},"sentFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"receivedFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"blocksMade":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"blocksReceived":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"chatRoomsCreated":{"type":"array","items":{"$ref":"#/components/schemas/ChatRoomModel"}},"chatParticipants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"chatMessages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"chatMessageReactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}},"chatReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"chatReportsAbout":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"feedReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}}},"required":["googleSub","sentFollowRequests","receivedFollowRequests","blocksMade","blocksReceived","chatRoomsCreated","chatParticipants","chatMessages","chatMessageReactions","chatReportsMade","chatReportsAbout","feedReportsMade"]},"UserModelDelete":{"type":"object","properties":{"id":{"type":"number","multipleOf":1}},"required":["id"]},"UserModelRead":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"email":{"type":"string","format":"email","minLength":1},"name":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"country":{"oneOf":[{"$ref":"#/components/schemas/CountryModel"},{"nullable":true}]},"countryId":{"type":"number","multipleOf":1,"nullable":true},"roles":{"type":"array","items":{"$ref":"#/components/schemas/RoleModel"}},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionModel"}},"refreshTokens":{"type":"array","items":{"$ref":"#/components/schemas/RefreshTokenModel"}},"invoices":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceModel"}},"creditAccount":{"oneOf":[{"$ref":"#/components/schemas/UserCreditAccountModel"},{"nullable":true}]},"creditTransactions":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditTransactionModel"}},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobModel"}},"paymentOrders":{"type":"array","items":{"$ref":"#/components/schemas/UserPaymentOrderModel"}},"promotionRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/PromotionRedemptionModel"}},"bannerImpressions":{"type":"array","items":{"$ref":"#/components/schemas/BannerImpressionModel"}},"newsletterSubscription":{"oneOf":[{"$ref":"#/components/schemas/NewsletterSubscriberModel"},{"nullable":true}]},"pushTokens":{"type":"array","items":{"$ref":"#/components/schemas/PushTokenModel"}},"devices":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceModel"}},"aiStudioSessions":{"type":"array","items":{"$ref":"#/components/schemas/AiStudioSessionModel"}},"aiStudioTokenUsages":{"type":"array","items":{"$ref":"#/components/schemas/AiStudioTokenUsageModel"}},"aiStudioAttachments":{"type":"array","items":{"$ref":"#/components/schemas/AiStudioAttachmentModel"}},"avatar":{"type":"object","nullable":true},"isVerified":{"type":"boolean"},"verificationToken":{"type":"string","minLength":1,"nullable":true},"lastActiveAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"faceSwapBypassFilters":{"type":"boolean"},"bio":{"type":"string","minLength":1,"nullable":true},"privacySetting":{"type":"string","enum":["PUBLIC","PRIVATE"],"minLength":1},"handle":{"type":"string","minLength":1,"nullable":true},"followers":{"type":"array","items":{"$ref":"#/components/schemas/FollowModel"}},"following":{"type":"array","items":{"$ref":"#/components/schemas/FollowModel"}}},"required":["id","email","name","createdAt","country","countryId","roles","permissions","refreshTokens","invoices","creditAccount","creditTransactions","jobs","paymentOrders","promotionRedemptions","bannerImpressions","newsletterSubscription","pushTokens","devices","aiStudioSessions","aiStudioTokenUsages","aiStudioAttachments","avatar","isVerified","verificationToken","lastActiveAt","faceSwapBypassFilters","bio","privacySetting","handle","followers","following"]},"RefreshTokenModel":{"type":"object","properties":{"tokenHash":{"type":"string","minLength":1,"nullable":true},"tokenId":{"type":"string","minLength":1,"nullable":true},"familyId":{"type":"string","minLength":1},"createdAt":{"type":"string","minLength":1,"format":"date-time"},"lastUsedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"revokedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"replacedByTokenId":{"type":"number","multipleOf":1,"nullable":true},"user":{"$ref":"#/components/schemas/UserModel"},"userId":{"type":"number","multipleOf":1}},"required":["tokenHash","tokenId","familyId","createdAt","lastUsedAt","revokedAt","replacedByTokenId","user","userId"]},"FollowModel":{"type":"object"},"UserControllerUpdateModelUpdate":{"type":"object","properties":{"id":{"type":"number","multipleOf":1},"email":{"type":"string","format":"email","minLength":1},"name":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"countryId":{"type":"number","multipleOf":1,"nullable":true},"isVerified":{"type":"boolean"},"verificationToken":{"type":"string","minLength":1,"nullable":true},"faceSwapBypassFilters":{"type":"boolean"},"bio":{"type":"string","minLength":1,"nullable":true},"privacySetting":{"type":"string","enum":["PUBLIC","PRIVATE"],"minLength":1},"handle":{"type":"string","minLength":1,"nullable":true},"country":{"type":"number"}}},"UserControllerResponseModel":{"type":"object","properties":{"serviceDownloaderUsages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDownloaderUsageModel"}},"rvcVoiceModels":{"type":"array","items":{"$ref":"#/components/schemas/RvcVoiceModelModel"}},"rvcTrainingRuns":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingRunModel"}},"rvcTrainingSources":{"type":"array","items":{"$ref":"#/components/schemas/RvcTrainingSourceModel"}},"cueSheets":{"type":"array","items":{"$ref":"#/components/schemas/CueSheetModel"}},"creditReservations":{"type":"array","items":{"$ref":"#/components/schemas/UserCreditReservationModel"}},"googleSub":{"type":"string","minLength":1,"nullable":true},"bannedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"bannedById":{"type":"number","multipleOf":1,"nullable":true},"banReason":{"type":"string","minLength":1,"nullable":true},"faceSwapTermsAcceptedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"faceSwapTermsVersion":{"type":"string","minLength":1,"nullable":true},"voiceTermsAcceptedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"voiceTermsVersion":{"type":"string","minLength":1,"nullable":true},"performances":{"type":"array","items":{"$ref":"#/components/schemas/PerformanceModel"}},"feedPosts":{"type":"array","items":{"$ref":"#/components/schemas/FeedPostModel"}},"postReactions":{"type":"array","items":{"$ref":"#/components/schemas/PostReactionModel"}},"postComments":{"type":"array","items":{"$ref":"#/components/schemas/PostCommentModel"}},"notificationsReceived":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"communityBroadcasts":{"type":"array","items":{"$ref":"#/components/schemas/CommunityBroadcastModel"}},"notificationActions":{"type":"array","items":{"$ref":"#/components/schemas/NotificationModel"}},"playlists":{"type":"array","items":{"$ref":"#/components/schemas/PlaylistModel"}},"feedDeletionClaimedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"isDeleted":{"type":"boolean"},"deletedAt":{"type":"string","minLength":1,"format":"date-time","nullable":true},"deletedEmail":{"type":"string","minLength":1,"nullable":true},"sentFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"receivedFollowRequests":{"type":"array","items":{"$ref":"#/components/schemas/FollowRequestModel"}},"blocksMade":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"blocksReceived":{"type":"array","items":{"$ref":"#/components/schemas/UserBlockModel"}},"chatRoomsCreated":{"type":"array","items":{"$ref":"#/components/schemas/ChatRoomModel"}},"chatParticipants":{"type":"array","items":{"$ref":"#/components/schemas/ChatParticipantModel"}},"chatMessages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageModel"}},"chatMessageReactions":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessageReactionModel"}},"chatReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"chatReportsAbout":{"type":"array","items":{"$ref":"#/components/schemas/ChatReportModel"}},"feedReportsMade":{"type":"array","items":{"$ref":"#/components/schemas/FeedReportModel"}},"adRewardSessions":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardSessionModel"}},"adRewardDailyUsages":{"type":"array","items":{"$ref":"#/components/schemas/AdRewardDailyUsageModel"}},"adRewardProgress":{"oneOf":[{"$ref":"#/components/schemas/AdRewardProgressModel"},{"nullable":true}]},"accountBalance":{"type":"number"},"avatarUrl":{"type":"string"}},"required":["serviceDownloaderUsages","rvcVoiceModels","rvcTrainingRuns","rvcTrainingSources","cueSheets","creditReservations","googleSub","bannedAt","bannedById","banReason","faceSwapTermsAcceptedAt","faceSwapTermsVersion","voiceTermsAcceptedAt","voiceTermsVersion","performances","feedPosts","postReactions","postComments","notificationsReceived","communityBroadcasts","notificationActions","playlists","feedDeletionClaimedAt","isDeleted","deletedAt","deletedEmail","sentFollowRequests","receivedFollowRequests","blocksMade","blocksReceived","chatRoomsCreated","chatParticipants","chatMessages","chatMessageReactions","chatReportsMade","chatReportsAbout","feedReportsMade","adRewardSessions","adRewardDailyUsages","adRewardProgress"]},"UserSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","email","name","createdAt","password","countryId","avatar","isVerified","verificationToken","googleSub","lastActiveAt","bannedAt","bannedById","banReason","faceSwapTermsAcceptedAt","faceSwapTermsVersion","voiceTermsAcceptedAt","voiceTermsVersion","faceSwapBypassFilters","feedDeletionClaimedAt","isDeleted","deletedAt","deletedEmail","bio","privacySetting","handle","apiKeys.id","apiKeys.userId","apiKeys.apiKey","apiKeys.description","apiKeys.apiSecret","country.id","country.name","country.displayName","country.iso2","country.iso3","country.numCode","country.metadata","country.currencyId","roles.id","roles.name","roles.description","permissions.id","permissions.permissionUid","permissions.name","permissions.resource","permissions.method","permissions.description","permissions.permissionType","refreshTokens.id","refreshTokens.token","refreshTokens.tokenHash","refreshTokens.tokenId","refreshTokens.familyId","refreshTokens.expiration","refreshTokens.createdAt","refreshTokens.lastUsedAt","refreshTokens.revokedAt","refreshTokens.replacedByTokenId","refreshTokens.userId","invoices.id","invoices.invoiceStartDate","invoices.invoiceCreatedAt","invoices.userId","invoices.totalAmount","invoices.exchangeRate","invoices.currencyId","invoices.isPaid","invoices.transactionId","invoices.invoiceNumber","invoices.paymentID","creditAccount.id","creditAccount.userId","creditAccount.balance","creditAccount.reservedBalance","creditAccount.currencyId","creditAccount.createdAt","creditAccount.updatedAt","creditTransactions.id","creditTransactions.accountId","creditTransactions.userId","creditTransactions.direction","creditTransactions.amount","creditTransactions.balanceAfter","creditTransactions.currencyId","creditTransactions.description","creditTransactions.referenceType","creditTransactions.referenceId","creditTransactions.metadata","creditTransactions.jobId","creditTransactions.createdAt","creditTransactions.updatedAt","jobs.id","jobs.userId","jobs.rvcVoiceModelId","jobs.type","jobs.status","jobs.estimatedDebitAmount","jobs.debitedAmount","jobs.currencyId","jobs.payload","jobs.result","jobs.error","jobs.metadata","jobs.videoTitle","jobs.searchTitle","jobs.videoUrl","jobs.thumbnailUrl","jobs.isPublic","jobs.isPurchased","jobs.isCommunityPurchase","jobs.communitySourceJobId","jobs.startedAt","jobs.runnerId","jobs.completedAt","jobs.nextRetryAt","jobs.retryLog","jobs.automatedRetryCount","jobs.clientRequestId","jobs.createdAt","jobs.updatedAt","paymentOrders.id","paymentOrders.userId","paymentOrders.provider","paymentOrders.serviceName","paymentOrders.orderId","paymentOrders.amount","paymentOrders.currencyId","paymentOrders.status","paymentOrders.notes","paymentOrders.paymentId","paymentOrders.signature","paymentOrders.metadata","paymentOrders.createdAt","paymentOrders.updatedAt","paymentOrders.paidAt","promotionRedemptions.id","promotionRedemptions.promotionId","promotionRedemptions.userId","promotionRedemptions.status","promotionRedemptions.error","promotionRedemptions.createdAt","bannerImpressions.id","bannerImpressions.bannerId","bannerImpressions.visitorKey","bannerImpressions.userId","bannerImpressions.count","bannerImpressions.lastShownAt","bannerImpressions.dismissedAt","bannerImpressions.createdAt","bannerImpressions.updatedAt","serviceDownloaderUsages.id","serviceDownloaderUsages.quotaIdentityKey","serviceDownloaderUsages.userId","serviceDownloaderUsages.ipAddress","serviceDownloaderUsages.videoId","serviceDownloaderUsages.variant","serviceDownloaderUsages.purpose","serviceDownloaderUsages.jobId","serviceDownloaderUsages.creditsCharged","serviceDownloaderUsages.creditsRefunded","serviceDownloaderUsages.refundedAt","serviceDownloaderUsages.createdAt","newsletterSubscription.id","newsletterSubscription.email","newsletterSubscription.userId","newsletterSubscription.unsubscribed","newsletterSubscription.unsubscribeToken","newsletterSubscription.unsubscribedAt","newsletterSubscription.createdAt","newsletterSubscription.updatedAt","pushTokens.id","pushTokens.userId","pushTokens.type","pushTokens.token","pushTokens.deviceId","pushTokens.userDeviceId","pushTokens.createdAt","pushTokens.updatedAt","devices.id","devices.userId","devices.deviceId","devices.platform","devices.appVersion","devices.appBuild","devices.osVersion","devices.deviceModel","devices.manufacturer","devices.browser","devices.browserVersion","devices.locale","devices.timezone","devices.countryIso2","devices.firstSeenAt","devices.lastSeenAt","devices.createdAt","devices.updatedAt","aiStudioSessions.id","aiStudioSessions.userId","aiStudioSessions.title","aiStudioSessions.data","aiStudioSessions.version","aiStudioSessions.product","aiStudioSessions.referenceAudioPath","aiStudioSessions.stagedMediaPath","aiStudioSessions.stagedMediaName","aiStudioSessions.stagedBackgroundPath","aiStudioSessions.stagedBackgroundName","aiStudioSessions.isDeleted","aiStudioSessions.deletedAt","aiStudioSessions.createdAt","aiStudioSessions.updatedAt","aiStudioTokenUsages.id","aiStudioTokenUsages.userId","aiStudioTokenUsages.requestId","aiStudioTokenUsages.model","aiStudioTokenUsages.callType","aiStudioTokenUsages.tokensUsed","aiStudioTokenUsages.promptTokens","aiStudioTokenUsages.completionTokens","aiStudioTokenUsages.guardTokensUsed","aiStudioTokenUsages.freeTokensApplied","aiStudioTokenUsages.billableTokens","aiStudioTokenUsages.creditsCharged","aiStudioTokenUsages.providerCostUsd","aiStudioTokenUsages.freeProviderCostUsd","aiStudioTokenUsages.billableProviderCostUsd","aiStudioTokenUsages.revenueUsd","aiStudioTokenUsages.profitUsd","aiStudioTokenUsages.periodStart","aiStudioTokenUsages.createdAt","aiStudioTokenUsages.updatedAt","aiStudioTokenUsages.archivedAt","aiStudioAttachments.id","aiStudioAttachments.userId","aiStudioAttachments.sessionId","aiStudioAttachments.kind","aiStudioAttachments.storageService","aiStudioAttachments.storageKey","aiStudioAttachments.fileName","aiStudioAttachments.mimeType","aiStudioAttachments.size","aiStudioAttachments.checksumSha256","aiStudioAttachments.createdAt","aiStudioAttachments.updatedAt","aiStudioAttachments.detachedAt","aiStudioChatRequests.requestId","aiStudioChatRequests.userId","aiStudioChatRequests.sessionId","aiStudioChatRequests.status","aiStudioChatRequests.estimatedTokens","aiStudioChatRequests.reservedCredits","aiStudioChatRequests.attempts","aiStudioChatRequests.mainTokens","aiStudioChatRequests.guardTokens","aiStudioChatRequests.response","aiStudioChatRequests.error","aiStudioChatRequests.createdAt","aiStudioChatRequests.updatedAt","rvcVoiceModels.id","rvcVoiceModels.userId","rvcVoiceModels.externalSingerId","rvcVoiceModels.name","rvcVoiceModels.description","rvcVoiceModels.status","rvcVoiceModels.version","rvcVoiceModels.parentModelId","rvcVoiceModels.rvcVersion","rvcVoiceModels.sourceCount","rvcVoiceModels.sourceDurationSeconds","rvcVoiceModels.modelSha256","rvcVoiceModels.providerMetadata","rvcVoiceModels.trainedAt","rvcVoiceModels.lastVerifiedAt","rvcVoiceModels.archivedAt","rvcVoiceModels.createdAt","rvcVoiceModels.updatedAt","rvcTrainingRuns.id","rvcTrainingRuns.userId","rvcTrainingRuns.modelId","rvcTrainingRuns.jobId","rvcTrainingRuns.clientRequestId","rvcTrainingRuns.status","rvcTrainingRuns.billingStatus","rvcTrainingRuns.providerRequestId","rvcTrainingRuns.trainEpochs","rvcTrainingRuns.trainBatchSize","rvcTrainingRuns.rvcVersion","rvcTrainingRuns.creditsPerGpuMinute","rvcTrainingRuns.maxAuthorizedCredits","rvcTrainingRuns.maxGpuSeconds","rvcTrainingRuns.maxSourceSeconds","rvcTrainingRuns.maxTotalSourceSeconds","rvcTrainingRuns.gpuSeconds","rvcTrainingRuns.billableMinutes","rvcTrainingRuns.chargedCredits","rvcTrainingRuns.provider","rvcTrainingRuns.gpuSku","rvcTrainingRuns.providerCostPerGpuMinuteUsd","rvcTrainingRuns.creditValueUsd","rvcTrainingRuns.providerCostUsd","rvcTrainingRuns.estimatedRevenueUsd","rvcTrainingRuns.estimatedGrossProfitUsd","rvcTrainingRuns.providerMetadata","rvcTrainingRuns.error","rvcTrainingRuns.leaseOwner","rvcTrainingRuns.leaseExpiresAt","rvcTrainingRuns.startedAt","rvcTrainingRuns.completedAt","rvcTrainingRuns.cancelRequestedAt","rvcTrainingRuns.rightsConfirmedAt","rvcTrainingRuns.createdAt","rvcTrainingRuns.updatedAt","rvcTrainingSources.id","rvcTrainingSources.userId","rvcTrainingSources.runId","rvcTrainingSources.type","rvcTrainingSources.displayName","rvcTrainingSources.youtubeVideoId","rvcTrainingSources.youtubeUrl","rvcTrainingSources.fileName","rvcTrainingSources.mimeType","rvcTrainingSources.size","rvcTrainingSources.checksumSha256","rvcTrainingSources.storageService","rvcTrainingSources.storageKey","rvcTrainingSources.durationSeconds","rvcTrainingSources.isVocals","rvcTrainingSources.createdAt","rvcTrainingSources.updatedAt","cueSheets.id","cueSheets.userId","cueSheets.kind","cueSheets.jobId","cueSheets.segments","cueSheets.metadata","cueSheets.sourceFingerprint","cueSheets.version","cueSheets.createdAt","cueSheets.updatedAt","creditReservations.id","creditReservations.accountId","creditReservations.userId","creditReservations.referenceType","creditReservations.referenceId","creditReservations.amount","creditReservations.status","creditReservations.metadata","creditReservations.settledAt","creditReservations.releasedAt","creditReservations.expiresAt","creditReservations.createdAt","creditReservations.updatedAt","performances.id","performances.userId","performances.karaokeJobId","performances.uploadId","performances.name","performances.searchName","performances.mediaType","performances.visibility","performances.status","performances.collaborationType","performances.mimeType","performances.size","performances.durationMs","performances.koreQuality","performances.storageService","performances.storageBucket","performances.stagingStorageKey","performances.storageKey","performances.createdAt","performances.updatedAt","feedPosts.id","feedPosts.clientId","feedPosts.userId","feedPosts.text","feedPosts.mediaType","feedPosts.mimeType","feedPosts.size","feedPosts.mediaItems","feedPosts.storageService","feedPosts.storageBucket","feedPosts.stagingStorageKey","feedPosts.storageKey","feedPosts.uploadProtocol","feedPosts.storageIdentity","feedPosts.posterKey","feedPosts.posterService","feedPosts.posterBucket","feedPosts.posterMimeType","feedPosts.posterSize","feedPosts.failureCode","feedPosts.ticketExpiresAt","feedPosts.operation","feedPosts.operationToken","feedPosts.operationExpiresAt","feedPosts.status","feedPosts.performanceId","feedPosts.createdAt","feedPosts.updatedAt","feedPosts.moderatedAt","feedPosts.moderatedById","feedPosts.moderationReason","postReactions.id","postReactions.type","postReactions.postId","postReactions.userId","postReactions.createdAt","postComments.id","postComments.postId","postComments.userId","postComments.parentId","postComments.body","postComments.depth","postComments.isTombstone","postComments.createdAt","postComments.updatedAt","notificationsReceived.id","notificationsReceived.recipientId","notificationsReceived.actorId","notificationsReceived.type","notificationsReceived.dedupeKey","notificationsReceived.postId","notificationsReceived.commentId","notificationsReceived.followRequestId","notificationsReceived.jobId","notificationsReceived.performanceId","notificationsReceived.readAt","notificationsReceived.createdAt","notificationsReceived.updatedAt","communityBroadcasts.id","communityBroadcasts.kind","communityBroadcasts.targetKey","communityBroadcasts.actorId","communityBroadcasts.jobId","communityBroadcasts.performanceId","communityBroadcasts.postId","communityBroadcasts.notifyEnabled","communityBroadcasts.emailEnabled","communityBroadcasts.status","communityBroadcasts.attempts","communityBroadcasts.claimedAt","communityBroadcasts.notifiedAt","communityBroadcasts.emailedAt","communityBroadcasts.emailCursorUserId","communityBroadcasts.notificationsCreated","communityBroadcasts.emailsSent","communityBroadcasts.lastError","communityBroadcasts.createdAt","communityBroadcasts.updatedAt","notificationActions.id","notificationActions.recipientId","notificationActions.actorId","notificationActions.type","notificationActions.dedupeKey","notificationActions.postId","notificationActions.commentId","notificationActions.followRequestId","notificationActions.jobId","notificationActions.performanceId","notificationActions.readAt","notificationActions.createdAt","notificationActions.updatedAt","playlists.id","playlists.userId","playlists.name","playlists.description","playlists.visibility","playlists.createdAt","playlists.updatedAt","followers.id","followers.followerId","followers.followeeId","followers.createdAt","following.id","following.followerId","following.followeeId","following.createdAt","sentFollowRequests.id","sentFollowRequests.requesterId","sentFollowRequests.targetId","sentFollowRequests.status","sentFollowRequests.createdAt","sentFollowRequests.updatedAt","sentFollowRequests.respondedAt","receivedFollowRequests.id","receivedFollowRequests.requesterId","receivedFollowRequests.targetId","receivedFollowRequests.status","receivedFollowRequests.createdAt","receivedFollowRequests.updatedAt","receivedFollowRequests.respondedAt","blocksMade.id","blocksMade.blockerId","blocksMade.blockedId","blocksMade.createdAt","blocksReceived.id","blocksReceived.blockerId","blocksReceived.blockedId","blocksReceived.createdAt","chatRoomsCreated.id","chatRoomsCreated.type","chatRoomsCreated.name","chatRoomsCreated.createdById","chatRoomsCreated.avatar","chatRoomsCreated.directUserLowId","chatRoomsCreated.directUserHighId","chatRoomsCreated.createdAt","chatRoomsCreated.updatedAt","chatRoomsCreated.lastMessageAt","chatRoomsCreated.moderatedAt","chatRoomsCreated.moderatedById","chatRoomsCreated.moderationReason","chatParticipants.id","chatParticipants.roomId","chatParticipants.userId","chatParticipants.role","chatParticipants.lastReadAt","chatParticipants.joinedAt","chatParticipants.leftAt","chatParticipants.hiddenAt","chatParticipants.historyClearedAt","chatParticipants.typingExpiresAt","chatParticipants.unreadEmailSentAt","chatParticipants.unreadEmailedMessageId","chatMessages.id","chatMessages.roomId","chatMessages.senderId","chatMessages.clientId","chatMessages.content","chatMessages.attachment","chatMessages.createdAt","chatMessages.updatedAt","chatMessages.deletedAt","chatMessageReactions.id","chatMessageReactions.messageId","chatMessageReactions.userId","chatMessageReactions.emoji","chatMessageReactions.createdAt","chatMessageReactions.updatedAt","chatReportsMade.id","chatReportsMade.reporterId","chatReportsMade.targetUserId","chatReportsMade.roomId","chatReportsMade.reason","chatReportsMade.details","chatReportsMade.status","chatReportsMade.snapshot","chatReportsMade.createdAt","chatReportsMade.updatedAt","chatReportsMade.resolvedAt","chatReportsMade.decisionReason","chatReportsMade.decidedById","chatReportsMade.decisionNotifiedAt","chatReportsAbout.id","chatReportsAbout.reporterId","chatReportsAbout.targetUserId","chatReportsAbout.roomId","chatReportsAbout.reason","chatReportsAbout.details","chatReportsAbout.status","chatReportsAbout.snapshot","chatReportsAbout.createdAt","chatReportsAbout.updatedAt","chatReportsAbout.resolvedAt","chatReportsAbout.decisionReason","chatReportsAbout.decidedById","chatReportsAbout.decisionNotifiedAt","feedReportsMade.id","feedReportsMade.reporterId","feedReportsMade.postId","feedReportsMade.reason","feedReportsMade.details","feedReportsMade.status","feedReportsMade.snapshot","feedReportsMade.createdAt","feedReportsMade.updatedAt","feedReportsMade.resolvedAt","feedReportsMade.decisionReason","feedReportsMade.decidedById","feedReportsMade.decisionNotifiedAt","adRewardSessions.id","adRewardSessions.nonce","adRewardSessions.userId","adRewardSessions.policyId","adRewardSessions.placement","adRewardSessions.status","adRewardSessions.policySnapshot","adRewardSessions.platform","adRewardSessions.appVersion","adRewardSessions.deviceId","adRewardSessions.ipHash","adRewardSessions.countryIso2","adRewardSessions.adUnitId","adRewardSessions.creditsOnCompletion","adRewardSessions.bundleIndex","adRewardSessions.createdAt","adRewardSessions.expiresAt","adRewardSessions.shownAt","adRewardSessions.ssvReceivedAt","adRewardSessions.rewardedAt","adRewardSessions.ssvTransactionId","adRewardSessions.ssvAdNetwork","adRewardSessions.ssvKeyId","adRewardSessions.ssvRewardAmount","adRewardSessions.ssvRewardItem","adRewardSessions.creditsGranted","adRewardSessions.creditTransactionId","adRewardSessions.rejectionReason","adRewardSessions.rawCallback","adRewardSessions.updatedAt","adRewardDailyUsages.id","adRewardDailyUsages.userId","adRewardDailyUsages.usageDate","adRewardDailyUsages.policyId","adRewardDailyUsages.adsStarted","adRewardDailyUsages.adsCompleted","adRewardDailyUsages.adsRejected","adRewardDailyUsages.creditsGranted","adRewardDailyUsages.firstAdAt","adRewardDailyUsages.lastAdAt","adRewardDailyUsages.createdAt","adRewardDailyUsages.updatedAt","adRewardProgress.id","adRewardProgress.userId","adRewardProgress.adsSinceLastReward","adRewardProgress.lifetimeAdsCompleted","adRewardProgress.lifetimeCreditsGranted","adRewardProgress.lastRewardedAt","adRewardProgress.createdAt","adRewardProgress.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","email":"asc","name":"asc","createdAt":"asc","password":"asc","countryId":"asc","avatar":"asc","isVerified":"asc","verificationToken":"asc","googleSub":"asc","lastActiveAt":"asc","bannedAt":"asc","bannedById":"asc","banReason":"asc","faceSwapTermsAcceptedAt":"asc","faceSwapTermsVersion":"asc","voiceTermsAcceptedAt":"asc","voiceTermsVersion":"asc","faceSwapBypassFilters":"asc","feedDeletionClaimedAt":"asc","isDeleted":"asc","deletedAt":"asc","deletedEmail":"asc","bio":"asc","privacySetting":"asc","handle":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"email":{"mode":"EQ","value":"example"},"name":{"mode":"EQ","value":"example"},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:26.093Z"},"password":{"mode":"EQ","value":"example"},"countryId":{"mode":"EQ","value":123},"avatar":{"mode":"EQ","value":{"key":"value"}},"isVerified":{"mode":"EQ","value":true},"verificationToken":{"mode":"EQ","value":"example"},"googleSub":{"mode":"EQ","value":"example"},"lastActiveAt":{"mode":"EQ","value":"2026-11-02T19:39:26.094Z"},"bannedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.094Z"},"bannedById":{"mode":"EQ","value":123},"banReason":{"mode":"EQ","value":"example"},"faceSwapTermsAcceptedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.094Z"},"faceSwapTermsVersion":{"mode":"EQ","value":"example"},"voiceTermsAcceptedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.094Z"},"voiceTermsVersion":{"mode":"EQ","value":"example"},"faceSwapBypassFilters":{"mode":"EQ","value":true},"feedDeletionClaimedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.094Z"},"isDeleted":{"mode":"EQ","value":true},"deletedAt":{"mode":"EQ","value":"2026-11-02T19:39:26.094Z"},"deletedEmail":{"mode":"EQ","value":"example"},"bio":{"mode":"EQ","value":"example"},"privacySetting":{"mode":"EQ","value":"example"},"handle":{"mode":"EQ","value":"example"}}]}},"required":["fields"]},"UserCreditAccountSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","userId","balance","reservedBalance","currencyId","createdAt","updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt","transactions.id","transactions.accountId","transactions.userId","transactions.direction","transactions.amount","transactions.balanceAfter","transactions.currencyId","transactions.description","transactions.referenceType","transactions.referenceId","transactions.metadata","transactions.jobId","transactions.createdAt","transactions.updatedAt","reservations.id","reservations.accountId","reservations.userId","reservations.referenceType","reservations.referenceId","reservations.amount","reservations.status","reservations.metadata","reservations.settledAt","reservations.releasedAt","reservations.expiresAt","reservations.createdAt","reservations.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","userId":"asc","balance":"asc","reservedBalance":"asc","currencyId":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"balance":{"mode":"EQ","value":"12.34"},"reservedBalance":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:40.675Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:40.675Z"}}]}},"required":["fields"]},"UserCreditTransactionSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","accountId","userId","direction","amount","balanceAfter","currencyId","description","referenceType","referenceId","metadata","jobId","createdAt","updatedAt","account.id","account.userId","account.balance","account.reservedBalance","account.currencyId","account.createdAt","account.updatedAt","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","job.id","job.userId","job.rvcVoiceModelId","job.type","job.status","job.estimatedDebitAmount","job.debitedAmount","job.currencyId","job.payload","job.result","job.error","job.metadata","job.videoTitle","job.searchTitle","job.videoUrl","job.thumbnailUrl","job.isPublic","job.isPurchased","job.isCommunityPurchase","job.communitySourceJobId","job.startedAt","job.runnerId","job.completedAt","job.nextRetryAt","job.retryLog","job.automatedRetryCount","job.clientRequestId","job.createdAt","job.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","accountId":"asc","userId":"asc","direction":"asc","amount":"asc","balanceAfter":"asc","currencyId":"asc","description":"asc","referenceType":"asc","referenceId":"asc","metadata":"asc","jobId":"asc","createdAt":"asc","updatedAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"accountId":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"direction":{"mode":"EQ","value":"example"},"amount":{"mode":"EQ","value":"12.34"},"balanceAfter":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"description":{"mode":"EQ","value":"example"},"referenceType":{"mode":"EQ","value":"example"},"referenceId":{"mode":"EQ","value":"example"},"metadata":{"mode":"EQ","value":{"key":"value"}},"jobId":{"mode":"EQ","value":123},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:37.938Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:37.938Z"}}]}},"required":["fields"]},"UserPaymentOrderSearchParams":{"type":"object","properties":{"limit":{"type":"number","default":10},"offset":{"type":"number","default":0},"fields":{"type":"array","items":{"type":"string"},"example":["id","userId","provider","serviceName","orderId","amount","currencyId","status","notes","paymentId","signature","metadata","createdAt","updatedAt","paidAt","user.id","user.email","user.name","user.createdAt","user.password","user.countryId","user.avatar","user.isVerified","user.verificationToken","user.googleSub","user.lastActiveAt","user.bannedAt","user.bannedById","user.banReason","user.faceSwapTermsAcceptedAt","user.faceSwapTermsVersion","user.voiceTermsAcceptedAt","user.voiceTermsVersion","user.faceSwapBypassFilters","user.feedDeletionClaimedAt","user.isDeleted","user.deletedAt","user.deletedEmail","user.bio","user.privacySetting","user.handle","currency.id","currency.code","currency.symbol","currency.name","currency.isActive","currency.isBase","currency.createdAt","currency.updatedAt"]},"orderBy":{"type":"object","example":{"id":"asc","userId":"asc","provider":"asc","serviceName":"asc","orderId":"asc","amount":"asc","currencyId":"asc","status":"asc","notes":"asc","paymentId":"asc","signature":"asc","metadata":"asc","createdAt":"asc","updatedAt":"asc","paidAt":"asc"}},"filters":{"type":"array","items":{"type":"object"},"example":[{"id":{"mode":"EQ","value":123},"userId":{"mode":"EQ","value":123},"provider":{"mode":"EQ","value":"example"},"serviceName":{"mode":"EQ","value":"example"},"orderId":{"mode":"EQ","value":"example"},"amount":{"mode":"EQ","value":"12.34"},"currencyId":{"mode":"EQ","value":123},"status":{"mode":"EQ","value":"example"},"notes":{"mode":"EQ","value":{"key":"value"}},"paymentId":{"mode":"EQ","value":"example"},"signature":{"mode":"EQ","value":"example"},"metadata":{"mode":"EQ","value":{"key":"value"}},"createdAt":{"mode":"EQ","value":"2026-11-02T19:39:39.529Z"},"updatedAt":{"mode":"EQ","value":"2026-11-02T19:39:39.529Z"},"paidAt":{"mode":"EQ","value":"2026-11-02T19:39:39.529Z"}}]}},"required":["fields"]},"VoiceResolveReportBody":{"type":"object","properties":{"action":{"type":"string","enum":["dismiss","takedown"],"minLength":1},"reason":{"type":"string","maxLength":500}},"required":["action"]},"VoiceTakedownBody":{"type":"object","properties":{"reason":{"type":"string","maxLength":500,"minLength":1}},"required":["reason"]},"VoiceTermsBody":{"type":"object","properties":{"version":{"type":"string","maxLength":32,"minLength":1}},"required":["version"]},"VoiceReportBody":{"type":"object","properties":{"voiceId":{"type":"string","maxLength":64,"minLength":1},"reason":{"type":"string","enum":["impersonation","no_consent","harassment","fraud","other"],"minLength":1},"details":{"type":"string","maxLength":2000}},"required":["voiceId","reason"]},"VoiceRenameBody":{"type":"object","properties":{"name":{"type":"string","maxLength":60,"minLength":1}},"required":["name"]},"VoiceConsentBody":{"type":"object","properties":{"consentKind":{"type":"string","enum":["self","permission"],"minLength":1},"attestation":{"type":"boolean"},"attestationVersion":{"type":"string","maxLength":32,"minLength":1}},"required":["consentKind","attestation","attestationVersion"]},"VoiceTryBody":{"type":"object","properties":{"text":{"type":"string","maxLength":200,"minLength":1},"language":{"type":"string","maxLength":40}},"required":["text"]},"YoutubeLibraryAdminStatusResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"dataApiConfigured":{"type":"boolean"},"effectiveListingSource":{"type":"string","minLength":1},"lastSync":{"nullable":true},"nextSyncAt":{"nullable":true,"type":"string"},"counts":{"type":"object"},"ownerUserId":{"nullable":true,"type":"number"},"ownerEmail":{"nullable":true,"type":"string"}},"required":["enabled","dataApiConfigured","effectiveListingSource","counts"]},"YoutubeLibraryAdminListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/YoutubeLibraryAdminEntryResponse"}},"total":{"type":"number"}},"required":["items","total"]},"YoutubeLibraryAdminEntryResponse":{"type":"object","properties":{"id":{"type":"number"},"videoId":{"type":"string","minLength":1},"channelId":{"nullable":true,"type":"string"},"title":{"type":"string","minLength":1},"displayTitle":{"nullable":true,"type":"string"},"songTitle":{"nullable":true,"type":"string"},"artist":{"nullable":true,"type":"string"},"language":{"nullable":true,"type":"string"},"thumbnailUrl":{"nullable":true,"type":"string"},"durationSeconds":{"nullable":true,"type":"number"},"publishedAt":{"nullable":true,"type":"string"},"viewCount":{"nullable":true,"type":"number"},"status":{"type":"string","enum":["DISCOVERED","SKIPPED","QUEUED","READY","FAILED","REMOVED"],"minLength":1},"statusReason":{"nullable":true,"type":"string"},"isHidden":{"type":"boolean"},"isFeatured":{"type":"boolean"},"sortOrder":{"type":"number"},"jobId":{"nullable":true,"type":"number"},"jobStatus":{"nullable":true,"type":"string"},"attempts":{"type":"number"},"coverCount":{"type":"number"},"editedAt":{"nullable":true,"type":"string"},"lastSeenAt":{"nullable":true,"type":"string"},"readyAt":{"nullable":true,"type":"string"},"createdAt":{"type":"string","minLength":1}},"required":["id","videoId","title","status","isHidden","isFeatured","sortOrder","attempts","coverCount","createdAt"]},"YoutubeLibraryAdminUpdateBody":{"type":"object","properties":{"displayTitle":{"nullable":true,"type":"string","maxLength":300},"songTitle":{"nullable":true,"type":"string","maxLength":300},"artist":{"nullable":true,"type":"string","maxLength":200},"language":{"nullable":true,"type":"string","maxLength":35},"isHidden":{"type":"boolean"},"isFeatured":{"type":"boolean"},"sortOrder":{"type":"integer","maximum":100000,"minimum":-100000,"multipleOf":1}}},"YoutubeLibrarySyncSummary":{"type":"object","properties":{"trigger":{"type":"string","minLength":1},"startedAt":{"type":"string","minLength":1},"finishedAt":{"type":"string","minLength":1},"channels":{"type":"array","items":{"$ref":"#/components/schemas/YoutubeLibrarySyncChannelResult"}},"reevaluated":{"type":"number"}},"required":["trigger","startedAt","finishedAt","channels","reevaluated"]},"YoutubeLibrarySyncChannelResult":{"type":"object","properties":{"reference":{"type":"string","minLength":1},"channelId":{"nullable":true,"type":"string"},"channelTitle":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"listed":{"type":"number"},"added":{"type":"number"},"updated":{"type":"number"},"removed":{"type":"number"},"error":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["reference","listed","added","updated","removed"]},"YoutubeLibraryImportResponse":{"type":"object","properties":{"created":{"type":"array","items":{"type":"number"}},"existing":{"type":"array","items":{"type":"number"}},"rejected":{"type":"array","items":{"type":"string"}}},"required":["created","existing","rejected"]},"YoutubeLibraryImportBody":{"type":"object","properties":{"input":{"type":"string","maxLength":20000,"minLength":1},"process":{"type":"boolean"}},"required":["input"]},"YoutubeLibraryPublicConfigResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"guestBrowsing":{"type":"boolean"},"singEnabled":{"type":"boolean"},"downloadEnabled":{"type":"boolean"},"accessMode":{"type":"string","enum":["FREE","UNLOCK"],"minLength":1},"unlockCost":{"type":"number"},"showYoutubeLink":{"type":"boolean"},"channelUrls":{"type":"array","items":{"type":"string"}},"songCount":{"type":"number"}},"required":["enabled","guestBrowsing","singEnabled","downloadEnabled","accessMode","unlockCost","showYoutubeLink","channelUrls","songCount"]},"YoutubeLibraryListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/YoutubeLibraryItemResponse"}},"total":{"type":"number"},"facets":{"$ref":"#/components/schemas/YoutubeLibraryFacetsResponse"}},"required":["items","total"]},"YoutubeLibraryItemResponse":{"type":"object","properties":{"id":{"type":"number"},"videoId":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"songTitle":{"nullable":true,"type":"string"},"artist":{"nullable":true,"type":"string"},"language":{"nullable":true,"type":"string"},"thumbnailUrl":{"type":"string","minLength":1},"durationSeconds":{"nullable":true,"type":"number"},"publishedAt":{"nullable":true,"type":"string"},"viewCount":{"nullable":true,"type":"number"},"coverCount":{"type":"number"},"isFeatured":{"type":"boolean"},"youtubeUrl":{"type":"string","minLength":1},"jobId":{"type":"number"},"canSing":{"type":"boolean"},"canDownload":{"type":"boolean"},"requiresUnlock":{"type":"boolean"},"isUnlocked":{"type":"boolean"},"unlockCost":{"type":"number"}},"required":["id","videoId","title","thumbnailUrl","coverCount","isFeatured","youtubeUrl","jobId","canSing","canDownload","requiresUnlock","isUnlocked","unlockCost"]},"YoutubeLibraryFacetsResponse":{"type":"object","properties":{"artists":{"type":"array","items":{"$ref":"#/components/schemas/YoutubeLibraryFacet"}},"languages":{"type":"array","items":{"$ref":"#/components/schemas/YoutubeLibraryFacet"}}},"required":["artists","languages"]},"YoutubeLibraryFacet":{"type":"object","properties":{"value":{"type":"string","minLength":1},"count":{"type":"number"}},"required":["value","count"]},"YoutubeLibraryDownloadResponse":{"type":"object","properties":{"entryId":{"type":"number"},"jobId":{"type":"number"},"downloadUrl":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1},"expiresAt":{"type":"string","minLength":1},"expiresInSeconds":{"type":"number"},"mimeType":{"type":"string"},"size":{"type":"number"}},"required":["entryId","jobId","downloadUrl","fileName","expiresAt","expiresInSeconds"]},"YoutubePublishStatusResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"ready":{"type":"boolean","description":"A publish would be accepted now (as far as configuration goes)."},"problems":{"type":"array","items":{"type":"string"}},"ytbdConfigured":{"type":"boolean","description":"A VoxMin instance can carry a publish to ytbd (which is reachable from VoxMin only)."},"ytbdHost":{"description":"\"via VoxMin (voxmin_vps, voxmin)\": the instances a publish may go through, null when none.","nullable":true,"type":"string"},"voxminInstances":{"type":"array","items":{"type":"string"},"description":"The VoxMin instances (External APIs rows) a publish may go through, the preferred first."},"accountEmail":{"nullable":true,"type":"string"},"passwordSet":{"type":"boolean"},"usesYtbdAccount":{"type":"boolean","description":"No account in System Config: ytbd uploads as its own YTBD_EMAIL account."},"uploading":{"type":"number","description":"Publishes running or waiting in this process."},"libraryEnabled":{"type":"boolean"},"addToLibraryDefault":{"type":"boolean"},"categories":{"type":"array","items":{"type":"string"}}},"required":["enabled","ready","problems","ytbdConfigured","voxminInstances","passwordSet","usesYtbdAccount","uploading","libraryEnabled","addToLibraryDefault","categories"]},"YoutubePublishCheckResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"status":{"nullable":true,"type":"number"},"detail":{"type":"string","minLength":1},"latencyMs":{"type":"number"},"via":{"description":"The VoxMin instance whose ytbd answered, null when none did.","nullable":true,"type":"string"}},"required":["ok","detail","latencyMs"]},"YoutubePublishJobResponse":{"type":"object","properties":{"jobId":{"type":"number"},"jobTitle":{"type":"string","minLength":1},"canPublish":{"type":"boolean"},"blockers":{"type":"array","items":{"type":"string"},"description":"Why a publish would be refused now: the configuration, ytbd, or the job itself."},"libraryBlocker":{"description":"Why a public publish of this job would not be added to the library as this job, if it would not.","nullable":true,"type":"string"},"libraryEnabled":{"type":"boolean"},"accountEmail":{"description":"The account a publish would upload as now; null = ytbd’s own account.","nullable":true,"type":"string"},"draft":{"$ref":"#/components/schemas/YoutubePublishDraftResponse"},"publications":{"type":"array","items":{"$ref":"#/components/schemas/YoutubePublicationResponse"},"description":"Newest first, at most 10."}},"required":["jobId","jobTitle","canPublish","blockers","libraryEnabled","draft","publications"]},"YoutubePublishDraftResponse":{"type":"object","properties":{"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"tags":{"type":"array","items":{"type":"string"}},"privacy":{"type":"string","enum":["PUBLIC","UNLISTED","PRIVATE"],"minLength":1},"madeForKids":{"type":"boolean"},"category":{"nullable":true,"type":"string"},"playlistId":{"nullable":true,"type":"string"},"addToLibrary":{"type":"boolean"}},"required":["title","description","tags","privacy","madeForKids","addToLibrary"]},"YoutubePublicationResponse":{"type":"object","properties":{"id":{"type":"number"},"jobId":{"type":"number"},"state":{"type":"string","description":"INTERRUPTED: still UPLOADING in the database, but the process running it stopped renewing its heartbeat (a restart). YouTube may or may not have the video.","enum":["UPLOADING","PUBLISHED","FAILED","INTERRUPTED"],"minLength":1},"phase":{"description":"While UPLOADING: waiting, fetching, uploading or library.","nullable":true,"type":"string"},"videoId":{"nullable":true,"type":"string"},"url":{"nullable":true,"type":"string"},"studioUrl":{"nullable":true,"type":"string"},"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"privacy":{"type":"string","minLength":1},"tags":{"type":"array","items":{"type":"string"}},"accountEmail":{"description":"The account it was uploaded as; null = ytbd’s own account.","nullable":true,"type":"string"},"engine":{"nullable":true,"type":"string"},"skippedFields":{"type":"array","items":{"type":"string"},"description":"Settings YouTube did not apply; the video is published anyway."},"error":{"nullable":true,"type":"string"},"addToLibrary":{"type":"boolean"},"libraryEntryId":{"nullable":true,"type":"number"},"libraryNote":{"nullable":true,"type":"string"},"requestedByUserId":{"nullable":true,"type":"number"},"createdAt":{"type":"string","minLength":1},"heartbeatAt":{"nullable":true,"type":"string"},"finishedAt":{"nullable":true,"type":"string"}},"required":["id","jobId","state","title","description","privacy","tags","skippedFields","addToLibrary","createdAt"]},"Conflict":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The error name","example":"CONFLICT","default":"CONFLICT"},"message":{"type":"string","minLength":1,"description":"An error message"},"status":{"type":"number","description":"The status code of the exception","example":409,"default":409},"errors":{"type":"array","items":{"$ref":"#/components/schemas/GenericError"},"description":"A list of related errors"},"stack":{"type":"string","description":"The stack trace (only in development mode)"}},"required":["name","message","status"]},"YoutubePublishBody":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"privacy":{"type":"string","enum":["PUBLIC","UNLISTED","PRIVATE"]},"madeForKids":{"type":"boolean"},"category":{"nullable":true,"type":"string"},"playlistId":{"nullable":true,"type":"string"},"addToLibrary":{"type":"boolean"},"republish":{"type":"boolean"}}}}},"paths":{"/auth/admin/ad-rewards/metrics":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardMetricsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: rewarded-ad delivery, earning and abuse metrics","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"days","schema":{"type":"integer","minimum":1,"multipleOf":1}},{"in":"query","required":false,"name":"policyId","schema":{"type":"integer","multipleOf":1}},{"in":"query","required":false,"name":"platform","schema":{"type":"string","enum":["android","ios"]}},{"in":"query","required":false,"name":"country","schema":{"type":"string"}}],"tags":["AdRewardAdminController"],"operationId":"adRewardAdminControllerGetMetrics"}},"/auth/admin/ad-rewards/sessions":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of AdRewardSession"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all AdRewardSession","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardSessionSearchParams"}}}},"tags":["AdRewardAdminController"],"operationId":"adRewardAdminControllerGetSessions"}},"/auth/admin/ad-rewards/usages":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of AdRewardDailyUsage"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all AdRewardDailyUsage","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardDailyUsageSearchParams"}}}},"tags":["AdRewardAdminController"],"operationId":"adRewardAdminControllerGetUsages"}},"/auth/ad-reward-policies":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicyBodyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new AdRewardPolicyBody","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicyBodyModelCreate"}}}},"tags":["AdRewardPolicyController"],"operationId":"adRewardPolicyControllerCreateItem"}},"/auth/ad-reward-policies/{id}":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicyBodyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a AdRewardPolicyBody by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicyBodyModelUpdate"}}}},"tags":["AdRewardPolicyController"],"operationId":"adRewardPolicyControllerUpdate"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicyModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a AdRewardPolicy by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AdRewardPolicyController"],"operationId":"adRewardPolicyControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicyModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a AdRewardPolicy by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AdRewardPolicyController"],"operationId":"adRewardPolicyControllerGetOne"}},"/auth/ad-reward-policies/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of AdRewardPolicy"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all AdRewardPolicy","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardPolicySearchParams"}}}},"tags":["AdRewardPolicyController"],"operationId":"adRewardPolicyControllerGetAll"}},"/auth/ad-rewards/ssv/callback":{"get":{"responses":{"200":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"AdMob server-side verification callback (public, signature-verified)","parameters":[],"tags":["AdRewardSsvController"],"operationId":"adRewardSsvControllerHandleCallback"}},"/auth/ad-rewards/config":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardConfigResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Rewarded-ad availability and terms for the user in the token","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"placement","schema":{"type":"string","enum":["WALLET_REWARDED","LOW_BALANCE_REWARDED","CREATE_HUB_REWARDED"]}},{"in":"query","required":false,"name":"platform","schema":{"type":"string","enum":["android","ios"]}}],"tags":["AdRewardsController"],"operationId":"adRewardsControllerGetConfig"}},"/auth/ad-rewards/sessions":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdRewardSessionResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Open a rewarded-ad session and receive the AdMob verification nonce","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdRewardSessionPayload"}}}},"tags":["AdRewardsController"],"operationId":"adRewardsControllerCreateSession"}},"/auth/ad-rewards/sessions/{sessionId}/shown":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkAdShownResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Record that the rewarded ad was displayed (telemetry only)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string"}}],"tags":["AdRewardsController"],"operationId":"adRewardsControllerMarkShown"}},"/auth/ad-rewards/sessions/{sessionId}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardSessionStatusResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Poll a rewarded-ad session for the verified outcome","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string"}}],"tags":["AdRewardsController"],"operationId":"adRewardsControllerGetSessionStatus"}},"/auth/ad-rewards/summary":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRewardSummaryResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Lifetime and today ad-earning totals for the user in the token","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AdRewardsController"],"operationId":"adRewardsControllerGetSummary"}},"/auth/admin/analytics/presence":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAnalyticsPresence"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: near-real-time unique active-user count","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AdminAnalyticsController"],"operationId":"adminAnalyticsControllerGetPresence"}},"/auth/admin/analytics/snapshot":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAnalyticsSnapshot"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: monthly revenue, repeat-purchase, delivery, geography, and compatibility analytics","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"months","description":"Number of UTC monthly trend buckets to return, including the current partial month.","schema":{"type":"integer","default":12,"maximum":24,"minimum":6,"multipleOf":1}}],"tags":["AdminAnalyticsController"],"operationId":"adminAnalyticsControllerGetSnapshot"}},"/auth/admin/conversations/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminConversationSearchResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: search every direct and group conversation across the system","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminConversationSearchBody"}}}},"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerSearchConversations"}},"/auth/admin/conversations/reports/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminReportSearchResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: search chat, group, and feed reports in one moderation queue","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminConversationSearchBody"}}}},"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerSearchReports"}},"/auth/admin/conversations/{id}/preview":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: preview retained conversation metadata and the latest 200 messages","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerPreviewConversation"}},"/auth/admin/conversations/{id}/messages/{messageId}/media":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: obtain a short-lived private link for media in a conversation preview","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"path","name":"messageId","required":true,"schema":{"type":"number"}}],"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerPreviewMessageMedia"}},"/auth/admin/conversations/{id}/moderation":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: take down or restore a conversation, or ban one participant account","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModerationBody"}}}},"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerModerateConversation"}},"/auth/admin/conversations/reports/{source}/{id}":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: move one chat or feed report through its review workflow","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"source","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminReportStatusBody"}}}},"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerUpdateReport"}},"/auth/admin/conversations/feed/{id}/preview":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: preview retained feed-post metadata for a report","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerPreviewFeedPost"}},"/auth/admin/conversations/feed/{id}/moderation":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: take down or restore a feed post, or ban its creator account","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminModerationBody"}}}},"tags":["AdminConversationsController"],"operationId":"adminConversationsControllerModerateFeedPost"}},"/auth/ai-studio/realtime/token":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Centrifugo connection token + WebSocket URL for realtime AI Studio","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerRealtimeToken"}},"/auth/ai-studio/realtime/subscription-token":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Centrifugo subscription token scoped to one AI Studio channel","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"channel","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerRealtimeSubscriptionToken"}},"/auth/ai-studio/upload-reference":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upload reference audio for AI Studio song generation","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerUploadReference"}},"/auth/ai-studio/config":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"AI Studio client config: quality levels, pricing, durations (single source of truth)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerGetConfig"}},"/auth/ai-studio/usage":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"AI Studio token usage for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerGetUsage"}},"/auth/ai-studio/reference-audio/from-youtube":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioYoutubeReferenceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Import reference audio for an AI Studio session from a YouTube link","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioYoutubeReferenceRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerImportYoutubeReference"}},"/auth/ai-studio/source-media/from-youtube":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioYoutubeReferenceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stage a YouTube track as the session source media (the song a remix re-renders)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioYoutubeSourceRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerImportYoutubeSource"}},"/auth/ai-studio/reference-audio":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Report whether reference audio is attached to the active AI Studio session","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerGetReferenceAudio"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Clear the current reference audio for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDeleteReferenceAudio"}},"/auth/ai-studio/reference-audio/download":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download the current reference audio file for playback in the chat","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDownloadReferenceAudio"}},"/auth/ai-studio/job/{id}/reference-audio":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download the reference audio used by an AI Studio song job","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDownloadJobReferenceAudio"}},"/auth/ai-studio/job/{id}/source-audio":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download the source track an AI Studio job was run on","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDownloadJobSourceAudio"}},"/auth/ai-studio/upload-media":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stage a source audio/video file (+ optional background image) for chat-driven karaoke/lyrical job creation","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"},"background":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerUploadMedia"}},"/auth/ai-studio/media":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Clear the staged source media for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDeleteMedia"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Report whether staged source media is attached (does not expose file contents)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerGetMedia"}},"/auth/ai-studio/media/background":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Clear the staged lyrical-video background image for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDeleteBackground"}},"/auth/ai-studio/upload-background":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stage a background image for lyrical videos from an uploaded audio file","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"background":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerUploadBackground"}},"/auth/ai-studio/agent/chat":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One AI Studio assistant turn, streamed as server-sent events; it runs on if the page is left","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/AiStudioChatRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerAgentChat"}},"/auth/ai-studio/agent/chat/{sessionId}/state":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Whether the session's assistant is working, and on what","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerAgentState"}},"/auth/ai-studio/agent/chat/{sessionId}/live":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Follow the session's assistant turn from event `after` on (server-sent events)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerAgentLive"}},"/auth/ai-studio/agent/chat/{sessionId}/stop":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop the session's assistant: it ends at its next step, saved as it stands and charged for what it used","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentStopBody"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerAgentStop"}},"/auth/ai-studio/agent/chat/{sessionId}/steer":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a note into the session's running assistant turn: it reads it at its next step, without stopping (409 when nothing runs)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sessionId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSteerBody"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerAgentSteer"}},"/auth/ai-studio/chat":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioChatResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a message to the AI Studio chat and wait for the whole reply (the pre-streaming contract; the website uses /agent/chat)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioChatRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerChat"}},"/auth/ai-studio/chat/status/{requestId}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Recover the durable result of an AI Studio chat request after a connection interruption","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"requestId","required":true,"schema":{"type":"string"}},{"in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerChatStatus"}},"/auth/ai-studio/refine":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioRefineResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Refine a Song Studio production prompt or lyric draft with the configured AI Studio Flash model","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioRefineRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerRefine"}},"/auth/ai-studio/generate":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioGenerateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Manually create an AI Studio song generation job","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioGenerateRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerGenerate"}},"/auth/ai-studio/job/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioJobStatusResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get AI Studio job status and result","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerJobStatus"}},"/auth/ai-studio/session/save":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Save an AI Studio chat session to the database","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioSessionSaveRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerSaveSession"}},"/auth/ai-studio/session/load/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Load an AI Studio chat session from the database","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerLoadSession"}},"/auth/ai-studio/console/edit":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update console state server-side so future chat turns know about edits","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiStudioConsoleEditRequest"}}}},"tags":["AiStudioController"],"operationId":"aiStudioControllerConsoleEdit"}},"/auth/ai-studio/session/list":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{}}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List all AI Studio chat sessions for the current user","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerListSessions"}},"/auth/ai-studio/session/delete/{id}":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete an AI Studio chat session (soft delete; jobs and songs are kept)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDeleteSession"}},"/auth/ai-studio/sessions/admin/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: soft-delete an AI Studio session; jobs are kept, unreferenced private attachments are released","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerAdminDeleteSession"}},"/auth/ai-studio/sessions/admin/{id}/chat":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: view a user AI Studio session chat (sanitized history + owner email)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerAdminSessionChat"}},"/auth/ai-studio/sessions/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: search AI Studio sessions (with user relation)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerSearchSessions"}},"/auth/ai-studio/token-usage/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: search AI token usage","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerSearchTokenUsage"}},"/auth/ai-studio/token-usage/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: archive one AI token usage audit event without changing accounting","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["AiStudioController"],"operationId":"aiStudioControllerDeleteTokenUsage"}},"/auth/ai-studio/token-usage/summary":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: aggregate AI token usage stats","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerTokenUsageSummary"}},"/auth/ai-studio/token-usage/users":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: weekly AI usage, cost, revenue, and profit by user","security":[{"bearerAuth":[]}],"parameters":[],"tags":["AiStudioController"],"operationId":"aiStudioControllerTokenUsageUsers"}},"/auth/login":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}},"description":"JWT token upon successful login"}},"summary":"generate a JWT token for a user","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequestLogin"}}}},"tags":["AuthController"],"operationId":"authControllerLogin"}},"/auth/logout":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoutResponse"}}},"description":"Success"}},"summary":"clean up user session","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoutRequest"}}}},"tags":["AuthController"],"operationId":"authControllerLogout"}},"/auth/validate/accessToken":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateTokenResponse"}}},"description":"validating token"}},"summary":"validate a JWT token for a user or normal token for externalUser returning userId,roles and permissions","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateTokenRequest"}}}},"tags":["AuthController"],"operationId":"authControllerValidateToken"}},"/auth/validate/accessToken/forPermission":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateAccessTokenForPermissionResponse"}}},"description":"validating token"}},"summary":"validate a JWT token for a user or normal token for externalUser returning userId,roles and permissions","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateAccessTokenForPermissionRequest"}}}},"tags":["AuthController"],"operationId":"authControllerValidateAccessTokenForPermission"}},"/auth/refreshAccessToken":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAccessTokenResponse"}}},"description":"new token pair"}},"summary":"validate a Refresh JWT token for a user returning new refresh token and accessToken","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAccessTokenRequest"}}}},"tags":["AuthController"],"operationId":"authControllerRefreshAccessToken"}},"/auth/signup":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelSignupResponse"}}},"description":"Created"}},"summary":"User signup","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelCreate"}}}},"tags":["AuthController"],"operationId":"authControllerSignup"}},"/auth/google":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}},"description":"Same JWT pair as password login"}},"summary":"Sign in or register with Google (ID token from Google Identity Services)","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleLoginRequest"}}}},"tags":["AuthController"],"operationId":"authControllerGoogleLogin"}},"/auth/forgot-password":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordResponse"}}},"description":"Generic confirmation message"}},"summary":"Request a password reset link","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}}},"tags":["AuthController"],"operationId":"authControllerForgotPassword"}},"/auth/reset-password":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordResponse"}}},"description":"Success indicator"}},"summary":"Reset password using a valid reset token","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}}},"tags":["AuthController"],"operationId":"authControllerResetPassword"}},"/auth/geo":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"}},"summary":"Detect visitor country and currency","parameters":[{"in":"query","name":"country","required":false,"schema":{"type":"string"}}],"tags":["AuthController"],"operationId":"authControllerDetectGeo"}},"/auth/banners/active":{"get":{"responses":{"200":{"description":"Success"}},"summary":"List banners that should currently be shown to the visitor","parameters":[{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"visitorId","required":false,"schema":{"type":"string"}}],"tags":["BannersController"],"operationId":"bannersControllerGetActiveBanners"}},"/auth/banners/{id}/impression":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Record one banner impression for the visitor","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerInteractionPayload"}}}},"tags":["BannersController"],"operationId":"bannersControllerRecordImpression"}},"/auth/banners/{id}/dismiss":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Mark a banner as dismissed for the visitor","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerInteractionPayload"}}}},"tags":["BannersController"],"operationId":"bannersControllerRecordDismiss"}},"/auth/banners":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerBodyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new BannerBody","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerBodyModelCreate"}}}},"tags":["BannersController"],"operationId":"bannersControllerCreateItem"}},"/auth/banners/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Banner by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["BannersController"],"operationId":"bannersControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Banner by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["BannersController"],"operationId":"bannersControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerBodyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a BannerBody by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerBodyModelUpdate"}}}},"tags":["BannersController"],"operationId":"bannersControllerUpdate"}},"/auth/banners/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of Banner"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all Banner","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerSearchParams"}}}},"tags":["BannersController"],"operationId":"bannersControllerGetAll"}},"/auth/chat/rooms":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new chat room","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoomBodyCreate"}}}},"tags":["ChatController"],"operationId":"chatControllerCreateRoom"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List rooms the current user participates in","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerListRooms"}},"/auth/chat/rooms/bulk-delete":{"post":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove selected conversations from the current user inbox","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkChatRoomsBody"}}}},"tags":["ChatController"],"operationId":"chatControllerDeleteRooms"}},"/auth/chat/direct/{handle}/messages":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a message, atomically creating the direct room when needed","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"handle","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageBodyCreate"}}}},"tags":["ChatController"],"operationId":"chatControllerSendDirectMessage"}},"/auth/chat/direct/{handle}/messages/media":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a private media message, atomically creating the direct room when needed","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"handle","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ChatController"],"operationId":"chatControllerSendDirectMediaMessage"}},"/auth/chat/messages/{messageId}/media":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMediaLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a short-lived private link for a chat attachment","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"messageId","required":true,"schema":{"type":"number"}},{"in":"query","name":"variant","required":false,"schema":{"type":"string"}}],"tags":["ChatController"],"operationId":"chatControllerGetMessageMedia"}},"/auth/chat/rooms/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get room details","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerGetRoom"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Rename a GROUP conversation (admin only)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateChatRoomNameBody"}}}},"tags":["ChatController"],"operationId":"chatControllerUpdateRoomName"},"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a GROUP conversation (admin only)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerDeleteRoom"}},"/auth/chat/rooms/{id}/avatar":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upload a GROUP conversation avatar (admin only)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ChatController"],"operationId":"chatControllerUploadRoomAvatar"}},"/auth/chat/rooms/{id}/leave":{"post":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Leave a group or remove a direct conversation from the current user inbox","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerLeaveRoom"}},"/auth/chat/rooms/{id}/report":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomReportResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Report a conversation, optionally leaving it atomically","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportChatRoomBody"}}}},"tags":["ChatController"],"operationId":"chatControllerReportRoom"}},"/auth/chat/rooms/{id}/messages":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a message to a room","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageBodyCreate"}}}},"tags":["ChatController"],"operationId":"chatControllerSendMessage"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessagesResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get messages for a room (cursor-paginated, newest first)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerGetMessages"}},"/auth/chat/rooms/{id}/messages/media":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a private image, video, audio, or document message to a room","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ChatController"],"operationId":"chatControllerSendMediaMessage"}},"/auth/chat/rooms/{id}/messages/{messageId}/reaction":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageReactionsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Set or replace the current user reaction on a message","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"path","name":"messageId","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutChatMessageReactionBody"}}}},"tags":["ChatController"],"operationId":"chatControllerPutMessageReaction"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageReactionsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove the current user reaction from a message","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"path","name":"messageId","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerDeleteMessageReaction"}},"/auth/chat/rooms/{id}/participants":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRoomResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Add participants to a GROUP room","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddParticipantsBodyCreate"}}}},"tags":["ChatController"],"operationId":"chatControllerAddParticipants"}},"/auth/chat/rooms/{id}/participants/{userId}":{"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove participant from a room","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"path","name":"userId","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerRemoveParticipant"}},"/auth/chat/rooms/{id}/read":{"put":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Mark room as read","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerMarkRead"}},"/auth/chat/rooms/{id}/presence":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatPresenceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get online and typing state for active room participants","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ChatController"],"operationId":"chatControllerGetPresence"}},"/auth/chat/presence":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatPresenceOverviewResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get online and typing state for every room in the chat overview","security":[{"bearerAuth":[]}],"parameters":[],"tags":["ChatController"],"operationId":"chatControllerGetPresenceOverview"}},"/auth/chat/rooms/{id}/typing":{"put":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Set or clear the current participant typing lease","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTypingBody"}}}},"tags":["ChatController"],"operationId":"chatControllerSetTyping"}},"/auth/chat/unread-count":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCountResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get total unread count across all rooms","security":[{"bearerAuth":[]}],"parameters":[],"tags":["ChatController"],"operationId":"chatControllerGetUnreadCount"}},"/auth/uploads/chunked":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Start an upload sent in pieces: {name, size, mimetype} → {uploadId, chunkSize, chunks, expiresAt}","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ChunkedUploadsController"],"operationId":"chunkedUploadsControllerCreateChunkedUpload"}},"/auth/uploads/chunked/{id}/{index}":{"put":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send piece `index` (0-based) as the raw request body (application/octet-stream), exactly chunkSize bytes except the last. Sending a piece again replaces it.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"index","required":true,"schema":{"type":"string"}}],"tags":["ChunkedUploadsController"],"operationId":"chunkedUploadsControllerPutChunk"}},"/auth/uploads/chunked/results/{ticket}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The answer to a slow upload that answered 202 {ticket} (sent with X-Voxmin-Respond: async): {done:false} until it is ready, then {done:true, status, body}","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"string"}}],"tags":["ChunkedUploadsController"],"operationId":"chunkedUploadsControllerGetChunkedResult"}},"/auth/uploads/chunked/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Which pieces of an upload have arrived (to resume one)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ChunkedUploadsController"],"operationId":"chunkedUploadsControllerGetChunkedUpload"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cancel an upload sent in pieces","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ChunkedUploadsController"],"operationId":"chunkedUploadsControllerDeleteChunkedUpload"}},"/auth/credit-accounts":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new UserCreditAccount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelCreate"}}}},"tags":["CreditAccountController"],"operationId":"creditAccountControllerCreateItem"}},"/auth/credit-accounts/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a UserCreditAccount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditAccountController"],"operationId":"creditAccountControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a UserCreditAccount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditAccountController"],"operationId":"creditAccountControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserCreditAccount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelUpdate"}}}},"tags":["CreditAccountController"],"operationId":"creditAccountControllerUpdate"}},"/auth/credit-accounts/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserCreditAccount"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserCreditAccount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditAccountSearchParams"}}}},"tags":["CreditAccountController"],"operationId":"creditAccountControllerGetAll"}},"/auth/credit-plan-prices":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new CreditPlanPrice","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceModelCreate"}}}},"tags":["CreditPlanPriceController"],"operationId":"creditPlanPriceControllerCreateItem"}},"/auth/credit-plan-prices/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a CreditPlanPrice by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditPlanPriceController"],"operationId":"creditPlanPriceControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a CreditPlanPrice by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditPlanPriceController"],"operationId":"creditPlanPriceControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a CreditPlanPrice by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceModelUpdate"}}}},"tags":["CreditPlanPriceController"],"operationId":"creditPlanPriceControllerUpdate"}},"/auth/credit-plan-prices/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of CreditPlanPrice"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all CreditPlanPrice","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanPriceSearchParams"}}}},"tags":["CreditPlanPriceController"],"operationId":"creditPlanPriceControllerGetAll"}},"/auth/credit-plans/active":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{}}}},"description":"Success"}},"summary":"List active credit plans with country-aware selection and localized pricing","parameters":[{"in":"query","name":"currency","required":false,"schema":{"type":"string"}},{"in":"query","name":"country","required":false,"schema":{"type":"string"}}],"tags":["CreditPlansController"],"operationId":"creditPlansControllerGetActivePlans"}},"/auth/credit-plans":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanBodyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new CreditPlanBody","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanBodyModelCreate"}}}},"tags":["CreditPlansController"],"operationId":"creditPlansControllerCreateItem"}},"/auth/credit-plans/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a CreditPlan by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditPlansController"],"operationId":"creditPlansControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a CreditPlan by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditPlansController"],"operationId":"creditPlansControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanBodyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a CreditPlanBody by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanBodyModelUpdate"}}}},"tags":["CreditPlansController"],"operationId":"creditPlansControllerUpdate"}},"/auth/credit-plans/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of CreditPlan"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all CreditPlan","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPlanSearchParams"}}}},"tags":["CreditPlansController"],"operationId":"creditPlansControllerGetAll"}},"/auth/credit-plans/{id}/purchase":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditOrderResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Initiate a payment order for a credit plan","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"currency","required":false,"schema":{"type":"string"}}],"tags":["CreditPlansController"],"operationId":"creditPlansControllerPurchasePlan"}},"/auth/credit-transactions":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new UserCreditTransaction","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelCreate"}}}},"tags":["CreditTransactionController"],"operationId":"creditTransactionControllerCreateItem"}},"/auth/credit-transactions/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a UserCreditTransaction by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditTransactionController"],"operationId":"creditTransactionControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a UserCreditTransaction by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CreditTransactionController"],"operationId":"creditTransactionControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserCreditTransaction by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelUpdate"}}}},"tags":["CreditTransactionController"],"operationId":"creditTransactionControllerUpdate"}},"/auth/credit-transactions/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserCreditTransaction"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserCreditTransaction","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTransactionSearchParams"}}}},"tags":["CreditTransactionController"],"operationId":"creditTransactionControllerGetAll"}},"/auth/cue-sheets/transcribe":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Transcribe an upload or YouTube video into an editable lyric sheet","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"audio":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerTranscribe"}},"/auth/cue-sheets":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a cue sheet from lyrics you already have","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCueSheetPayload"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerCreate"}},"/auth/cue-sheets/import":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a cue sheet from an LRC, enhanced LRC, SRT, WebVTT or Voxmin JSON file","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"lyrics":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerImportSheet"}},"/auth/cue-sheets/from-job/{jobId}":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Open a finished lyric or karaoke job’s lyrics for editing","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetFromJobPayload"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerFromJob"}},"/auth/cue-sheets/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Fetch a cue sheet","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerGetById"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Replace a cue sheet after editing","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCueSheetPayload"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerUpdate"}},"/auth/cue-sheets/admin/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: fetch any cue sheet","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerAdminGetById"}},"/auth/cue-sheets/admin/{id}/export":{"get":{"responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: download any cue sheet as JSON or enhanced LRC","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"format","required":false,"schema":{"type":"string"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerAdminExportSheet"}},"/auth/cue-sheets/{id}/export":{"get":{"responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download a cue sheet as LRC, enhanced LRC, SRT, WebVTT, text or JSON","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"format","required":false,"schema":{"type":"string"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerExportSheet"}},"/auth/cue-sheets/{id}/source":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetSourceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get the YouTube id or a signed link for the song behind these lyrics","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerGetSourceLink"}},"/auth/cue-sheets/{id}/source/prepare":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetSourceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Fetch this sheet’s YouTube source into our own storage and return a signed link","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareCueSheetSourcePayload"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerPrepareSourceLink"}},"/auth/cue-sheets/by-job/{jobId}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Fetch the cue sheet a job was rendered from","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerGetByJob"}},"/auth/cue-sheets/by-job/{jobId}/lines":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingingLyricsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Fetch the timed lines to sing a karaoke or lyric track with","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerGetLinesForJob"}},"/auth/cue-sheets/{id}/background":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Attach the background image this sheet will be rendered over","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"background":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["CueSheetController"],"operationId":"cueSheetControllerAttachBackground"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CueSheetResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove the background image attached to this sheet","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CueSheetController"],"operationId":"cueSheetControllerClearBackground"}},"/auth/currencies":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new Currency","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyModelCreate"}}}},"tags":["CurrencyController"],"operationId":"currencyControllerCreateItem"}},"/auth/currencies/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Currency by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CurrencyController"],"operationId":"currencyControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Currency by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CurrencyController"],"operationId":"currencyControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a Currency by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyModelUpdate"}}}},"tags":["CurrencyController"],"operationId":"currencyControllerUpdate"}},"/auth/currencies/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of CurrencySearchResponse"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all CurrencySearchResponse","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencySearchParams"}}}},"tags":["CurrencyController"],"operationId":"currencyControllerGetAll"}},"/auth/currency-exchanges":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new CurrencyExchange","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeModelCreate"}}}},"tags":["CurrencyExchangeController"],"operationId":"currencyExchangeControllerCreateItem"}},"/auth/currency-exchanges/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a CurrencyExchange by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CurrencyExchangeController"],"operationId":"currencyExchangeControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a CurrencyExchange by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["CurrencyExchangeController"],"operationId":"currencyExchangeControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a CurrencyExchange by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeModelUpdate"}}}},"tags":["CurrencyExchangeController"],"operationId":"currencyExchangeControllerUpdate"}},"/auth/currency-exchanges/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of CurrencyExchangeSearchResponse"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all CurrencyExchangeSearchResponse","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyExchangeSearchParams"}}}},"tags":["CurrencyExchangeController"],"operationId":"currencyExchangeControllerGetAll"}},"/auth/demo-song-admin/health":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: confirm the guest demo queue service is registered","security":[{"bearerAuth":[]}],"parameters":[],"tags":["DemoSongAdminController"],"operationId":"demoSongAdminControllerHealth"}},"/auth/demo-song/config":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongPublicConfigResponse"}}},"description":"Success"}},"summary":"Get the public guest-song demo configuration","parameters":[],"tags":["DemoSongController"],"operationId":"demoSongControllerGetConfig"}},"/auth/demo-song/references":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongReferenceResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"}},"summary":"Stage an uploaded guest reference recording for a song preview","parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["DemoSongController"],"operationId":"demoSongControllerUploadReference"}},"/auth/demo-song/references/youtube":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongReferenceResponse"}}},"description":"Success"}},"summary":"Stage guest reference audio imported from a YouTube link","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongYoutubeReferenceRequest"}}}},"tags":["DemoSongController"],"operationId":"demoSongControllerImportYoutubeReference"}},"/auth/demo-song/jobs":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongPublicResponse"}}},"description":"Success"}},"summary":"Create one queued, max-quality guest AI-song preview","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongCreateRequest"}}}},"tags":["DemoSongController"],"operationId":"demoSongControllerCreate"}},"/auth/demo-song/jobs/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongPublicResponse"}}},"description":"Success"}},"summary":"Poll a guest AI-song preview by its unguessable UUID","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["DemoSongController"],"operationId":"demoSongControllerGet"}},"/auth/demo-song-jobs/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of DemoSongJobList"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all DemoSongJobList","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongJobSearchParams"}}}},"tags":["DemoSongJobAdminController"],"operationId":"demoSongJobAdminControllerSearch"}},"/auth/demo-song-jobs/summary":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongAdminSummary"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: aggregate guest demo usage, outcomes, countries, and provider cost","security":[{"bearerAuth":[]}],"parameters":[],"tags":["DemoSongJobAdminController"],"operationId":"demoSongJobAdminControllerSummary"}},"/auth/demo-song-jobs/{id}/playback-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongPlaybackLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: get a time-limited playback link for a demo song render","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["DemoSongJobAdminController"],"operationId":"demoSongJobAdminControllerPlaybackLink"}},"/auth/demo-song-jobs/{id}/reference-playback-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongPlaybackLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: get a time-limited playback link for the guest reference recording","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["DemoSongJobAdminController"],"operationId":"demoSongJobAdminControllerReferencePlaybackLink"}},"/auth/demo-song-jobs/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: delete a guest demo job and any stored private audio","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["DemoSongJobAdminController"],"operationId":"demoSongJobAdminControllerDeleteJob"}},"/auth/demo-song-quotas/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of DemoSongQuotaList"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all DemoSongQuotaList","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoSongQuotaSearchParams"}}}},"tags":["DemoSongQuotaAdminController"],"operationId":"demoSongQuotaAdminControllerSearch"}},"/auth/demo-song-quotas/{identityKey}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: delete a guest quota identity and all of its demo jobs","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"identityKey","required":true,"schema":{"type":"string"}}],"tags":["DemoSongQuotaAdminController"],"operationId":"demoSongQuotaAdminControllerDeleteQuota"}},"/auth/discounts/discountType":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"get discountType","security":[{"bearerAuth":[]}],"parameters":[],"tags":["DiscountsController"],"operationId":"discountsControllerGetDiscountTypes"}},"/auth/discounts":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new Discount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountModelCreate"}}}},"tags":["DiscountsController"],"operationId":"discountsControllerCreateItem"}},"/auth/discounts/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Discount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["DiscountsController"],"operationId":"discountsControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Discount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["DiscountsController"],"operationId":"discountsControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a Discount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountModelUpdate"}}}},"tags":["DiscountsController"],"operationId":"discountsControllerUpdate"}},"/auth/discounts/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of Discount"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all Discount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountSearchParams"}}}},"tags":["DiscountsController"],"operationId":"discountsControllerGetAll"}},"/auth/email-templates/preview":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderEmailTemplateResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Render raw MJML + variables to HTML (live preview, no DB write)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderEmailTemplateRequest"}}}},"tags":["EmailTemplatesController"],"operationId":"emailTemplatesControllerPreviewTemplate"}},"/auth/email-templates":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateBodyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new EmailTemplateBody","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateBodyModelCreate"}}}},"tags":["EmailTemplatesController"],"operationId":"emailTemplatesControllerCreateItem"}},"/auth/email-templates/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of EmailTemplate"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all EmailTemplate","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["EmailTemplatesController"],"operationId":"emailTemplatesControllerSearchItems"}},"/auth/email-templates/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a EmailTemplate by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["EmailTemplatesController"],"operationId":"emailTemplatesControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateBodyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a EmailTemplateBody by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateBodyModelUpdate"}}}},"tags":["EmailTemplatesController"],"operationId":"emailTemplatesControllerUpdate"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a EmailTemplate by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["EmailTemplatesController"],"operationId":"emailTemplatesControllerDeleteItem"}},"/auth/external-apis/supported-external-apis":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"security":[{"bearerAuth":[]}],"parameters":[],"tags":["ExternalApis"],"operationId":"externalApisGetSupportedExternalApis"}},"/auth/external-apis":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new ExternalApi","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiModelCreate"}}}},"tags":["ExternalApis"],"operationId":"externalApisCreateItem"}},"/auth/external-apis/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a ExternalApi by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ExternalApis"],"operationId":"externalApisDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a ExternalApi by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ExternalApis"],"operationId":"externalApisGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a ExternalApi by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiModelUpdate"}}}},"tags":["ExternalApis"],"operationId":"externalApisUpdate"}},"/auth/external-apis/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of ExternalApi"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all ExternalApi","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalApiSearchParams"}}}},"tags":["ExternalApis"],"operationId":"externalApisGetAll"}},"/auth/external-users/{id}/authorizations":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelAuthorizations"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Assign roles or permissions to user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationsPayloadAuthorizations"}}}},"tags":["ExternalUsers"],"operationId":"externalUsersAssignRolesOrPermissions"}},"/auth/external-users":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new ExternalUser","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelCreate"}}}},"tags":["ExternalUsers"],"operationId":"externalUsersCreateItem"}},"/auth/external-users/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a ExternalUser by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ExternalUsers"],"operationId":"externalUsersDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a ExternalUser by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["ExternalUsers"],"operationId":"externalUsersGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a ExternalUser by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserModelUpdate"}}}},"tags":["ExternalUsers"],"operationId":"externalUsersUpdate"}},"/auth/external-users/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of ExternalUser"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all ExternalUser","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalUserSearchParams"}}}},"tags":["ExternalUsers"],"operationId":"externalUsersGetAll"}},"/auth/admin/face-swap/runs":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: face swaps and face edits, newest first — filter by userId, watermarkId, status; page (50 a page, pageSize up to 100)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"userId","required":false,"schema":{"type":"string"}},{"in":"query","name":"watermarkId","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"pageSize","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapAdminController"],"operationId":"faceSwapAdminControllerListRuns"}},"/auth/admin/face-swap/reports":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: face-swap reports, newest first, each with its run — filter by status (open|reviewed|actioned|dismissed); page","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"pageSize","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapAdminController"],"operationId":"faceSwapAdminControllerListReports"}},"/auth/admin/face-swap/runs/{id}/output":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: a fresh signed link to a run's output (the list's links expire an hour after it loads); download=1 signs it so the browser saves it","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"download","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapAdminController"],"operationId":"faceSwapAdminControllerRunOutput"}},"/auth/admin/face-swap/runs/{id}/takedown":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: take a run down — its output is deleted, the run marked taken_down, its open reports actioned","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapTakedownBody"}}}},"tags":["FaceSwapAdminController"],"operationId":"faceSwapAdminControllerTakedownRun"}},"/auth/admin/face-swap/reports/{id}/resolve":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: resolve a report — dismiss it, or take its run down","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapResolveReportBody"}}}},"tags":["FaceSwapAdminController"],"operationId":"faceSwapAdminControllerResolveReport"}},"/auth/face-swap/config":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Whether face swap is on, the terms and whether they are accepted, prices, limits and how many swaps were made today","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetConfig"}},"/auth/face-swap/terms":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Accept the current face swap terms (version must be the current one)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapTermsBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerAcceptTerms"}},"/auth/face-swap/faces":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"My faces: the faces the member may swap in, with short-lived picture links","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FaceSwapController"],"operationId":"faceSwapControllerListFaces"},"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Add a face (a face set of 1-10 photos): multipart (files[] — or file / image — up to 10 photos of the same one person, name, consentKind self|permission|generated, attestation \"true\", attestationVersion); or JSON {extractId, picks: [face indexes], name, consentKind, attestation, attestationVersion} from a face extraction; or JSON {source: {kind: \"flo\", floProjectId, mediaId}, …} for a photo in one of the member's Flo projects. One photo must show exactly one face (no_face / many_faces); several must all show the same person (422 mixed_faces with indexes) → the face with its images","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"image":{"type":"string","format":"binary"},"file":{"type":"string","format":"binary"},"files":{"type":"array","items":{"type":"string","format":"binary"}},"files[]":{"type":"array","items":{"type":"string","format":"binary"}}},"type":"object"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateFace"}},"/auth/face-swap/faces/extractions":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Take the clean faces of one person out of a video, for a face set (free; one at a time): multipart video, or JSON {source: {kind: \"flo\", floProjectId, mediaId}} → {extractId}; the video may be at most twice the longest video swap","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"video":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateFaceExtraction"}},"/auth/face-swap/faces/extractions/{extractId}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A face extraction: {status queued|running|succeeded|failed, personCount, faces: [{index, thumbUrl, score, frame}], rejected: {small, blurry, profile, dark, bright, occluded, other_person}, error?}","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"extractId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetFaceExtraction"}},"/auth/face-swap/faces/{id}/images":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Add photos to a face (at most 10 in all, else 400 too_many_images): multipart files[], or JSON {extractId, picks} (an extraction's face indexes) or {refineId, picks} (an AI refine's photo ids); each must be the same person as the face (422 mixed_faces with indexes) → the face with its images","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"files":{"type":"array","items":{"type":"string","format":"binary"}},"files[]":{"type":"array","items":{"type":"string","format":"binary"}}},"type":"object"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerAddFaceImages"}},"/auth/face-swap/faces/{id}/refines":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"AI refine: new photos of one of a face's photos, one change each (presets: look_left, look_right, look_up, look_down, smile, laugh, sad, surprised, angry, pain, neutral; and/or custom: an expression in words; 1-4 in all), drawn on the GPU pool and charged per photo that comes back → {refineId, credits, candidates: [{id, preset, label}], notStarted}; nothing is added to the face until picked","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceRefineCreateBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateFaceRefine"}},"/auth/face-swap/faces/{id}/refines/{refineId}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"An AI refine: {status running|done, candidates: [{id, preset, label, status queued|running|succeeded|failed, progress, thumbUrl, imageUrl, error}]}; keep some with POST /faces/:id/images {refineId, picks}","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"refineId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetFaceRefine"}},"/auth/face-swap/faces/{id}/refines/{refineId}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop the photos of an AI refine not made yet (their credits are not taken) → the refine","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"refineId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerCancelFaceRefine"}},"/auth/face-swap/faces/{id}/images/{imageId}":{"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove one photo of a face (its files are deleted; not the last one: 400 last_image) → the face with its images","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"imageId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerDeleteFaceImage"}},"/auth/face-swap/faces/{id}":{"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Rename a face","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapRenameBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerRenameFace"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a face: its pictures are deleted from storage","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerDeleteFace"}},"/auth/face-swap/uploads":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upload a photo or video to detect people in, swap or edit faces on, or the audio of a lip sync (multipart: file, at most maxUploadMb of GET /config; kept for a day) → 400 too_small {minSide, width, height} for a photo or video under 256 px on its shorter side; 413 too_long over the size","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateUpload"}},"/auth/face-swap/detect":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Find the people in an upload or a Flo project photo/video (free), over startFrame/endFrame (the file's own frames, or counted at frameRate: a Flo shot's trim at its project fps) → {detectId, cached} (cached: an earlier detection of the same file and range answers, found or still running) | 400 too_small for a target too small to swap on","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapDetectBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateDetect"}},"/auth/face-swap/detect/groups":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The same people across finished detections (a whole video's shots), by face: {detectIds} → {complete, groups: [{groupId, thumbUrl, shots, members: [{detectId, personId}]}]} (most shots first; complete false: some people could not be compared and are on their own) | 409 not_ready while one is still running","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapDetectGroupsBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerGroupDetections"}},"/auth/face-swap/detect/{detectId}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A detection: its status and, when done, the people with thumbnails","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"detectId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetDetect"}},"/auth/face-swap/swaps":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Start a face swap (credits reserved now, charged when it is delivered) → {swapId, jobId, credits}","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapCreateBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateSwap"},"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The member's face swaps and face edits, newest first","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerListSwaps"}},"/auth/face-swap/face-edits":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Start a face edit — kind enhance|age|expression|lipsync on a photo, a preview frame or a video range (a lip sync takes audio and is video only); priced as a swap times its multiplier, credits reserved now → {swapId, jobId, credits}. Polled, listed and cancelled with the swap routes.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceEditCreateBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateFaceEdit"}},"/auth/face-swap/swaps/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A face swap: status, progress, the output link when done, its watermark id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetSwap"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a finished face swap or edit from the history: its output file and its Job are deleted (409 busy while it is being made); the record the terms keep stays","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerDeleteSwap"}},"/auth/face-swap/swaps/{id}/output":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A finished face swap's file, signed now (a list's links last an hour); download=1 signs it so the browser saves it","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"download","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetSwapOutput"}},"/auth/face-swap/swaps/{id}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cancel a face swap that is waiting or running; its credits go back","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerCancelSwap"}},"/auth/face-swap/estimate":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The price of a swap or a face edit: mode image|frame|video, seconds for a video, kind swap (default)|enhance|age|expression|lipsync","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"mode","required":false,"schema":{"type":"string"}},{"in":"query","name":"seconds","required":false,"schema":{"type":"string"}},{"in":"query","name":"kind","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetEstimate"}},"/auth/face-swap/reports":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Report a face-swapped picture or video, by its watermark id or a swap id","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaceSwapReportBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateReport"}},"/auth/face-swap/import-url/options":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Import from a link: whether it is on, the sites that may be imported from (from the downloader, never hardcoded), the segment lengths, the longest video and today’s count","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetImportUrlOptions"}},"/auth/face-swap/import-url/preview":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The preview card for a link (title, length, thumbnail), and `tooSmallForFaceSwap` / `minSide` for a link no face swap could use → 403 url_not_allowed | 400 invalid | 422 private_video","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUrlPreviewBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerPreviewImportUrl"}},"/auth/face-swap/uploads/from-url":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Import a video from a link as uploads, one per part, to swap a piece at a time → {importId, jobId, uploads} | 422 too_small when the best resolution on offer is under 256 px. Long-running: poll GET /imports/:importId, whose `uploads` fill in as the parts land.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUrlCreateBody"}}}},"tags":["FaceSwapController"],"operationId":"faceSwapControllerCreateUploadFromUrl"}},"/auth/face-swap/imports":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The member's imports from a link for Face Studio, newest first (the segment strip)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerListImports"}},"/auth/face-swap/imports/{importId}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"An import: its stage (downloading → splitting → importing → done), progress, the preview card and `uploads: [{uploadId, index, seconds}]` once done","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"importId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerGetImport"}},"/auth/face-swap/imports/{importId}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop an import that is still waiting or running; nothing is charged","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"importId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapController"],"operationId":"faceSwapControllerCancelImport"}},"/auth/flo-internal/face-swap/config":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: face swap for the member (X-Flo-User) — on or off, terms accepted, prices, limits, used today","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerConfig"}},"/auth/flo-internal/face-swap/estimate":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: the price of a swap (mode image|frame|video, seconds for a video)","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerEstimate"}},"/auth/flo-internal/face-swap/faces":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: the member's faces (X-Flo-User)","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerFaces"}},"/auth/flo-internal/face-swap/detect":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: find the people in a Flo photo or video → {detectId}","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerDetect"}},"/auth/flo-internal/face-swap/detect/{detectId}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a detection","parameters":[{"in":"path","name":"detectId","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerGetDetect"}},"/auth/flo-internal/face-swap/swaps":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: start a face swap for the member (priced and limited like theirs) → {swapId, jobId, credits}","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerSwaps"}},"/auth/flo-internal/face-swap/face-edits":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: start a face edit for the member (enhance|age|expression|lipsync; priced and limited like theirs) → {swapId, jobId, credits}","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerFaceEdits"}},"/auth/flo-internal/face-swap/uploads":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: upload a photo, video or a lip sync's audio (WAV, MP3, M4A) for the member — the file is the raw body, at most faceSwapMaxUploadMb; kept for a day → {uploadId, kind, width, height, durationS}","parameters":[],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerUploads"}},"/auth/flo-internal/face-swap/swaps/{id}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a face swap or face edit","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerGetSwap"}},"/auth/flo-internal/face-swap/swaps/{id}/cancel":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: cancel a face swap","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FaceSwapInternalController"],"operationId":"faceSwapInternalControllerCancelSwap"}},"/auth/feed/posts/{id}/public":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedFeedPostResponse"}}},"description":"Success"}},"summary":"Get one post through its share link, without requiring sign-in","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerGetSharedPost"}},"/auth/feed/posts/{id}/public/media":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedMediaResponse"}}},"description":"Success"}},"summary":"Get a signed URL for a shared post’s media, without requiring sign-in","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerGetSharedMedia"}},"/auth/feed/posts/{id}/public/media/{mediaId}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedMediaResponse"}}},"description":"Success"}},"summary":"Get a signed URL for one item of a shared post, without requiring sign-in","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mediaId","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerGetSharedMediaItem"}},"/auth/feed/posts":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePostResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new feed post","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePostBody"}}}},"tags":["FeedController"],"operationId":"feedControllerCreatePost"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List visible feed posts, optionally filtered by author (READY only, newest first, cursor-paginated)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":30,"minimum":1,"multipleOf":1,"default":20}},{"in":"query","required":false,"name":"cursor","schema":{"type":"string"}},{"in":"query","required":false,"name":"userId","schema":{"type":"integer","minimum":1,"multipleOf":1}}],"tags":["FeedController"],"operationId":"feedControllerListFeed"}},"/auth/feed/posts/{id}/complete":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedPostResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Mark an uploaded feed post as ready","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerCompletePost"}},"/auth/feed/posts/{id}":{"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a feed post and its storage objects","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerDeletePost"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedPostResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get one visible feed post with viewer-specific reaction state","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerGetPost"}},"/auth/feed/posts/{id}/media/{mediaId}/thumbnail":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedThumbnailUploadResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Issue a signed upload URL for a video post thumbnail","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mediaId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignThumbnailUploadBody"}}}},"tags":["FeedController"],"operationId":"feedControllerSignThumbnailUpload"}},"/auth/feed/posts/{id}/report":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedPostReportResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Report a visible feed post for administrator review","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportFeedPostBody"}}}},"tags":["FeedController"],"operationId":"feedControllerReportPost"}},"/auth/feed/realtime":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedRealtimeResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get feed realtime subscription credentials","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FeedController"],"operationId":"feedControllerRealtime"}},"/auth/feed/posts/{id}/media":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedMediaResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a signed URL for the post media","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerGetMedia"}},"/auth/feed/posts/{id}/media/{mediaId}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedMediaResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a signed URL for one item in a multi-media post","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mediaId","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerGetMediaItem"}},"/auth/feed/posts/{id}/reaction":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedPostResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upsert or change a reaction on a post (returns full post)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutReactionBody"}}}},"tags":["FeedController"],"operationId":"feedControllerPutReaction"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedPostResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove reaction from a post (returns full post)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerDeleteReaction"}},"/auth/feed/posts/{id}/comments":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List comments for a post (top-level or by parentId)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","required":false,"name":"parentId","schema":{"type":"string","format":"uuid"}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1,"default":30}},{"in":"query","required":false,"name":"cursor","schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerListComments"},"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a comment on a post","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommentBody"}}}},"tags":["FeedController"],"operationId":"feedControllerCreateComment"}},"/auth/feed/comments/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}},"description":"Success"},"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a comment (tombstones if it has replies, hard deletes otherwise)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FeedController"],"operationId":"feedControllerDeleteComment"}},"/auth/flo-gpu/api/wrapper/{workflow}/{task}/generate":{"post":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: accept a render for a workflow task (wrapper protocol; answers 504 {job_id})","parameters":[{"in":"path","name":"workflow","required":true,"schema":{"type":"string"}},{"in":"path","name":"task","required":true,"schema":{"type":"string"}}],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerGenerateTask"}},"/auth/flo-gpu/api/wrapper/{workflow}/generate":{"post":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: accept a render for a workflow (wrapper protocol; answers 504 {job_id})","parameters":[{"in":"path","name":"workflow","required":true,"schema":{"type":"string"}}],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerGenerateFlat"}},"/auth/flo-gpu/api/wrapper/jobs/{id}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: render status (never 404; unknown runs are failed)","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerJobStatus"}},"/auth/flo-gpu/api/wrapper/jobs/{id}/image":{"get":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: the rendered output (first delivery settles credits; stored in the project when it has a media id)","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerJobImage"}},"/auth/flo-gpu/api/wrapper/jobs/{id}/text":{"get":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: a finished run's data answer (object select / track; wrapper protocol)","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerJobText"}},"/auth/flo-gpu/api/wrapper/jobs/{id}/cancel":{"post":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: cancel one render Flow started (wrapper protocol; same terms as the owner's cancel)","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerJobCancel"}},"/auth/flo-gpu/api/wrapper/workflows":{"get":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: workflows the pool accepts","parameters":[],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerWorkflows"}},"/auth/flo-gpu/api/wrapper/free":{"post":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio GPU gateway: free VRAM (a no-op; the pool manages its own workers)","parameters":[],"tags":["FloGpuGatewayController"],"operationId":"floGpuGatewayControllerFree"}},"/auth/flo-internal/settings":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: the admin's limits Flow applies itself → {stillsAtOnce, locationViews, audioChecks, retakeBadAudio, speakerChecks, retakeWrongSpeaker, web, agentTools, videoModels[{alias, label, workflow, default, enabled, tasks, grid}]}","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerSettings"}},"/auth/flo-internal/voice/hold":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: hold credits for a line of OmniVoice speech (a FLO_STUDIO_VOICE job) → {jobId, heldCredits, creditsPerSecond}","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerVoiceHold"}},"/auth/flo-internal/voice/settle":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: charge a held line to the seconds of speech produced","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerVoiceSettle"}},"/auth/flo-internal/voice/release":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: free a held line whose synthesis failed","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerVoiceRelease"}},"/auth/flo-internal/music/hold":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: hold credits for music made from a caption (a FLO_STUDIO_MUSIC job; estimateSeconds = duration x takes) → {jobId, heldCredits, creditsPerSecond}","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerMusicHold"}},"/auth/flo-internal/music/settle":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: charge held music to the seconds delivered (every take counted)","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerMusicSettle"}},"/auth/flo-internal/music/release":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: free held music whose generation failed","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerMusicRelease"}},"/auth/flo-internal/agent/turns/close":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: an assistant turn has ended — charge the tokens its model calls used, once → {charged, calls, tokens}","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerAgentTurnClose"}},"/auth/flo-internal/agent/web":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: run the assistant's web_search or web_fetch for a turn {turnId, tool, args} → {ok, result, display}; its cost joins the turn's","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerAgentWeb"}},"/auth/flo-internal/agent/tools":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: the MCP tools the assistant may use now, by pack → {enabled, packs[{id, label, summary, tools}], tools[{name, title, summary, description, pack, spends, asksFirst, readOnly, needsApproval, inputSchema}]}","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerAgentTools"}},"/auth/flo-internal/agent/tool":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: run one MCP tool for a turn as its member {turnId, tool, args, approved?} → {ok, result, structured?, display, needsApproval?}; a tool that spends or cannot be undone runs only with approved: true","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerAgentTool"}},"/auth/flo-internal/projects":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a user's projects with their revisions (?user=voxmin:<id>)","parameters":[],"tags":["FloInternalController"],"operationId":"floInternalControllerListProjects"}},"/auth/flo-internal/projects/{pid}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a project document and its revision","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerGetProject"},"put":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: save a project document (optimistic: baseRevision; creates the project on its first save)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerPutProject"},"delete":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: delete a project (soft delete, then its renders' Jobs; its files, chat and document are swept afterwards)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerDeleteProject"}},"/auth/flo-internal/projects/{pid}/events":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: an export or a preview ended — tell the open editors (flo_project_changed, sections [\"export\"])","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerPostProjectEvent"}},"/auth/flo-internal/projects/{pid}/chat":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a project's chat, oldest first — the whole thread, or the last ?limit=N turns (at most 1000)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerGetChat"},"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: append one chat turn (Flow’s ChatTurn JSON, opaque here)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerPostChat"},"delete":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: clear a project's chat (the app's \"start over\") → {cleared}","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerClearChat"}},"/auth/flo-internal/projects/{pid}/files/{kind}/{name}":{"put":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: store a project file (raw body; same name overwrites; identical SHA-256 is a no-op)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"kind","required":true,"schema":{"type":"string"}},{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerPutFile"},"head":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a project file’s headers (size, type, ETag)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"kind","required":true,"schema":{"type":"string"}},{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerHeadFile"},"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: a project file, streamed from storage (Range, ETag)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"kind","required":true,"schema":{"type":"string"}},{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerGetFile"},"delete":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: delete a project file and its record","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"kind","required":true,"schema":{"type":"string"}},{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerDeleteFile"}},"/auth/flo-internal/projects/{pid}/file-copies":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: copy a file of another project of the same user into this one, inside storage (body {from, kind, name}; same kind and name). What a project duplicate does per file instead of downloading and uploading it again. 404 \"Source file not found\" when the source holds no such file","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloInternalController"],"operationId":"floInternalControllerCopyFile"}},"/auth/flo-llm/v1/models":{"get":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio LLM gateway: models Flow may ask for","parameters":[],"tags":["FloLlmGatewayController"],"operationId":"floLlmGatewayControllerModels"}},"/auth/flo-llm/v1/chat/completions":{"post":{"responses":{"200":{"description":"Success"}},"summary":"FloStudio LLM gateway: OpenAI-compatible chat completions (streaming and tool calls)","parameters":[],"tags":["FloLlmGatewayController"],"operationId":"floLlmGatewayControllerChatCompletions"}},"/auth/flo-studio-admin/summary":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: FloStudio revenue, GPU cost (direct, overhead, waste), margin, MiniMax savings, tier × backend matrix, daily series and pod fleet","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerSummary"}},"/auth/flo-studio-admin/runs":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: list FloStudio generation runs, newest first","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"pageSize","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"tier","required":false,"schema":{"type":"string"}},{"in":"query","name":"purpose","required":false,"schema":{"type":"string"}},{"in":"query","name":"kind","required":false,"schema":{"type":"string"}},{"in":"query","name":"userId","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerListRuns"}},"/auth/flo-studio-admin/runs/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: one FloStudio run with timings, cost breakdown, last error and wrapper meta","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerGetRun"}},"/auth/flo-studio-admin/pods":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: FloStudio GPU workers (own hosts and RunPod pods) with active runs","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"includeTerminated","required":false,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerListPods"}},"/auth/flo-studio-admin/pods/launch":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: launch a warm RunPod pod (respects the spend caps)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"properties":{"profileKey":{"type":"string"}},"type":"object"}}}},"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerLaunchPod"}},"/auth/flo-studio-admin/pods/terminate-all":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: terminate every RunPod pod (own GPU hosts are untouched)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerTerminateAllPods"}},"/auth/flo-studio-admin/pods/{id}/comfyui-link":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: a 5-minute login link to a live GPU worker's ComfyUI UI; the worker trades it for a 12 h session cookie, and the worker's token never leaves the backend","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerComfyLink"}},"/auth/flo-studio-admin/pods/{id}/drain":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: stop assigning new runs to a GPU worker","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerDrainPod"}},"/auth/flo-studio-admin/pods/{id}/terminate":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: terminate a RunPod pod (own GPU hosts can only be drained)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerTerminatePod"}},"/auth/flo-studio-admin/scheduler":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: scheduler leader, learned idle timeout and stats, live queue and the last scheduler events","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerScheduler"}},"/auth/flo-studio-admin/health":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: Flow, RunPod, network volume and own-GPU health, and which FloStudio secrets are set","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerHealth"}},"/auth/flo-studio-admin/runpod/gpu-types":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: every GPU type a GPU cloud rents — id, name, memory, secure/community price and stock — asked live on each call (the GPU profile editor's list). ?provider=vast for vast.ai (default RunPod)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"provider","required":false,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerRunpodGpuTypes"}},"/auth/flo-studio-admin/gpu-clouds/{provider}/check":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: test a GPU cloud's API for FloStudio (runpod | vast), step by step: the key, the live GPU market, the volume or vast.ai's weights and Cloudflare tunnel, and whether each of its GPU rows can be rented now. Read-only except vast.ai's tunnel step, which creates a throwaway Cloudflare tunnel and deletes it","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"provider","required":true,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerCheckGpuCloud"}},"/auth/flo-studio-admin/serverless/{provider}/check":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: test a provider's serverless endpoints for FloStudio (runpod | vast), step by step: the key, the endpoints on the account and each one's health, the rows' setup (RunPod: network volumes). Read-only","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"provider","required":true,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerCheckServerless"}},"/auth/flo-studio-admin/calculator-defaults":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: economics calculator inputs from live pricing, config, learned speeds and recent demand, for one video model (`model`, an alias; default: the default model)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"model","required":false,"schema":{"type":"string"}}],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerCalculatorDefaults"}},"/auth/flo-studio-admin/billing/reconcile":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: reconcile RunPod pod costs against the provider billing API","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioAdminController"],"operationId":"floStudioAdminControllerReconcileBilling"}},"/auth/flo-studio/config":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio tiers with their credit rates, still/score prices, project cap and upload limit","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetConfig"}},"/auth/flo-studio/health":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Flow's health (sanitized) plus whether GPU rendering is on and where it can run","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetHealth"}},"/auth/flo-studio/settings":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Flow's render settings (read-only; quality is chosen per project)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetSettings"},"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Refused: Flow settings are shared by every tenant; set a quality tier per project instead","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerUpdateSettings"}},"/auth/flo-studio/fonts":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Font families available to text overlays","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetFonts"}},"/auth/flo-studio/effects/catalog":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The transitions (and later looks and effects) the editor can apply, with their display names","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetEffectsCatalog"}},"/auth/flo-studio/effects/luts/{look}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A stock look's LUT as a 1089×33 PNG (the catalog entry's `lut`), for the editors' preview shaders","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"look","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetEffectLut"}},"/auth/flo-studio/sfx":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The sound-effect library: each sound described (category, role, where its hit lands, takes, when to use it); paged with category, role, q, format, page, per_page","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetSfxLibrary"}},"/auth/flo-studio/sfx/search":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The library sounds that best fit a moment, described in words (query), with filters, and why each matched","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetSfxSearch"}},"/auth/flo-studio/sfx/{sfx}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One library sound as a WAV, to hear before laying it (the same for every project)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"sfx","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetSfxPreview"}},"/auth/flo-studio/elements":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The built-in visual elements (buttons, arrows, confetti, light leaks, wipes, device frames…): each described, with how it composites; paged with category, how, q, page, per_page","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetElementLibrary"}},"/auth/flo-studio/elements/search":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The built-in elements that best fit what is wanted, described in words (query), with filters, and why each matched","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetElementSearch"}},"/auth/flo-studio/elements/{element}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One built-in element as a PNG (a still) or an MP4, to look at before laying it (the same for every project)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"element","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetElementPreview"}},"/auth/flo-studio/agent/chat":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One agent turn, streamed as server-sent events (rate limited per user)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/FloAgentChatBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAgentChat"}},"/auth/flo-studio/agent/chat/{pid}/state":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Whether the project's assistant is working (turns run in the background)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerAgentState"}},"/auth/flo-studio/agent/chat/{pid}/live":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Follow the project's running assistant turn from event `after` on (SSE)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerAgentLive"}},"/auth/flo-studio/agent/chat/{pid}/stop":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop the project's running assistant turn within seconds (saved as it stands, charged for what it used); `turn_id` names the turn meant","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentStopBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAgentStop"}},"/auth/flo-studio/agent/chat/{pid}/steer":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a note into the project's running assistant turn, read at its next step (relayed to Flow; 409 with a `code` when it is not taken; 404 from a Flow without notes)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSteerBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAgentSteer"}},"/auth/flo-studio/agent/undo":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Undo the last edit on a project","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloAgentProjectBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAgentUndo"}},"/auth/flo-studio/agent/redo":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Redo the last undone edit on a project","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloAgentProjectBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAgentRedo"}},"/auth/flo-studio/agent/undo-turn":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Undo every change one assistant turn made (409 superseded once something newer was undone or overwritten)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloAgentUndoTurnBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAgentUndoTurn"}},"/auth/flo-studio/projects":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The caller's FloStudio projects, newest first (from the stored summaries; Flow only for projects without one)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerListProjects"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a project at a quality tier and orientation (default tier and portrait when omitted)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloCreateProjectBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerCreateProject"}},"/auth/flo-studio/projects/{pid}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A project in full (segments, takes, characters)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetProject"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a project: cancel its queued renders (releasing holds), delete it in Flow, soft-delete the record, delete its Jobs (renders, voice, link imports, Face Studio work); the storage sweep then deletes every file of it","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerDeleteProject"}},"/auth/flo-studio/projects/{pid}/duplicate":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Copy a project to do anything to (dub it, bake effects into it) with the original left intact: its film and library under a new id, idle — no history, no conversation, nothing rendering. Free (a copy of work already paid for). Counts as a project against the limit. Answers Flow's status: 202 while the files are copied (poll GET /projects/:copy/duplicate), 200 once done; a retry with the same clientRequestId returns the same copy","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloDuplicateProjectBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerDuplicateProject"},"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Where a copy stands: copying (files_done of files_total), done, failed or cancelled (error and error_code say why). :pid is the COPY's id, as the duplicate call returned it. Asked of Flow, which checks the member owns it, so a failed copy (deleted) still says why","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetProjectDuplicate"}},"/auth/flo-studio/projects/{pid}/render-settings":{"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Set a project's quality tier; the backend supplies the tier's render settings","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloRenderTierBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerUpdateRenderSettings"}},"/auth/flo-studio/projects/{pid}/segment-length":{"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Set a project's segment length in seconds — the length its scenes are laid out at — re-timing the scenes not rendered yet","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloSegmentLengthBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerUpdateSegmentLength"}},"/auth/flo-studio/projects/{pid}/estimate":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"What a GPU action would hold, priced exactly as the credit precheck and the gateway price it (action = generate | regenerate | transitions | keyframes | stills (n) | score | ambience | effects | voiceover (chars, n) | music (duration_s, takes) | dub (languages as codes hi,es or a count, seconds of source speech; absent: Flow’s plan is read), with that action’s own parameters; effects: fx_id, or effect + clip_id | item_id + params)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"query","name":"action","required":false,"schema":{"type":"string"}},{"in":"query","name":"scope","required":false,"schema":{"type":"string"}},{"in":"query","name":"clip","required":false,"schema":{"type":"string"}},{"in":"query","name":"duration_s","required":false,"schema":{"type":"string"}},{"in":"query","name":"after_clip_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"target","required":false,"schema":{"type":"string"}},{"in":"query","name":"clip_ids","required":false,"schema":{"type":"string"}},{"in":"query","name":"fx_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"effect","required":false,"schema":{"type":"string"}},{"in":"query","name":"clip_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"item_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"params","required":false,"schema":{"type":"string"}},{"in":"query","name":"lines","required":false,"schema":{"type":"string"}},{"in":"query","name":"media_id","required":false,"schema":{"type":"string"}},{"in":"query","name":"n","required":false,"schema":{"type":"string"}},{"in":"query","name":"chars","required":false,"schema":{"type":"string"}},{"in":"query","name":"takes","required":false,"schema":{"type":"string"}},{"in":"query","name":"languages","required":false,"schema":{"type":"string"}},{"in":"query","name":"seconds","required":false,"schema":{"type":"string"}},{"in":"query","name":"model","required":false,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetEstimate"}},"/auth/flo-studio/projects/{pid}/media-token":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A 12-hour token for loading this project’s media in <video>/<img>","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetMediaToken"}},"/auth/flo-studio/projects/{pid}/renders":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"This project's renders on the GPU pool right now: queue place, state and live progress (the editor's poll, beside flo_studio_event / job_progress)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetRenders"}},"/auth/flo-studio/projects/{pid}/renders/{runId}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cancel one of this project's renders: always while it waits for a GPU, and once a GPU has it while it is less than floStudioCancelRenderingMaxPercent done (the GPU job is interrupted). The job ends as cancelled; 409 past the threshold. Never forwarded to Flow. What it costs: while a cloud GPU warms up for it, the FLO_STUDIO_CANCEL_WARMUP penalty; while it renders on a cloud GPU, FLO_STUDIO_CANCEL_CLOUD_GPU per minute of that GPU's time; otherwise (own GPUs included) nothing. Capped at the hold, the rest released; `chargedCredits` and `charge` (warmup | cloud_gpu | none) say what was charged","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"runId","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerCancelRender"}},"/auth/flo-studio/admin/retry-jobs":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: render failed or cancelled FloStudio shots and transitions again, as their owners. Each lands as a new job, held and charged like any render; the failed job stays as history. Per-job outcomes","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"properties":{"jobIds":{"type":"object"}},"type":"object"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerAdminRetryJobs"}},"/auth/flo-studio/projects/{pid}/peaks/{filename}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Waveform peaks for one of the project's media files","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"filename","required":true,"schema":{"type":"string"}},{"in":"query","name":"buckets","required":false,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetPeaks"}},"/auth/flo-studio/projects/{pid}/images/other-projects":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The caller's images in their other projects, each project with a media token for its thumbnails (the image picker's Other projects)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetOtherProjectImages"}},"/auth/flo-studio/import-url/options":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Import from a link: whether it is on, the sites that may be imported from (from the downloader, never hardcoded), the segment lengths, the longest video, the price and today’s count","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FloStudioController"],"operationId":"floStudioControllerGetImportUrlOptions"}},"/auth/flo-studio/import-url/preview":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The preview card for a link (title, length, thumbnail) before importing, and whether it is longer than the limit → 403 url_not_allowed | 400 invalid | 422 private_video. `tooSmallForFaceSwap` is for Face Studio; the editor has no minimum resolution.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUrlPreviewBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerPreviewImportUrl"}},"/auth/flo-studio/projects/{pid}/import-url":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Import a video from a link into this project, split into parts that become clips after `afterClipId` → {importId, jobId}. Long-running: poll the status route.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUrlCreateBody"}}}},"tags":["FloStudioController"],"operationId":"floStudioControllerCreateImportUrl"}},"/auth/flo-studio/projects/{pid}/import-url/{importId}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"An import: its stage (downloading → splitting → importing → done), progress, the preview card and, once done, the clip ids","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"importId","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerGetImportUrl"}},"/auth/flo-studio/projects/{pid}/import-url/{importId}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop an import that is still waiting or running; nothing is charged","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"importId","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerCancelImportUrl"}},"/auth/flo-studio/projects/{pid}/{a}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyGet1"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed; uploads and credit-checked GPU actions)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPost1"},"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPatch1"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed; stopping generation also cancels queued GPU runs)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyDelete1"}},"/auth/flo-studio/projects/{pid}/{a}/{b}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyGet2"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPost2"},"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPatch2"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyDelete2"}},"/auth/flo-studio/projects/{pid}/{a}/{b}/{c}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyGet3"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed; credit-checked GPU actions)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPost3"},"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPatch3"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyDelete3"}},"/auth/flo-studio/projects/{pid}/{a}/{b}/{c}/{d}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}},{"in":"path","name":"d","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyGet4"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}},{"in":"path","name":"d","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPost4"},"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed; a dubbed line said again)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}},{"in":"path","name":"d","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPatch4"}},"/auth/flo-studio/projects/{pid}/{a}/{b}/{c}/{d}/{e}":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"FloStudio project proxy (allow-listed; take selection)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"a","required":true,"schema":{"type":"string"}},{"in":"path","name":"b","required":true,"schema":{"type":"string"}},{"in":"path","name":"c","required":true,"schema":{"type":"string"}},{"in":"path","name":"d","required":true,"schema":{"type":"string"}},{"in":"path","name":"e","required":true,"schema":{"type":"string"}}],"tags":["FloStudioController"],"operationId":"floStudioControllerProxyPost5"}},"/auth/flo-studio-media/{pid}/media/{filename}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"A FloStudio media file (token in ?t=, Range supported)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"filename","required":true,"schema":{"type":"string"}},{"in":"query","name":"t","required":false,"schema":{"type":"string"}},{"in":"query","name":"download","required":false,"schema":{"type":"string"}}],"tags":["FloStudioMediaController"],"operationId":"floStudioMediaControllerGetMedia"}},"/auth/flo-studio-media/{pid}/exports/{filename}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"A FloStudio export (token in ?t=, ?download=1 for an attachment)","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"filename","required":true,"schema":{"type":"string"}},{"in":"query","name":"t","required":false,"schema":{"type":"string"}},{"in":"query","name":"download","required":false,"schema":{"type":"string"}}],"tags":["FloStudioMediaController"],"operationId":"floStudioMediaControllerGetExport"}},"/auth/users/{@handle}/follow":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowActionResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Follow a public user or request approval from a private user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}}],"tags":["FollowController"],"operationId":"followControllerFollow"},"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Unfollow a user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}}],"tags":["FollowController"],"operationId":"followControllerUnfollow"}},"/auth/users/{userId}/follow":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowActionResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Follow or request approval using a stable user ID","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"userId","required":true,"schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerFollowById"},"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Unfollow a user using a stable user ID","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"userId","required":true,"schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerUnfollowById"}},"/auth/users/{@handle}/follow-request":{"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cancel a pending follow request","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}}],"tags":["FollowController"],"operationId":"followControllerCancelFollowRequest"}},"/auth/users/{userId}/follow-request":{"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cancel a pending follow request using a stable user ID","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"userId","required":true,"schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerCancelFollowRequestById"}},"/auth/users/me/follow-requests":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowRequestListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List pending follow requests received by the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerGetFollowRequests"}},"/auth/users/me/follow-requests/{requestId}/accept":{"post":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Accept a pending follow request","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"requestId","required":true,"schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerAcceptFollowRequest"}},"/auth/users/me/follow-requests/{requestId}/reject":{"post":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Reject a pending follow request","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"requestId","required":true,"schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerRejectFollowRequest"}},"/auth/users/{@handle}/block":{"post":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Block a user and revoke follows in both directions","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}}],"tags":["FollowController"],"operationId":"followControllerBlockUser"},"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Unblock a user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}}],"tags":["FollowController"],"operationId":"followControllerUnblockUser"}},"/auth/users/me/blocked":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockedUserListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List users blocked by the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"tags":["FollowController"],"operationId":"followControllerGetBlockedUsers"}},"/auth/users/me/following":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List who the authenticated user follows","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerGetMyFollowing"}},"/auth/users/me/followers":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List followers of the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerGetMyFollowers"}},"/auth/users/{@handle}/followers":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowListResponse"}}},"description":"Success"}},"summary":"List followers of a user","parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}},{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerGetUserFollowers"}},"/auth/users/{@handle}/following":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowListResponse"}}},"description":"Success"}},"summary":"List who a user follows","parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}},{"in":"query","required":false,"name":"cursor","schema":{"type":"number"}},{"in":"query","required":false,"name":"limit","schema":{"type":"number"}}],"tags":["FollowController"],"operationId":"followControllerGetUserFollowing"}},"/auth/image-studio/agent/chat":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One turn of a design's assistant, streamed as server-sent events; its op batches arrive as tool_result display.ops ({ key, ops }), applied once per key. It runs on if the page is left.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/ImageEditorChatBody"}}}},"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerChat"}},"/auth/image-studio/agent/chat/{designId}/state":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Whether the design's assistant is working, and on what","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"designId","required":true,"schema":{"type":"string"}}],"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerState"}},"/auth/image-studio/agent/chat/{designId}/live":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Follow the design's assistant turn from event `after` on (server-sent events)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"designId","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","required":false,"schema":{"type":"string"}}],"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerLive"}},"/auth/image-studio/agent/chat/{designId}/thread":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The design's assistant thread: each message with its work log, and the replies","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"designId","required":true,"schema":{"type":"string"}}],"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerThread"}},"/auth/image-studio/agent/chat/{designId}/stop":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop the design's assistant: it ends at its next step; the changes already sent stay, and the turn is charged for what it used","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"designId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentStopBody"}}}},"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerStop"}},"/auth/image-studio/agent/chat/{designId}/applied":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Tell the design's running assistant turn that the editor could not apply one of its batches: the model is told at its next step (409 when nothing runs)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"designId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditorBatchFailedBody"}}}},"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerBatchFailed"}},"/auth/image-studio/agent/chat/{designId}/steer":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a note into the design's running assistant turn: it reads it at its next step, without stopping (409 when nothing runs)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"designId","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSteerBody"}}}},"tags":["ImageEditorAgentController"],"operationId":"imageEditorAgentControllerSteer"}},"/auth/image-studio/kit-runs/estimate":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"What a run would make and cost, free: {kit, input} → {pictures, pictureCredits, modelCalls, tokens}","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerEstimate"}},"/auth/image-studio/kit-runs":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Start a run: {kit (an AI kit: appStore, playStore, logo, thumbnail, ugc as they are added), input (the fields that kit takes)} → the run. 409 busy (two at once).","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerCreate"},"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Your runs, newest first","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerList"}},"/auth/image-studio/kit-runs/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One run: its stage, directions (previews, scores, why), the files once delivered, its newest events","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerGet"}},"/auth/image-studio/kit-runs/{id}/pick":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Pick a finished direction: {direction (0-based)} → its store files and zip are made","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerPick"}},"/auth/image-studio/kit-runs/{id}/refine":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Another round as you say: {note (\"warmer\", \"shorter headlines\"…), direction? (0-based; default the picked or best)} → one new direction, made and scored","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerRefine"}},"/auth/image-studio/kit-runs/{id}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop a run at its next stage (what it made stays; what it used is charged)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageKitRunController"],"operationId":"imageKitRunControllerCancel"}},"/auth/image-studio/characters":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Your characters, last changed first → {items}: each with its pictures still in the gallery and whether it can be used","security":[{"bearerAuth":[]}],"parameters":[],"tags":["ImageStudioCharacterController"],"operationId":"imageStudioCharacterControllerList"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Make a character: {name, description?, source upload|generated|face, imageIds (3–6 gallery pictures) | faceId, consentKind (upload: self|permission; generated: generated), attestation true, attestationVersion} → the character. A face carries its own consent. 409 too_many.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageStudioCharacterController"],"operationId":"imageStudioCharacterControllerCreate"}},"/auth/image-studio/characters/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One character","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioCharacterController"],"operationId":"imageStudioCharacterControllerGet"},"put":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Rename it, describe it, or change its pictures ({name?, description?, imageIds?}); a Face Studio face's character keeps that face's photos","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageStudioCharacterController"],"operationId":"imageStudioCharacterControllerUpdate"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a character (its pictures stay in the gallery)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioCharacterController"],"operationId":"imageStudioCharacterControllerRemove"}},"/auth/image-studio/config":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"What Image Studio offers: on or off, the price per picture, the aspect ratios, styles, quick edits, transform looks, upscale factors and which modes are available now","security":[{"bearerAuth":[]}],"parameters":[],"tags":["ImageStudioController"],"operationId":"imageStudioControllerGetConfig"}},"/auth/image-studio/uploads":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upload a picture to make a request from (multipart: file, purpose source|mask|reference; kept a day) → {uploadId, width, height, url}. A mask is white where to change and black where to keep.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerCreateUpload"}},"/auth/image-studio/generations":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Make 1-4 pictures: mode create | edit | transform | inpaint | erase | extend | upscale | reference | variation | remove_background (see the body for each one's fields) → {batchId, images, estimatedCredits}. 402 insufficient_credits, 422 content_blocked, 429 busy, 503 unavailable, 403 mode_off.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStudioGenerationBody"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerCreateGeneration"}},"/auth/image-studio/batches/{batchId}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The pictures of one request, each collected when it is ready (poll while they are made)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"batchId","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerGetBatch"}},"/auth/image-studio/images":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The gallery, newest first: ?cursor (the last id of the previous page), ?limit (≤60), ?mode → {items, nextCursor}","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"string"}},{"in":"query","name":"mode","required":false,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerListImages"},"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Add a picture of your own to the gallery (multipart: file; free) → the picture (mode upload)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerImportImage"}},"/auth/image-studio/images/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One picture (collected first when it is ready)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerGetImage"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a picture from the gallery (one still being made is stopped first)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerDeleteImage"}},"/auth/image-studio/images/{id}/cancel":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stop a picture before it is made (nothing is charged)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerCancelImage"}},"/auth/image-studio/images/{id}/file":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A signed link to the picture → {url}; ?download=1 signs it as an attachment, so it saves in place","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"download","required":false,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerFileLink"}},"/auth/image-studio/images/{id}/metadata":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"What the picture's original carries, for an export to keep: EXIF, ICC profile and XMP as base64, its format and size, and a link to the original file","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerImageMetadata"}},"/auth/image-studio/designs":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Your editor designs, last edited first: ?cursor, ?limit → {items, nextCursor} (without their documents)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerListDesigns"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Start a design: {name, width, height, document} → the design. Every layer imageId must be one of your gallery pictures.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStudioDesignBody"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerCreateDesign"}},"/auth/image-studio/designs/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One design with its document","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerGetDesign"},"put":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Save a design (any of name, width, height, document)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStudioDesignBody"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerUpdateDesign"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a design (the pictures it used stay in the gallery)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerDeleteDesign"}},"/auth/image-studio/designs/{id}/duplicate":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A copy of the design as last saved, every size in it ({name?}; free) → the new design. 409 too_many at the designs limit.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStudioNameBody"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerDuplicateDesign"}},"/auth/image-studio/designs/{id}/versions":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The design's kept versions, newest first → {items: [{id, name, width, height, auto, createdAt}], max} (without their documents)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerListDesignVersions"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Keep the design as last saved as a version: {name} → the version. The newest 30 are kept.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageStudioNameBody"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerCreateDesignVersion"}},"/auth/image-studio/designs/{id}/versions/{versionId}/restore":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The design back as the version was (what it was is kept as a version first, auto) → the design with its document. 409 outdated when a picture it uses was deleted.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerRestoreDesignVersion"}},"/auth/image-studio/designs/{id}/versions/{versionId}":{"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a kept version","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string"}}],"tags":["ImageStudioController"],"operationId":"imageStudioControllerDeleteDesignVersion"}},"/auth/image-studio/designs/{id}/assets":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Keep one of the editor's own pictures for a design (multipart: file, a PNG of at most imageStudioAssetMaxMb and 16384 px a side; purpose layer|mask|snapshot; free, never in the gallery) → {imageId, width, height, url}. 409 too_many once the design holds imageStudioDesignMaxAssets.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerCreateAsset"}},"/auth/image-studio/designs/{id}/thumbnail":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The editor's small picture of a design as it now looks (multipart: file; free) → { thumbUrl }: the design's thumbnail in the gallery. Not a save: its updatedAt stays.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerSetDesignThumbnail"}},"/auth/image-studio/designs/{id}/render":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Render the design off the page, with the editor's own renderer (free): body { sizes?: size ids (default every size), format?: png|jpeg|webp|pdf|svg (default png), quality?: 1–100, transparent?: boolean, zip?: boolean, save_to_gallery?: boolean (default true) } → { files: [{ name, sizeId, sizeName, width, height, format, bytes, downloadUrl, image (the gallery picture, PNG/JPEG/WebP) }], zip, linksExpireInSeconds }. One at a time per member (409 busy), 30 an hour (429 too_many); 503 unavailable when the renderer is not set up.","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerRenderDesign"}},"/auth/image-studio/designs/{id}/export":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Save the picture the editor rendered to the gallery (multipart: file; free) → the picture (mode design); it also becomes the design's thumbnail","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["ImageStudioController"],"operationId":"imageStudioControllerExportDesign"}},"/auth/jobs/public":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicJobListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Discover purchased public karaoke, lyrical, and audio outputs","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","required":false,"name":"kind","schema":{"type":"string","enum":["KARAOKE","LYRICAL","AUDIO","SONG"]}},{"in":"query","required":false,"name":"source","schema":{"type":"string","enum":["YOUTUBE","UPLOAD","AI"]}},{"in":"query","required":false,"name":"sort","schema":{"type":"string","enum":["NEWEST","OLDEST"]}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1}}],"tags":["JobController"],"operationId":"jobControllerListPublicJobs"}},"/auth/jobs/public/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicJobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One public job as its Explore card — what a \"shared to Explore\" notification opens","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGetPublicJob"}},"/auth/jobs/public/{id}/media":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicJobMediaResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Generate a short-lived media link for an owned or purchased public job","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGetPublicJobMedia"}},"/auth/jobs/me":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new asynchronous job for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJobPayload"}}}},"tags":["JobController"],"operationId":"jobControllerCreateJob"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List asynchronous jobs for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"skip","schema":{"type":"number","minimum":0}},{"in":"query","required":false,"name":"limit","schema":{"type":"number","minimum":1}},{"in":"query","required":false,"name":"status","schema":{"type":"string","enum":["PENDING","QUEUED","RUNNING","SUCCEEDED","FAILED","CANCELLED","PAUSED"]}},{"in":"query","required":false,"name":"type","schema":{"type":"string","enum":["YOUTUBE_VIDEO_TO_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_DOWNLOAD","YOUTUBE_AUDIO_DOWNLOAD","UPLOAD_VIDEO_TO_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_KARAOKE_AUDIO","YOUTUBE_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_VIDEO","YOUTUBE_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_VIDEO_TO_LYRICAL_KARAOKE_VIDEO","UPLOAD_AUDIO_TO_LYRICAL_KARAOKE_VIDEO","MASHUP_KARAOKE_VIDEO","YOUTUBE_VIDEO_TO_LYRICS_SHEET","UPLOAD_MEDIA_TO_LYRICS_SHEET","AI_STUDIO_GENERATED_SONG","RVC_VOICE_TRAINING","YOUTUBE_AUDIO_TO_RVC_COVER","UPLOAD_AUDIO_TO_RVC_COVER","UPLOAD_RECORDING_TO_KORE_COVER","FLO_STUDIO_VIDEO","FLO_STUDIO_VIDEO_HD","FLO_STUDIO_FLASH_VIDEO","FLO_STUDIO_FLASH_VIDEO_HD","FLO_STUDIO_STILL","FLO_STUDIO_SCORE","FLO_STUDIO_CANCEL_WARMUP","FLO_STUDIO_CANCEL_CLOUD_GPU","FLO_STUDIO_VOICE","FLO_STUDIO_MUSIC","FACE_SWAP_IMAGE","FACE_SWAP_VIDEO","FACE_DETECT","FLO_STUDIO_FX","FLO_STUDIO_IMPORT_URL","FACE_SWAP_PREVIEW","FACE_EDIT_ENHANCE_IMAGE","FACE_EDIT_ENHANCE_VIDEO","FACE_EDIT_AGE_IMAGE","FACE_EDIT_AGE_VIDEO","FACE_EDIT_EXPRESSION_IMAGE","FACE_EDIT_EXPRESSION_VIDEO","FACE_EDIT_LIPSYNC_VIDEO","FLO_STUDIO_FX_INTERP","FLO_STUDIO_FX_BG_REMOVE","FLO_STUDIO_FX_UPSCALE","FLO_STUDIO_STILL_EXTERNAL","YOUTUBE_DOWNLOAD_EXTRA","YOUTUBE_LIBRARY_UNLOCK","EXPLORE_UNLOCK","AI_STUDIO_CHAT","FLO_STUDIO_ASSISTANT","FACE_REFINE_IMAGE","IMAGE_STUDIO_IMAGE","IMAGE_STUDIO_DETAIL_4K","IMAGE_STUDIO_DETAIL_8K","FLO_STUDIO_FX_OBJECT_REPLACE"]}},{"in":"query","required":false,"name":"q","description":"Free-text search over the job title, matched against the accent-stripped searchTitle column. A number also matches the job id.","schema":{"type":"string","maxLength":120}}],"tags":["JobController"],"operationId":"jobControllerListJobs"}},"/auth/jobs/me/mashup":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a karaoke mashup (several songs' parts in one karaoke video, e.g. a guess-the-song game): multipart `payload` JSON {songs: [{source: {kind: \"youtube\", videoId} | {kind: \"upload\", file: <the name of one of the songs files>}, start, end, text, picture: \"visualizer\" (default) | \"video\" | \"image\", image: <the name of one of the pictures files>, lyrics: false (default) | true}], textSeconds, numbered, background: {color: \"#rrggbb\"}} plus `songs` files (up to 10, each named uniquely), an optional `background` picture and `pictures` (up to 20) for songs that show a picture. Each song is made karaoke and cut to start–end; its optional text is shown on its own screen after it; one video plus a zip of each cut's audio. Free to make, unlocked at the MASHUP_KARAOKE_VIDEO rate per second of the finished video","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"songs":{"type":"array","items":{"type":"string","format":"binary"}},"background":{"type":"string","format":"binary"},"pictures":{"type":"array","items":{"type":"string","format":"binary"}}},"type":"object"}}}},"tags":["JobController"],"operationId":"jobControllerCreateMashupJob"}},"/auth/jobs/me/upload":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upload a file and create a karaoke job (video or audio) for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"},"background":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["JobController"],"operationId":"jobControllerCreateUploadJob"}},"/auth/jobs/me/{id}/background":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Attach the background image this lyrics job's sheet will be rendered over","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"background":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["JobController"],"operationId":"jobControllerAttachLyricsJobBackground"}},"/auth/jobs/me/youtube-quota":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceDownloadQuotaResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get rolling YouTube usage quota for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"tags":["JobController"],"operationId":"jobControllerGetYoutubeQuota"}},"/auth/jobs/me/realtime":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRealtimeSessionResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a realtime session for live job status and progress","security":[{"bearerAuth":[]}],"parameters":[],"tags":["JobController"],"operationId":"jobControllerJobsRealtime"}},"/auth/jobs/fonts":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LyricalFontsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List font families supported by the lyrical video renderer","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerListFonts"}},"/auth/jobs/me/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get job details for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGetJob"}},"/auth/jobs/me/{id}/retry":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Try a failed or paused job again, on the same job (any job type)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerRetryJob"}},"/auth/jobs/me/{id}/request-retry":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Same as POST /jobs/me/:id/retry; kept for clients that resume paused jobs through it","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerRequestRetry"}},"/auth/jobs/me/{id}/reanalyze-lyrics":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Transcribe a lyrics job's source again, replacing its sheet, without creating a new job","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReanalyzeLyricsPayload"}}}},"tags":["JobController"],"operationId":"jobControllerReanalyzeLyrics"}},"/auth/jobs/me/{id}/read-lyrics":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Queue a free read of a finished lyric or karaoke render's words into an editable sheet","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerReadRenderedLyrics"}},"/auth/jobs/immediate-retry":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImmediateRetryResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: reset retry count, re-queue, and backdate nextRetryAt so jobs run on the next worker tick","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImmediateRetryPayload"}}}},"tags":["JobController"],"operationId":"jobControllerImmediateRetry"}},"/auth/jobs/me/{id}/status":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusUpdateResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update job status and handle credit settlements","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusUpdatePayload"}}}},"tags":["JobController"],"operationId":"jobControllerUpdateJobStatus"}},"/auth/jobs/me/{id}/download-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobDownloadLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Generate a fresh download link for the job output; download=1 signs it as an attachment, so the browser saves it; part=segments links a karaoke mashup's zip of cut audio instead","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"download","required":false,"schema":{"type":"string"}},{"in":"query","name":"part","required":false,"schema":{"type":"string"}}],"tags":["JobController"],"operationId":"jobControllerGenerateDownloadLink"}},"/auth/jobs/me/{id}/toggle-public":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TogglePublicResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Toggle a supported job between public/private; grants or revokes its configured sharing reward","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerToggleJobPublic"}},"/auth/jobs/me/{id}/sharing-quote":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSharingQuoteResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Preview the exact configured sharing reward before changing a job visibility","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGetJobSharingQuote"}},"/auth/jobs/me/{id}/purchase":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseJobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Purchase (unlock) a completed job — debits credits and enables the final download","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerPurchaseJob"}},"/auth/jobs/public/{id}/purchase":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseJobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Purchase a public community job — debits credits and clones the job into the buyer library","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerPurchasePublicJob"}},"/auth/jobs/me/{id}/preview-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPreviewLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Generate a short-lived signed URL for the preview clip (no purchase required)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGeneratePreviewLink"}},"/auth/jobs/public/{id}/preview-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPreviewLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Generate a preview clip for a public community job — caches on first call, instant thereafter","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGetPublicJobPreview"}},"/auth/jobs":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new Job","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobModelCreate"}}}},"tags":["JobController"],"operationId":"jobControllerCreateItem"}},"/auth/jobs/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Job by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Job by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobController"],"operationId":"jobControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a Job by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobModelUpdate"}}}},"tags":["JobController"],"operationId":"jobControllerUpdate"}},"/auth/jobs/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of JobControllerList"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all JobControllerList","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSearchParams"}}}},"tags":["JobController"],"operationId":"jobControllerGetAll"}},"/auth/job-pricing-configs/rate-card":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"}},"summary":"Every public price in one answer: job prices, songs, FloStudio, Face Studio, YouTube downloads, guest song previews, AI chat and Explore","parameters":[],"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerGetRateCard"}},"/auth/job-pricing-configs/prices":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"}},"summary":"Get all job type prices as a key-value map","parameters":[],"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerGetAllPrices"}},"/auth/job-pricing-configs/song-pricing":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"}},"summary":"Get the generated-song base rate and per-quality credit table","parameters":[],"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerGetSongPricing"}},"/auth/job-pricing-configs/flo-studio-pricing":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"}},"summary":"Get FloStudio render tiers with their credits per second, and the still, score and assistant rates","parameters":[],"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerGetFloStudioPricing"}},"/auth/job-pricing-configs":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new JobPricingConfig","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigModelCreate"}}}},"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerCreateItem"}},"/auth/job-pricing-configs/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a JobPricingConfig by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a JobPricingConfig by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a JobPricingConfig by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigModelUpdate"}}}},"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerUpdate"}},"/auth/job-pricing-configs/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of JobPricingConfig"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all JobPricingConfig","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPricingConfigSearchParams"}}}},"tags":["JobPricingConfigsController"],"operationId":"jobPricingConfigsControllerGetAll"}},"/auth/kore/covers/jobs/config":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cover-studio quote: credits per render, stem size ceiling, available output formats","security":[{"bearerAuth":[]}],"parameters":[],"tags":["KoreController"],"operationId":"koreControllerGetCoverJobConfig"}},"/auth/kore/covers/jobs":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Queue a studio cover render as a background job (returns the Job immediately)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"vocal":{"type":"string","format":"binary"},"instrumental":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerCreateCoverJob"}},"/auth/kore/covers/jobs/{jobId}/retry":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Re-queue a failed cover render from its stored stems","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"tags":["KoreController"],"operationId":"koreControllerRetryCoverJob"}},"/auth/kore/health":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KoreHealthResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"KORE cover-studio engine liveness","security":[{"bearerAuth":[]}],"parameters":[],"tags":["KoreController"],"operationId":"koreControllerHealth"}},"/auth/kore/presets":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KorePresetsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List every KORE preset and its full parameter set","security":[{"bearerAuth":[]}],"parameters":[],"tags":["KoreController"],"operationId":"koreControllerPresets"}},"/auth/kore/covers":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Render a studio cover: raw vocal + instrumental -> final mastered track (canonical)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"vocal":{"type":"string","format":"binary"},"instrumental":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerProcessCover"}},"/auth/kore/process":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Process vocals via the KORE studio pipeline (legacy alias; instrumental optional for a dry vocal)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"vocal":{"type":"string","format":"binary"},"instrumental":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerProcessDry"}},"/auth/kore/remix":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remix a cover: restyle the instrumental with Voxmin Music, then mix the take with KORE","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"vocal":{"type":"string","format":"binary"},"instrumental":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerRemix"}},"/auth/kore/autotune":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Auto-tune a vocal recording (PSOLA pitch correction; optional instrumental as key reference)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"vocal":{"type":"string","format":"binary"},"instrumental":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerAutotune"}},"/auth/kore/refs":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KoreRefsResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List saved reference vocals on the VoxMin server","security":[{"bearerAuth":[]}],"parameters":[],"tags":["KoreController"],"operationId":"koreControllerListRefs"}},"/auth/kore/refs/{name}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download a saved reference vocal WAV","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"tags":["KoreController"],"operationId":"koreControllerGetReference"}},"/auth/kore/ref/build":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Build a reference vocal from a song (vocal separation)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"reference":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerBuildReference"}},"/auth/kore/ref/apply":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Tune a take against a reference vocal (harmony context; opt-in follow_melody)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"recording":{"type":"string","format":"binary"},"reference":{"type":"string","format":"binary"},"instrumental":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["KoreController"],"operationId":"koreControllerApplyReference"}},"/auth/marketing-emails/audience/preview":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewAudienceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Count and sample the users an audience covers, without loading them all","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerPreviewAudience"}},"/auth/marketing-emails/{id}/send":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMarketingEmailResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Send a marketing email to all its recipients","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerSendEmail"}},"/auth/marketing-emails/{id}/preview":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewMarketingEmailResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Preview a marketing email — returns rendered HTML + recipient list","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerPreviewEmail"}},"/auth/marketing-emails":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingEmailBodyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new MarketingEmailBody","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingEmailBodyModelCreate"}}}},"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerCreateItem"}},"/auth/marketing-emails/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of MarketingEmail"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all MarketingEmail","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerSearchItems"}},"/auth/marketing-emails/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingEmailModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a MarketingEmail by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingEmailBodyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a MarketingEmailBody by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingEmailBodyModelUpdate"}}}},"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerUpdate"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingEmailModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a MarketingEmail by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["MarketingEmailsController"],"operationId":"marketingEmailsControllerDeleteItem"}},"/auth/mcp/connections":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The AI apps you signed in to (Claude, ChatGPT…), newest first","security":[{"bearerAuth":[]}],"parameters":[],"tags":["McpConnectionsController"],"operationId":"mcpConnectionsControllerListConnections"}},"/auth/mcp/connections/{id}":{"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Sign an AI app out (its tokens stop working at once)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["McpConnectionsController"],"operationId":"mcpConnectionsControllerRevokeConnection"}},"/auth/mcp/oauth/register":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Dynamic client registration (RFC 7591): public clients only (token_endpoint_auth_method \"none\", PKCE).","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["McpOAuthController"],"operationId":"mcpOAuthControllerRegister"}},"/auth/mcp/oauth/authorize":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Authorization endpoint: checks the request, then sends the browser to Voxmin's approve screen (or back to the app with an error).","parameters":[{"in":"query","required":false,"schema":{"type":"object"}}],"tags":["McpOAuthController"],"operationId":"mcpOAuthControllerAuthorize"}},"/auth/mcp/oauth/token":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Token endpoint: authorization_code (with PKCE) or refresh_token → an access token (an hour) and a new refresh token.","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["McpOAuthController"],"operationId":"mcpOAuthControllerToken"}},"/auth/mcp/oauth/revoke":{"post":{"responses":{"200":{"description":"Success"}},"summary":"Token revocation (RFC 7009): the connection an access or refresh token belongs to ends.","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["McpOAuthController"],"operationId":"mcpOAuthControllerRevoke"}},"/auth/mcp":{"post":{"responses":{"200":{"description":"Success"}},"summary":"The Voxmin MCP endpoint (Streamable HTTP, JSON-RPC 2.0). Authorization: Bearer <a personal token from AI Integrations>.","parameters":[],"tags":["McpServerController"],"operationId":"mcpServerControllerHandle"},"get":{"responses":{"200":{"description":"Success"}},"summary":"The MCP endpoint is POST only (stateless; no server-sent event stream)","parameters":[],"tags":["McpServerController"],"operationId":"mcpServerControllerNotStreaming"},"delete":{"responses":{"200":{"description":"Success"}},"summary":"No sessions to end (stateless)","parameters":[],"tags":["McpServerController"],"operationId":"mcpServerControllerNoSession"}},"/auth/mcp/info":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Public: the MCP endpoint address, and every tool with what it costs (for the docs page)","parameters":[],"tags":["McpServerController"],"operationId":"mcpServerControllerInfo"}},"/auth/mcp/sign-in/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A sign-in an AI app asked for: the app's name and where it goes back to","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["McpSignInController"],"operationId":"mcpSignInControllerGetSignIn"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Approve or refuse an AI app's sign-in: {approve} → {redirect}, where the browser goes next","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["McpSignInController"],"operationId":"mcpSignInControllerDecideSignIn"}},"/auth/mcp/tokens":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Your MCP tokens that still work (never the token itself)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["McpTokensController"],"operationId":"mcpTokensControllerListTokens"},"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Make a token for an AI agent: {name, dailyCreditLimit?, expiresInDays?} → {token, item}. The token is shown only now.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["McpTokensController"],"operationId":"mcpTokensControllerCreateToken"}},"/auth/mcp/tokens/{id}":{"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Revoke one of your tokens (it stops working at once)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["McpTokensController"],"operationId":"mcpTokensControllerRevokeToken"}},"/auth/mcp/uploads/{id}/{index}":{"put":{"responses":{"200":{"description":"Success"}},"summary":"An AI agent's upload piece (from the MCP tool start_upload): the raw bytes of piece `index`, at the link start_upload gave (its ?key= is the sign-in)","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"index","required":true,"schema":{"type":"string"}},{"in":"query","name":"key","required":false,"schema":{"type":"string"}}],"tags":["McpUploadPiecesController"],"operationId":"mcpUploadPiecesControllerPutAgentPiece"}},"/auth/newsletters/subscribe":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscribeResponse"}}},"description":"Success"}},"summary":"Subscribe an email to the newsletter","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscribeBody"}}}},"tags":["NewslettersController"],"operationId":"newslettersControllerSubscribe"}},"/auth/newsletters/unsubscribe/{token}":{"get":{"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"Unsubscribe from newsletter via token link and render confirmation page","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"tags":["NewslettersController"],"operationId":"newslettersControllerUnsubscribePage"}},"/auth/newsletters":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscriberModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new NewsletterSubscriber","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscriberModelCreate"}}}},"tags":["NewslettersController"],"operationId":"newslettersControllerCreateItem"}},"/auth/newsletters/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of NewsletterSubscriber"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all NewsletterSubscriber","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"tags":["NewslettersController"],"operationId":"newslettersControllerSearchItems"}},"/auth/newsletters/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscriberModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a NewsletterSubscriber by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["NewslettersController"],"operationId":"newslettersControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscriberModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a NewsletterSubscriber by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscriberModelUpdate"}}}},"tags":["NewslettersController"],"operationId":"newslettersControllerUpdate"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscriberModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a NewsletterSubscriber by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["NewslettersController"],"operationId":"newslettersControllerDeleteItem"}},"/auth/notifications":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List social activity notifications with unread and realtime state","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1,"default":30}},{"in":"query","required":false,"name":"cursor","schema":{"type":"string","maxLength":1024}}],"tags":["NotificationController"],"operationId":"notificationControllerList"}},"/auth/notifications/summary":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSummaryResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get notification unread count and realtime subscription credentials","security":[{"bearerAuth":[]}],"parameters":[],"tags":["NotificationController"],"operationId":"notificationControllerSummary"}},"/auth/notifications/{id}/read":{"put":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Mark one notification as read","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["NotificationController"],"operationId":"notificationControllerMarkRead"}},"/auth/notifications/read-all":{"put":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Mark all notifications as read","security":[{"bearerAuth":[]}],"parameters":[],"tags":["NotificationController"],"operationId":"notificationControllerMarkAllRead"}},"/auth/payment-orders/me":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List payment orders for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"skip","schema":{"type":"number","minimum":0}},{"in":"query","required":false,"name":"limit","schema":{"type":"number","minimum":1}},{"in":"query","required":false,"name":"status","schema":{"type":"string","enum":["PENDING","SUCCEEDED","FAILED","CANCELLED"]}}],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerListForUser"}},"/auth/payment-orders/me/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a payment order for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerGetForUser"}},"/auth/payment-orders/invoices/indian":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download cumulative GST (INR) invoice PDF for a date range","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerDownloadIndianInvoice"}},"/auth/payment-orders/invoices/foreign":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Download cumulative foreign-currency export invoice PDF for a date range","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerDownloadForeignInvoice"}},"/auth/payment-orders/invoices/recipients":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List configured invoice-relay recipient emails","security":[{"bearerAuth":[]}],"parameters":[],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerListRecipients"}},"/auth/payment-orders/invoices/relay":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceRelayResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Trigger invoice relay (email both PDFs) for a date range to configured recipients","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceRelayRequest"}}}},"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerRelayInvoices"}},"/auth/payment-orders":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new UserPaymentOrder","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelCreate"}}}},"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerCreateItem"}},"/auth/payment-orders/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a UserPaymentOrder by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a UserPaymentOrder by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserPaymentOrder by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelUpdate"}}}},"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerUpdate"}},"/auth/payment-orders/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserPaymentOrder"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserPaymentOrder","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderSearchParams"}}}},"tags":["PaymentOrderController"],"operationId":"paymentOrderControllerGetAll"}},"/auth/payment-orders/paypal/checkout":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaypalCheckoutResponse"}}},"description":"Success"},"400":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"},"404":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Not Found"}},"summary":"Retrieve PayPal checkout details for a payment order","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"orderId","required":false,"schema":{"type":"string"}}],"tags":["PaymentOrderPaypalController"],"operationId":"paymentOrderPaypalControllerGetCheckoutDetails"}},"/auth/payment-orders/paypal/capture":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaypalCaptureResponse"}}},"description":"Success"},"400":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"},"404":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Not Found"}},"summary":"Capture a PayPal payment order","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaypalCaptureRequest"}}}},"tags":["PaymentOrderPaypalController"],"operationId":"paymentOrderPaypalControllerCapturePayment"}},"/auth/payment-orders/paypal/webhook/callback":{"post":{"responses":{"200":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"Handle PayPal webhook events to reconcile payment orders","parameters":[{"in":"header","name":"paypal-auth-algo","required":false,"schema":{"type":"string"}},{"in":"header","name":"paypal-cert-url","required":false,"schema":{"type":"string"}},{"in":"header","name":"paypal-transmission-id","required":false,"schema":{"type":"string"}},{"in":"header","name":"paypal-transmission-sig","required":false,"schema":{"type":"string"}},{"in":"header","name":"paypal-transmission-time","required":false,"schema":{"type":"string"}},{"in":"header","name":"paypal-webhook-id","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"*/*":{"schema":{"type":"object"}}}},"tags":["PaymentOrderPaypalWebhookController"],"operationId":"paymentOrderPaypalWebhookControllerHandleWebhook"}},"/auth/payment-orders/razorpay/checkout":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayCheckoutResponse"}}},"description":"Success"},"400":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"},"404":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Not Found"}},"summary":"Retrieve Razorpay checkout details for a payment order","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"orderId","required":false,"schema":{"type":"string"}}],"tags":["PaymentOrderRazorpayController"],"operationId":"paymentOrderRazorpayControllerGetCheckoutDetails"}},"/auth/payment-orders/razorpay/confirm":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}},"description":"Success"},"400":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"*/*":{"schema":{"type":"string"}},"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"},"404":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Not Found"}},"summary":"Confirm and capture a Razorpay payment order (non-production only)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayPaymentConfirmationRequest"}}}},"tags":["PaymentOrderRazorpayController"],"operationId":"paymentOrderRazorpayControllerConfirmPayment"}},"/auth/payment-orders/razorpay/webhook/callback":{"post":{"responses":{"200":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"Handle Razorpay webhook events to reconcile payment orders","parameters":[{"in":"header","name":"x-razorpay-signature","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"*/*":{"schema":{"type":"object"}}}},"tags":["PaymentOrderRazorpayWebhookController"],"operationId":"paymentOrderRazorpayWebhookControllerHandleWebhook"}},"/auth/performances/uploads":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitUploadResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Initiate a signed upload for a new solo performance","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitUploadBody"}}}},"tags":["PerformanceController"],"operationId":"performanceControllerInitUpload"}},"/auth/performances/me":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List the authenticated user's own ready performances","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","required":false,"name":"mediaType","schema":{"type":"string","enum":["AUDIO","VIDEO"]}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":100,"minimum":1,"multipleOf":1,"default":20}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1,"default":0}}],"tags":["PerformanceController"],"operationId":"performanceControllerListMine"}},"/auth/performances/me/progress":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceProgressResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The authenticated singer's KORE readings across their recent covers, oldest first","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":100,"minimum":1,"multipleOf":1,"default":30}}],"tags":["PerformanceController"],"operationId":"performanceControllerListProgress"}},"/auth/performances/search":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Search own and public ready performances","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","required":false,"name":"mediaType","schema":{"type":"string","enum":["AUDIO","VIDEO"]}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":100,"minimum":1,"multipleOf":1,"default":20}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1,"default":0}}],"tags":["PerformanceController"],"operationId":"performanceControllerSearch"}},"/auth/performances/public":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPerformanceListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Discover cover songs: performances their singers made public, free to play (Explore's Cover Songs tab)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","required":false,"name":"sort","schema":{"type":"string","default":"NEWEST","enum":["NEWEST","OLDEST"]}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1,"default":25}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1,"default":0}}],"tags":["PerformanceController"],"operationId":"performanceControllerListPublic"}},"/auth/performances/public/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPerformanceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"One public cover song as its Explore card — what a 'shared a cover' notification opens","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PerformanceController"],"operationId":"performanceControllerGetPublicOne"}},"/auth/performances/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a performance by ID","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PerformanceController"],"operationId":"performanceControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a performance (name and/or visibility)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePerformanceBody"}}}},"tags":["PerformanceController"],"operationId":"performanceControllerUpdate"},"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a performance and its stored media","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PerformanceController"],"operationId":"performanceControllerDelete"}},"/auth/performances/{id}/media":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceMediaResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a short-lived signed URL to stream/download the performance media","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PerformanceController"],"operationId":"performanceControllerGetMedia"}},"/auth/performances/{id}/complete":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Mark an uploaded performance as ready","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PerformanceController"],"operationId":"performanceControllerComplete"}},"/auth/permissions":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new Permission","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionModelCreate"}}}},"tags":["PermissionsController"],"operationId":"permissionsControllerCreateItem"}},"/auth/permissions/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Permission by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PermissionsController"],"operationId":"permissionsControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Permission by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PermissionsController"],"operationId":"permissionsControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a Permission by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionModelUpdate"}}}},"tags":["PermissionsController"],"operationId":"permissionsControllerUpdate"}},"/auth/permissions/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of Permission"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all Permission","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionSearchParams"}}}},"tags":["PermissionsController"],"operationId":"permissionsControllerGetAll"}},"/auth/playlists":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistDetailResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a playlist (private unless visibility is PUBLIC)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePlaylistBody"}}}},"tags":["PlaylistController"],"operationId":"playlistControllerCreatePlaylist"}},"/auth/playlists/me":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List the authenticated user's playlists; containsJobId / containsPerformanceId marks the ones already holding that item","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1,"default":25}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1,"default":0}},{"in":"query","required":false,"name":"containsJobId","schema":{"type":"integer","minimum":1,"multipleOf":1}},{"in":"query","required":false,"name":"containsPerformanceId","schema":{"type":"string","format":"uuid"}}],"tags":["PlaylistController"],"operationId":"playlistControllerListMine"}},"/auth/playlists/users/{handle}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List a user's public playlists (gated by the profile's privacy, like their performances)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"handle","required":true,"schema":{"type":"string"}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":50,"minimum":1,"multipleOf":1,"default":25}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":10000,"minimum":0,"multipleOf":1,"default":0}}],"tags":["PlaylistController"],"operationId":"playlistControllerListPublicByUser"}},"/auth/playlists/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistDetailResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a playlist with its entries (owner, or anyone for a PUBLIC playlist whose owner has not blocked them)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PlaylistController"],"operationId":"playlistControllerGetPlaylist"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistSummaryResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a playlist's name, description and/or visibility","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePlaylistBody"}}}},"tags":["PlaylistController"],"operationId":"playlistControllerUpdatePlaylist"},"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a playlist (its tracks and covers are untouched)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["PlaylistController"],"operationId":"playlistControllerDeletePlaylist"}},"/auth/playlists/{id}/items":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistItemResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Append a public karaoke track (jobId) or a performance (performanceId)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPlaylistItemBody"}}}},"tags":["PlaylistController"],"operationId":"playlistControllerAddItem"}},"/auth/playlists/{id}/items/order":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaylistDetailResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Reorder every entry of a playlist","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderPlaylistItemsBody"}}}},"tags":["PlaylistController"],"operationId":"playlistControllerReorderItems"}},"/auth/playlists/{id}/items/{itemId}":{"delete":{"responses":{"204":{"description":"No Content"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove one entry from a playlist","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"itemId","required":true,"schema":{"type":"string"}}],"tags":["PlaylistController"],"operationId":"playlistControllerRemoveItem"}},"/auth/presence/snapshot":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPresenceSnapshot"}}},"description":"Success"}},"summary":"Get privacy-safe aggregate user presence counts","parameters":[],"tags":["PresenceController"],"operationId":"presenceControllerGetSnapshot"}},"/auth/users/search":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSearchResponse"}}},"description":"Success"}},"summary":"Search discoverable users with follow and messaging state","parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":80}},{"in":"query","required":false,"name":"skip","schema":{"type":"number","maximum":10000,"minimum":0}},{"in":"query","required":false,"name":"limit","schema":{"type":"number","maximum":50,"minimum":1}}],"tags":["ProfileController"],"operationId":"profileControllerSearchUsers"},"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserControllerResponse"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserControllerResponse","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSearchParams"}}}},"tags":["UserController"],"operationId":"userControllerGetAll"}},"/auth/users/{@handle}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicProfileUser"}}},"description":"Success"}},"summary":"Get a user's public profile by handle","parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}}],"tags":["ProfileController"],"operationId":"profileControllerGetPublicProfile"}},"/auth/users/{@handle}/performances":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceListResponse"}}},"description":"Success"}},"summary":"List a user's public performances","parameters":[{"in":"path","name":"@handle","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"string"}},{"in":"query","name":"skip","required":false,"schema":{"type":"string"}}],"tags":["ProfileController"],"operationId":"profileControllerGetPublicPerformances"}},"/auth/promotions":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionBodyModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new PromotionBody","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionBodyModelCreate"}}}},"tags":["PromotionsController"],"operationId":"promotionsControllerCreateItem"}},"/auth/promotions/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Promotion by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PromotionsController"],"operationId":"promotionsControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Promotion by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["PromotionsController"],"operationId":"promotionsControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionBodyModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a PromotionBody by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionBodyModelUpdate"}}}},"tags":["PromotionsController"],"operationId":"promotionsControllerUpdate"}},"/auth/promotions/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of Promotion"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all Promotion","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionSearchParams"}}}},"tags":["PromotionsController"],"operationId":"promotionsControllerGetAll"}},"/auth/promotions/redemptions":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of PromotionRedemption"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all PromotionRedemption","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionRedemptionSearchParams"}}}},"tags":["PromotionsController"],"operationId":"promotionsControllerGetRedemptions"}},"/auth/push-tokens":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushTokenItemResponse"}}},"description":"Upserted token for the current user"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Register (upsert) a device push token for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPushTokenBody"}}}},"tags":["PushTokensController"],"operationId":"pushTokensControllerUpsert"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PushTokenItemResponse"}}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List the authenticated user's registered device push tokens","security":[{"bearerAuth":[]}],"parameters":[],"tags":["PushTokensController"],"operationId":"pushTokensControllerList"},"delete":{"responses":{"204":{"description":"Token removed"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete one of the authenticated user's device push tokens (typically on logout)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"token","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletePushTokenBody"}}}},"tags":["PushTokensController"],"operationId":"pushTokensControllerRemove"}},"/auth/countries":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new Country","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryModelCreate"}}}},"tags":["RegionCountryController"],"operationId":"regionCountryControllerCreateItem"}},"/auth/countries/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Country by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RegionCountryController"],"operationId":"regionCountryControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Country by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RegionCountryController"],"operationId":"regionCountryControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a Country by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryModelUpdate"}}}},"tags":["RegionCountryController"],"operationId":"regionCountryControllerUpdate"}},"/auth/countries/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of Country"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all Country","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountrySearchParams"}}}},"tags":["RegionCountryController"],"operationId":"regionCountryControllerGetAll"}},"/auth/roles":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new Role","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelCreate"}}}},"tags":["RolesController"],"operationId":"rolesControllerCreateItem"}},"/auth/roles/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a Role by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RolesController"],"operationId":"rolesControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a Role by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RolesController"],"operationId":"rolesControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a Role by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelUpdate"}}}},"tags":["RolesController"],"operationId":"rolesControllerUpdate"}},"/auth/roles/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of Role"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all Role","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleSearchParams"}}}},"tags":["RolesController"],"operationId":"rolesControllerGetAll"}},"/auth/roles/{roleId}/permissions":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleModelCreateResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Assign permissions to role","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"roleId","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionsLink"}}}},"tags":["RolesController"],"operationId":"rolesControllerAssignPermissions"}},"/auth/rvc-training-admin/summary":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: aggregate RVC training GPU usage, credit revenue estimates, provider cost, and reconciliation exposure","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}}],"tags":["RvcTrainingAdminController"],"operationId":"rvcTrainingAdminControllerSummary"}},"/auth/rvc-training-admin/runs":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: list sanitized RVC training lifecycle and economics records","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"string"}},{"in":"query","name":"from","required":false,"schema":{"type":"string"}},{"in":"query","name":"to","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"query","required":false,"schema":{"type":"string"}},{"in":"query","name":"userId","required":false,"schema":{"type":"string"}}],"tags":["RvcTrainingAdminController"],"operationId":"rvcTrainingAdminControllerList"}},"/auth/rvc-training-admin/runs/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: inspect one sanitized RVC training run and its source catalog","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcTrainingAdminController"],"operationId":"rvcTrainingAdminControllerGet"}},"/auth/rvc-voice-models/admin/jobs/{jobId}/training":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcAdminTrainingReportResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: a voice training job's recordings (playable), run metrics and economics, and the covers made with the voice","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerAdminTrainingReport"}},"/auth/rvc-voice-models/config":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceStudioConfigResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get Voice Studio limits, metered training rate, authorization cap, and available credits","security":[{"bearerAuth":[]}],"parameters":[],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerGetConfig"}},"/auth/rvc-voice-models/me/uploads":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcUploadResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Stage one private audio reference for a future voice training request","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerUpload"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RvcUploadResponse"}}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List private staged reference uploads that have not been submitted","security":[{"bearerAuth":[]}],"parameters":[],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerListUploads"}},"/auth/rvc-voice-models/me/uploads/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Remove a staged reference upload that has not been submitted","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerDeleteUpload"}},"/auth/rvc-voice-models/me":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Start background RVC voice training from the configured number of YouTube links and audio uploads","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRvcVoiceModelRequest"}}}},"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerCreate"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List the authenticated user’s trained and in-progress voices","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"skip","schema":{"type":"integer","default":0,"minimum":0,"multipleOf":1}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","default":24,"maximum":100,"minimum":1,"multipleOf":1}},{"in":"query","required":false,"name":"query","schema":{"type":"string","maxLength":100}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerList"}},"/auth/rvc-voice-models/me/training-progress":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Poll compact live progress for authenticated user voice-model ids","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"ids","required":false,"schema":{"type":"string"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerTrainingProgress"}},"/auth/rvc-voice-models/me/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get one voice model with its latest training run and reference catalog","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerGet"},"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a terminal voice catalog entry and its retained reference files while preserving job and billing history","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerDelete"}},"/auth/rvc-voice-models/me/{id}/archive":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Archive a completed voice model without deleting provider-managed artifacts","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerArchive"}},"/auth/rvc-voice-models/me/{id}/retry":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Retry failed or cancelled voice training, or immediately retry a run waiting for converter capacity","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerRetry"}},"/auth/rvc-voice-models/me/{id}/cancel":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Cancel queued voice training or request safe cancellation of provider-dispatched training","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerCancel"}},"/auth/rvc-voice-models/me/{id}/reconcile":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RvcVoiceModelResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Immediately verify and recover an uncertain provider training result","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerReconcile"}},"/auth/rvc-voice-models/me/{id}/covers":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Queue a voice-cover job from a YouTube song","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRvcCoverRequest"}}}},"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerCreateYouTubeCover"}},"/auth/rvc-voice-models/me/{id}/covers/upload":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Queue an audio-only voice-cover job from uploaded song audio or MP4 media","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["RvcVoiceModelController"],"operationId":"rvcVoiceModelControllerCreateUploadCover"}},"/auth/service-downloader":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceDownloadResponse"}}},"description":"Success"}},"summary":"Download audio and video assets for a YouTube link","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceDownloadRequest"}}}},"tags":["ServiceDownloaderController"],"operationId":"serviceDownloaderControllerDownload"}},"/auth/service-downloader/preview":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceYoutubePreviewResponse"}}},"description":"Success"}},"summary":"Retrieve YouTube metadata without triggering downloads","parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceYoutubePreviewRequest"}}}},"tags":["ServiceDownloaderController"],"operationId":"serviceDownloaderControllerGetYoutubePreview"}},"/auth/service-downloader-quotas/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of ServiceDownloaderQuotaList"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all ServiceDownloaderQuotaList","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceDownloaderQuotaSearchParams"}}}},"tags":["ServiceDownloaderQuotaController"],"operationId":"serviceDownloaderQuotaControllerGetAll"}},"/auth/service-downloader-usages/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of ServiceDownloaderUsageList"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all ServiceDownloaderUsageList","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceDownloaderUsageSearchParams"}}}},"tags":["ServiceDownloaderUsageController"],"operationId":"serviceDownloaderUsageControllerGetAll"}},"/auth/system-configs":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemConfigModel"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get global system configuration","security":[{"bearerAuth":[]}],"parameters":[],"tags":["SystemConfigsController"],"operationId":"systemConfigsControllerGetConfig"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemConfigModel"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update global system configuration and restart services","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemConfigUpdateBody"}}}},"tags":["SystemConfigsController"],"operationId":"systemConfigsControllerUpdateConfig"}},"/auth/system-configs/llm-models":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List every model the configured LLM providers serve, with pricing presets","security":[{"bearerAuth":[]}],"parameters":[],"tags":["SystemConfigsController"],"operationId":"systemConfigsControllerListLlmModels"}},"/auth/system-configs/client":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get client-safe system configuration values for authenticated users","security":[{"bearerAuth":[]}],"parameters":[],"tags":["SystemConfigsController"],"operationId":"systemConfigsControllerGetClientConfig"}},"/auth/system-configs/restart":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Soft-restart backend services without process restart","security":[{"bearerAuth":[]}],"parameters":[],"tags":["SystemConfigsController"],"operationId":"systemConfigsControllerRestart"}},"/auth/users/activity":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Record client activity for presence (throttled server-side)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["UserController"],"operationId":"userControllerRecordActivity"}},"/auth/users/{id}/devices":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDevicesResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: the devices a user runs Voxmin on, and the push tokens registered from each","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserController"],"operationId":"userControllerGetUserDevices"}},"/auth/users/navigation":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"get navigation for user in token","security":[{"bearerAuth":[]}],"parameters":[],"tags":["UserController"],"operationId":"userControllerGetUserNavigation"}},"/auth/users/apiKey":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyModelCreate"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new key-secret pair","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyModelCreate"}}}},"tags":["UserController"],"operationId":"userControllerCreateNewApiKey"},"get":{"responses":{"200":{"content":{"*/*":{"schema":{}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"get api keys for user in token","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"limit","required":false,"schema":{"type":"number"}},{"in":"query","name":"skip","required":false,"schema":{"type":"number"}}],"tags":["UserController"],"operationId":"userControllerGetUserApiKeys"},"delete":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyModelDelete"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"delete api key for user in token","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyModelDelete"}}}},"tags":["UserController"],"operationId":"userControllerDeleteUserApiKey"}},"/auth/users/credits/balance":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditBalanceResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get credit balance for user in token","security":[{"bearerAuth":[]}],"parameters":[],"tags":["UserController"],"operationId":"userControllerGetBalance"}},"/auth/users/credits/transactions":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditTransactionListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"List credit transactions for user in token","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"skip","schema":{"type":"number","minimum":0}},{"in":"query","required":false,"name":"limit","schema":{"type":"number","minimum":1}},{"in":"query","required":false,"name":"direction","schema":{"type":"string","enum":["CREDIT","DEBIT"]}},{"in":"query","required":false,"name":"referenceType","schema":{"type":"string","maxLength":64}},{"in":"query","required":false,"name":"referenceId","schema":{"type":"string","maxLength":64}},{"in":"query","required":false,"name":"jobId","schema":{"type":"number"}}],"tags":["UserController"],"operationId":"userControllerGetCreditTransactions"}},"/auth/users/credits/orders":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditOrderResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a payment provider order for credit top-up","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreditOrderPayload"}}}},"tags":["UserController"],"operationId":"userControllerCreateCreditOrder"}},"/auth/users/credits/orders/plan":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditOrderResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a payment provider order for a credit plan purchase","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"currency","required":false,"schema":{"type":"string"}},{"in":"query","name":"provider","required":false,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchasePlanByIdPayload"}}}},"tags":["UserController"],"operationId":"userControllerCreateCreditOrderForPlan"}},"/auth/users/profile":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"get profile for user in token","security":[{"bearerAuth":[]}],"parameters":[],"tags":["UserController"],"operationId":"userControllerGetUserProfile"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"update profile for user in token","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserProfilePayload"}}}},"tags":["UserController"],"operationId":"userControllerUpdateUserProfile"}},"/auth/users/profile/handle":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHandleResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update user handle (public username)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHandlePayload"}}}},"tags":["UserController"],"operationId":"userControllerUpdateHandle"}},"/auth/users/profile/avatar":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAvatarResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Upload a profile picture for the authenticated user","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"file":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["UserController"],"operationId":"userControllerUploadAvatar"}},"/auth/users/profile/avatar-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvatarDownloadLinkResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Generate a fresh signed download link for the authenticated user avatar","security":[{"bearerAuth":[]}],"parameters":[],"tags":["UserController"],"operationId":"userControllerGetAvatarDownloadLink"}},"/auth/users/reset-password":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelUpdatePassword"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"update or reset user password","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePasswordRequest"}}}},"tags":["UserController"],"operationId":"userControllerUpdateUserPassword"}},"/auth/users/delete-account":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse"}}},"description":"Account marked as deleted and sessions revoked"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Permanently soft-delete the current user account","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountRequest"}}}},"tags":["UserController"],"operationId":"userControllerDeleteAccount"}},"/auth/users/{id}/credits/grant":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGrantCreditResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: grant promotional credits to a user by ID","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminGrantCreditPayload"}}}},"tags":["UserController"],"operationId":"userControllerGrantCreditToUser"}},"/auth/users/{id}/authorizations":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelAuthorizations"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Assign roles or permissions to user","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationsPayload"}}}},"tags":["UserController"],"operationId":"userControllerAssignRolesOrPermissions"}},"/auth/users":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new User","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelCreate"}}}},"tags":["UserController"],"operationId":"userControllerCreateItem"}},"/auth/users/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a User by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserController"],"operationId":"userControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a User by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserController"],"operationId":"userControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserControllerUpdateModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserControllerUpdate by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserControllerUpdateModelUpdate"}}}},"tags":["UserController"],"operationId":"userControllerUpdate"}},"/auth/user-credit-accounts":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new UserCreditAccount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelCreate"}}}},"tags":["UserCreditAccountController"],"operationId":"userCreditAccountControllerCreateItem"}},"/auth/user-credit-accounts/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a UserCreditAccount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserCreditAccountController"],"operationId":"userCreditAccountControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a UserCreditAccount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserCreditAccountController"],"operationId":"userCreditAccountControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserCreditAccount by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountModelUpdate"}}}},"tags":["UserCreditAccountController"],"operationId":"userCreditAccountControllerUpdate"}},"/auth/user-credit-accounts/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserCreditAccount"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserCreditAccount","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditAccountSearchParams"}}}},"tags":["UserCreditAccountController"],"operationId":"userCreditAccountControllerGetAll"}},"/auth/user-credit-transactions":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new UserCreditTransaction","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelCreate"}}}},"tags":["UserCreditTransactionController"],"operationId":"userCreditTransactionControllerCreateItem"}},"/auth/user-credit-transactions/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a UserCreditTransaction by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserCreditTransactionController"],"operationId":"userCreditTransactionControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a UserCreditTransaction by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserCreditTransactionController"],"operationId":"userCreditTransactionControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserCreditTransaction by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionModelUpdate"}}}},"tags":["UserCreditTransactionController"],"operationId":"userCreditTransactionControllerUpdate"}},"/auth/user-credit-transactions/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserCreditTransaction"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserCreditTransaction","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreditTransactionSearchParams"}}}},"tags":["UserCreditTransactionController"],"operationId":"userCreditTransactionControllerGetAll"}},"/auth/user-payment-orders":{"post":{"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelCreateResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Create a new UserPaymentOrder","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelCreate"}}}},"tags":["UserPaymentOrderController"],"operationId":"userPaymentOrderControllerCreateItem"}},"/auth/user-payment-orders/{id}":{"delete":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelDelete"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a UserPaymentOrder by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserPaymentOrderController"],"operationId":"userPaymentOrderControllerDeleteItem"},"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelRead"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get a UserPaymentOrder by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["UserPaymentOrderController"],"operationId":"userPaymentOrderControllerGetOne"},"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelUpdate"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Update a UserPaymentOrder by id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderModelUpdate"}}}},"tags":["UserPaymentOrderController"],"operationId":"userPaymentOrderControllerUpdate"}},"/auth/user-payment-orders/search":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetItemsResponseRead"}}},"description":"Return a list of UserPaymentOrder"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Get all UserPaymentOrder","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentOrderSearchParams"}}}},"tags":["UserPaymentOrderController"],"operationId":"userPaymentOrderControllerGetAll"}},"/auth/admin/voices":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: saved voices, newest first — filter by userId, status (pending|verified|ready|failed|removed); page (50 a page, pageSize up to 100)","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"userId","required":false,"schema":{"type":"string"}},{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"pageSize","required":false,"schema":{"type":"string"}}],"tags":["VoicesAdminController"],"operationId":"voicesAdminControllerListVoices"}},"/auth/admin/voices/reports":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: voice reports, newest first, each with its voice — filter by status (open|reviewed|actioned|dismissed); page","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","name":"status","required":false,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"string"}},{"in":"query","name":"pageSize","required":false,"schema":{"type":"string"}}],"tags":["VoicesAdminController"],"operationId":"voicesAdminControllerListReports"}},"/auth/admin/voices/reports/{id}/resolve":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: resolve a report — dismiss it, or take its voice down","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceResolveReportBody"}}}},"tags":["VoicesAdminController"],"operationId":"voicesAdminControllerResolveReport"}},"/auth/admin/voices/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: one voice with its attestation, the fingerprints of its recordings and its audit trail","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["VoicesAdminController"],"operationId":"voicesAdminControllerGetVoice"}},"/auth/admin/voices/{id}/takedown":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: take a voice down — its recordings and clone are deleted, the voice marked removed, its open reports actioned","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceTakedownBody"}}}},"tags":["VoicesAdminController"],"operationId":"voicesAdminControllerTakedownVoice"}},"/auth/voices/config":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Whether saving voices is on, how many the member keeps, the limits, the terms and whether they are accepted, the attestation sentences, and whether the voice check is available","security":[{"bearerAuth":[]}],"parameters":[],"tags":["VoicesController"],"operationId":"voicesControllerGetConfig"}},"/auth/voices/terms":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Accept the current saved voice terms (version must be the current one)","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceTermsBody"}}}},"tags":["VoicesController"],"operationId":"voicesControllerAcceptTerms"}},"/auth/voices":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"My voices: the member's saved voices, each with its status and the next step it waits for","security":[{"bearerAuth":[]}],"parameters":[],"tags":["VoicesController"],"operationId":"voicesControllerListVoices"},"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Save a voice: multipart files[] (1-3 recordings, 30 s in all), name, language?, transcript?, consentKind self|permission, attestation \"true\", attestationVersion → the voice (status pending; it waits for the live reading of a phrase). 422 unusable {report} when the recordings cannot be used; 409 quota; 403 terms_required","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"files":{"type":"array","items":{"type":"string","format":"binary"}},"files[]":{"type":"array","items":{"type":"string","format":"binary"}},"file":{"type":"string","format":"binary"},"audio":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["VoicesController"],"operationId":"voicesControllerCreateVoice"}},"/auth/voices/analyse":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The quality report of 1-3 recordings before anything is saved (free; nothing is stored): multipart files[] (or file), language?, transcript? → {usable, totalSeconds, issues: [{code, severity block|warn, message}], advice, samples, best}","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"files":{"type":"array","items":{"type":"string","format":"binary"}},"files[]":{"type":"array","items":{"type":"string","format":"binary"}},"file":{"type":"string","format":"binary"},"audio":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["VoicesController"],"operationId":"voicesControllerAnalyse"}},"/auth/voices/reports":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Report a saved voice (impersonation, no_consent, harassment, fraud, other) by its id","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceReportBody"}}}},"tags":["VoicesController"],"operationId":"voicesControllerCreateReport"}},"/auth/voices/{id}":{"get":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A saved voice","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["VoicesController"],"operationId":"voicesControllerGetVoice"},"patch":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Rename a saved voice","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceRenameBody"}}}},"tags":["VoicesController"],"operationId":"voicesControllerRenameVoice"},"delete":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Delete a saved voice: its recordings and the copy of the voice are deleted, and speech in it stops at once","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["VoicesController"],"operationId":"voicesControllerDeleteVoice"}},"/auth/voices/{id}/consent":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Confirm the voice is yours (consentKind self) or its owner has agreed (permission), for a voice saved without that step","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceConsentBody"}}}},"tags":["VoicesController"],"operationId":"voicesControllerGiveConsent"}},"/auth/voices/{id}/phrase":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A phrase to read aloud to prove the voice is yours → {phrase, language, expiresAt, secondsEstimate}; good for ten minutes and for one reading","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["VoicesController"],"operationId":"voicesControllerIssuePhrase"}},"/auth/voices/{id}/verify":{"post":{"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field>  [fieldName] Example: File too long file1"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"The live reading of the phrase (multipart: reading, the recording) → {passed, score, threshold, reasons, voice}; the voice is ready on a pass. 409 phrase_expired (ask for a new phrase); 503 verifier_missing means the check is unavailable (not a fail)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"properties":{"reading":{"type":"string","format":"binary"}},"type":"object"}}}},"tags":["VoicesController"],"operationId":"voicesControllerVerify"}},"/auth/voices/{id}/try":{"post":{"responses":{"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Hear a line (1-200 characters) in a ready voice, free (20 an hour) → {url, seconds, expiresIn}","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceTryBody"}}}},"tags":["VoicesController"],"operationId":"voicesControllerTryLine"}},"/auth/flo-internal/voices":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: the member's saved voices (X-Flo-User), any status, none removed → {voices: [VoiceRecord]}","parameters":[],"tags":["VoicesInternalController"],"operationId":"voicesInternalControllerList"}},"/auth/flo-internal/voices/{id}":{"get":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: one voice with a short-lived link to its best passage (passageUrl); 404 when missing or removed, 403 when another member's","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["VoicesInternalController"],"operationId":"voicesInternalControllerGet"}},"/auth/flo-internal/voices/{id}/profile":{"put":{"responses":{"200":{"description":"Success"}},"summary":"Flow internal: the clone Flow made in the voice sidecar ({omnivoiceProfileId, profileName}) → {ok: true}","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["VoicesInternalController"],"operationId":"voicesInternalControllerPutProfile"}},"/auth/youtube-library/admin/status":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryAdminStatusResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: library counts, the last sync and the next one","security":[{"bearerAuth":[]}],"parameters":[],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerAdminStatus"}},"/auth/youtube-library/admin/entries":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryAdminListResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: every library row, whatever its state","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","required":false,"name":"status","schema":{"type":"string","enum":["DISCOVERED","SKIPPED","QUEUED","READY","FAILED","REMOVED"]}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":200,"minimum":1,"multipleOf":1}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":100000,"minimum":0,"multipleOf":1}}],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerAdminList"}},"/auth/youtube-library/admin/entries/{id}":{"put":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryAdminEntryResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: edit a song (title, artist, language) or hide, feature and order it","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryAdminUpdateBody"}}}},"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerAdminUpdate"}},"/auth/youtube-library/admin/entries/{id}/process":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryAdminEntryResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: make (or remake) the karaoke job for this video now","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerAdminProcess"}},"/auth/youtube-library/admin/sync":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibrarySyncSummary"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: list the channels now instead of waiting for the next sync","security":[{"bearerAuth":[]}],"parameters":[],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerAdminSync"}},"/auth/youtube-library/admin/import":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryImportResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: add videos by link, from any channel","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryImportBody"}}}},"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerAdminImport"}},"/auth/youtube-library/config":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryPublicConfigResponse"}}},"description":"Success"}},"summary":"Whether the library is on, and what a visitor can do in it","security":[{"bearerAuth":[]}],"parameters":[],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerGetConfig"}},"/auth/youtube-library":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryListResponse"}}},"description":"Success"}},"summary":"List library songs: search, artist and language filters, four sort orders","security":[{"bearerAuth":[]}],"parameters":[{"in":"query","required":false,"name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","required":false,"name":"artist","schema":{"type":"string","maxLength":200}},{"in":"query","required":false,"name":"language","schema":{"type":"string","maxLength":35}},{"in":"query","required":false,"name":"sort","schema":{"type":"string","enum":["featured","newest","popular","title"]}},{"in":"query","required":false,"name":"limit","schema":{"type":"integer","maximum":60,"minimum":1,"multipleOf":1}},{"in":"query","required":false,"name":"skip","schema":{"type":"integer","maximum":100000,"minimum":0,"multipleOf":1}},{"in":"query","required":false,"name":"facets","schema":{"type":"boolean"}}],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerList"}},"/auth/youtube-library/{id}/download-link":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryDownloadResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"A signed link that saves the song’s karaoke video under its name","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerGetDownloadLink"}},"/auth/youtube-library/{id}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubeLibraryItemResponse"}}},"description":"Success"}},"summary":"One library song, by its library id or YouTube video id","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"tags":["YoutubeLibraryController"],"operationId":"youtubeLibraryControllerGetOne"}},"/auth/youtube-publish/status":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubePublishStatusResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: whether publishing is set up (System Config, the account, a VoxMin that reaches ytbd) and how many uploads are running","security":[{"bearerAuth":[]}],"parameters":[],"tags":["YoutubePublishController"],"operationId":"youtubePublishControllerStatus"}},"/auth/youtube-publish/check":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubePublishCheckResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: ask each VoxMin whether its ytbd is up (ytbd does not sign in; that happens on an upload)","security":[{"bearerAuth":[]}],"parameters":[],"tags":["YoutubePublishController"],"operationId":"youtubePublishControllerCheck"}},"/auth/youtube-publish/jobs/{jobId}":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubePublishJobResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"}},"summary":"Admin: what publishing this job would send (from System Config), what stops it, and its publishes so far","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"tags":["YoutubePublishController"],"operationId":"youtubePublishControllerForJob"},"post":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubePublicationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Forbidden"}}},"description":"Forbidden"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conflict"}}},"description":"Conflict"}},"summary":"Admin: publish this job’s video to the YouTube channel (answers at once; the upload runs in the background)","security":[{"bearerAuth":[]}],"parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"number"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YoutubePublishBody"}}}},"tags":["YoutubePublishController"],"operationId":"youtubePublishControllerPublish"}},"/":{"get":{"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Success"}},"parameters":[{"in":"header","name":"x-forwarded-proto","required":false,"schema":{"type":"string"}},{"in":"header","name":"host","required":false,"schema":{"type":"string"}}],"tags":["IndexController"],"operationId":"indexControllerGet"}},"/.well-known/oauth-protected-resource":{"get":{"responses":{"200":{"description":"Success"}},"summary":"MCP protected-resource metadata (RFC 9728)","parameters":[],"tags":["McpWellKnownController"],"operationId":"mcpWellKnownControllerResourceRoot"}},"/.well-known/oauth-protected-resource/auth/mcp":{"get":{"responses":{"200":{"description":"Success"}},"summary":"MCP protected-resource metadata for /auth/mcp (RFC 9728)","parameters":[],"tags":["McpWellKnownController"],"operationId":"mcpWellKnownControllerResourceForEndpoint"}},"/.well-known/oauth-authorization-server":{"get":{"responses":{"200":{"description":"Success"}},"summary":"OAuth authorization-server metadata (RFC 8414)","parameters":[],"tags":["McpWellKnownController"],"operationId":"mcpWellKnownControllerAuthorizationServer"}},"/checkout/paypal":{"get":{"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"Render PayPal standard checkout for a payment order","parameters":[{"in":"query","name":"orderId","required":false,"schema":{"type":"string"}},{"in":"query","name":"token","required":false,"schema":{"type":"string"}}],"tags":["PaypalCheckoutPageController"],"operationId":"paypalCheckoutPageControllerRenderCheckout"}},"/checkout/razorpay":{"get":{"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"Render Razorpay standard checkout for a payment order","parameters":[{"in":"query","name":"orderId","required":false,"schema":{"type":"string"}},{"in":"query","name":"token","required":false,"schema":{"type":"string"}}],"tags":["RazorpayCheckoutPageController"],"operationId":"razorpayCheckoutPageControllerRenderCheckout"}},"/verify-email":{"get":{"responses":{"200":{"content":{"text/html":{"schema":{"type":"string"}}},"description":"Success"}},"summary":"Verify email address and render confirmation page","parameters":[{"in":"query","name":"token","required":false,"schema":{"type":"string"}}],"tags":["VerifyEmailPageController"],"operationId":"verifyEmailPageControllerRenderVerifyEmail"}}},"tags":[{"name":"AdRewardAdminController"},{"name":"AdRewardPolicyController"},{"name":"AdRewardSsvController"},{"name":"AdRewardsController"},{"name":"AdminAnalyticsController"},{"name":"AdminConversationsController"},{"name":"AiStudioController"},{"name":"AuthController"},{"name":"BannersController"},{"name":"ChatController"},{"name":"ChunkedUploadsController"},{"name":"CreditAccountController"},{"name":"CreditPlanPriceController"},{"name":"CreditPlansController"},{"name":"CreditTransactionController"},{"name":"CueSheetController"},{"name":"CurrencyController"},{"name":"CurrencyExchangeController"},{"name":"DemoSongAdminController"},{"name":"DemoSongController"},{"name":"DemoSongJobAdminController"},{"name":"DemoSongQuotaAdminController"},{"name":"DiscountsController"},{"name":"EmailTemplatesController"},{"name":"ExternalApis"},{"name":"ExternalUsers"},{"name":"FaceSwapAdminController"},{"name":"FaceSwapController"},{"name":"FaceSwapInternalController"},{"name":"FeedController"},{"name":"FloGpuGatewayController"},{"name":"FloInternalController"},{"name":"FloLlmGatewayController"},{"name":"FloStudioAdminController"},{"name":"FloStudioController"},{"name":"FloStudioMediaController"},{"name":"FollowController"},{"name":"ImageEditorAgentController"},{"name":"ImageKitRunController"},{"name":"ImageStudioCharacterController"},{"name":"ImageStudioController"},{"name":"JobController"},{"name":"JobPricingConfigsController"},{"name":"KoreController"},{"name":"MarketingEmailsController"},{"name":"McpConnectionsController"},{"name":"McpOAuthController"},{"name":"McpServerController"},{"name":"McpSignInController"},{"name":"McpTokensController"},{"name":"McpUploadPiecesController"},{"name":"NewslettersController"},{"name":"NotificationController"},{"name":"PaymentOrderController"},{"name":"PaymentOrderPaypalController"},{"name":"PaymentOrderPaypalWebhookController"},{"name":"PaymentOrderRazorpayController"},{"name":"PaymentOrderRazorpayWebhookController"},{"name":"PerformanceController"},{"name":"PermissionsController"},{"name":"PlaylistController"},{"name":"PresenceController"},{"name":"ProfileController"},{"name":"PromotionsController"},{"name":"PushTokensController"},{"name":"RegionCountryController"},{"name":"RolesController"},{"name":"RvcTrainingAdminController"},{"name":"RvcVoiceModelController"},{"name":"ServiceDownloaderController"},{"name":"ServiceDownloaderQuotaController"},{"name":"ServiceDownloaderUsageController"},{"name":"SystemConfigsController"},{"name":"UserController"},{"name":"UserCreditAccountController"},{"name":"UserCreditTransactionController"},{"name":"UserPaymentOrderController"},{"name":"VoicesAdminController"},{"name":"VoicesController"},{"name":"VoicesInternalController"},{"name":"YoutubeLibraryController"},{"name":"YoutubePublishController"},{"name":"IndexController"},{"name":"McpWellKnownController"},{"name":"PaypalCheckoutPageController"},{"name":"RazorpayCheckoutPageController"},{"name":"VerifyEmailPageController"}]}