{"openapi":"3.1.0","info":{"title":"Uni Courses Aggregator","version":"0.1.0"},"paths":{"/rss.xml":{"get":{"summary":"Get Rss","operationId":"get_rss_rss_xml_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/subscriptions":{"post":{"summary":"Create Subscription","operationId":"create_subscription_subscriptions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/unsubscribe/{token}":{"get":{"summary":"Unsubscribe","operationId":"unsubscribe_unsubscribe__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsubscribeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/email-sync":{"post":{"summary":"Trigger Email Sync","operationId":"trigger_email_sync_email_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sync":{"post":{"summary":"Sync All Or One","operationId":"sync_all_or_one_sync_post","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional provider key, e.g. stanford|harvard","title":"Provider"},"description":"Optional provider key, e.g. stanford|harvard"},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sync/{provider}":{"post":{"summary":"Sync Provider Legacy","operationId":"sync_provider_legacy_sync__provider__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncStarted"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/export.xlsx":{"get":{"summary":"Export Courses Xlsx","operationId":"export_courses_xlsx_courses_export_xlsx_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"university","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"University"}},{"name":"institution","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"modality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"}},{"name":"term","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"}},{"name":"starts_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Starts After"}},{"name":"starts_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Starts Before"}},{"name":"min_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Price"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Price"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"is_enriched","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Enriched"}},{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Expired"}},{"name":"include_inactive_days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":0,"default":90,"title":"Include Inactive Days"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(updated|newest|title|starts_at)$","default":"updated","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/export.csv":{"get":{"summary":"Export Courses Csv","operationId":"export_courses_csv_courses_export_csv_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"university","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"University"}},{"name":"institution","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"modality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"}},{"name":"term","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"}},{"name":"starts_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Starts After"}},{"name":"starts_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Starts Before"}},{"name":"min_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Price"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Price"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"is_enriched","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Enriched"}},{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Expired"}},{"name":"include_inactive_days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":0,"default":90,"title":"Include Inactive Days"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(updated|newest|title|starts_at)$","default":"updated","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses":{"get":{"summary":"List Courses","operationId":"list_courses_courses_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"university","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"University"}},{"name":"institution","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"modality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"}},{"name":"term","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"}},{"name":"starts_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Starts After"}},{"name":"starts_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Starts Before"}},{"name":"min_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Price"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Price"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"is_enriched","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Enriched"}},{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Expired"}},{"name":"include_inactive_days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":0,"default":90,"title":"Include Inactive Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(updated|newest|title|starts_at)$","default":"updated","title":"Sort"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedCourses"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}":{"get":{"summary":"Get Course","operationId":"get_course_courses__course_id__get","parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"integer","title":"Course Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/universities":{"get":{"summary":"List Universities","operationId":"list_universities_universities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UniversityOut"},"type":"array","title":"Response List Universities Universities Get"}}}}}}},"/categories":{"get":{"summary":"List Categories","operationId":"list_categories_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CategoryOut"},"type":"array","title":"Response List Categories Categories Get"}}}}}}},"/stats":{"get":{"summary":"Get Stats","operationId":"get_stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsOut"}}}}}}},"/subjects/stats":{"get":{"summary":"Get Subject Stats","operationId":"get_subject_stats_subjects_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectsStatsOut"}}}}}}},"/providers/diagnostics":{"get":{"summary":"Get Diagnostics","operationId":"get_diagnostics_providers_diagnostics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnosticsOut"}}}}}}},"/providers/health":{"get":{"summary":"Get Diagnostics","operationId":"get_diagnostics_providers_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnosticsOut"}}}}}}},"/providers/sync-runs":{"get":{"summary":"List Sync Runs","operationId":"list_sync_runs_providers_sync_runs_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncRunsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/providers/{provider}/sync-runs":{"get":{"summary":"List Provider Sync Runs","operationId":"list_provider_sync_runs_providers__provider__sync_runs_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncRunsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/social/readiness":{"get":{"summary":"Social Readiness","operationId":"social_readiness_social_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SocialReadinessOut"},"type":"array","title":"Response Social Readiness Social Readiness Get"}}}}}}},"/social/dispatch":{"post":{"summary":"Dispatch Social Posts","operationId":"dispatch_social_posts_social_dispatch_post","parameters":[{"name":"platforms","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated platforms: telegram,discord,x,threads,facebook","title":"Platforms"},"description":"Comma-separated platforms: telegram,discord,x,threads,facebook"},{"name":"campaign","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":128,"default":"course_drop","title":"Campaign"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","description":"Preview only; set false to claim and send.","default":true,"title":"Dry Run"},"description":"Preview only; set false to claim and send."},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialDispatchRunOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"tags":["agents","mcp"],"summary":"Mcp Info","operationId":"mcp_info_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mcp Info Mcp Get"}}}}}},"post":{"tags":["agents","mcp"],"summary":"Mcp Rpc","operationId":"mcp_rpc_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/ai-agent.json":{"get":{"tags":["agents","mcp"],"summary":"Ai Agent Manifest","operationId":"ai_agent_manifest__well_known_ai_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Agent Manifest  Well Known Ai Agent Json Get"}}}}}}}},"components":{"schemas":{"CategoryOut":{"properties":{"name":{"type":"string","title":"Name"},"course_count":{"type":"integer","title":"Course Count"}},"type":"object","required":["name","course_count"],"title":"CategoryOut"},"CourseOut":{"properties":{"id":{"type":"integer","title":"Id"},"university":{"type":"string","title":"University"},"source_url":{"type":"string","title":"Source Url"},"external_course_id":{"type":"string","title":"External Course Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"title":{"type":"string","title":"Title"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"term":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule"},"modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"},"enrollment_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enrollment Status"},"status_normalized":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Normalized"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"enrollment_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enrollment Url"},"price":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price"},"price_numeric":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Numeric"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"registration_opens_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Registration Opens At"},"is_active":{"type":"boolean","title":"Is Active"},"is_description_enriched":{"type":"boolean","title":"Is Description Enriched"},"deactivated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deactivated At"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","readOnly":true},"date_state":{"type":"string","title":"Date State","readOnly":true}},"type":"object","required":["id","university","source_url","external_course_id","code","title","category","term","schedule","modality","enrollment_status","status_normalized","description","enrollment_url","price","price_numeric","starts_at","registration_opens_at","is_active","is_description_enriched","deactivated_at","first_seen_at","last_seen_at","provider","date_state"],"title":"CourseOut"},"DiagnosticsOut":{"properties":{"providers":{"items":{"$ref":"#/components/schemas/ProviderHealth"},"type":"array","title":"Providers"},"total_courses":{"type":"integer","title":"Total Courses"},"active_courses":{"type":"integer","title":"Active Courses"}},"type":"object","required":["providers","total_courses","active_courses"],"title":"DiagnosticsOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PaginatedCourses":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CourseOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"PaginatedCourses"},"ProviderHealth":{"properties":{"provider":{"type":"string","title":"Provider"},"university":{"type":"string","title":"University"},"total_courses":{"type":"integer","title":"Total Courses"},"active_courses":{"type":"integer","title":"Active Courses"},"last_sync":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync"},"missing_descriptions":{"type":"integer","title":"Missing Descriptions"},"missing_prices":{"type":"integer","title":"Missing Prices"},"missing_starts_at":{"type":"integer","title":"Missing Starts At"},"expired_courses":{"type":"integer","title":"Expired Courses"},"last_sync_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Id"},"last_sync_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Status"},"last_sync_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync Started At"},"last_sync_finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync Finished At"},"last_sync_duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Sync Duration Ms"},"last_courses_found":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Courses Found"},"last_inserted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Inserted"},"last_updated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Updated"},"last_deactivated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Deactivated"},"last_missing_prices":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Missing Prices"},"last_missing_descriptions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Missing Descriptions"},"last_error_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error Type"},"last_error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error Message"}},"type":"object","required":["provider","university","total_courses","active_courses","last_sync","missing_descriptions","missing_prices","missing_starts_at","expired_courses"],"title":"ProviderHealth"},"SocialDispatchItemOut":{"properties":{"course_id":{"type":"integer","title":"Course Id"},"platform":{"type":"string","title":"Platform"},"campaign":{"type":"string","title":"Campaign"},"status":{"type":"string","title":"Status"},"dispatch_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dispatch Id"},"external_post_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Post Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["course_id","platform","campaign","status"],"title":"SocialDispatchItemOut"},"SocialDispatchRunOut":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run"},"campaign":{"type":"string","title":"Campaign"},"claimed":{"type":"integer","title":"Claimed"},"sent":{"type":"integer","title":"Sent"},"failed":{"type":"integer","title":"Failed"},"skipped":{"type":"integer","title":"Skipped"},"items":{"items":{"$ref":"#/components/schemas/SocialDispatchItemOut"},"type":"array","title":"Items"}},"type":"object","required":["dry_run","campaign","claimed","sent","failed","skipped","items"],"title":"SocialDispatchRunOut"},"SocialReadinessOut":{"properties":{"platform":{"type":"string","title":"Platform"},"ready":{"type":"boolean","title":"Ready"},"missing_env":{"items":{"type":"string"},"type":"array","title":"Missing Env"},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["platform","ready","missing_env"],"title":"SocialReadinessOut"},"StatsOut":{"properties":{"total_courses":{"type":"integer","title":"Total Courses"},"active_courses":{"type":"integer","title":"Active Courses"},"universities":{"items":{"$ref":"#/components/schemas/UniversityOut"},"type":"array","title":"Universities"},"categories":{"items":{"$ref":"#/components/schemas/CategoryOut"},"type":"array","title":"Categories"},"subjects":{"items":{"$ref":"#/components/schemas/SubjectOut"},"type":"array","title":"Subjects"},"total_subjects":{"type":"integer","title":"Total Subjects"},"last_sync":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync"}},"type":"object","required":["total_courses","active_courses","universities","categories","subjects","total_subjects","last_sync"],"title":"StatsOut"},"SubjectOut":{"properties":{"name":{"type":"string","title":"Name"},"total_courses":{"type":"integer","title":"Total Courses"},"active_courses":{"type":"integer","title":"Active Courses"}},"type":"object","required":["name","total_courses","active_courses"],"title":"SubjectOut"},"SubjectsStatsOut":{"properties":{"total_subjects":{"type":"integer","title":"Total Subjects"},"total_courses":{"type":"integer","title":"Total Courses"},"active_courses":{"type":"integer","title":"Active Courses"},"subjects":{"items":{"$ref":"#/components/schemas/SubjectOut"},"type":"array","title":"Subjects"}},"type":"object","required":["total_subjects","total_courses","active_courses","subjects"],"title":"SubjectsStatsOut"},"SubscriptionIn":{"properties":{"email":{"type":"string","title":"Email"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["email"],"title":"SubscriptionIn"},"SubscriptionOut":{"properties":{"email":{"type":"string","title":"Email"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"sync_status":{"type":"string","title":"Sync Status","default":"pending"}},"type":"object","required":["email","status","message"],"title":"SubscriptionOut"},"SyncRunOut":{"properties":{"sync_id":{"type":"string","title":"Sync Id"},"provider":{"type":"string","title":"Provider"},"status":{"type":"string","title":"Status"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"courses_found":{"type":"integer","title":"Courses Found"},"inserted":{"type":"integer","title":"Inserted"},"updated":{"type":"integer","title":"Updated"},"deactivated":{"type":"integer","title":"Deactivated"},"missing_prices":{"type":"integer","title":"Missing Prices"},"missing_descriptions":{"type":"integer","title":"Missing Descriptions"},"error_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Type"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["sync_id","provider","status","started_at","finished_at","duration_ms","courses_found","inserted","updated","deactivated","missing_prices","missing_descriptions","error_type","error_message"],"title":"SyncRunOut"},"SyncRunsOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SyncRunOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"SyncRunsOut"},"SyncStarted":{"properties":{"provider":{"type":"string","title":"Provider"},"sync_id":{"type":"string","title":"Sync Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["provider","sync_id","status","message"],"title":"SyncStarted"},"UniversityOut":{"properties":{"name":{"type":"string","title":"Name"},"course_count":{"type":"integer","title":"Course Count"}},"type":"object","required":["name","course_count"],"title":"UniversityOut"},"UnsubscribeOut":{"properties":{"email":{"type":"string","title":"Email"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["email","status","message"],"title":"UnsubscribeOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}