{"openapi":"3.1.0","info":{"title":"Harbor Insurance Account API","version":"1.0.0","description":"Demo insurance API for a customer-facing AI agent: shop catalog, policies, coverages, ID cards, claims (FNOL), coverage Q&A, riders, payments, and quotes. The catalog (products/riders) is public; everything else needs a customer bearer token."},"servers":[{"url":"https://insurance.cvlsoft.net"}],"components":{"securitySchemes":{"customerToken":{"type":"http","scheme":"bearer","description":"Per-customer token. Demo: hb_tok_ava, hb_tok_marcus, hb_tok_priya."}}},"security":[{"customerToken":[]}],"paths":{"/api/me":{"get":{"summary":"Account overview: policies, premium, amount due, open claims"}},"/api/products":{"get":{"summary":"Browse the coverage catalog with tiers (auto, home, renters, life, pet, umbrella)","security":[]}},"/api/products/{slug}":{"get":{"summary":"Get one coverage product with its tiers","security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/riders":{"get":{"summary":"Browse the add-on / rider catalog (roadside, water backup, jewelry…)","security":[]}},"/api/policies":{"get":{"summary":"List policies with coverages"}},"/api/policies/{id}":{"get":{"summary":"Get a policy (UUID or policy number) with coverages","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/policies/{id}/idcard":{"get":{"summary":"Auto insurance ID card","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/policies/{id}/pay":{"post":{"summary":"Pay the premium due (demo: marks paid)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/policies/{id}/riders":{"get":{"summary":"List riders on a policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]},"post":{"summary":"Add a rider to a policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["riderId"],"properties":{"riderId":{"type":"string","description":"Rider slug, e.g. 'roadside'"}}}}}}}},"/api/policies/{id}/riders/{riderSlug}":{"delete":{"summary":"Remove a rider from a policy","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"riderSlug","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/claims":{"get":{"summary":"List claims"},"post":{"summary":"File a claim (first notice of loss)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["policyId","type","dateOfLoss","description"],"properties":{"policyId":{"type":"string","description":"Policy UUID or number"},"type":{"type":"string","enum":["collision","theft","glass","water","fire","liability","weather","other"]},"dateOfLoss":{"type":"string","description":"ISO date"},"description":{"type":"string"},"photos":{"type":"array","items":{"type":"string","format":"uri"}}}}}}}}},"/api/claims/{id}":{"get":{"summary":"Get a claim (UUID or claim number)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/coverage/check":{"post":{"summary":"Is this covered? — reasons over the policy's coverages","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["policyId","scenario"],"properties":{"policyId":{"type":"string"},"scenario":{"type":"string","description":"Plain-English description of what happened"}}}}}}}},"/api/quotes":{"get":{"summary":"List saved quotes"},"post":{"summary":"Generate a quote","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["auto","home","renters","life","pet","umbrella"]},"coverageLevel":{"type":"string","enum":["basic","standard","premium"]},"details":{"type":"object"}}}}}}}}}}