{"openapi":"3.0.3","info":{"title":"Boat Day API","version":"1.8.0","description":"Public API for recreational boating: boat models, value & TCO estimates, state rules, waterways, events, safety, guides, checklists, supplier directory.\nNo auth for reads. CORS open. Every JSON object response carries a `provenance` block (source, as_of, method, confidence, cite_as). Records flagged demoData:true are illustrative. Businesses labeled \"Find them online\" are public-web listings, not partners. HIN/owner and write endpoints are demo-grade. MCP (read-only, stateless): POST /api/mcp. Docs: /llms.txt, /for-agents, /api/v1/changelog.","contact":{"name":"Boat Owners Hub"},"license":{"name":"Free to use; attribution appreciated (see /for-agents#terms)"}},"servers":[{"url":"https://bestboatday.com/api/v1","description":"Boat Day public API v1"}],"tags":[{"name":"index"},{"name":"stages"},{"name":"guides"},{"name":"checklists"},{"name":"safety"},{"name":"vendors"},{"name":"leads"},{"name":"glossary"},{"name":"passports"},{"name":"outcomes"},{"name":"readiness"},{"name":"waterways"},{"name":"states"},{"name":"partners"},{"name":"joy"},{"name":"go-today"},{"name":"crew"},{"name":"trips"},{"name":"maintenance"},{"name":"documents"},{"name":"costs"},{"name":"jobs"},{"name":"models"},{"name":"boat-finder"},{"name":"moat"},{"name":"agent"},{"name":"profile"},{"name":"auth"},{"name":"ecosystem"},{"name":"directory"},{"name":"software"},{"name":"events"},{"name":"nonprofits"},{"name":"give-back"},{"name":"datasets"}],"paths":{"/index":{"get":{"tags":["index"],"summary":"Agent/site discovery index","operationId":"getIndex","responses":{"200":{"description":"Compact index of public resources","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIndex"}}}}}}},"/stages":{"get":{"tags":["stages"],"summary":"List ownership stages","operationId":"listStages","responses":{"200":{"description":"Ordered stages","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/StageSummary"}}}}}}}}}},"/stages/{stageId}":{"get":{"tags":["stages"],"summary":"Get stage detail","operationId":"getStage","parameters":[{"$ref":"#/components/parameters/stageId"}],"responses":{"200":{"description":"Stage detail with linked resources","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StageDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/guides":{"get":{"tags":["guides"],"summary":"List or search guides","operationId":"listGuides","parameters":[{"name":"stage","in":"query","schema":{"$ref":"#/components/schemas/StageId"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string"}},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"Guide list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuideList"}}}}}}},"/guides/{slug}":{"get":{"tags":["guides"],"summary":"Get guide by slug","operationId":"getGuide","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Guide detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuideDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/checklists":{"get":{"tags":["checklists"],"summary":"List checklists","operationId":"listChecklists","parameters":[{"name":"stage","in":"query","schema":{"$ref":"#/components/schemas/StageId"}}],"responses":{"200":{"description":"Checklist summaries","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ChecklistSummary"}}}}}}}}}},"/checklists/{slug}":{"get":{"tags":["checklists"],"summary":"Get checklist","operationId":"getChecklist","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Checklist detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChecklistDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/safety":{"get":{"tags":["safety"],"summary":"Safety hub summary for agents (pillars + guide slugs + matrices)","operationId":"getSafety","description":"Summarizes Boat Day safety pillars, deep guide slugs, pre-departure checklist,\nofficial pointers, and product safety matrices. Advisory only — not a substitute for USCG regs or local law.\n","responses":{"200":{"description":"Safety pillars, guides, checklist, official links","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"framing":{"type":"string"},"pillars":{"type":"array","items":{"type":"object"}},"guides":{"type":"array","items":{"type":"object"}},"checklist":{"type":"object","nullable":true},"hubUrl":{"type":"string"}}}}}}}}}}},"/vendors":{"get":{"tags":["vendors"],"summary":"Search vendors","operationId":"listVendors","parameters":[{"name":"category","in":"query","schema":{"type":"string"}},{"name":"region","in":"query","schema":{"type":"string"},"description":"State code or region token (e.g. FL, US-GULF)"},{"name":"stage","in":"query","schema":{"$ref":"#/components/schemas/StageId"}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"includeDemo","in":"query","schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"Vendor list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VendorList"}}}}}}},"/vendors/{id}":{"get":{"tags":["vendors"],"summary":"Get vendor","operationId":"getVendor","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Vendor detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vendor"}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/leads":{"post":{"tags":["leads"],"summary":"Create attributed lead","operationId":"createLead","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadCreate"}}}},"responses":{"201":{"description":"Lead accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadCreated"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"tags":["leads"],"summary":"GET /leads","operationId":"get_leads","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/glossary":{"get":{"tags":["glossary"],"summary":"List glossary terms","operationId":"listGlossary","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"letter","in":"query","schema":{"type":"string","minLength":1,"maxLength":1}},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"Glossary terms","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlossaryList"}}}}}}},"/moat.json":{"get":{"tags":["moat"],"summary":"Exclusive moat datasets map for agents","operationId":"getMoat","responses":{"200":{"description":"Moat description"}}}},"/passports":{"get":{"tags":["passports"],"summary":"List vessel passports","operationId":"listPassports","responses":{"200":{"description":"Passport summaries"}}},"post":{"tags":["passports"],"summary":"Create passport by HIN","operationId":"createPassport","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassportCreate"}}}},"responses":{"201":{"description":"Created"},"400":{"$ref":"#/components/responses/BadRequest"}}}},"/passports/{hin}":{"get":{"tags":["passports"],"summary":"Get passport by HIN","operationId":"getPassport","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Passport detail"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/passports/{hin}/events":{"get":{"tags":["passports"],"summary":"List passport events","operationId":"listPassportEvents","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Events"}}},"post":{"tags":["passports"],"summary":"Add passport event","operationId":"addPassportEvent","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassportEventCreate"}}}},"responses":{"201":{"description":"Created"}}}},"/outcomes/summary":{"get":{"tags":["outcomes"],"summary":"Anonymized lead outcome aggregates","operationId":"getOutcomesSummary","responses":{"200":{"description":"Counts and median response by category/region/stage"}}}},"/leads/{id}":{"patch":{"tags":["leads"],"summary":"Update lead outcome fields","operationId":"patchLead","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadOutcomePatch"}}}},"responses":{"200":{"description":"Updated lead"},"404":{"$ref":"#/components/responses/NotFound"}}},"get":{"tags":["leads"],"summary":"GET /leads/{id}","operationId":"get_leads_id","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/vendors/applications":{"get":{"tags":["vendors"],"summary":"List vendor applications (demo admin)","operationId":"listVendorApplications","responses":{"200":{"description":"Applications"}}},"post":{"tags":["vendors"],"summary":"Submit vendor onboarding application","operationId":"createVendorApplication","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VendorApplicationCreate"}}}},"responses":{"201":{"description":"Created"}}}},"/vendors/applications/{id}":{"patch":{"tags":["vendors"],"summary":"Approve or reject application","operationId":"patchVendorApplication","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["approved","rejected"]}}}}}},"responses":{"200":{"description":"Updated"}}},"get":{"tags":["vendors"],"summary":"GET /vendors/applications/{id}","operationId":"get_vendors_applications_id","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/vendors/{id}/feedback":{"post":{"tags":["vendors"],"summary":"Submit job feedback after a lead","operationId":"createVendorFeedback","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VendorFeedbackCreate"}}}},"responses":{"201":{"description":"Created"}}},"get":{"tags":["vendors"],"summary":"GET /vendors/{id}/feedback","operationId":"get_vendors_id_feedback","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/readiness/{hin}":{"get":{"tags":["readiness"],"summary":"Owner Readiness Pack for HIN","operationId":"getReadiness","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}},{"name":"stage","in":"query","schema":{"$ref":"#/components/schemas/StageId"}}],"responses":{"200":{"description":"Pack"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/readiness/packs":{"post":{"tags":["readiness"],"summary":"Generate readiness pack (B2B)","operationId":"createReadinessPack","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["hin"],"properties":{"hin":{"type":"string"},"stageId":{"$ref":"#/components/schemas/StageId"},"partnerNotes":{"type":"string"},"persist":{"type":"boolean"}}}}}},"responses":{"201":{"description":"Pack generated"}}},"get":{"tags":["readiness"],"summary":"GET /readiness/packs","operationId":"get_readiness_packs","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/waterways":{"get":{"tags":["waterways"],"summary":"Focus waterways with density","operationId":"listWaterways","responses":{"200":{"description":"Waterway list"}}}},"/waterways/{slug}":{"get":{"tags":["waterways"],"summary":"Waterway detail + featured vendors","operationId":"getWaterway","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Detail"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/states":{"get":{"tags":["states"],"summary":"State guide index","operationId":"listStates","responses":{"200":{"description":"States"}}}},"/states/{code}":{"get":{"tags":["states"],"summary":"State guide by code","operationId":"getState","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"State guide or empty placeholder"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/partners/manifest.json":{"get":{"tags":["partners"],"summary":"B2B integration manifest","operationId":"getPartnerManifest","responses":{"200":{"description":"Manifest"}}}},"/ecosystem/modules":{"get":{"tags":["ecosystem"],"summary":"List Boat Day Network modules","operationId":"listEcosystemModules","responses":{"200":{"description":"Module catalog summary"}}}},"/ecosystem/modules/{id}":{"get":{"tags":["ecosystem"],"summary":"Get ecosystem module by id","operationId":"getEcosystemModule","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","enum":["marina","dealer","insurer","lender","surveyor","yard","school","club","oem","developer"]}}],"responses":{"200":{"description":"Full module + markdown"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ecosystem/network":{"get":{"tags":["ecosystem"],"summary":"Compounding network summary stats","operationId":"getEcosystemNetwork","responses":{"200":{"description":"Flywheels, write-back totals, QBD proxy"}}}},"/go-today/{hin}":{"get":{"tags":["go-today"],"summary":"Cast-off Go Today score for a HIN","description":"Combines boat readiness/burden, seasonal waterway playbook, and optional Open-Meteo\nforecast. Returns goScore 0–100, recommendation go|go_with_caveats|not_today,\nreasons, suggestedActivities, clearBurdenLinks. Quality Boat Days framing.\n","operationId":"getGoToday","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}},{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"YYYY-MM-DD (defaults to today UTC)"},{"name":"skipWeather","in":"query","required":false,"schema":{"type":"string","enum":["1"]}}],"responses":{"200":{"description":"Go Today score payload"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/crew/{hin}":{"get":{"tags":["crew"],"summary":"List crew nicknames + roles for a HIN","operationId":"listCrew","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Crew list (QBD remains owner-scoped)"}}},"post":{"tags":["crew"],"summary":"Add a crew member (nickname + role)","operationId":"createCrew","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["nickname","role"],"properties":{"nickname":{"type":"string"},"role":{"type":"string","enum":["co-captain","family","friend","guest"]},"notes":{"type":"string"}}}}}},"responses":{"201":{"description":"Crew member created"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/joy/{hin}":{"get":{"tags":["joy"],"summary":"Joy Score + Quality Boat Days for a HIN","operationId":"getJoy","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Joy breakdown and qualityBoatDays compass metric"}}}},"/trips/{hin}":{"get":{"tags":["trips"],"summary":"List trips/moments (worth-it ratings)","operationId":"listTrips","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Trip list"}}},"post":{"tags":["trips"],"summary":"Log a trip with worth-it rating (1-5)","operationId":"createTrip","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Trip created; passport outing event logged"}}}},"/maintenance/{hin}":{"get":{"tags":["maintenance"],"summary":"Seasonal maintenance plan for HIN","operationId":"getMaintenancePlan","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Plan checklist"}}},"post":{"tags":["maintenance"],"summary":"Generate or regenerate plan","operationId":"postMaintenancePlan","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Plan saved"}}}},"/maintenance/{hin}/complete":{"post":{"tags":["maintenance"],"summary":"Complete a plan item (writes passport service event)","operationId":"completeMaintenanceItem","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Item completed"}}}},"/documents/{hin}":{"get":{"tags":["documents"],"summary":"Document vault metadata for HIN","operationId":"listDocuments","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Documents + compliance"}}},"post":{"tags":["documents"],"summary":"Add document metadata","operationId":"createDocument","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created"}}},"delete":{"tags":["documents"],"summary":"Delete document metadata","operationId":"deleteDocument","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted"}}}},"/costs/{hin}":{"get":{"tags":["costs"],"summary":"Cost actuals for HIN","operationId":"listCosts","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Costs"}}},"post":{"tags":["costs"],"summary":"Log a cost actual","operationId":"createCost","parameters":[{"name":"hin","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created"}}}},"/costs/calibration":{"get":{"tags":["costs"],"summary":"Anonymized cost averages by length/waterway","operationId":"getCostCalibration","responses":{"200":{"description":"Calibration buckets (small-n labeled)"}}}},"/jobs":{"get":{"tags":["jobs"],"summary":"List service jobs","operationId":"listJobs","responses":{"200":{"description":"Jobs"}}},"post":{"tags":["jobs"],"summary":"Book service (lead + job + passport event)","operationId":"createJob","responses":{"201":{"description":"Job created"}}}},"/jobs/{id}":{"patch":{"tags":["jobs"],"summary":"Update job status / rating","operationId":"patchJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated"}}},"get":{"tags":["jobs"],"summary":"GET /jobs/{id}","operationId":"get_jobs_id","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/models":{"get":{"tags":["models"],"summary":"Boat model graph index or filtered list","operationId":"listModels","responses":{"200":{"description":"Model index"}}}},"/models/graph":{"get":{"operationId":"getModelGraph","summary":"Canonical boat model knowledge graph","description":"Full educational model graph (nodes + edges + agentGuidance).\ndemoData:true — agents SHOULD prefer over inventing specs.\n","tags":["Models"],"responses":{"200":{"description":"Canonical model graph JSON"}}}},"/models/{id}":{"get":{"tags":["models"],"summary":"Model detail","operationId":"getModel","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Model document"}}}},"/models/{id}/tco":{"get":{"tags":["models","tco"],"summary":"Model TCO estimate + calculator defaults","operationId":"getModelTco","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"tcoEstimate and calculatorDefaults (demo)"}}}},"/tco/estimate":{"post":{"tags":["tco"],"summary":"Owner TCO estimate with overrides","operationId":"postTcoEstimate","description":"Educational hold-period TCO. demoData always true — not underwriting.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"modelId":{"type":"string"},"purchasePrice":{"type":"number"},"holdYears":{"type":"number"},"hoursPerYear":{"type":"number"},"storage":{"type":"string","enum":["trailer","dry-stack","wet-slip"]},"region":{"type":"string","enum":["freeze","sunbelt","coastal"]}}}}}},"responses":{"200":{"description":"Full breakdown"}}}},"/value/estimate":{"get":{"tags":["value","burden"],"summary":"Quick boat sell-value estimate (agents)","operationId":"getValueEstimate","description":"Educational private-party sell range. demoData always true.\nPrefer modelId or hin; cite sourceIds from content/datasets/valuation.\nNot an appraisal / MLS / NADAguides product.\n","parameters":[{"name":"modelId","in":"query","schema":{"type":"string"}},{"name":"year","in":"query","schema":{"type":"number"}},{"name":"hin","in":"query","schema":{"type":"string"}},{"name":"make","in":"query","schema":{"type":"string"}},{"name":"model","in":"query","schema":{"type":"string"}},{"name":"loaFt","in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":"ValuationResult with sourceIds, range, confidence"}}},"post":{"tags":["value","burden"],"summary":"Boat sell-value estimate with optional refine answers","operationId":"postValueEstimate","description":"Instant estimate + optional refine answers. Set persist:true to store demo history in data/valuations.json.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hin":{"type":"string"},"modelId":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":"number"},"loaFt":{"type":"number"},"boatType":{"type":"string"},"persist":{"type":"boolean"},"answers":{"type":"object","description":"RefineAnswers (condition, engineHours, location, titleStatus, timeline, …)"}}},"example":{"modelId":"boston-whaler-280-outrage","year":2020,"answers":{"condition":"good","location":"coastal-salt","titleStatus":"clean"}}}}},"responses":{"200":{"description":"ValuationResult + refineQuestions + optional storedId"}}}},"/quotes/shop":{"post":{"tags":["quotes","directory"],"summary":"Intake invoice/quote and shop against directory","operationId":"postQuoteShop","responses":{"201":{"description":"Quote shop record with matches"}}}},"/quotes/{id}":{"get":{"tags":["quotes"],"summary":"Get quote shop record","operationId":"getQuoteShop","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Quote shop record"}}}},"/boat-finder":{"post":{"tags":["boat-finder"],"summary":"Rank boat models from Find Your Boat answers","operationId":"postBoatFinder","description":"Educational shortlist from the model graph. Body matches the /find-your-boat wizard.\nNot a purchase recommendation — encourage sea trial + survey.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoatFinderAnswers"},"example":{"intents":["fishing","family"],"waterwayType":"skinny-water-bay","focusWaterway":"sw-florida","crew":"family-kids","skill":"some","storage":"trailer","budget":"50-100k","mustHaves":["fishing-features","low-draft","easy-trailer"],"dealbreakers":[],"newUsed":"either","limit":8}}}},"responses":{"200":{"description":"Ranked models with score breakdown","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BoatFinderResult"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"}}},"get":{"tags":["boat-finder"],"summary":"Probe boat finder via query params","operationId":"getBoatFinder","parameters":[{"name":"intent","in":"query","schema":{"type":"string"},"description":"Repeatable joy intent (fishing, watersports, …)"},{"name":"waterwayType","in":"query","schema":{"type":"string"}},{"name":"budget","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":8}}],"responses":{"200":{"description":"Ranked models"}}}},"/agent/chat":{"post":{"tags":["agent"],"summary":"Boat Day Agent chat (local RAG; optional OpenAI)","operationId":"agentChat","description":"Retrieval-augmented Boat Day copilot. Works offline with a local synthesizer.\nPrioritizes content/models/graph.json (canonical boat specs), content/history/graph.json, content/futures/graph.json, watchlist.json,\nand radar updates when present, plus guides/stages/models/states/waterways/ecosystem\nand HIN-scoped joy/go-today/maintenance when `hin` is set. Never invents fees.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["messages"],"properties":{"messages":{"type":"array","items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant","system"]},"content":{"type":"string"}}}},"hin":{"type":"string","description":"Optional HIN for Go Today / Joy / maintenance context"}}}}}},"responses":{"200":{"description":"Assistant reply with citations","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"message":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"citations":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"href":{"type":"string"},"source":{"type":"string"}}}},"mode":{"type":"string","enum":["local","openai-enhanced"]}}},"demo":{"type":"boolean"}}}}}}}}},"/profile":{"get":{"tags":["profile"],"summary":"Get signed-in user profile","operationId":"getProfile","responses":{"200":{"description":"Profile"},"401":{"description":"Unauthorized"}}},"patch":{"tags":["profile"],"summary":"Update profile (name, waterway, state, boatHins, prefs, modules)","operationId":"patchProfile","responses":{"200":{"description":"Updated profile"},"401":{"description":"Unauthorized"}}}},"/directory":{"get":{"tags":["directory"],"summary":"Master supplier directory (filters + ranked)","operationId":"listDirectory","parameters":[{"in":"query","name":"category","schema":{"type":"string"}},{"in":"query","name":"waterway","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["rank","median-response","verified","name","sla"]}},{"in":"query","name":"limit","schema":{"type":"integer","maximum":200}}],"responses":{"200":{"description":"Ranked supplier profiles with response metrics"}}}},"/directory/{id}":{"get":{"tags":["directory"],"summary":"Supplier profile + response-time badge","operationId":"getDirectorySupplier","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Supplier profile"},"404":{"description":"Not found"}}}},"/directory/contact":{"post":{"tags":["directory"],"summary":"Contact a supplier (starts response clock; creates lead)","operationId":"postDirectoryContact","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["supplierId","name","email","consent"],"properties":{"supplierId":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"hin":{"type":"string"},"message":{"type":"string"},"urgency":{"type":"string","enum":["low","normal","high","emergency"]},"preferredContactMethod":{"type":"string","enum":["email","phone","either"]},"category":{"type":"string"},"waterway":{"type":"string"},"consent":{"type":"boolean"}}}}}},"responses":{"201":{"description":"Contact + lead created"},"400":{"description":"Validation / consent"}}}},"/directory/contacts/{id}":{"patch":{"tags":["directory"],"summary":"Mark contact responded (computes responseHours)","operationId":"patchDirectoryContact","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["responded","closed"]},"respondedAt":{"type":"string","format":"date-time"}}}}}},"responses":{"200":{"description":"Updated contact with responseHours"}}},"get":{"tags":["directory"],"summary":"GET /directory/contacts/{id}","operationId":"get_directory_contacts_id","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/directory/stats":{"get":{"tags":["directory"],"summary":"Network response-time aggregates by category/waterway","operationId":"getDirectoryStats","responses":{"200":{"description":"Aggregates for charts and agent routing"}}}},"/software":{"get":{"tags":["software"],"summary":"List owner software products (QBD-evaluated)","operationId":"listSoftware","description":"Quality Boat Days software directory. Always demoData:true — public-research\nevaluations, not paid rankings. North star: Quality Boat Days (burden clearing,\nsafety support, boat-days lift). Link-out / educational only.\n","parameters":[{"in":"query","name":"category","schema":{"type":"string"}},{"in":"query","name":"platform","schema":{"type":"string"}},{"in":"query","name":"pricing","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"targetUser","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["overallFit","burdenClearing","safetySupport","boatDaysLift","name"],"default":"overallFit"}},{"in":"query","name":"limit","schema":{"type":"integer","maximum":200,"default":100}}],"responses":{"200":{"description":"Products + taxonomy + leaderboards. demoData:true; provenance boat-day-public-research-v1.\n"}}}},"/software/{id}":{"get":{"tags":["software"],"summary":"Software product detail + local graph edges","operationId":"getSoftware","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Product, edges, overlaps (demoData:true)"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/software/graph":{"get":{"tags":["software"],"summary":"Owner software knowledge graph","operationId":"getSoftwareGraph","description":"Full QBD software graph (nodes + edges). demoData:true — agents SHOULD prefer\nover inventing product claims.\n","responses":{"200":{"description":"Graph JSON (demoData:true)"}}}},"/software/compare":{"get":{"tags":["software"],"summary":"Compare 2–4 software products on QBD dimensions","operationId":"compareSoftware","parameters":[{"in":"query","name":"ids","required":true,"schema":{"type":"string"},"description":"Comma-separated product ids (2–4), e.g. boat-day,nebo,boatsetter"}],"responses":{"200":{"description":"Compared products + QBD dimensions (demoData:true)"},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/events":{"get":{"tags":["events"],"summary":"Boating events directory (link-out only)","operationId":"listEvents","description":"Curated boating events. demoData:true. No ticket checkout on Boat Day —\nofficial organizer URLs only. North star: Quality Boat Days.\n","parameters":[{"in":"query","name":"type","schema":{"type":"string"}},{"in":"query","name":"waterway","schema":{"type":"string"}},{"in":"query","name":"cost","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"from","schema":{"type":"string","format":"date"}},{"in":"query","name":"to","schema":{"type":"string","format":"date"}},{"in":"query","name":"state","schema":{"type":"string"}},{"in":"query","name":"region","schema":{"type":"string"}},{"in":"query","name":"upcoming","schema":{"type":"string","enum":["1"]},"description":"When 1, return upcoming-only slice"}],"responses":{"200":{"description":"Filtered events + typeBreakdown (demoData:true)"}}}},"/events/{id}":{"get":{"tags":["events"],"summary":"Event detail + related","operationId":"getEvent","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Event + related + page links (demoData unless source says otherwise)"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/events/sources":{"get":{"tags":["events"],"summary":"Events sources + refresh metadata","operationId":"getEventSources","description":"Provenance for the events directory. Refresh via `npm run refresh:events`.\n","responses":{"200":{"description":"Sources list, lastRefreshed, methodology pointers"}}}},"/nonprofits":{"get":{"tags":["nonprofits"],"summary":"Boating nonprofits / Give Back directory","operationId":"listNonprofits","description":"Public-research nonprofit directory for Give Back. demoData:false on list\n(curated orgs); individual orgs may set demoData. Not a donation processor.\n","parameters":[{"in":"query","name":"focus","schema":{"type":"string"}},{"in":"query","name":"geography","schema":{"type":"string"}},{"in":"query","name":"action","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"waterway","schema":{"type":"string"}},{"in":"query","name":"featured","schema":{"type":"string","enum":["1","true"]}},{"in":"query","name":"limit","schema":{"type":"integer","maximum":200,"default":100}}],"responses":{"200":{"description":"Orgs + taxonomy (demoData:false on pack)"}}}},"/nonprofits/{id}":{"get":{"tags":["nonprofits"],"summary":"Nonprofit detail + local graph edges","operationId":"getNonprofit","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Org + edges (demoData only if org.demoData)"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/nonprofits/graph":{"get":{"tags":["nonprofits"],"summary":"Nonprofits knowledge graph","operationId":"getNonprofitsGraph","responses":{"200":{"description":"Graph JSON (demoData:false)"}}}},"/give-back/intent":{"get":{"tags":["give-back","nonprofits"],"summary":"List demo Give Back intents","operationId":"listGiveBackIntents","description":"Demo intent log only — not a donation receipt. demoData:true.","responses":{"200":{"description":"Recent demo intents"}}},"post":{"tags":["give-back","nonprofits"],"summary":"Log a Give Back intent (demo; no payment)","operationId":"postGiveBackIntent","description":"Records intent to donate/volunteer. No payment processed — open official org URL.\ndemoData:true.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orgId":{"type":"string"},"focusArea":{"type":"string"},"kind":{"type":"string"},"label":{"type":"string"},"note":{"type":"string"}}}}}},"responses":{"200":{"description":"Intent logged (demo)"},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/datasets/software":{"get":{"tags":["datasets","software"],"summary":"Software dataset pack (products / graph / taxonomy / leaderboards)","operationId":"getDatasetsSoftware","description":"Raw content pack views. Always demoData:true (provenance boat-day-public-research-v1).\n","parameters":[{"in":"query","name":"view","schema":{"type":"string","enum":["products","graph","taxonomy","leaderboards"],"default":"products"}}],"responses":{"200":{"description":"Requested software dataset view (demoData:true)"},"500":{"description":"Dataset read failure"}}}},"/datasets/nonprofits":{"get":{"tags":["datasets","nonprofits"],"summary":"Nonprofits dataset pack (orgs / graph / taxonomy)","operationId":"getDatasetsNonprofits","description":"Raw content pack views. demoData:false (curated public-research orgs).\n","parameters":[{"in":"query","name":"view","schema":{"type":"string","enum":["orgs","graph","taxonomy"],"default":"orgs"}}],"responses":{"200":{"description":"Requested nonprofits dataset view"},"500":{"description":"Dataset read failure"}}}},"/datasets":{"get":{"tags":["datasets"],"summary":"GET /datasets","operationId":"get_datasets","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/brokerage":{"get":{"tags":["datasets"],"summary":"GET /datasets/brokerage","operationId":"get_datasets_brokerage","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/directory-playbooks":{"get":{"tags":["datasets"],"summary":"GET /datasets/directory-playbooks","operationId":"get_datasets_directory_playbooks","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/glossary-graph":{"get":{"tags":["datasets"],"summary":"GET /datasets/glossary-graph","operationId":"get_datasets_glossary_graph","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/hin-mic":{"get":{"tags":["datasets"],"summary":"GET /datasets/hin-mic","operationId":"get_datasets_hin_mic","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"decode","in":"query","required":false,"schema":{"type":"string"}},{"name":"hin","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/insurance":{"get":{"tags":["datasets"],"summary":"GET /datasets/insurance","operationId":"get_datasets_insurance","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/maintenance":{"get":{"tags":["datasets"],"summary":"GET /datasets/maintenance","operationId":"get_datasets_maintenance","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/model-issues":{"get":{"tags":["datasets"],"summary":"GET /datasets/model-issues","operationId":"get_datasets_model_issues","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/outcomes-priors":{"get":{"tags":["datasets"],"summary":"GET /datasets/outcomes-priors","operationId":"get_datasets_outcomes_priors","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"region","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/parts-systems":{"get":{"tags":["datasets"],"summary":"GET /datasets/parts-systems","operationId":"get_datasets_parts_systems","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"symptom","in":"query","required":false,"schema":{"type":"string"}},{"name":"system","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/qbd-benchmarks":{"get":{"tags":["datasets"],"summary":"GET /datasets/qbd-benchmarks","operationId":"get_datasets_qbd_benchmarks","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"boatType","in":"query","required":false,"schema":{"type":"string"}},{"name":"region","in":"query","required":false,"schema":{"type":"string"}},{"name":"storageMode","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/rentals":{"get":{"tags":["datasets"],"summary":"GET /datasets/rentals","operationId":"get_datasets_rentals","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"boatType","in":"query","required":false,"schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string"}},{"name":"suggest","in":"query","required":false,"schema":{"type":"string"}},{"name":"waterway","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/safety-matrix":{"get":{"tags":["datasets"],"summary":"GET /datasets/safety-matrix","operationId":"get_datasets_safety_matrix","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/states-matrix":{"get":{"tags":["datasets"],"summary":"GET /datasets/states-matrix","operationId":"get_datasets_states_matrix","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/survey-failures":{"get":{"tags":["datasets"],"summary":"GET /datasets/survey-failures","operationId":"get_datasets_survey_failures","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"view","in":"query","required":false,"schema":{"type":"string"}}]}},"/datasets/tco-regional":{"get":{"tags":["datasets"],"summary":"GET /datasets/tco-regional","operationId":"get_datasets_tco_regional","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/valuation":{"get":{"tags":["datasets"],"summary":"GET /datasets/valuation","operationId":"get_datasets_valuation","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/datasets/waterways-intel":{"get":{"tags":["datasets"],"summary":"GET /datasets/waterways-intel","operationId":"get_datasets_waterways_intel","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"part","in":"query","required":false,"schema":{"type":"string"}}]}},"/futures":{"get":{"tags":["futures"],"summary":"GET /futures","operationId":"get_futures","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/futures/graph":{"get":{"tags":["futures"],"summary":"GET /futures/graph","operationId":"get_futures_graph","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/history":{"get":{"tags":["history"],"summary":"GET /history","operationId":"get_history","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/history/graph":{"get":{"tags":["history"],"summary":"GET /history/graph","operationId":"get_history_graph","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/index.json":{"get":{"tags":["index"],"summary":"GET /index.json","operationId":"get_index_json","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/listings":{"get":{"tags":["listings"],"summary":"GET /listings","operationId":"get_listings","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"waterway","in":"query","required":false,"schema":{"type":"string"}}]}},"/meta/click":{"get":{"tags":["meta"],"summary":"GET /meta/click","operationId":"get_meta_click","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"post":{"tags":["meta"],"summary":"POST /meta/click","operationId":"post_meta_click","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/meta/redirect":{"get":{"tags":["meta"],"summary":"GET /meta/redirect","operationId":"get_meta_redirect","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"}},{"name":"prefer","in":"query","required":false,"schema":{"type":"string"}}]}},"/openapi.json":{"get":{"tags":["openapi"],"summary":"GET /openapi.json","operationId":"get_openapi_json","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/radar/query":{"get":{"tags":["radar"],"summary":"GET /radar/query","operationId":"get_radar_query","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}}]}},"/radar/updates":{"get":{"tags":["radar"],"summary":"GET /radar/updates","operationId":"get_radar_updates","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/radar/watchlist":{"get":{"tags":["radar"],"summary":"GET /radar/watchlist","operationId":"get_radar_watchlist","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/rent-waitlist":{"get":{"tags":["rent-waitlist"],"summary":"GET /rent-waitlist","operationId":"get_rent_waitlist","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"post":{"tags":["rent-waitlist"],"summary":"POST /rent-waitlist","operationId":"post_rent_waitlist","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/rentals":{"get":{"tags":["rentals"],"summary":"GET /rentals","operationId":"get_rentals","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"post":{"tags":["rentals"],"summary":"POST /rentals","operationId":"post_rentals","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/rentals/bookings":{"get":{"tags":["rentals"],"summary":"GET /rentals/bookings","operationId":"get_rentals_bookings","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"guestEmail","in":"query","required":false,"schema":{"type":"string"}},{"name":"hostUserId","in":"query","required":false,"schema":{"type":"string"}},{"name":"listingId","in":"query","required":false,"schema":{"type":"string"}},{"name":"role","in":"query","required":false,"schema":{"type":"string"}}]}},"/rentals/bookings/{id}/decision":{"post":{"tags":["rentals"],"summary":"POST /rentals/bookings/{id}/decision","operationId":"post_rentals_bookings_id_decision","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/rentals/{id}":{"get":{"tags":["rentals"],"summary":"GET /rentals/{id}","operationId":"get_rentals_id","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"tags":["rentals"],"summary":"PATCH /rentals/{id}","operationId":"patch_rentals_id","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/rentals/{id}/bookings":{"post":{"tags":["rentals"],"summary":"POST /rentals/{id}/bookings","operationId":"post_rentals_id_bookings","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/safety/matrices":{"get":{"tags":["safety"],"summary":"GET /safety/matrices","operationId":"get_safety_matrices","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/changelog":{"get":{"tags":["changelog"],"summary":"GET /changelog","operationId":"get_changelog","responses":{"200":{"description":"OK (JSON with data + provenance)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"4XX":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}},"components":{"parameters":{"stageId":{"name":"stageId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/StageId"}},"limit":{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},"cursor":{"name":"cursor","in":"query","schema":{"type":"string"}}},"responses":{"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"StageId":{"type":"string","enum":["research","buy","finance","insure","register","commission","own","upgrade","sell"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true}}}}},"BoatFinderAnswers":{"type":"object","properties":{"intents":{"type":"array","items":{"type":"string","enum":["fishing","watersports","cruising","sailing","entertaining","exploring","family","not-sure"]}},"waterwayType":{"type":"string","enum":["ocean-coastal","big-lake","small-lake-river","skinny-water-bay"]},"focusWaterway":{"type":"string"},"crew":{"type":"string","enum":["solo-couple","family-kids","friends-party"]},"skill":{"type":"string","enum":["new","some","experienced"]},"storage":{"type":"string","enum":["trailer","wet-slip","dry-stack","undecided"]},"budget":{"type":"string","enum":["under-25k","25-50k","50-100k","100-250k","250k-plus"]},"mustHaves":{"type":"array","items":{"type":"string"}},"dealbreakers":{"type":"array","items":{"type":"string"}},"newUsed":{"type":"string","enum":["new","used","either"]},"limit":{"type":"integer","minimum":1,"maximum":10}}},"BoatFinderResult":{"type":"object","properties":{"ranked":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"brand":{"type":"string"},"model":{"type":"string"},"score":{"type":"number"},"scorePct":{"type":"number"},"reasons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"text":{"type":"string"}}}},"href":{"type":"string"}}}},"disclaimer":{"type":"string"},"algorithmVersion":{"type":"string"},"nextSteps":{"type":"array","items":{"type":"object"}},"answers":{"$ref":"#/components/schemas/BoatFinderAnswers"}}},"SiteIndex":{"type":"object","required":["name","stages","guides","checklists","vendorCategories","endpoints"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"stages":{"type":"array","items":{"$ref":"#/components/schemas/StageSummary"}},"guides":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"}}}},"checklists":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"}}}},"vendorCategories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}}}},"endpoints":{"type":"object","additionalProperties":{"type":"string"}},"llmsTxt":{"type":"string"},"openApi":{"type":"string"}}},"StageSummary":{"type":"object","required":["id","order","title","summary"],"properties":{"id":{"$ref":"#/components/schemas/StageId"},"order":{"type":"integer"},"title":{"type":"string"},"summary":{"type":"string"},"url":{"type":"string"}}},"StageDetail":{"allOf":[{"$ref":"#/components/schemas/StageSummary"},{"type":"object","properties":{"decisions":{"type":"array","items":{"type":"string"}},"tasks":{"type":"array","items":{"type":"string"}},"supplierCategories":{"type":"array","items":{"type":"string"}},"kpis":{"type":"array","items":{"type":"string"}},"relatedGuides":{"type":"array","items":{"type":"string"}},"relatedChecklists":{"type":"array","items":{"type":"string"}},"bodyMarkdown":{"type":"string"}}}]},"GuideList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GuideSummary"}},"nextCursor":{"type":"string","nullable":true}}},"GuideSummary":{"type":"object","required":["slug","title","summary","stages"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"stages":{"type":"array","items":{"$ref":"#/components/schemas/StageId"}},"categories":{"type":"array","items":{"type":"string"}},"url":{"type":"string"},"updated":{"type":"string","format":"date"}}},"GuideDetail":{"allOf":[{"$ref":"#/components/schemas/GuideSummary"},{"type":"object","properties":{"bodyMarkdown":{"type":"string"},"faqs":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string"},"answer":{"type":"string"}}}}}}]},"ChecklistSummary":{"type":"object","required":["slug","title","summary","stages"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"stages":{"type":"array","items":{"$ref":"#/components/schemas/StageId"}},"url":{"type":"string"}}},"ChecklistDetail":{"allOf":[{"$ref":"#/components/schemas/ChecklistSummary"},{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","required":["text"],"properties":{"group":{"type":"string"},"text":{"type":"string"},"critical":{"type":"boolean"}}}}}}]},"Vendor":{"type":"object","required":["id","name","categories","regions","stages","services","description","demo"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"categories":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"type":"string"}},"stages":{"type":"array","items":{"$ref":"#/components/schemas/StageId"}},"services":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"demo":{"type":"boolean"},"status":{"type":"string","enum":["active","pending","demo","suspended","verified"]},"responseSlaHours":{"type":"number"},"credentials":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean"},"waterways":{"type":"array","items":{"type":"string"}},"scores":{"type":"object","properties":{"closeRate":{"type":"number"},"avgResponseHours":{"type":"number"},"jobCompletion":{"type":"number"},"leadQuality":{"type":"number"}}},"url":{"type":"string"}}},"VendorList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Vendor"}},"nextCursor":{"type":"string","nullable":true}}},"Utm":{"type":"object","properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"content":{"type":"string"},"term":{"type":"string"}}},"LeadCreate":{"type":"object","required":["stageId","categoryId","contact","consent"],"properties":{"stageId":{"$ref":"#/components/schemas/StageId"},"categoryId":{"type":"string","description":"Vendor category id from vendor-categories.json"},"vendorId":{"type":"string","nullable":true,"description":"Optional specific vendor target"},"contact":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"state":{"type":"string","description":"US state code"},"zip":{"type":"string"}}},"message":{"type":"string","maxLength":2000},"boatContext":{"type":"object","properties":{"hin":{"type":"string"},"year":{"type":"integer"},"make":{"type":"string"},"model":{"type":"string"},"loaFt":{"type":"number"}}},"utm":{"$ref":"#/components/schemas/Utm"},"consent":{"type":"object","required":["accepted","policyVersion"],"properties":{"accepted":{"type":"boolean"},"policyVersion":{"type":"string"},"tcpA":{"type":"boolean"}}},"pageUrl":{"type":"string","format":"uri"},"attribution":{"type":"object","properties":{"guideSlug":{"type":"string"},"checklistSlug":{"type":"string"},"referrer":{"type":"string"}}}}},"LeadCreated":{"type":"object","required":["id","status","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["accepted","queued","delivered"]},"createdAt":{"type":"string","format":"date-time"}}},"GlossaryTerm":{"type":"object","required":["term","slug","definition"],"properties":{"term":{"type":"string"},"slug":{"type":"string"},"definition":{"type":"string"},"related":{"type":"array","items":{"type":"string"}},"stages":{"type":"array","items":{"$ref":"#/components/schemas/StageId"}}}},"GlossaryList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GlossaryTerm"}},"nextCursor":{"type":"string","nullable":true}}},"PassportCreate":{"type":"object","required":["hin"],"properties":{"hin":{"type":"string"},"name":{"type":"string"},"year":{"type":"integer"},"make":{"type":"string"},"model":{"type":"string"},"loaFt":{"type":"number"},"ownerLabel":{"type":"string"},"homePort":{"type":"string"},"state":{"type":"string"}}},"PassportEventCreate":{"type":"object","required":["type","date","title"],"properties":{"type":{"type":"string","enum":["purchase","survey","registration","insurance_bind","service","winterize","upgrade","sale"]},"date":{"type":"string"},"title":{"type":"string"},"notes":{"type":"string"}}},"LeadOutcomePatch":{"type":"object","properties":{"outcomeStatus":{"type":"string","enum":["new","contacted","quoted","won","lost","spam"]},"responseHours":{"type":"number"},"notes":{"type":"string"},"status":{"type":"string","enum":["accepted","queued","delivered"]}}},"VendorApplicationCreate":{"type":"object","required":["businessName","categories","regions","stages","phone","email","responseSlaHours"],"properties":{"businessName":{"type":"string"},"categories":{"type":"array","items":{"type":"string"}},"regions":{"type":"array","items":{"type":"string"}},"stages":{"type":"array","items":{"$ref":"#/components/schemas/StageId"}},"services":{"type":"array","items":{"type":"string"}},"credentials":{"type":"array","items":{"type":"string"}},"responseSlaHours":{"type":"number"},"website":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string","format":"email"},"description":{"type":"string"}}},"VendorFeedbackCreate":{"type":"object","required":["rating","completed"],"properties":{"leadId":{"type":"string"},"rating":{"type":"number","minimum":1,"maximum":5},"completed":{"type":"boolean"},"comment":{"type":"string"}}},"Provenance":{"type":"object","properties":{"source":{"type":"string"},"api_version":{"type":"string"},"as_of":{"type":"string"},"method":{"type":"string"},"confidence":{"type":"string"},"honesty":{"type":"string"},"cite_as":{"type":"string"},"terms":{"type":"string"},"docs":{"type":"string"}}},"Envelope":{"type":"object","properties":{"data":{},"provenance":{"$ref":"#/components/schemas/Provenance"}},"additionalProperties":true},"ErrorEnvelope":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"},"details":{"type":"object"},"docs":{"type":"string"}},"required":["code","message"]}}}},"/api/v1/rentals":{"get":{"summary":"Search Boat Day rental listings","tags":["Rentals"],"parameters":[{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"waterway","schema":{"type":"string"}},{"in":"query","name":"startDate","schema":{"type":"string","format":"date"}},{"in":"query","name":"endDate","schema":{"type":"string","format":"date"}},{"in":"query","name":"guests","schema":{"type":"integer"}},{"in":"query","name":"mode","schema":{"type":"string","enum":["captained","bareboat","both"]}},{"in":"query","name":"boatType","schema":{"type":"string"}},{"in":"query","name":"minPrice","schema":{"type":"number"}},{"in":"query","name":"maxPrice","schema":{"type":"number"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["price","price_desc","rating","response","newest"]}}],"responses":{"200":{"description":"Filtered rental listings (demo). Pricing is per boat day."}}},"post":{"summary":"Create rental listing (demo)","tags":["Rentals"],"responses":{"201":{"description":"Listing created"}}}},"/api/v1/rentals/{id}":{"get":{"summary":"Get rental listing + reviews","tags":["Rentals"],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing detail with safety links"}}},"patch":{"summary":"Update rental listing (demo)","tags":["Rentals"],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated listing"}}}},"/api/v1/rentals/{id}/bookings":{"post":{"summary":"Request or instant-book a boat day","tags":["Rentals"],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Booking created (pending or accepted). No real payment."}}}},"/api/v1/rentals/bookings":{"get":{"summary":"List bookings by role","tags":["Rentals"],"parameters":[{"in":"query","name":"role","schema":{"type":"string","enum":["host","guest"]}},{"in":"query","name":"hostUserId","schema":{"type":"string"}},{"in":"query","name":"guestEmail","schema":{"type":"string"}}],"responses":{"200":{"description":"Booking list"}}}},"/api/v1/rentals/bookings/{id}/decision":{"post":{"summary":"Accept, decline, cancel, pay_demo, or complete a booking","tags":["Rentals"],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["decision"],"properties":{"decision":{"type":"string","enum":["accept","decline","cancel","pay_demo","complete"]}}}}}},"responses":{"200":{"description":"Updated booking; pay_demo marks paid without real charges"}}}},"/api/v1/history":{"get":{"summary":"History of boating chapters + timeline","tags":["Temporal intelligence"],"responses":{"200":{"description":"Timeline and chapter metadata keyed to Quality Boat Days"}}}},"/api/v1/history/graph":{"get":{"summary":"History knowledge graph","tags":["Temporal intelligence"],"responses":{"200":{"description":"Eras, events (boatDaysLegacy), entities, influences"}}}},"/api/v1/futures":{"get":{"summary":"Futures branches index","tags":["Temporal intelligence"],"responses":{"200":{"description":"Branch theses, pace, tags, related IDs"}}}},"/api/v1/futures/graph":{"get":{"summary":"Futures knowledge graph","tags":["Temporal intelligence"],"responses":{"200":{"description":"Branches, signposts (boatDaysImpact -2..2), scenarioNodes, dependencies"}}}},"/api/v1/radar/watchlist":{"get":{"summary":"Futures watchlist","tags":["Temporal intelligence"],"responses":{"200":{"description":"Watch items with leadingSignals, boatDaysMechanism, agentQueryHints"}}}},"/api/v1/radar/updates":{"get":{"summary":"Radar advance briefs","tags":["Temporal intelligence"],"responses":{"200":{"description":"Analytical updates with implication and action"}}}},"/api/v1/radar/query":{"get":{"summary":"Keyword search over radar structured fields","tags":["Temporal intelligence"],"parameters":[{"in":"query","name":"q","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Matched watchlist, updates, signposts, branches"}}}},"/datasets/rentals":{"get":{"tags":["datasets","rentals"],"summary":"Rentals benchmarks pack (ADR, occupancy, fees, regulatory, guest requirements)","operationId":"getDatasetsRentals","description":"Educational demoData (provenance boat-day-rentals-*). Optional query params\nwaterway, boatType, mode, suggest=1 return host pricing suggestion.\n","parameters":[{"in":"query","name":"waterway","schema":{"type":"string"}},{"in":"query","name":"boatType","schema":{"type":"string"}},{"in":"query","name":"mode","schema":{"type":"string","enum":["captained","bareboat"]}},{"in":"query","name":"suggest","schema":{"type":"string","enum":["1"]}}],"responses":{"200":{"description":"Rentals datasets pack + optional suggestion"}}}},"/datasets/safety-matrix":{"get":{"tags":["datasets","safety"],"summary":"Safety-by-type product matrices","operationId":"getDatasetsSafetyMatrix","responses":{"200":{"description":"Gear, PFD/capacity, weather priors, briefings, rental handover"}}}},"/datasets/directory-playbooks":{"get":{"tags":["datasets","directory"],"summary":"Directory category playbooks + supplier benchmark overlays","operationId":"getDatasetsDirectoryPlaybooks","parameters":[{"in":"query","name":"category","schema":{"type":"string"},"description":"Taxonomy category id or slug for a single playbook"}],"responses":{"200":{"description":"Playbooks index/summaries or single playbook"}}}},"/datasets/insurance":{"get":{"tags":["datasets","insurance"],"summary":"Insurance endorsement and premium-driver priors (educational)","operationId":"getDatasetsInsurance","responses":{"200":{"description":"Endorsements + premium drivers (not advice)"}}}},"/safety/matrices":{"get":{"tags":["safety"],"summary":"Safety matrices subroute (same payload as datasets/safety-matrix compact)","operationId":"getSafetyMatrices","responses":{"200":{"description":"Product safety matrices"}}}}},"x-mcp":{"url":"https://bestboatday.com/api/mcp","transport":"streamable-http","readOnly":true},"x-llms-txt":"https://bestboatday.com/llms.txt"}