{"openapi":"3.1.0","info":{"title":"CareerTrends","version":"0.1.0"},"paths":{"/auth/login":{"get":{"summary":"Login","operationId":"login_auth_login_get","parameters":[{"name":"intent","in":"query","required":false,"schema":{"type":"string","default":"free","title":"Intent"}},{"name":"agent_request","in":"query","required":false,"schema":{"type":"string","maxLength":2000,"default":"","title":"Agent Request"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/callback":{"get":{"summary":"Callback","operationId":"callback_auth_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/account/logout":{"post":{"summary":"Logout","operationId":"logout_api_account_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/account/delete":{"post":{"summary":"Delete Account","description":"Delete the account immediately, keeping only a scrubbed payment record.\n\nDeliberately gated on require_user rather than require_member: a free account\nmust stay deletable, and this path is outside the release middleware's premium\nblock list, so it works with every feature flag off.","operationId":"delete_account_api_account_delete_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/features":{"get":{"summary":"Features","operationId":"features_api_features_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/account":{"get":{"summary":"Account","operationId":"account_api_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/watchlist/{company_id}":{"post":{"summary":"Watch","operationId":"watch_api_watchlist__company_id__post","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"}}}}}},"delete":{"summary":"Unwatch","operationId":"unwatch_api_watchlist__company_id__delete","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/saved-searches":{"get":{"summary":"Searches","operationId":"searches_api_saved_searches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Save Search","operationId":"save_search_api_saved_searches_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchInput"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/saved-searches/{search_id}":{"delete":{"summary":"Remove Search","operationId":"remove_search_api_saved_searches__search_id__delete","parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"integer","title":"Search Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coverage-requests":{"post":{"summary":"Request Coverage","operationId":"request_coverage_api_coverage_requests_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageInput"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/checkout":{"post":{"summary":"Checkout","operationId":"checkout_api_billing_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/billing/portal":{"post":{"summary":"Portal","operationId":"portal_api_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/stripe":{"post":{"summary":"Webhook","operationId":"webhook_webhooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/account/preferences":{"post":{"summary":"Preferences","operationId":"preferences_api_account_preferences_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Preferences"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support":{"post":{"summary":"Support","operationId":"support_api_support_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/feedback":{"post":{"summary":"Feedback","description":"Anyone can leave feedback pinned to an element. It is always saved, and emailed to the owner when mail is configured.","operationId":"feedback_api_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackInput"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connect":{"get":{"summary":"Connect Page","operationId":"connect_page_connect_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agents/consent":{"get":{"summary":"Consent Details","description":"What the consent screen shows. It answers signed-out visitors too, so they see which agent asked before signing in.","operationId":"consent_details_api_agents_consent_get","parameters":[{"name":"request","in":"query","required":false,"schema":{"type":"string","maxLength":4000,"default":"","title":"Request"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Consent","operationId":"consent_api_agents_consent_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Consent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agents/connections":{"get":{"summary":"Connections","operationId":"connections_api_agents_connections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agents/connections/{grant_id}":{"delete":{"summary":"Disconnect","operationId":"disconnect_api_agents_connections__grant_id__delete","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","title":"Grant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/member/linkedin/import":{"post":{"summary":"Upload","operationId":"upload_api_member_linkedin_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_api_member_linkedin_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/member/linkedin":{"get":{"summary":"Status","operationId":"status_api_member_linkedin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Clear","operationId":"clear_api_member_linkedin_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/member/linkedin/companies/{company_id}":{"get":{"summary":"People","operationId":"people_api_member_linkedin_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/session":{"get":{"summary":"Session Info","operationId":"session_info_api_session_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/dashboard":{"get":{"summary":"Dashboard","operationId":"dashboard_api_dashboard_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"week","title":"Period"}},{"name":"department","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Department"}},{"name":"industry","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Industry"}},{"name":"pay","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Pay"}},{"name":"workplace","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Workplace"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"title","in":"query","required":false,"schema":{"type":"string","maxLength":160,"default":"","title":"Title"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"growth","title":"Sort"}},{"name":"dataset","in":"query","required":false,"schema":{"type":"string","default":"auto","title":"Dataset"}},{"name":"connections","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Connections"}}],"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":"Company Detail","operationId":"company_detail_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/companies/{company_id}/postings":{"get":{"summary":"Company Postings","operationId":"company_postings_api_companies__company_id__postings_get","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":160,"default":"","title":"Q"}},{"name":"department","in":"query","required":false,"schema":{"type":"string","maxLength":120,"default":"all","title":"Department"}},{"name":"workplace","in":"query","required":false,"schema":{"type":"string","pattern":"^(all|remote|hybrid|onsite|unspecified)$","default":"all","title":"Workplace"}},{"name":"title","in":"query","required":false,"schema":{"type":"string","maxLength":160,"default":"","title":"Title"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/companies/{company_id}/badges/{badge}":{"put":{"summary":"Grant Badge","description":"Put an editorial badge on a live company; granting one it already holds changes nothing.","operationId":"grant_badge_api_admin_companies__company_id__badges__badge__put","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"badge","in":"path","required":true,"schema":{"type":"string","title":"Badge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Revoke Badge","description":"Take a badge off a company; removing one it does not hold changes nothing.","operationId":"revoke_badge_api_admin_companies__company_id__badges__badge__delete","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"badge","in":"path","required":true,"schema":{"type":"string","title":"Badge"}}],"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":"Create Company","operationId":"create_company_api_companies_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewCompany"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/companies/{company_id}/crawl":{"post":{"summary":"Trigger Crawl","operationId":"trigger_crawl_api_companies__company_id__crawl_post","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/departments/{department_id}":{"patch":{"summary":"Update Mapping","operationId":"update_mapping_api_departments__department_id__patch","parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"integer","title":"Department Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mapping"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/annotations":{"get":{"summary":"Annotations","operationId":"annotations_api_annotations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/annotations/{annotation_id}":{"patch":{"summary":"Resolve Annotation","operationId":"resolve_annotation_api_annotations__annotation_id__patch","parameters":[{"name":"annotation_id","in":"path","required":true,"schema":{"type":"integer","title":"Annotation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users":{"get":{"summary":"Admin Users","description":"Every account with its plan and the agents it has connected, newest first.\n\nDeleted accounts are left out: what remains of one is a scrubbed payment record, not a user.\n`member` is the entitlement the site actually grants, so it is false for everyone while\nPREMIUM_ENABLED is off; the subscription and the grant are shown as stored either way.","operationId":"admin_users_api_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/users/{user_id}":{"patch":{"summary":"Set Account Flags","description":"Set an account's admin flag and premium grant, independently; an omitted field means unchanged.","operationId":"set_account_flags_api_admin_users__user_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountFlags"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coupons":{"get":{"summary":"Admin Coupons","description":"Every coupon the app created, with live redemption counts and Stripe's activation state when available.","operationId":"admin_coupons_api_admin_coupons_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create Coupon","description":"Create a percent-off promotion code through Stripe, expiring at the end of the named UTC date.","operationId":"create_coupon_api_admin_coupons_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewCoupon"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coupons/{coupon_id}":{"patch":{"summary":"Update Coupon","description":"Retire or reactivate a coupon, in Stripe first and in the local record.","operationId":"update_coupon_api_admin_coupons__coupon_id__patch","parameters":[{"name":"coupon_id","in":"path","required":true,"schema":{"type":"integer","title":"Coupon Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/membership-price":{"get":{"summary":"Configured Price","description":"The current membership price, and whether a price has been recorded at all.","operationId":"configured_price_api_admin_membership_price_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"patch":{"summary":"Set Price","description":"Publish a new monthly USD price: a new Stripe price on the same product, then it becomes the one.\n\nExisting subscribers keep the price they subscribed at; membership matching follows\nevery price the app has ever offered, so only new checkouts see the change.","operationId":"set_price_api_admin_membership_price_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewPrice"}}},"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/agents":{"get":{"summary":"Admin Agents","description":"How many MCP connections exist, live and by client app.","operationId":"admin_agents_api_admin_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/live":{"get":{"summary":"Liveness","operationId":"liveness_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/member/companies/{company_id}/history":{"get":{"summary":"Member History","operationId":"member_history_api_member_companies__company_id__history_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/member/search-results/{search_id}":{"get":{"summary":"Search Results","operationId":"search_results_api_member_search_results__search_id__get","parameters":[{"name":"search_id","in":"path","required":true,"schema":{"type":"integer","title":"Search Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/membership":{"get":{"summary":"Account Page","operationId":"account_page_membership_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/account":{"get":{"summary":"Account Page","operationId":"account_page_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terms":{"get":{"summary":"Terms Page","operationId":"terms_page_terms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/privacy":{"get":{"summary":"Privacy Page","operationId":"privacy_page_privacy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/refund":{"get":{"summary":"Refund Page","operationId":"refund_page_refund_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contact":{"get":{"summary":"Contact Page","operationId":"contact_page_contact_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots","operationId":"robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/google0f0cbd43681b7a59.html":{"get":{"summary":"Google Site Verification","operationId":"google_site_verification_google0f0cbd43681b7a59_html_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Index","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AccountFlags":{"properties":{"premium":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Premium"},"admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Admin"}},"type":"object","title":"AccountFlags"},"Body_upload_api_member_linkedin_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_api_member_linkedin_import_post"},"Consent":{"properties":{"request":{"type":"string","maxLength":4000,"title":"Request"},"approve":{"type":"boolean","title":"Approve"}},"type":"object","required":["request","approve"],"title":"Consent"},"CouponPatch":{"properties":{"active":{"type":"boolean","title":"Active"}},"type":"object","required":["active"],"title":"CouponPatch"},"CoverageInput":{"properties":{"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"},"board_url":{"type":"string","maxLength":500,"title":"Board Url"}},"type":"object","required":["name","board_url"],"title":"CoverageInput"},"FeedbackInput":{"properties":{"note":{"type":"string","maxLength":6000,"minLength":1,"title":"Note"},"email":{"type":"string","maxLength":320,"title":"Email","default":""},"website":{"type":"string","maxLength":200,"title":"Website","default":""},"path":{"type":"string","maxLength":2000,"title":"Path"},"selector":{"type":"string","maxLength":2000,"title":"Selector"},"text":{"type":"string","maxLength":2000,"title":"Text"},"viewport":{"additionalProperties":{"type":"integer"},"type":"object","title":"Viewport"},"point":{"additionalProperties":{"type":"number"},"type":"object","title":"Point"},"filters":{"additionalProperties":{"type":"string"},"type":"object","title":"Filters"}},"type":"object","required":["note","path","selector","text","viewport","point","filters"],"title":"FeedbackInput"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Mapping":{"properties":{"department":{"type":"string","maxLength":120,"minLength":1,"title":"Department"}},"type":"object","required":["department"],"title":"Mapping"},"NewCompany":{"properties":{"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"},"sector":{"type":"string","maxLength":120,"title":"Sector","default":"Technology"},"board_url":{"type":"string","maxLength":500,"title":"Board Url"}},"type":"object","required":["name","board_url"],"title":"NewCompany"},"NewCoupon":{"properties":{"code":{"type":"string","maxLength":40,"minLength":3,"pattern":"^[A-Za-z0-9_-]+$","title":"Code"},"percent":{"type":"integer","maximum":99.0,"minimum":1.0,"title":"Percent"},"expires":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","title":"Expires"},"duration":{"type":"string","pattern":"^(once|forever)$","title":"Duration","default":"once"}},"type":"object","required":["code","percent","expires"],"title":"NewCoupon"},"NewPrice":{"properties":{"amount":{"type":"number","maximum":1000.0,"minimum":1.0,"title":"Amount"}},"type":"object","required":["amount"],"title":"NewPrice"},"Preferences":{"properties":{"digest_enabled":{"type":"boolean","title":"Digest Enabled"}},"type":"object","required":["digest_enabled"],"title":"Preferences"},"SearchInput":{"properties":{"role":{"type":"string","maxLength":160,"minLength":1,"title":"Role"},"location":{"type":"string","maxLength":160,"title":"Location","default":""}},"type":"object","required":["role"],"title":"SearchInput"},"SupportInput":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"message":{"type":"string","maxLength":5000,"minLength":10,"title":"Message"},"website":{"type":"string","maxLength":200,"title":"Website","default":""}},"type":"object","required":["email","message"],"title":"SupportInput"},"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"}}}}