{"openapi":"3.1.0","info":{"title":"YC Company Scraper API","version":"1.0.0"},"paths":{"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health","description":"Health check endpoint","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/login":{"post":{"summary":"Admin Login","description":"Admin login endpoint","operationId":"admin_login_api_admin_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/logout":{"post":{"summary":"Admin Logout","description":"Admin logout endpoint","operationId":"admin_logout_api_admin_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/session":{"get":{"summary":"Admin Session Check","description":"Check if admin session is valid","operationId":"admin_session_check_api_admin_session_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/email-config":{"get":{"summary":"Get Email Config","description":"Get email configuration status","operationId":"get_email_config_api_admin_email_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/test-verification-email":{"post":{"summary":"Send Test Verification Email","description":"Send a test verification email","operationId":"send_test_verification_email_api_admin_test_verification_email_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/enrichment/stats":{"get":{"summary":"Get Enrichment Stats","description":"Get enrichment statistics and progress","operationId":"get_enrichment_stats_api_admin_enrichment_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scrape":{"post":{"summary":"Start Scrape","description":"Start a new scraping job","operationId":"start_scrape_api_scrape_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scrape/status/{job_id}":{"get":{"summary":"Get Scrape Status","description":"Get the status of a scraping job","operationId":"get_scrape_status_api_scrape_status__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","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/companies":{"post":{"summary":"Get Companies","description":"Get companies with filters and pagination","operationId":"get_companies_api_companies_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyFilter"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/companies/{company_id}":{"get":{"summary":"Get Company","description":"Get a single company by ID","operationId":"get_company_api_companies__company_id__get","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/slug/{slug}":{"get":{"summary":"Get Company By Slug","description":"Get a single company by slug (URL-friendly name)","operationId":"get_company_by_slug_api_company_slug__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/founders/leaderboard":{"get":{"summary":"Get Founder Leaderboard","description":"Ranked founders for an authoritative metric (serial/funded/exits/unicorns).\n\nRankings run on authoritative derived data only — enrichment never drives them.","operationId":"get_founder_leaderboard_api_founders_leaderboard_get","parameters":[{"name":"metric","in":"query","required":false,"schema":{"type":"string","default":"serial","title":"Metric"}},{"name":"batch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/founders/{slug}":{"get":{"summary":"Get Founder Profile","description":"Founder profile: authoritative stats, their companies, every leaderboard rank\nthey hold, and supplementary enrichment (labeled/cited) or null.","operationId":"get_founder_profile_api_founders__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/companies/similar":{"post":{"summary":"Companies Similar","description":"All-source semantic search: return companies across every source most similar\nto a free-text query, deduped by domain. Vector search spans the full corpus\n(YC + Hacker News + a16z + ...), unlike the YC-scoped hero idea-validator.","operationId":"companies_similar_api_companies_similar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/logo-proxy":{"get":{"summary":"Proxy Logo","description":"Proxy company logos to avoid CORS/referrer blocking (e.g. Stripe).","operationId":"proxy_logo_api_logo_proxy_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"summary":"Get Stats","description":"Get database statistics","operationId":"get_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/bootstrap":{"get":{"summary":"Get Bootstrap","description":"Single endpoint for initial load: stats + map companies in one round-trip.\nLimits map to recent_batches for smaller payload (~60% smaller).","operationId":"get_bootstrap_api_bootstrap_get","parameters":[{"name":"recent_batches","in":"query","required":false,"schema":{"type":"integer","default":4,"title":"Recent Batches"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/map":{"get":{"summary":"Get Map Data","description":"Get companies with geo coordinates for map","operationId":"get_map_data_api_map_get","parameters":[{"name":"batch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch"}},{"name":"is_hiring","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Hiring"}},{"name":"recent_batches","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recent Batches"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/filters/sources":{"get":{"summary":"Get Sources","description":"Get available company sources (incubators/VCs) with counts","operationId":"get_sources_api_filters_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/filters/batches":{"get":{"summary":"Get Batches","description":"Get list of unique batches","operationId":"get_batches_api_filters_batches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/filters/industries":{"get":{"summary":"Get Industries","description":"Get list of unique industries","operationId":"get_industries_api_filters_industries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/filters/countries":{"get":{"summary":"Get Countries","description":"Get list of unique countries","operationId":"get_countries_api_filters_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/export/json":{"get":{"summary":"Export Json","description":"Disabled — data export is temporarily unavailable.","operationId":"export_json_api_export_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/export/csv":{"get":{"summary":"Export Csv","description":"Disabled — data export is temporarily unavailable.","operationId":"export_csv_api_export_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/subscribe":{"post":{"summary":"Subscribe To Emails","description":"Subscribe to daily email notifications","operationId":"subscribe_to_emails_api_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verify-email/{token}":{"get":{"summary":"Verify Email","description":"Verify email subscription","operationId":"verify_email_api_verify_email__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unsubscribe":{"post":{"summary":"Unsubscribe","description":"Unsubscribe from email notifications","operationId":"unsubscribe_api_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/{email}":{"get":{"summary":"Get Subscription","description":"Get subscription details (for settings page)","operationId":"get_subscription_api_subscription__email__get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/{email}/preferences":{"put":{"summary":"Update Preferences","description":"Update subscription preferences","operationId":"update_preferences_api_subscription__email__preferences_put","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Preferences"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contact":{"post":{"summary":"Submit Contact Form","description":"Submit contact/feature idea form (emails to ideas@exploreyc.com via Resend)","operationId":"submit_contact_form_api_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactFormRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/validate-idea":{"post":{"summary":"Validate Startup Idea","description":"Validate a startup idea by finding similar companies in the YC portfolio\n\nUses semantic similarity search with OpenAI embeddings to find companies\nworking on similar problems/solutions.\n\nReturns market analysis including:\n- List of similar companies with similarity scores\n- Market indicator (green/yellow/crowded)\n- Industry breakdown\n- Batch timeline showing when similar companies were founded\n- Market size as percentage of total YC portfolio","operationId":"validate_startup_idea_api_validate_idea_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaValidationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdeaValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hero-answer":{"post":{"summary":"Hero Answer","description":"Instant deterministic answer for the homepage hero box.\n\nUses pgvector similarity search + build_verdict() — NO LLM chat calls.\nResults are cached by SHA-1 of the lowercased idea for 24 hours.","operationId":"hero_answer_api_hero_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeroAnswerRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gamified-predict":{"post":{"summary":"Gamified Startup Prediction","description":"Predict startup success using gamification scoring.\n\nCombines:\n1. Idea quality based on semantic similarity to successful YC companies\n2. Team profile scoring (if provided)\n3. Market potential analysis\n4. Achievements and challenges unlocked\n\nReturns a gamified response with scores, tier, matched companies, and challenges.","operationId":"gamified_startup_prediction_api_gamified_predict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GamifiedPredictionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GamifiedPredictionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard":{"get":{"summary":"Get Leaderboard","description":"Get the leaderboard of startup predictions.\n\nOptional filters:\n- industry: Filter by specific industry\n- timeframe: 'all-time', 'this-week', 'this-month'\n- limit: Number of results (max 100)","operationId":"get_leaderboard_api_leaderboard_get","parameters":[{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"all-time","title":"Timeframe"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/{prediction_id}":{"get":{"summary":"Get Prediction","description":"Get a specific prediction result.","operationId":"get_prediction_api_predictions__prediction_id__get","parameters":[{"name":"prediction_id","in":"path","required":true,"schema":{"type":"string","title":"Prediction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/{prediction_id}/share":{"post":{"summary":"Share Prediction","description":"Make a prediction public and shareable.","operationId":"share_prediction_api_predictions__prediction_id__share_post","parameters":[{"name":"prediction_id","in":"path","required":true,"schema":{"type":"string","title":"Prediction Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharePredictionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/predictions/shared/{share_token}":{"get":{"summary":"Get Shared Prediction","description":"Get a publicly shared prediction by token.","operationId":"get_shared_prediction_api_predictions_shared__share_token__get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/challenges":{"get":{"summary":"Get Active Challenges","description":"Get all active challenges in the gamification system.","operationId":"get_active_challenges_api_challenges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/batch/{batch_name}/wrapped":{"get":{"summary":"Get Batch Wrapped","description":"Get Wrapped-style statistics for a specific YC batch\n\nReturns comprehensive stats including:\n- Total companies and hiring statistics\n- Top 5 industries with percentages\n- Top 5 countries with percentages\n- Average team size\n- Notable companies\n- Fun facts about the batch","operationId":"get_batch_wrapped_api_batch__batch_name__wrapped_get","parameters":[{"name":"batch_name","in":"path","required":true,"schema":{"type":"string","title":"Batch Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchWrappedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/batch/{batch_name}/og-image":{"get":{"summary":"Get Batch Og Image","description":"Generate Open Graph image for batch wrapped page\n\nReturns a PNG image (1200x630px) suitable for social media sharing.\nThe image includes batch stats in a visually appealing format.","operationId":"get_batch_og_image_api_batch__batch_name__og_image_get","parameters":[{"name":"batch_name","in":"path","required":true,"schema":{"type":"string","title":"Batch Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/roadmap/votes":{"get":{"summary":"Get Roadmap Votes","description":"Get vote counts for all features","operationId":"get_roadmap_votes_api_roadmap_votes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/roadmap/vote/{feature_id}":{"post":{"summary":"Vote For Feature","description":"Vote for a roadmap feature","operationId":"vote_for_feature_api_roadmap_vote__feature_id__post","parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"string","title":"Feature Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Remove Vote For Feature","description":"Remove vote for a roadmap feature","operationId":"remove_vote_for_feature_api_roadmap_vote__feature_id__delete","parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"string","title":"Feature Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/roadmap/user-votes/{user_identifier}":{"get":{"summary":"Get User Votes","description":"Get all features a user has voted for","operationId":"get_user_votes_api_roadmap_user_votes__user_identifier__get","parameters":[{"name":"user_identifier","in":"path","required":true,"schema":{"type":"string","title":"User Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feature-interest":{"post":{"summary":"Register Feature Interest","description":"Record that a user wants a currently-unavailable feature (e.g. data export).\n\nDeduplicated per (feature, user_identifier) so one browser counts once.\nReturns the running interest count so the UI can show demand.","operationId":"register_feature_interest_api_feature_interest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureInterestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cron/daily-scrape-and-snapshot":{"post":{"summary":"Daily Scrape","description":"Scrape YC for latest companies and update DB. Run daily before send-digests.\nReturns immediately in background (cron); use ?sync=1 for manual testing to wait for completion.","operationId":"daily_scrape_api_cron_daily_scrape_and_snapshot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/daily-scrape":{"post":{"summary":"Daily Scrape","description":"Scrape YC for latest companies and update DB. Run daily before send-digests.\nReturns immediately in background (cron); use ?sync=1 for manual testing to wait for completion.","operationId":"daily_scrape_api_cron_daily_scrape_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/sync-sources":{"post":{"summary":"Cron Sync Sources","description":"Pull new companies from non-YC sources (Hacker News, ...), backfill dedupe_key\n+ embeddings, and refresh the cache. ?full=1 forces a full backfill; ?sync=1 waits.","operationId":"cron_sync_sources_api_cron_sync_sources_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/sync-founders":{"post":{"summary":"Cron Sync Founders","description":"Scrape YC company pages for founders, upsert the deduplicated founder dataset +\nfounder<->company edges, and refresh founder_stats. ?full=1 forces a rebuild;\n?limit=N bounds the run to N not-yet-sourced companies (incremental nightly batch;\nomit for the full set); ?sync=1 waits for completion (manual testing).","operationId":"cron_sync_founders_api_cron_sync_founders_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/enrich-founders":{"post":{"summary":"Cron Enrich Founders","description":"Drain the founder-enrichment backlog with Perplexity (supplementary, cited).\nNo-ops gracefully if PERPLEXITY_API_KEY is unset. ?all=1 backfills the whole\ntable; ?limit=N bounds the batch; ?sync=1 waits for completion.","operationId":"cron_enrich_founders_api_cron_enrich_founders_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/enrich-companies":{"post":{"summary":"Cron Enrich Companies","description":"Drain the company funding-enrichment backlog with Perplexity (web-sourced, cited).\nReplaces CoreSignal as the funding source for the Founder Leaderboards. No-ops\ngracefully if PERPLEXITY_API_KEY is unset. ?all=1 backfills every company;\n?limit=N bounds the batch; ?sync=1 waits for completion.","operationId":"cron_enrich_companies_api_cron_enrich_companies_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/update-hiring-board":{"post":{"summary":"Update Hiring Board Cron","description":"Update hiring board data from WorkAtAStartup API (triggered by daily cron)","operationId":"update_hiring_board_cron_api_cron_update_hiring_board_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/send-digests":{"post":{"summary":"Send Daily Digests","description":"Send daily email digests (triggered by cron)","operationId":"send_daily_digests_api_cron_send_digests_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/digest-preview":{"get":{"summary":"Get Digest Preview","description":"Preview what would be sent in the daily digest (no emails sent).\n\nDefaults to rendering the actual email HTML so admins can verify the design\nin a browser tab. Pass ?format=json for raw counts and sample payloads.\nFalls back to sample data when no real changes exist in the last 24h.","operationId":"get_digest_preview_api_admin_digest_preview_get","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"html","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/change-log-status":{"get":{"summary":"Get Change Log Status","description":"Get status of change log (for monitoring)","operationId":"get_change_log_status_api_admin_change_log_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/cleanup-changes":{"post":{"summary":"Cleanup Old Changes Manual","description":"Manually cleanup old change log entries (admin endpoint)\n\nArgs:\n    days_to_keep: Number of days of changes to retain (default: 90)\n\nReturns:\n    Number of rows deleted","operationId":"cleanup_old_changes_manual_api_admin_cleanup_changes_post","parameters":[{"name":"days_to_keep","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days To Keep"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funding/stats":{"get":{"summary":"Get Funding Stats","description":"Get funding statistics across all YC companies","operationId":"get_funding_stats_api_funding_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/funding/network":{"get":{"summary":"Get Funding Network","description":"Get network graph data (companies, investors, connections)","operationId":"get_funding_network_api_funding_network_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/companies/{company_id}/funding":{"get":{"summary":"Get Company Funding","description":"Get detailed funding information for a specific company","operationId":"get_company_funding_api_companies__company_id__funding_get","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/enrich-funding/bulk":{"post":{"summary":"Enrich Companies Bulk","description":"Enrich multiple companies with Coresignal funding data (admin endpoint)\n\nArgs:\n    batch: Filter by YC batch (e.g., W25, S24)\n    limit: Max number of companies to enrich (default: 50, max: 200)\n    top_only: Only enrich top companies (default: False)\n    force_refresh: Re-enrich companies even if already enriched (default: False)\n    refresh_days: Only refresh if data is older than this many days (default: 30, only used if force_refresh=True)","operationId":"enrich_companies_bulk_api_admin_enrich_funding_bulk_post","parameters":[{"name":"batch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"top_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Top Only"}},{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force Refresh"}},{"name":"refresh_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Refresh Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/enrich-funding/{company_id}":{"post":{"summary":"Enrich Company Funding","description":"Enrich a single company with Coresignal funding data (admin endpoint)","operationId":"enrich_company_funding_api_admin_enrich_funding__company_id__post","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hiring/board":{"get":{"summary":"Get Hiring Board","description":"Get hiring board data (companies and jobs) from memory cache","operationId":"get_hiring_board_api_hiring_board_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/hiring/stats":{"get":{"summary":"Get Hiring Stats","description":"Get aggregated hiring statistics from memory cache","operationId":"get_hiring_stats_api_hiring_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/hiring/analytics":{"get":{"summary":"Get Hiring Analytics","description":"Get comprehensive hiring analytics","operationId":"get_hiring_analytics_api_hiring_analytics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/hiring/jobs/paginated":{"get":{"summary":"Get Hiring Jobs Paginated","description":"Get paginated hiring jobs with filtering and sorting","operationId":"get_hiring_jobs_paginated_api_hiring_jobs_paginated_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Per Page"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"recent","title":"Sort By"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"}},{"name":"remote","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Remote"}},{"name":"batch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch"}},{"name":"job_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"}},{"name":"company_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Company Id"}},{"name":"company_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/update-hiring-board":{"post":{"summary":"Admin Update Hiring Board","description":"Admin endpoint to manually trigger hiring board update from WorkAtAStartup API","operationId":"admin_update_hiring_board_api_admin_update_hiring_board_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hiring/upload-from-browser":{"post":{"summary":"Upload Hiring Data From Browser","description":"Accept hiring data fetched from browser and save to database.\nCan be called from browser console to upload companies and jobs.","operationId":"upload_hiring_data_from_browser_api_hiring_upload_from_browser_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadHiringDataRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/research/company":{"post":{"summary":"Research Company","description":"Research a YC company using Perplexity AI\nReturns latest news, funding updates, and key developments\nUses cache to avoid redundant API calls\nRate limited: 5 requests per minute per IP","operationId":"research_company_api_research_company_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/research/query":{"post":{"summary":"Research Query","description":"Perform custom research on any topic\nReturns factual, current information with sources","operationId":"research_query_api_research_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchQueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/research/status":{"get":{"summary":"Research Status","description":"Check if research feature is available","operationId":"research_status_api_research_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/research/history":{"get":{"summary":"Get Research History","description":"Get all research history visible to all users\nsorted by recent (default), popular, or oldest","operationId":"get_research_history_api_research_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"recent","title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/research/popular":{"get":{"summary":"Get Popular Research","description":"Get most popular research queries","operationId":"get_popular_research_api_research_popular_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/research/search":{"post":{"summary":"Search Research History","description":"Search through research history by company name or keywords","operationId":"search_research_history_api_research_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchSearchRequest"}}},"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/signup":{"post":{"summary":"Dev Signup","operationId":"dev_signup_api_dev_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevSignupRequest"}}},"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/login":{"post":{"summary":"Dev Login","operationId":"dev_login_api_dev_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevLoginRequest"}}},"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/logout":{"post":{"summary":"Dev Logout","operationId":"dev_logout_api_dev_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/me":{"get":{"summary":"Dev Me","operationId":"dev_me_api_dev_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/verify-email/{token}":{"get":{"summary":"Dev Verify Email","operationId":"dev_verify_email_api_dev_verify_email__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/usage":{"get":{"summary":"Dev Usage","description":"Per-day request counts + top endpoints for the caller's keys (for the dashboard chart).","operationId":"dev_usage_api_dev_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/profile":{"post":{"summary":"Dev Update Profile","operationId":"dev_update_profile_api_dev_profile_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/keys":{"post":{"summary":"Dev Create Key","operationId":"dev_create_key_api_dev_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Dev List Keys","operationId":"dev_list_keys_api_dev_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/keys/{key_id}/revoke":{"post":{"summary":"Dev Revoke Key","operationId":"dev_revoke_key_api_dev_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-users":{"get":{"summary":"Admin List Api Users","operationId":"admin_list_api_users_api_admin_api_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-keys":{"get":{"summary":"Admin List Api Keys","operationId":"admin_list_api_keys_api_admin_api_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-keys/{key_id}/revoke":{"post":{"summary":"Admin Revoke Api Key","operationId":"admin_revoke_api_key_api_admin_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-users/{user_id}/plan":{"post":{"summary":"Admin Set Plan","operationId":"admin_set_plan_api_admin_api_users__user_id__plan_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-users/{user_id}/status":{"post":{"summary":"Admin Set Status","operationId":"admin_set_status_api_admin_api_users__user_id__status_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cron/cleanup-api":{"post":{"summary":"Cron Cleanup Api","operationId":"cron_cleanup_api_api_cron_cleanup_api_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/cron/refresh-world-audience":{"post":{"summary":"Cron Refresh World Audience","description":"Pull the last 30 days of real traffic from Vercel into\nworld_audience_cache, so GET /api/world/audience never has to.\n\nAlso runs as part of /api/cron/daily-scrape; this exists so the figure can\nbe refreshed on its own schedule (or by hand after wiring the token up)\nwithout kicking off a scrape.\n\nReturns `{\"configured\": false}` and changes nothing when\nVERCEL_ANALYTICS_TOKEN is unset — the numbers stay null rather than becoming\na placeholder. `{\"refreshed\": false}` means the fetch failed and the\nprevious, real, cached row was deliberately left in place.","operationId":"cron_refresh_world_audience_api_cron_refresh_world_audience_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/dev/plans":{"get":{"summary":"List Plans","operationId":"list_plans_api_dev_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/dev/billing/checkout":{"post":{"summary":"Create Checkout","operationId":"create_checkout_api_dev_billing_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dev/billing/portal":{"post":{"summary":"Create Portal","operationId":"create_portal_api_dev_billing_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe/webhook":{"post":{"summary":"Stripe Webhook","operationId":"stripe_webhook_api_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/world/globe":{"get":{"summary":"World Globe","description":"Every pin on the merged globe, in two layers.\n\n`plots` — the paid layer, and the product. Full objects, coordinates\nuntouched, one per active world_plot. This is what the page is for, so\nit is the layer that stays legible on the wire.\n\n`seeds` — the imported layer: every geo-located company that nobody has\nclaimed yet, as a compact columnar block (see SEED_COLUMNS). Seeds carry\nno row anywhere — a claimed company drops out of the seed set by\nconstruction, and boards never see seeds because boards read only\nworld_plots.\n\nThe client merges the two back into one flat pin list; the split exists\npurely so 5,579 imported pins can carry filterable facts without the\npayload tripling. `seeds` is always present, `seeds.rows` may be empty.","operationId":"world_globe_api_world_globe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/world/board":{"get":{"summary":"World Board","operationId":"world_board_api_world_board_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"richest","title":"Kind"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"world","title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/founders":{"get":{"summary":"World Founders","operationId":"world_founders_api_world_founders_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"staked","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/cities":{"get":{"summary":"World Cities","description":"The full city reference set as compact tuple rows\n[id, name, country_iso, lat, lng, population] — feeds the globe's\ncity-label layer. The set never changes at runtime, so it is cached\nhard (the frontend fetches it once per page load with force-cache).","operationId":"world_cities_api_world_cities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/world/country/{iso}":{"get":{"summary":"World Country","operationId":"world_country_api_world_country__iso__get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/plots/{plot_id}":{"get":{"summary":"World Plot Detail","operationId":"world_plot_detail_api_world_plots__plot_id__get","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"World Plot Update","operationId":"world_plot_update_api_world_plots__plot_id__patch","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlotUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/where":{"get":{"summary":"World Where","description":"Server geography preview for the claim wizard. 400 'ocean' when the\npoint is not on land.","operationId":"world_where_api_world_where_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","title":"Lat"}},{"name":"lng","in":"query","required":true,"schema":{"type":"number","title":"Lng"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/pulse":{"get":{"summary":"World Pulse","operationId":"world_pulse_api_world_pulse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/world/audience":{"get":{"summary":"World Audience Read","description":"Platform reach + live viewers. Reads the cache; never fetches inline.\n\nThe only outbound request this endpoint can cause is a BACKGROUND one,\nscheduled at most once per process per MIN_ATTEMPT_INTERVAL_SECONDS and\nonly when the cached row is older than REFRESH_AFTER_SECONDS. The\nresponse is always the row we already had.","operationId":"world_audience_read_api_world_audience_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/world/beat":{"post":{"summary":"World Presence Beat","description":"One anonymous heartbeat from a World surface, and the same payload\nback — so the client gets a fresh count without a second request.\n\nWhat this stores: an opaque client-generated id and a timestamp. What it\ndoes NOT store: an IP, a user id, a cookie, a user agent, a referrer.\nEvery beat also prunes rows older than PRESENCE_PRUNE_SECONDS, so the\ntable cannot accumulate yesterday's visitors.","operationId":"world_presence_beat_api_world_beat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/promotions":{"get":{"summary":"World Promotions","operationId":"world_promotions_api_world_promotions_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"world","title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/claimed":{"get":{"summary":"World Claimed","description":"Post-checkout landing poll (no auth — the buyer may not be logged in\non the return device). Resolves a Checkout Session id to the plot the\nwebhook minted, waiting out the usually sub-second gap. Reading this\nproves nothing and writes nothing — a success URL is a URL anyone can\ntype.","operationId":"world_claimed_api_world_claimed_get","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/checkout":{"post":{"summary":"World Checkout","operationId":"world_checkout_api_world_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorldCheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/promotions/checkout":{"post":{"summary":"World Promotion Checkout","operationId":"world_promotion_checkout_api_world_promotions_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionCheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/plots/{plot_id}/logo":{"post":{"summary":"World Plot Logo","operationId":"world_plot_logo_api_world_plots__plot_id__logo_post","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlotLogoRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/world/mine":{"get":{"summary":"World Mine","operationId":"world_mine_api_world_mine_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/world/promotions":{"post":{"summary":"Admin Create Sponsor","operationId":"admin_create_sponsor_api_admin_world_promotions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SponsorSlotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/world/promotions/{promo_id}":{"delete":{"summary":"Admin Revoke Promotion","operationId":"admin_revoke_promotion_api_admin_world_promotions__promo_id__delete","parameters":[{"name":"promo_id","in":"path","required":true,"schema":{"type":"integer","title":"Promo Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdminLoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"AdminLoginRequest"},"BatchWrappedResponse":{"properties":{"batch":{"type":"string","title":"Batch"},"total_companies":{"type":"integer","title":"Total Companies"},"hiring_count":{"type":"integer","title":"Hiring Count"},"hiring_percentage":{"type":"number","title":"Hiring Percentage"},"top_industries":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Industries"},"top_countries":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Countries"},"avg_team_size":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Team Size"},"notable_companies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Notable Companies"},"fun_fact":{"type":"string","title":"Fun Fact"}},"type":"object","required":["batch","total_companies","hiring_count","hiring_percentage","top_industries","top_countries","avg_team_size","notable_companies","fun_fact"],"title":"BatchWrappedResponse"},"BeatRequest":{"properties":{"session_id":{"type":"string","maxLength":64,"minLength":8,"title":"Session Id"}},"type":"object","required":["session_id"],"title":"BeatRequest","description":"The entire body of a presence heartbeat.\n\nOne field, and the bound is the point: an anonymous, ephemeral id the client\ngenerated for this tab. There is nowhere in this shape to put an email, an\nIP or a user id, which is how \"we do not collect that\" stops being a\npromise and becomes a fact about the schema."},"CompanyFilter":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0},"batch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch"},"is_hiring":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Hiring"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"},"top_company":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Top Company"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"merged":{"type":"boolean","title":"Merged","default":false},"has_logo":{"type":"boolean","title":"Has Logo","default":false}},"type":"object","title":"CompanyFilter"},"ContactFormRequest":{"properties":{"email":{"type":"string","title":"Email"},"message":{"type":"string","title":"Message"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""}},"type":"object","required":["email","message"],"title":"ContactFormRequest"},"CreateKeyRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"CreateKeyRequest"},"DevLoginRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"DevLoginRequest"},"DevSignupRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"}},"type":"object","required":["email","password"],"title":"DevSignupRequest"},"FeatureInterestRequest":{"properties":{"feature":{"type":"string","title":"Feature","default":"db-export"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"user_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Identifier"}},"type":"object","title":"FeatureInterestRequest"},"FounderInfo":{"properties":{"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"expertise":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Expertise"},"has_repeat_founder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Repeat Founder","default":false},"has_complementary_skills":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Complementary Skills","default":false}},"type":"object","title":"FounderInfo"},"GamifiedPredictionRequest":{"properties":{"idea_description":{"type":"string","title":"Idea Description"},"industry":{"type":"string","title":"Industry"},"market_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Type","default":"B2B"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"founder_info":{"anyOf":[{"$ref":"#/components/schemas/FounderInfo"},{"type":"null"}]},"max_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Matches","default":10}},"type":"object","required":["idea_description","industry"],"title":"GamifiedPredictionRequest"},"GamifiedPredictionResponse":{"properties":{"prediction_id":{"type":"string","title":"Prediction Id"},"idea_score":{"type":"integer","title":"Idea Score"},"team_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Score"},"market_score":{"type":"integer","title":"Market Score"},"combined_score":{"type":"integer","title":"Combined Score"},"percentile":{"type":"integer","title":"Percentile"},"tier":{"type":"string","title":"Tier"},"tier_emoji":{"type":"string","title":"Tier Emoji"},"similar_companies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Similar Companies"},"achievements":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Achievements"},"challenges":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Challenges"},"leaderboard_position":{"type":"integer","title":"Leaderboard Position"}},"type":"object","required":["prediction_id","idea_score","team_score","market_score","combined_score","percentile","tier","tier_emoji","similar_companies","achievements","challenges","leaderboard_position"],"title":"GamifiedPredictionResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeroAnswerRequest":{"properties":{"idea":{"type":"string","title":"Idea"}},"type":"object","required":["idea"],"title":"HeroAnswerRequest"},"IdeaValidationRequest":{"properties":{"idea":{"type":"string","title":"Idea"},"max_similar":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Similar","default":10}},"type":"object","required":["idea"],"title":"IdeaValidationRequest"},"IdeaValidationResponse":{"properties":{"similar_companies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Similar Companies"},"total_similar":{"type":"integer","title":"Total Similar"},"market_indicator":{"type":"string","title":"Market Indicator"},"market_analysis":{"type":"string","title":"Market Analysis"},"industry_breakdown":{"additionalProperties":true,"type":"object","title":"Industry Breakdown"},"batch_timeline":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Batch Timeline"},"market_size_percentage":{"type":"number","title":"Market Size Percentage"}},"type":"object","required":["similar_companies","total_similar","market_indicator","market_analysis","industry_breakdown","batch_timeline","market_size_percentage"],"title":"IdeaValidationResponse"},"PlotLogoRequest":{"properties":{"logo_data_url":{"type":"string","title":"Logo Data Url"}},"type":"object","required":["logo_data_url"],"title":"PlotLogoRequest"},"PlotUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":40,"minLength":1},{"type":"null"}],"title":"Name"},"url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Url"},"tagline":{"anyOf":[{"type":"string","maxLength":140},{"type":"null"}],"title":"Tagline"},"founder_name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Founder Name"},"founder_title":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Founder Title"},"founder_link":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Founder Link"}},"type":"object","title":"PlotUpdateRequest"},"ProfileUpdate":{"properties":{"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","title":"ProfileUpdate"},"PromotionCheckoutRequest":{"properties":{"plot_id":{"type":"integer","title":"Plot Id"},"tier":{"type":"string","title":"Tier"}},"type":"object","required":["plot_id","tier"],"title":"PromotionCheckoutRequest"},"ResearchQueryRequest":{"properties":{"query":{"type":"string","title":"Query"}},"type":"object","required":["query"],"title":"ResearchQueryRequest","description":"Request body for custom research queries"},"ResearchRequest":{"properties":{"company_name":{"type":"string","title":"Company Name"}},"type":"object","required":["company_name"],"title":"ResearchRequest","description":"Request body for company research"},"ResearchResponse":{"properties":{"company_name":{"type":"string","title":"Company Name"},"research":{"type":"string","title":"Research"},"citations":{"items":{"type":"string"},"type":"array","title":"Citations","default":[]},"timestamp":{"type":"string","title":"Timestamp"},"model":{"type":"string","title":"Model"},"success":{"type":"boolean","title":"Success"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["company_name","research","timestamp","model","success"],"title":"ResearchResponse","description":"Response model for research results"},"ResearchSearchRequest":{"properties":{"query":{"type":"string","title":"Query"}},"type":"object","required":["query"],"title":"ResearchSearchRequest","description":"Request body for research search"},"ScrapeRequest":{"properties":{"query":{"type":"string","title":"Query","default":""},"batch":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Batch"},"industry":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industry"},"region":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Region"},"is_hiring":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Hiring"},"top_company":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Top Company"},"nonprofit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Nonprofit"},"hits_per_page":{"type":"integer","title":"Hits Per Page","default":1000},"max_pages":{"type":"integer","title":"Max Pages","default":10},"source":{"type":"string","title":"Source","default":"yc"}},"type":"object","title":"ScrapeRequest"},"SetPlanRequest":{"properties":{"plan":{"type":"string","title":"Plan"}},"type":"object","required":["plan"],"title":"SetPlanRequest"},"SetStatusRequest":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"SetStatusRequest"},"SharePredictionRequest":{"properties":{"is_public":{"type":"boolean","title":"Is Public","default":true},"share_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Message"}},"type":"object","title":"SharePredictionRequest"},"SimilarQuery":{"properties":{"query":{"type":"string","title":"Query"},"limit":{"type":"integer","title":"Limit","default":12}},"type":"object","required":["query"],"title":"SimilarQuery"},"SponsorSlotRequest":{"properties":{"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label"},"url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Url"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"country_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Iso"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"}},"type":"object","required":["label","ends_at"],"title":"SponsorSlotRequest"},"SubscriptionRequest":{"properties":{"email":{"type":"string","title":"Email"},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences","default":{}}},"type":"object","required":["email"],"title":"SubscriptionRequest"},"UnsubscribeRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"UnsubscribeRequest"},"UploadHiringDataRequest":{"properties":{"companies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Companies"},"jobs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Jobs"}},"type":"object","required":["companies","jobs"],"title":"UploadHiringDataRequest","description":"Request body for browser-based hiring data upload"},"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"},"VoteRequest":{"properties":{"user_identifier":{"type":"string","title":"User Identifier"}},"type":"object","required":["user_identifier"],"title":"VoteRequest"},"WorldCheckoutRequest":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"name":{"type":"string","maxLength":40,"minLength":1,"title":"Name"},"url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Url"},"tagline":{"anyOf":[{"type":"string","maxLength":140},{"type":"null"}],"title":"Tagline"},"founder_name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Founder Name"},"founder_title":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Founder Title"},"founder_link":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Founder Link"},"company_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Company Id"},"plot_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plot Id"},"amount_cents":{"type":"integer","title":"Amount Cents"}},"type":"object","required":["lat","lng","name","amount_cents"],"title":"WorldCheckoutRequest"}}}}