{"openapi":"3.1.0","info":{"title":"ChorusCut","version":"0.4.0"},"paths":{"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api Health Get"}}}}}}},"/api/auth/register":{"post":{"summary":"Register","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Registration"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credentials"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/oauth/providers":{"get":{"summary":"Oauth Providers","operationId":"oauth_providers_api_auth_oauth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Oauth Providers Api Auth Oauth Providers Get"}}}}}}},"/api/auth/oauth/{provider}/start":{"get":{"summary":"Oauth Start","operationId":"oauth_start_api_auth_oauth__provider__start_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/oauth/{provider}/callback":{"get":{"summary":"Oauth Callback","operationId":"oauth_callback_api_auth_oauth__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify-email":{"post":{"summary":"Verify Email","operationId":"verify_email_api_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Verify Email Api Auth Verify Email Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/resend-verification":{"post":{"summary":"Resend Verification","operationId":"resend_verification_api_auth_resend_verification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Resend Verification Api Auth Resend Verification Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/forgot-password":{"post":{"summary":"Forgot Password","operationId":"forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Forgot Password Api Auth Forgot Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"summary":"Reset Password","operationId":"reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewPassword"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Reset Password Api Auth Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/change-password":{"post":{"summary":"Change Password","operationId":"change_password_api_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChange"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/emails":{"get":{"summary":"Dev Emails","operationId":"dev_emails_api_dev_emails_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dev Emails Api Dev Emails Get"}}}}}}},"/api/auth/me":{"get":{"summary":"Me","operationId":"me_api_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Api Auth Me Get"}}}}}}},"/api/auth/logout":{"post":{"summary":"Logout","operationId":"logout_api_auth_logout_post","responses":{"204":{"description":"Successful Response"}}}},"/api/projects":{"get":{"summary":"List Projects","operationId":"list_projects_api_projects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Projects Api Projects Get"}}}}}}},"/api/account/usage":{"get":{"summary":"Account Usage","operationId":"account_usage_api_account_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Account Usage Api Account Usage Get"}}}}}}},"/api/jobs":{"post":{"summary":"Create Job","operationId":"create_job_api_jobs_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_job_api_jobs_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Job Api Jobs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}":{"get":{"summary":"Get Job","operationId":"get_job_api_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Api Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Job","operationId":"delete_job_api_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/branding":{"post":{"summary":"Update Job Branding","operationId":"update_job_branding_api_jobs__job_id__branding_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_update_job_branding_api_jobs__job_id__branding_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Job Branding Api Jobs  Job Id  Branding Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics":{"get":{"summary":"Analytics Dashboard","operationId":"analytics_dashboard_api_analytics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Analytics Dashboard Api Analytics Get"}}}}}}},"/api/social/providers":{"get":{"summary":"Social Providers","operationId":"social_providers_api_social_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Social Providers Api Social Providers Get"}}}}}}},"/api/social/youtube/connect":{"get":{"summary":"Connect Youtube","operationId":"connect_youtube_api_social_youtube_connect_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/social/youtube/callback":{"get":{"summary":"Youtube Callback","operationId":"youtube_callback_api_social_youtube_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/{provider}":{"delete":{"summary":"Disconnect Social","operationId":"disconnect_social_api_social__provider__delete","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/clips/{filename}/publish/youtube":{"post":{"summary":"Publish Youtube","operationId":"publish_youtube_api_jobs__job_id__clips__filename__publish_youtube_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Publish Youtube Api Jobs  Job Id  Clips  Filename  Publish Youtube Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing":{"get":{"summary":"Billing Status","operationId":"billing_status_api_billing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Billing Status Api Billing Get"}}}}}}},"/api/billing/checkout":{"post":{"summary":"Billing Checkout","operationId":"billing_checkout_api_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Billing Checkout Api Billing Checkout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/webhook":{"post":{"summary":"Billing Webhook","operationId":"billing_webhook_api_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Billing Webhook Api Billing Webhook Post"}}}}}}},"/api/jobs/{job_id}/clips/{filename}/analytics":{"put":{"summary":"Update Clip Analytics","operationId":"update_clip_analytics_api_jobs__job_id__clips__filename__analytics_put","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Clip Analytics Api Jobs  Job Id  Clips  Filename  Analytics Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/retry":{"post":{"summary":"Retry Job","operationId":"retry_job_api_jobs__job_id__retry_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Retry Job Api Jobs  Job Id  Retry Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/clips":{"post":{"summary":"Adjust Clip","operationId":"adjust_clip_api_jobs__job_id__clips_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClipAdjustment"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Adjust Clip Api Jobs  Job Id  Clips Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/stats":{"get":{"summary":"Admin Stats","operationId":"admin_stats_api_admin_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Stats Api Admin Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/event":{"post":{"summary":"Record Funnel Event","operationId":"record_funnel_event_api_funnel_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunnelEvent"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stats":{"get":{"summary":"Admin Stats Page","operationId":"admin_stats_page_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/jobs/{job_id}/files/{filename}":{"get":{"summary":"Get File","operationId":"get_file_api_jobs__job_id__files__filename__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/branding/logo":{"get":{"summary":"Get Branding Logo","operationId":"get_branding_logo_api_jobs__job_id__branding_logo_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/download/{filename}":{"get":{"summary":"Download File","operationId":"download_file_api_jobs__job_id__download__filename__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/source":{"get":{"summary":"Get Source","operationId":"get_source_api_jobs__job_id__source_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalyticsUpdate":{"properties":{"platform":{"type":"string","title":"Platform"},"external_url":{"type":"string","title":"External Url","default":""},"views":{"type":"integer","title":"Views","default":0},"likes":{"type":"integer","title":"Likes","default":0},"comments":{"type":"integer","title":"Comments","default":0},"shares":{"type":"integer","title":"Shares","default":0}},"type":"object","required":["platform"],"title":"AnalyticsUpdate"},"Body_create_job_api_jobs_post":{"properties":{"video":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Video"},"source_url":{"type":"string","title":"Source Url","default":""},"count":{"type":"integer","title":"Count","default":3},"duration":{"type":"number","title":"Duration","default":25},"title":{"type":"string","title":"Title","default":""},"template":{"type":"string","title":"Template","default":"creator"},"framing":{"type":"string","title":"Framing","default":"classic"},"caption_style":{"type":"string","title":"Caption Style","default":"bold"},"brand":{"type":"string","title":"Brand","default":"CHORUSCUT"},"brand_logo":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Brand Logo"},"logo_position":{"type":"string","title":"Logo Position","default":"top-right"},"logo_size":{"type":"integer","title":"Logo Size","default":16}},"type":"object","title":"Body_create_job_api_jobs_post"},"Body_update_job_branding_api_jobs__job_id__branding_post":{"properties":{"brand":{"type":"string","title":"Brand","default":""},"brand_logo":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Brand Logo"},"logo_size":{"type":"integer","title":"Logo Size","default":16},"logo_x":{"type":"integer","title":"Logo X","default":85},"logo_y":{"type":"integer","title":"Logo Y","default":12},"brand_x":{"type":"integer","title":"Brand X","default":50},"brand_y":{"type":"integer","title":"Brand Y","default":8}},"type":"object","title":"Body_update_job_branding_api_jobs__job_id__branding_post"},"CaptionWord":{"properties":{"start":{"type":"number","title":"Start"},"end":{"type":"number","title":"End"},"text":{"type":"string","title":"Text"}},"type":"object","required":["start","end","text"],"title":"CaptionWord"},"CheckoutRequest":{"properties":{"product":{"type":"string","title":"Product"}},"type":"object","required":["product"],"title":"CheckoutRequest"},"ClipAdjustment":{"properties":{"start":{"type":"number","title":"Start"},"duration":{"type":"number","title":"Duration"},"captions":{"anyOf":[{"items":{"$ref":"#/components/schemas/CaptionWord"},"type":"array"},{"type":"null"}],"title":"Captions"},"caption_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption Style"},"template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"},"framing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Framing"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"},"replace_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replace Filename"}},"type":"object","required":["start","duration"],"title":"ClipAdjustment"},"Credentials":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"Credentials"},"FunnelEvent":{"properties":{"event_type":{"type":"string","title":"Event Type"},"source":{"type":"string","title":"Source","default":"direct"},"campaign":{"type":"string","title":"Campaign","default":""},"job_id":{"type":"string","title":"Job Id","default":""}},"type":"object","required":["event_type"],"title":"FunnelEvent"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"NewPassword":{"properties":{"token":{"type":"string","title":"Token"},"password":{"type":"string","title":"Password"},"confirm_password":{"type":"string","title":"Confirm Password"}},"type":"object","required":["token","password","confirm_password"],"title":"NewPassword"},"PasswordChange":{"properties":{"current_password":{"type":"string","title":"Current Password"},"password":{"type":"string","title":"Password"},"confirm_password":{"type":"string","title":"Confirm Password"}},"type":"object","required":["current_password","password","confirm_password"],"title":"PasswordChange"},"PublishRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"privacy":{"type":"string","title":"Privacy","default":"private"},"explicit_consent":{"type":"boolean","title":"Explicit Consent","default":false}},"type":"object","required":["title"],"title":"PublishRequest"},"Registration":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"confirm_password":{"type":"string","title":"Confirm Password"},"accept_terms":{"type":"boolean","title":"Accept Terms"}},"type":"object","required":["email","password","confirm_password","accept_terms"],"title":"Registration"},"ResetRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ResetRequest"},"TokenRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"TokenRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}