{"openapi":"3.1.0","info":{"title":"Liquor License Feed","version":"0.1.0"},"paths":{"/api/v1/{table_name}":{"get":{"summary":"Api Table","operationId":"api_table_api_v1__table_name__get","parameters":[{"name":"table_name","in":"path","required":true,"schema":{"type":"string","title":"Table Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/csv":{"get":{"summary":"Csv Export","operationId":"csv_export_csv_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook/stripe":{"post":{"summary":"Stripe Webhook","operationId":"stripe_webhook_webhook_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/tos":{"get":{"summary":"Tos","operationId":"tos_tos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/privacy":{"get":{"summary":"Privacy","operationId":"privacy_privacy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard":{"get":{"summary":"Dashboard Moved","operationId":"dashboard_moved_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/territory":{"get":{"summary":"Territory Page","description":"Pick the counties each state's digest and export should carry, for\nthe subscriber or for one of the plan's extra recipients (?r=email).\nSigned in by the api_key cookie (set by POST /territory/key from the\nkey in the welcome email); anonymous visitors see the key form.","operationId":"territory_page_territory_get","parameters":[{"name":"saved","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Saved"}},{"name":"r","in":"query","required":false,"schema":{"type":"string","default":"","title":"R"}},{"name":"note","in":"query","required":false,"schema":{"type":"string","default":"","title":"Note"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Territory Save","operationId":"territory_save_territory_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/leads":{"get":{"summary":"Leads Page","description":"A subscriber's filings for a window, in their states, counties and\nkinds, with the marks their reps put on them.","operationId":"leads_page_leads_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"county","in":"query","required":false,"schema":{"type":"string","default":"","title":"County"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"show","in":"query","required":false,"schema":{"type":"string","default":"open","title":"Show"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leads/mark":{"post":{"summary":"Leads Mark","operationId":"leads_mark_leads_mark_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_leads_mark_leads_mark_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/territory/states":{"post":{"summary":"Territory States","description":"A five-state subscriber picks their states (a plan switched in the\nbilling portal arrives with only the old one).","operationId":"territory_states_territory_states_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/territory/include":{"post":{"summary":"Territory Include","description":"Which kinds of account the email, webhooks and default exports carry.","operationId":"territory_include_territory_include_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/territory/operators":{"post":{"summary":"Territory Operators","description":"The morning email's \"Operators in your area, opening elsewhere\" section.","operationId":"territory_operators_territory_operators_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_territory_operators_territory_operators_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/territory/recipients":{"post":{"summary":"Territory Add Recipient","operationId":"territory_add_recipient_territory_recipients_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_territory_add_recipient_territory_recipients_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/territory/webhook":{"post":{"summary":"Territory Webhook","description":"Save, clear or test the subscriber's webhook (webhooks.py).","operationId":"territory_webhook_territory_webhook_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_territory_webhook_territory_webhook_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing":{"post":{"summary":"Billing","description":"Stripe's billing portal for the signed-in subscriber: change the\ncard, see invoices, cancel. Pricing, checkout and every email promise\na cancel that is one click from the email, and this is that click.\nA POST from a button on /territory, so a link prefetcher or crawler\nnever opens a portal session. If Stripe refuses (no portal set up in\nthe account yet, or a comp row with no real Stripe customer) the\nsubscriber is told to write to us and ops hears about it.","operationId":"billing_billing_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/territory/key":{"post":{"summary":"Territory Key","operationId":"territory_key_territory_key_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_territory_key_territory_key_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/go":{"get":{"summary":"Go","description":"Every link in our emails lands here: the link token signs the\nbrowser in and forwards to a page on this site.","operationId":"go_go_get","parameters":[{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","default":"/territory","title":"To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/welcome":{"get":{"summary":"Welcome","description":"Where Stripe Checkout returns. The session id names the customer;\nthe page signs the browser in and says when the first email lands.","operationId":"welcome_welcome_get","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Session Id"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/territory/link":{"post":{"summary":"Territory Link","operationId":"territory_link_territory_link_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_territory_link_territory_link_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Landing","operationId":"landing__get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"metro","in":"query","required":false,"schema":{"type":"string","default":"","title":"Metro"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/restaurant-leads":{"get":{"summary":"Restaurant Leads","description":"The homepage under the buyer's own search words: the landing page for\n\"restaurant leads\" searches and ads.","operationId":"restaurant_leads_restaurant_leads_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/for/{slug}":{"get":{"summary":"Persona Page","description":"One buyer's view of the feed: their filings, their columns, their\nCRM's sample, for the state they pick (Texas by default). A supplier\npage's picker lands on its own path, /for/<slug>/<state>.","operationId":"persona_page_for__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/for/{slug}/{abbr}":{"get":{"summary":"Supplier State Page","operationId":"supplier_state_page_for__slug___abbr__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pass/{token}":{"get":{"summary":"Free Pass","description":"A vendor email's free pass: the state page in full, opened on their\ncounty for the last 30 days, with a cookie that keeps the state open\nuntil the pass ends. Path only, so Cloudflare's query challenge never\nstands between the email and the page.","operationId":"free_pass_pass__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"}}}}}}},"/states/{abbr}/counties/{slug}/preview":{"get":{"summary":"County Preview","description":"The state page's sample, swapped for one county's when a rep picks it:\nthe same rows, masked the same way, as the county page shows.","operationId":"county_preview_states__abbr__counties__slug__preview_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"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"}}}}}}},"/states/{abbr}/counties/{slug}":{"get":{"summary":"County Page","description":"New filings in one county (cities and parishes too): the count for\nthe last 30 days and the newest rows, masked like the state page.","operationId":"county_page_states__abbr__counties__slug__get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"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"}}}}}}},"/map.json":{"get":{"summary":"Map Json","operationId":"map_json_map_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/states":{"get":{"summary":"Go To State","description":"The picker on a state page: a plain GET form can't build a path,\nso this hop turns ?state=tx into /states/tx.","operationId":"go_to_state_states_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing":{"get":{"summary":"Pricing","operationId":"pricing_pricing_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"left","in":"query","required":false,"schema":{"type":"string","default":"","title":"Left"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api":{"get":{"summary":"Api Docs","description":"The docs, and for a signed-in subscriber the same snippets with\ntheir own key already in them and a copy button on each.","operationId":"api_docs_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/checkout/{price_id}":{"get":{"summary":"Liquor Checkout","operationId":"liquor_checkout_checkout__price_id__get","parameters":[{"name":"price_id","in":"path","required":true,"schema":{"type":"string","title":"Price Id"}},{"name":"states","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"States"}},{"name":"src","in":"query","required":false,"schema":{"type":"string","default":"","title":"Src"}},{"name":"go","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Go"}},{"name":"counties","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Counties"}},{"name":"w","in":"query","required":false,"schema":{"type":"string","default":"","title":"W"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coverage":{"get":{"summary":"Coverage Page","operationId":"coverage_page_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/states/{abbr}.csv":{"get":{"summary":"State Csv","description":"CSV of one state for Google Sheets: =IMPORTDATA(\"https://liquorlicensefeed.com/states/tx.csv?key=...\").\nSheets can't send a header, so the key rides in the query string on\nthis route only. Same customers-table check and per-state\nentitlement as the header-gated exports.","operationId":"state_csv_states__abbr__csv_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"name":"key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/liquor-license-leads":{"get":{"summary":"Liquor License Leads","operationId":"liquor_license_leads_liquor_license_leads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/guides/find-new-restaurants-before-they-open":{"get":{"summary":"Find New Restaurants","operationId":"find_new_restaurants_guides_find_new_restaurants_before_they_open_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/guides/send-liquor-license-filings-to-clay":{"get":{"summary":"Guide Clay","operationId":"guide_clay_guides_send_liquor_license_filings_to_clay_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/guides/liquor-license-lead-services-compared":{"get":{"summary":"Guide Compare","operationId":"guide_compare_guides_liquor_license_lead_services_compared_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/states/{abbr}/lookup":{"get":{"summary":"State Lookup Form","operationId":"state_lookup_form_states__abbr__lookup_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"State Lookup","description":"Search one state's record by name: what most people searching\n\"<state> liquor license lookup\" came for. A POST, because Cloudflare\nchallenges /states/ URLs with a query string (seen 2026-10-31).","operationId":"state_lookup_states__abbr__lookup_post","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_state_lookup_states__abbr__lookup_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/new-applications":{"get":{"summary":"New Applications Page","description":"One state's answer to \"where do I see new applications\": the public\nsource, what it shows and how often it changes, as a table an answer\nengine can lift. Live states only; everything on it comes from the registry.","operationId":"new_applications_page_states__abbr__new_applications_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/how-long":{"get":{"summary":"How Long Page","description":"How long a liquor license takes in a state, from filings we watched\nfrom application to issued license (timing.py), overall and by type.","operationId":"how_long_page_states__abbr__how_long_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/new-owners":{"get":{"summary":"New Owners Page","description":"A state's licenses changing hands: the filings where a buyer takes\nover an existing bar, restaurant or store, from the last 90 days. The\nsame teaser rules as the state page (three in full, the rest masked).","operationId":"new_owners_page_states__abbr__new_owners_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/license-types":{"get":{"summary":"License Types Page","description":"Every license and permit class in a state's dictionary: the plain\nname a rep uses, the statute's own sentence, and who usually holds it.\nTypes the feed leaves out (wholesale, events) say so.","operationId":"license_types_page_states__abbr__license_types_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}":{"get":{"summary":"State Page","operationId":"state_page_states__abbr__get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"county","in":"query","required":false,"schema":{"type":"string","default":"","title":"County"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}},{"name":"days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days"}},{"name":"metro","in":"query","required":false,"schema":{"type":"string","default":"","title":"Metro"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/format-request":{"post":{"summary":"Format Request","description":"Someone needs the rows in a shape we don't make yet: saved, and\nmailed to ops the same minute. `website` is a field people never see;\na bot fills it and gets the same thank-you with nothing saved.","operationId":"format_request_format_request_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_format_request_format_request_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/license-watch":{"post":{"summary":"License Watch","description":"Watch this license: one confirmation email, then an alert when its status changes.","operationId":"license_watch_license_watch_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_license_watch_license_watch_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/license-watch/confirm":{"get":{"summary":"License Watch Confirm","operationId":"license_watch_confirm_license_watch_confirm_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/license-watch/stop":{"get":{"summary":"License Watch Stop","operationId":"license_watch_stop_license_watch_stop_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/unlock":{"post":{"summary":"Unlock Lead","description":"A masked filing in full, sent to the address typed. Three per address.","operationId":"unlock_lead_unlock_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_unlock_lead_unlock_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/find-state":{"get":{"summary":"Go To State","description":"The home page's state picker, so it works with no script.","operationId":"go_to_state_find_state_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/watch/signup":{"post":{"summary":"Watch Signup","description":"Free Watch tier: one state, weekly email, city/type/status/date\nonly -- no name, no address, no billing. Just captures the signup;\nsee digest.watch_digest for the content it eventually gets sent.","operationId":"watch_signup_watch_signup_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_watch_signup_watch_signup_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/watch/use-case":{"post":{"summary":"Watch Use Case","description":"The one optional question on the confirmed page. Keyed by the\nconfirmation token, so only the person who tapped the link answers.","operationId":"watch_use_case_watch_use_case_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_watch_use_case_watch_use_case_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/watch/confirm":{"get":{"summary":"Watch Confirm","description":"The tap that proves the address is theirs. Until it happens the\nsignup is never mailed a digest.","operationId":"watch_confirm_watch_confirm_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"answered","in":"query","required":false,"schema":{"type":"string","default":"","title":"Answered"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/unsubscribe":{"post":{"summary":"Unsubscribe","description":"The footer link and the mail client's one-click unsubscribe (a\nPOST with List-Unsubscribe=One-Click) land here.","operationId":"unsubscribe_unsubscribe_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Unsubscribe","description":"The footer link and the mail client's one-click unsubscribe (a\nPOST with List-Unsubscribe=One-Click) land here.","operationId":"unsubscribe_unsubscribe_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/8e9710bd5432441b9d31d8df7243e1c5.txt":{"get":{"summary":"Indexnow Key","operationId":"indexnow_key_8e9710bd5432441b9d31d8df7243e1c5_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/apple-touch-icon.png":{"get":{"summary":"Apple Touch Icon","operationId":"apple_touch_icon_apple_touch_icon_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/brand/{name}":{"get":{"summary":"Brand File","operationId":"brand_file_brand__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ops":{"get":{"summary":"Ops Page","description":"The LLF Dashboard (ops/dashboard.py, not the subscriber /dashboard), behind HTTP Basic auth.\nLLF_OPS_AUTH=nginx: nginx checks the login (the same .htpasswd-ops as adalmanac.com/ops/;\nthe app only listens on 127.0.0.1). Otherwise LLF_OPS_PASSWORD, and neither means the page doesn't exist.","operationId":"ops_page_ops_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":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp-registry-auth":{"get":{"summary":"Mcp Registry Auth","description":"The public half of the key that proves this domain owns its MCP registry\nlisting; the private half stays root-only on the server.","operationId":"mcp_registry_auth__well_known_mcp_registry_auth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stop/{token}":{"get":{"summary":"Vendor Stop Page","description":"The stop link in a vendor email. It asks for one click: mail filters open links.","operationId":"vendor_stop_page_stop__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"}}}}}},"post":{"summary":"Vendor Stop","description":"One click from the page, or from a mail app's List-Unsubscribe button.","operationId":"vendor_stop_stop__token__post","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"}}}}}}},"/vendor/approve/{token}":{"get":{"summary":"Vendor Approve Page","description":"The link in the owner's morning email: one button sends that day's\nvendor emails. A button, not the link, because mail filters open links.","operationId":"vendor_approve_page_vendor_approve__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"}}}}}},"post":{"summary":"Vendor Approve","operationId":"vendor_approve_vendor_approve__token__post","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"}}}}}}},"/digest/sample":{"get":{"summary":"Digest Sample","description":"One state's subscriber email over the free sample's week (a week or\nmore back): what a rep gets, without giving away this week.","operationId":"digest_sample_digest_sample_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"tx","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/csv":{"get":{"summary":"Export Csv","description":"format=hubspot|salesforce|pipedrive|agencyzoom|repsly: the same rows in that tool's import columns.","operationId":"export_csv_export_csv_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"all","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"All"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"chains","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Chains"}},{"name":"brands","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Brands"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"","title":"Format"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/json":{"get":{"summary":"Export Json","operationId":"export_json_export_json_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"all","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"All"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"chains","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Chains"}},{"name":"brands","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Brands"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/renewals.csv":{"get":{"summary":"Export Renewals Csv","description":"Licenses still on the list whose expiration falls in the next `days`.","operationId":"export_renewals_csv_export_renewals_csv_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Days"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/renewals.json":{"get":{"summary":"Export Renewals Json","operationId":"export_renewals_json_export_renewals_json_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Days"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/food_permits.csv":{"get":{"summary":"Export Food Permits Csv","description":"New restaurants from health inspections and county food permits (food_permits.py), 30 days by default.","operationId":"export_food_permits_csv_export_food_permits_csv_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/closed.csv":{"get":{"summary":"Export Closed Csv","description":"Licenses that left the state's list since `since` (30 days by default).","operationId":"export_closed_csv_export_closed_csv_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/closed.json":{"get":{"summary":"Export Closed Json","operationId":"export_closed_json_export_closed_json_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cities/{slug}":{"get":{"summary":"City Page","operationId":"city_page_cities__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"}}}}}}},"/states/{abbr}/sample.json":{"get":{"summary":"Sample Json","operationId":"sample_json_states__abbr__sample_json_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/sample.csv":{"get":{"summary":"Sample Csv","description":"kind=on,maker&chains=0: the same choice as the export's (the buyer pages link it that way).","operationId":"sample_csv_states__abbr__sample_csv_get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"","title":"Format"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"chains","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Chains"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"summary":"Mcp Get","operationId":"mcp_get_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Mcp Post","operationId":"mcp_post_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/coming-soon/":{"get":{"summary":"Coming Soon Index","operationId":"coming_soon_index_coming_soon__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/coming-soon/{abbr}/{city_slug}":{"get":{"summary":"Coming Soon City","operationId":"coming_soon_city_coming_soon__abbr___city_slug__get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/weekly/":{"get":{"summary":"Weekly Index","operationId":"weekly_index_states__abbr__weekly__get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/states/{abbr}/weekly/{date_str}":{"get":{"summary":"Weekly State","operationId":"weekly_state_states__abbr__weekly__date_str__get","parameters":[{"name":"abbr","in":"path","required":true,"schema":{"type":"string","title":"Abbr"}},{"name":"date_str","in":"path","required":true,"schema":{"type":"string","title":"Date Str"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/weekly/{date_str}":{"get":{"summary":"Weekly National","operationId":"weekly_national_weekly__date_str__get","parameters":[{"name":"date_str","in":"path","required":true,"schema":{"type":"string","title":"Date Str"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/":{"get":{"summary":"Reports Index","operationId":"reports_index_reports__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reports/{ym}":{"get":{"summary":"Report Month","operationId":"report_month_reports__ym__get","parameters":[{"name":"ym","in":"path","required":true,"schema":{"type":"string","title":"Ym"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/about-the-data":{"get":{"summary":"About The Data","operationId":"about_the_data_about_the_data_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/status":{"get":{"summary":"Status Page","description":"The freshness board: for each live state, what it publishes, how\noften, when we last read it, the newest filing we hold and how long a\nfiling takes to reach the feed. Checkable against each state's own\nrecord, which is the point.","operationId":"status_page_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Body_format_request_format_request_post":{"properties":{"email":{"type":"string","title":"Email"},"need":{"type":"string","title":"Need"},"tool":{"type":"string","title":"Tool","default":""},"page":{"type":"string","title":"Page","default":"/api"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["email","need"],"title":"Body_format_request_format_request_post"},"Body_leads_mark_leads_mark_post":{"properties":{"state":{"type":"string","title":"State"},"source_id":{"type":"string","title":"Source Id"},"mark":{"type":"string","title":"Mark","default":""},"back":{"type":"string","title":"Back","default":"/leads"}},"type":"object","required":["state","source_id"],"title":"Body_leads_mark_leads_mark_post"},"Body_license_watch_license_watch_post":{"properties":{"email":{"type":"string","title":"Email"},"state":{"type":"string","title":"State"},"source_id":{"type":"string","title":"Source Id"}},"type":"object","required":["email","state","source_id"],"title":"Body_license_watch_license_watch_post"},"Body_state_lookup_states__abbr__lookup_post":{"properties":{"q":{"type":"string","title":"Q","default":""}},"type":"object","title":"Body_state_lookup_states__abbr__lookup_post"},"Body_territory_add_recipient_territory_recipients_post":{"properties":{"email":{"type":"string","title":"Email"},"action":{"type":"string","title":"Action","default":"add"}},"type":"object","required":["email"],"title":"Body_territory_add_recipient_territory_recipients_post"},"Body_territory_key_territory_key_post":{"properties":{"key":{"type":"string","title":"Key"}},"type":"object","required":["key"],"title":"Body_territory_key_territory_key_post"},"Body_territory_link_territory_link_post":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"Body_territory_link_territory_link_post"},"Body_territory_operators_territory_operators_post":{"properties":{"on":{"type":"string","title":"On","default":""}},"type":"object","title":"Body_territory_operators_territory_operators_post"},"Body_territory_webhook_territory_webhook_post":{"properties":{"url":{"type":"string","title":"Url","default":""},"action":{"type":"string","title":"Action","default":"save"}},"type":"object","title":"Body_territory_webhook_territory_webhook_post"},"Body_unlock_lead_unlock_post":{"properties":{"email":{"type":"string","title":"Email"},"state":{"type":"string","title":"State"},"key":{"type":"string","title":"Key"}},"type":"object","required":["email","state","key"],"title":"Body_unlock_lead_unlock_post"},"Body_watch_signup_watch_signup_post":{"properties":{"email":{"type":"string","title":"Email"},"state":{"type":"string","title":"State"},"counties":{"items":{"type":"string"},"type":"array","title":"Counties","default":[]},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["email","state"],"title":"Body_watch_signup_watch_signup_post"},"Body_watch_use_case_watch_use_case_post":{"properties":{"token":{"type":"string","title":"Token"},"use_case":{"type":"string","title":"Use Case"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["token","use_case"],"title":"Body_watch_use_case_watch_use_case_post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"}}}}