{"openapi": "3.1.0", "info": {"title": "The Zebra MCP", "version": "0.2.1", "description": "Let your AI agent get car insurance rates from The Zebra, and send the user to The Zebra to buy, over the Model Context Protocol (MCP).\n\n## Endpoint\n\n```\nhttps://api.thezebra.com/mcp\n```\n\nThe server uses MCP's Streamable HTTP transport. It's stateless, so clients on protocol version 2026-07-28 and earlier versions both work.\n\n## Setup\n\n### Claude Code\n\n```\nclaude mcp add --transport http the-zebra https://api.thezebra.com/mcp\n```\n\n### Claude\n\nIn Claude, open **Settings \u2192 Connectors**, choose **Add custom connector**, and enter `https://api.thezebra.com/mcp`.\n\n### Codex\n\n```\ncodex mcp add the-zebra --url https://api.thezebra.com/mcp\n```\n\n### Cursor\n\nAdd this to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"the-zebra\": {\n      \"url\": \"https://api.thezebra.com/mcp\"\n    }\n  }\n}\n```\n\n### VS Code\n\nAdd this to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"the-zebra\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.thezebra.com/mcp\"\n    }\n  }\n}\n```\n\n### Other clients\n\nAny MCP client that supports Streamable HTTP works. Use `https://api.thezebra.com/mcp` as the server URL.\n\n## Authentication\n\nNone. The tools don't sign in to or act on anyone's existing account: each quote starts a new, anonymous session, and buying happens on The Zebra, where the user finishes on their own. Questions about access go to [partnerships@thezebra.com](mailto:partnerships@thezebra.com).\n\n## Privacy\n\nThe details your agent sends, such as the user's date of birth, address and vehicles, are used to get them quotes and are handled under The Zebra's [Privacy Policy](https://www.thezebra.com/about/help/privacy/).\n\n## How a quote works\n\n1. Your agent calls `zebra_start_session` with its own `agent_identifier`, such as `muse`, and gets back a `quote_handle`.\n2. It calls `zebra_get_rc1_rates` with the `quote_handle` and the user's details to get quotes from carriers. Each quote has a `quote_id`. Quotes take around 30 seconds.\n3. When the user picks a quote, it calls `zebra_get_rate_action` with the `quote_handle` and that `quote_id`, and gives the user the returned link to finish buying on The Zebra.\n\nA `quote_handle` lasts 24 hours. If it expires, start a new session.\n\n## Tools\n\n| Tool | Description |\n| --- | --- |\n| `zebra_start_session` | Start a new car insurance quote. |\n| `zebra_get_rc1_rates` | Get estimated auto insurance rates (RC1 quotes) for the user, from the carriers they can buy from online on The Zebra. |\n| `zebra_get_rate_action` | Get the next step for the quote the user chose. |\n\n### Start session\n\n`zebra_start_session`\n\nStart a new car insurance quote. Call this once, before any other quote tool, and pass the returned\nquote_handle to every later tool call for this quote.\n\n| Argument | Type | Required | Description |\n| --- | --- | --- | --- |\n| `agent_identifier` | string | Yes | Identifier for the product agent hosting this MCP session (for example muse, grokbot, dots). The calling agent or model must set this from its own runtime identity\u2014do not ask the end user and do not pass through free-text the user typed. |\n\nReturns:\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `quote_handle` | string | Yes | Pass this unchanged to every later tool call for this quote. |\n\n### Get RC1 rates\n\n`zebra_get_rc1_rates`\n\nGet estimated auto insurance rates (RC1 quotes) for the user, from the carriers they can buy from online on\nThe Zebra.\n\nCall zebra_start_session first and pass its quote_handle. Usually takes about 30 seconds: wait for the result\nrather than calling again or starting a new session. On UPSTREAM_UNAVAILABLE, retry once with the same quote_handle.\n\nA carrier may quote higher or lower coverage than requested; each quote's coverage_differences lists what differs.\nWhen you show a quote with differences, tell the user what they are: the price is for the quoted coverage, not the\nrequested one.\n\nPass the quote_id of the quote the user picks to zebra_get_rate_action to learn how to continue. Calling this again\nfor the same session re-rates the quote with the new details and replaces the earlier quotes, so their quote_ids\nstop working. Nothing is bought and no policy changes: to compare against the earlier details, call again with\nthem. Quotes are live, so prices may differ from before; don't tell the user the earlier prices still hold.\nFailures return a JSON error with a code, whether retrying may help, and any problems with specific user_responses\nfields.\n\n| Argument | Type | Required | Description |\n| --- | --- | --- | --- |\n| `quote_handle` | string | Yes | The quote_handle that zebra_start_session returned. It expires 24 hours after zebra_start_session; if a tool reports it unknown or expired, start a new session. |\n| `user_responses` | [RateableUserResponses](#models/RateableUserResponses) | Yes | The full set of the user's driver, vehicle and insurance answers RC1 needs. |\n| `coverage_package` | any or null | No | The coverages to price the quotes at. Send it only when the user wants specific coverage or wants to match their current policy; otherwise leave it out, and quotes use The Zebra's recommended coverage for the user. Don't ask about coverage just to fill this in. Amounts are in dollars, sent as plain numbers (100000, not $100,000). Users give liability as three numbers in thousands: 100/300/100 means bodily_injury_per_person 100000, bodily_injury_per_accident 300000 and property_damage 100000. 'Full coverage' or a deductible means comprehensive and collision on that vehicle; a deductible like $1,000 sets both unless the user gives them separately. When the user brings up coverage, confirm what they left out before calling: which vehicles get comprehensive and collision, and whether uninsured motorist coverage should match their bodily injury limits. If the call fails with INVALID_ARGUMENTS, each detail names a missing or conflicting coverage and the values the state offers; ask the user to choose rather than picking for them. |\n\nReturns:\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `quotes` | array of [RC1Quote](#models/RC1Quote) | Yes | Every quote the user can buy online on The Zebra. Carriers that can't be bought online here are left out. |\n| `vehicles` | array of [RC1CatalogVehicle](#models/RC1CatalogVehicle) | No | The catalog vehicle each of the user's vehicles was matched to, in request order. |\n\n### Get rate action\n\n`zebra_get_rate_action`\n\nGet the next step for the quote the user chose. Pass the quote_handle from zebra_start_session and the chosen\nquote's quote_id from zebra_get_rc1_rates.\n\nGive the user the returned url to continue buying the policy on The Zebra.\n\n| Argument | Type | Required | Description |\n| --- | --- | --- | --- |\n| `quote_handle` | string | Yes | The quote_handle that zebra_start_session returned. It expires 24 hours after zebra_start_session; if a tool reports it unknown or expired, start a new session. |\n| `quote_id` | string | Yes | The quote_id of the quote the user picked, from zebra_get_rc1_rates. |\n\nReturns:\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `url` | string | Yes | Where the user continues buying the policy on The Zebra. |\n\n## Example prompts\n\nWhat a user might say at each point in a quote, and what your agent does with it.\n\n### Shopping for car insurance\n\nThe user wants to know what a policy would cost. Your agent calls `zebra_start_session`, then asks for what it doesn't know yet, such as date of birth, address and the car's details.\n\n- \"What would car insurance cost me? I live in Austin, TX and drive a 2020 Toyota Camry.\"\n- \"I'm buying my first car. How much should I budget for insurance?\"\n- \"Is my $180 a month for car insurance a good deal?\"\n\n### Getting quotes\n\nOnce it has the details, your agent calls `zebra_get_rc1_rates`. Quotes take around 30 seconds, so tell the user you're checking.\n\n- \"Here are my details. Can you get me some quotes?\"\n- \"Compare rates for me and my partner, with two cars, in zip code 30301.\"\n\n### Changing the details\n\nThe user changes something and wants to see the difference. Your agent calls `zebra_get_rc1_rates` again with the same `quote_handle`. The new quotes replace the old ones, and the old `quote_id`s stop working. Nothing is bought and no policy changes, so this isn't destructive: to compare against the earlier details, call again with them. Quotes are live, so prices may differ from the earlier quotes.\n\n- \"What if I add my 17-year-old as a driver?\"\n- \"What would it cost if I moved to Dallas?\"\n\n### Choosing a quote\n\nThe user picks one. Your agent calls `zebra_get_rate_action` with that quote's `quote_id` and gives the user the link to finish on The Zebra.\n\n- \"I'll take the cheapest one. How do I buy it?\"\n- \"Let's go with Mercury.\"\n\n### Not for these tools\n\nQuestions about an existing policy, such as claims, billing or renewals, aren't covered. Point the user to their insurer.\n\n## Errors\n\nA failed tool call returns a result with `isError` set and a JSON body:\n\n```json\n{\n  \"code\": \"SESSION_NOT_FOUND\",\n  \"message\": \"Unknown or expired quote_handle. Call zebra_start_session to start a new quote.\",\n  \"retryable\": false,\n  \"details\": []\n}\n```\n\nBranch on `code`. `retryable` says whether calling again with the same arguments may succeed, and `details` lists each problem with a specific field. Arguments that don't match a tool's input schema come back as `INVALID_ARGUMENTS`, with a detail for each field.\n\n| Code | Retryable | Message |\n| --- | --- | --- |\n| `UNKNOWN_QUOTE_ID` | No | Unknown quote_id for this quote_handle. |\n| `INVALID_ARGUMENTS` | No | Some arguments are missing or have invalid values. Fix each field in details and call again. |\n| `SESSION_NOT_FOUND` | No | Unknown or expired quote_handle. Call zebra_start_session to start a new quote. |\n| `SESSION_STORE_UNAVAILABLE` | Yes | The session could not be read or saved. |\n| `URM_UPDATE_FAILED` | Yes | The user responses could not be saved to the session. |\n| `URM_UPDATE_FAILED` | No | The session can no longer save user responses. Call zebra_start_session to start a new quote. |\n| `UPSTREAM_UNAVAILABLE` | Yes | The rating service could not be reached. |\n| `UPSTREAM_ERROR` | No | The rating service could not process these responses. |\n| `NO_COVERAGE_PACKAGE` | No | No coverage package is available for these vehicles. |\n| `QUOTE_TIMEOUT` | Yes | Quotes were not ready in time. |\n| `NO_QUOTES` | No | No carrier returned a quote the user can buy online on The Zebra for these responses. |\n| `NO_PRICED_QUOTES` | Yes | Carriers responded, but none returned a price yet. |\n| `UNKNOWN_VEHICLE` | No | Some vehicles aren't in The Zebra's vehicle catalog. Each detail lists the values the catalog has; confirm the right one with the user and call again. |\n| `RC2_QUESTIONS_REQUIRED` | No | No questions were loaded for this quote_id. Call zebra_get_rc2_questions first and present the questions to the user. |\n| `UNDERWRITING_UPDATE_FAILED` | No | The answers could not be saved for the carrier. |\n| `UNDERWRITING_UPDATE_FAILED` | Yes | The answers could not be saved for the carrier. |\n| `UNDERWRITING_UPDATE_FAILED` | No | The answers can't be matched to the quoted drivers and vehicles. Call zebra_get_rc1_rates again. |\n| `UPSTREAM_ERROR` | No | The RC2 service could not accept these answers. Call zebra_get_rate_action to continue buying this quote on The Zebra. |\n| `RC1_RATES_REQUIRED` | No | This QuoteSession has no user responses saved yet. Call zebra_get_rc1_rates again, then pick a quote from its results. |\n| `UPSTREAM_ERROR` | No | This quote can't continue in chat. Call zebra_get_rate_action to continue buying it on The Zebra. |\n| `UPSTREAM_UNAVAILABLE` | Yes | The RC2 service could not be reached. |\n| `UPSTREAM_ERROR` | No | The RC2 service could not load questions for this quote. |\n| `UPSTREAM_UNAVAILABLE` | Yes | Could not start a quote right now. Try again shortly. |\n"}, "paths": {}, "components": {"schemas": {"ADDCoverageOption": {"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "type": "integer"}, "CurrentPolicy": {"properties": {"total_premium": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": null, "description": "Total policy cost for the term", "examples": [583.45]}, "monthly_payment": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": null, "description": "Monthly payment for user, inclusive of potential fees", "examples": [101.5]}, "period": {"anyOf": [{"$ref": "#/components/schemas/PolicyPeriod"}, {"type": "null"}], "default": null}, "start_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "default": null, "description": "Start date of the current policy, as YYYY-MM-DD.", "examples": ["2026-04-18"]}, "end_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "default": null, "description": "End date of the current policy, as YYYY-MM-DD.", "examples": ["2026-10-18"]}}, "type": "object"}, "Discount": {"properties": {"active_military": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "auto_pay": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "currently_employed": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "id": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "paperless": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "pay_up_front": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "telematics": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "college_degree": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "condo_owner": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "consecutive_insurance": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "currently_insured": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "high_school_diploma": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "good_credit": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "good_student": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "home_owner": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "low_mileage": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "multi_vehicle": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "new_car_discount": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}, "no_violations": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null}}, "type": "object"}, "DriverLicense": {"properties": {"number": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "License number."}, "state": {"anyOf": [{"description": "Two-letter abbreviation of the US state, Canadian province or country that issued a driver's license.", "enum": ["ZZ", "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA", "WA", "WV", "WI", "WY", "AB", "BC", "MB", "NB", "NF", "NT", "NS", "ON", "PE", "PQ", "SK", "YT", "IT", "MX"], "type": "string", "x-enum-varnames": ["TEST", "ALABAMA", "ALASKA", "ARIZONA", "ARKANSAS", "CALIFORNIA", "COLORADO", "CONNECTICUT", "DELAWARE", "DISTRICT_OF_COLUMBIA", "FLORIDA", "GEORGIA", "GUAM", "HAWAII", "IDAHO", "ILLINOIS", "INDIANA", "IOWA", "KANSAS", "KENTUCKY", "LOUISIANA", "MAINE", "MARYLAND", "MASSACHUSETTS", "MICHIGAN", "MINNESOTA", "MISSISSIPPI", "MISSOURI", "MONTANA", "NEBRASKA", "NEVADA", "NEW_HAMPSHIRE", "NEW_JERSEY", "NEW_MEXICO", "NEW_YORK", "NORTH_CAROLINA", "NORTH_DAKOTA", "OHIO", "OKLAHOMA", "OREGON", "PENNSYLVANIA", "PUERTO_RICO", "RHODE_ISLAND", "SOUTH_CAROLINA", "SOUTH_DAKOTA", "TENNESSEE", "TEXAS", "UTAH", "VERMONT", "VIRGIN_ISLANDS", "VIRGINIA", "WASHINGTON", "WEST_VIRGINIA", "WISCONSIN", "WYOMING", "CANADA_ALBERTA", "CANADA_BRITISH_COLUMBIA", "CANADA_MANITOBA", "CANADA_NEW_BRUNSWICK", "CANADA_NEWFOUNDLAND", "CANADA_NORTHWEST_TERRITORIES", "CANADA_NOVA_SCOTIA", "CANADA_ONTARIO", "CANADA_PRINCE_EDWARD_ISLAND", "CANADA_ISLAND_QUEBEC", "CANADA_SASKATCHEWAN", "CANADA_YUKON", "INTERNATIONAL", "MEXICO"]}, {"type": "null"}], "default": null, "description": "Two-letter abbreviation of where the license was issued.", "examples": ["TX"]}, "status": {"anyOf": [{"enum": ["VALID", "PERMIT", "SUSPENDED", "EXPIRED", "REVOKED", "UNLICENSED", "FOREIGN"], "type": "string"}, {"type": "null"}], "default": null, "description": "Status of the license."}}, "type": "object"}, "HadActiveInsuranceInLastThirtyOneDays": {"enum": ["YES", "NO", "NO_DID_NOT_NEED_INSURANCE"], "type": "string"}, "Incident": {"properties": {"date": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Date of the incident, as MM/DD/YYYY (month first).", "examples": ["01/01/2018"]}, "incidentId": {"anyOf": [{"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "type": "integer", "x-enum-varnames": ["AUTO_ACCIDENT_AT_FAULT", "SPEEDING_VIOLATION", "MOVING_VIOLATION", "DUI_OR_DWI", "LICENSE_SUSPENSION", "NEEDS_SR_22", "OTHER", "LICENSE_EXPIRED", "AUTO_ACCIDENT_NOT_AT_FAULT", "COMP_CLAIM"]}, {"type": "null"}], "default": null, "description": "Category of the incident."}, "incidentTypeId": {"anyOf": [{"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], "type": "integer", "x-enum-varnames": ["AT_FAULT_ACCIDENT_WITH_BODILY_INJURY", "AT_FAULT_ACCIDENT_WITH_PROPERTY_DAMAGE", "AT_FAULT_ACCIDENT_WITH_BODILY_INJURY_AND_PROPERTY_DAMAGE", "AT_FAULT_ACCIDENT_MINOR", "SPEEDING_UNDER_5", "SPEEDING_5_TO_24", "SPEEDING_25_TO_39", "SPEEDING_40_PLUS", "LICENSE_CURRENTLY_SUSPENDED", "PREVIOUSLY_DRIVING_WHILE_LICENSE_SUSPENDED", "DRIVING_WHILE_LICENSE_SUSPENDED", "NEEDS_SR22", "DRIVING_UNDER_INFLUENCE", "OTHER_VIOLATION", "IMPROPER_PASSING", "FAILURE_TO_USE_LIGHTS", "FAILURE_TO_SIGNAL", "FAILURE_TO_OBEY_TRAFFIC_SIGNAL", "WRONG_WAY_ON_ONE_WAY", "RECKLESS_DRIVING", "OTHER_MOVING_VIOLATION", "DRIVING_WHILE_LICENSE_EXPIRED", "NOT_AT_FAULT_ACCIDENT", "COMPREHENSIVE_CLAIM", "CARELESS_DRIVING", "IMPROPER_CELL_PHONE_USE", "LANE_DEVIATION", "DRIVING_TOO_SLOWLY", "ELUDING_POLICE", "FAILURE_TO_OBEY_OFFICER", "LEAVING_SCENE_OF_ACCIDENT", "FAILURE_TO_STOP_FOR_SCHOOL_BUS", "FAILURE_TO_YIELD", "FAILURE_TO_YIELD_TO_EMERGENCY_VEHICLE", "FOLLOWING_TOO_CLOSELY", "HIT_AND_RUN", "IMPROPER_RESTRICTED_LANE_USE", "IMPROPER_BACKING", "IMPROPER_TURN", "DRIVING_WITHOUT_INSURANCE", "IMPEDING_TRAFFIC", "OPEN_CONTAINER", "REFUSAL_OF_BREATH_TEST", "NO_SEATBELT", "UNLICENSED_DRIVER"]}, {"type": "null"}], "default": null, "description": "Specific type of the incident."}, "period": {"anyOf": [{"$ref": "#/components/schemas/IncidentPeriodAsString"}, {"type": "null"}], "default": null, "description": "How long ago the incident happened."}}, "type": "object"}, "IncidentPeriodAsString": {"enum": ["less_than_3_years", "from_3_to_5_years"], "type": "string"}, "MexicoLimitedCoverageOption": {"enum": [1, 2, 3], "type": "integer"}, "MileagePeriodAsString": {"enum": ["year", "month", "week", "day"], "type": "string"}, "NoFaultCoverageOption": {"enum": [1, 2, 3], "type": "integer"}, "Occupation": {"description": "The driver's occupation.", "enum": ["DECLINE_TO_ANSWER", "ACCOUNT_EXECUTIVE", "ACCOUNTANT_AUDITOR", "ACTIVITY_RECREATIONAL_ASSISTANT", "ACTOR", "ACTUARIAL_CLERK", "ACTUARY", "ADMINISTRATIVE_ASSISTANT", "AGENT", "AGENT_BROKER", "AGRICULTURE_INSPECTOR_GRADER", "AIR_TRAFFIC_CONTROL", "AIRPORT_OPERATIONS_CREW", "AIRPORT_SECURITY_OFFICER", "ANALYST", "ANIMAL_CONTROL_OFFICER", "ANNOUNCER_BROADCASTER", "APPRAISER_REAL_ESTATE", "ARBORIST", "ARCHITECT", "ARTIST_ANIMATOR", "ASSISTANT_MEDIC_DENT_VET", "ATHLETE", "ATTORNEY", "AUDIO_VISUAL_TECH", "AUTHOR_WRITER", "BAILIFF", "BAKER", "BARTENDER", "BELLHOP", "BELLHOP_PORTER", "BOILER_OPERATOR_MAKER", "BOOKKEEPER", "BRANCH_MANAGER", "BRICKLAYER_MASON", "BROKER", "BUILDING_MAINTENANCE_ENGINEER", "BUS_PERSON", "BUYER", "CAMP_COUNSELOR_LEAD", "CAREGIVER", "CARPENTER", "CARPET_INSTALLER", "CASHIER_CHECKER", "CATERER", "CHEF", "CHEMIST", "CHIEF_EXECUTIVE", "CHILD_DAYCARE_WORKER", "CHIROPRACTOR", "CHOREOGRAPHER_DANCER", "CLAIMS_ADJUSTER", "CLERGY", "CLERK", "CLERK_OFFICE", "CLIENT_CARE_WORKER", "CLINICAL_DATA_COORDINATOR", "COACH", "COLLECTIONS", "COMMISSIONER", "COMPOSER_DIRECTOR", "CONCESSIONAIRE", "CONCIERGE", "CONCRETE_WORKER", "CONSTRUCTION_PROJECT_MANAGER", "CONSTRUCTION_WORKER", "CONSULTANT", "CONTRACTOR", "CONTROLLER", "COOK_RESTAURANT_CAFETERIA", "COOK_WORKER_FAST_FOOD", "CORRECTIONS_OFFICER", "COUNCIL_MEMBER", "COUNSELOR", "COURT_CLERK_REPORTER", "CRANE_LOADER_OPERATOR", "CRANE_OPERATOR", "CSR_TELLER", "CURATOR", "CUSTODIAN_JANITOR", "CUSTOMER_SERVICE_REPRESENTATIVE", "DELIVERY_PERSON", "DENTAL_HYGIENIST", "DENTIST", "DEPUTY_SHERIFF", "DESIGNER", "DESK_CLERK", "DIETITIAN", "DIRECTOR_ADMINISTRATOR", "DIRECTOR_PROGRAM", "DISHWASHER", "DISPATCHER", "DOCTOR", "DRAFTER", "DRIVER_BUS_STREETCAR", "DRIVER_TAXI_LIMO", "DRIVER_TRUCK_DELIVERY", "DRY_CLEANER_LAUNDRY", "EDITOR", "ELECTRICIAN", "ELECTRICIAN_LINESMAN", "ELEVATOR_TECHNICIAN_INSTALLER", "ENGINEER", "ENGINEER_HARDWARE", "ENGINEER_SOFTWARE", "ENGINEER_SYSTEMS", "ENLISTED_MILITARY_PERSONNEL_E1_E4", "EQUIPMENT_OPERATOR", "EVENT_MANAGER_PROMOTER", "EXAMINER", "EXECUTIVE", "FACTORY_WORKER", "FARM_RANCH_OWNER", "FARM_RANCH_WORKER", "FEDERAL_AGENT_MARSHALL", "FIELD_SERVICE_TECHNICIAN", "FINANCIAL_ADVISOR", "FIRE_CHIEF", "FIRE_FIGHTER_SUPERVISOR", "FISHERMAN", "FLIGHT_ATTENDANT", "FLOOR_LAYER_FINISHER", "FLORIST", "FOOD_PRODUCTION_PACKING", "FOREMAN_SUPERVISOR", "FURNITURE_FINISHER", "GAMING_OFFICER_INVESTIGATOR", "GRADUATE_TEACHING_ASSISTANT", "HAIR_STYLIST_BARBER", "HANDYMAN", "HIGHWAY_PATROL_OFFICER", "HOSPICE_VOLUNTEER", "HOST_MAITRE_D", "HOUSEKEEPER", "HOUSEKEEPER_MAID", "HR_REPRESENTATIVE", "HVAC_REPAIR_TECHNICIAN", "HVAC_TECHNICIAN", "INSPECTOR", "INSTRUCTOR_VOCATION", "INSURANCE_CSR", "INVESTMENT_BANKER", "INVESTOR", "JEWELER", "JOURNALIST_REPORTER", "JUDGE_HEARING_OFFICER", "LAB_ASSISTANT", "LABORER", "LABORER_WORKER", "LANDSCAPE_GROUNDS_MAINTENANCE", "LANDSCAPER", "LANDSCAPING_NURSERY_WORKER", "LEGAL_ASSISTANT_SECRETARY", "LEGISLATOR", "LIBRARIAN_CURATOR", "LIFE_GUARD", "LOAN_ESCROW_PROCESSOR", "LOGGER", "LONGSHOREMAN", "MACHINE_OPERATOR", "MAINTENANCE_MECHANIC", "MANAGER", "MANAGER_CREDIT_LOAN", "MANAGER_DEPARTMENT_STORE", "MANAGER_DISTRICT", "MANAGER_FINANCE_INSURANCE", "MANAGER_FITNESS_CLUB", "MANAGER_GENERAL_OPERATIONS", "MANAGER_HR_PUBLIC_RELATIONS", "MANAGER_MARKETING_SALES", "MANAGER_PORTFOLIO_PRODUCTION", "MANAGER_PROJECT", "MANAGER_PROPERTY", "MANAGER_R_D", "MANAGER_SUPERVISOR_OFFICE", "MANAGER_SYSTEMS", "MANAGER_WAREHOUSE_DISTRICT", "MANICURIST", "MARKETING_RESEARCHER", "MASSAGE_THERAPIST", "MATE_SAILOR", "MATHEMATICIAN", "MAYOR_CITY_MANAGER", "MECHANIC", "MESSENGER_COURIER", "METALWORKER", "METER_READER", "MILL_WORKER", "MINER", "MORTICIAN", "MUSICIAN_SINGER", "NANNY", "NCO_E5_9", "NETWORK_ADMINISTRATOR", "NURSE_CNA", "NURSE_LPN", "NURSE_PRACTITIONER", "NURSE_RN", "OFFICER_COMMISSIONED", "OFFICER_WARRANT", "OIL_GAS_DRILLER_RIG_OPERATOR", "OPTOMETRIST", "ORTHODONTIST", "OTHER", "PACKER", "PAINTER", "PARALEGAL_LAW_CLERK", "PARAMEDIC_EM_TECHNICIAN", "PARK_RANGER", "PARKING_LOT_ATTENDANT", "PET_SERVICES", "PHARMACIST", "PHOTOGRAPHER", "PHYSICAL_THERAPIST", "PILOT_CAPTAIN_ENGINEER", "PLANNER", "PLANT_MANAGER", "PLASTER_DRYWALL_STUCCO", "PLUMBER", "POLICE_CHIEF", "POLICE_DETECTIVE_INVESTIGATOR", "POLICE_OFFICER_SUPERVISOR", "POSTMASTER", "PRINCIPAL", "PRINTER", "PRINTER_BOOKBINDER", "PRIVATE_INVESTIGATOR_DETECTIVE", "PROCESS_SERVER", "PRODUCER", "PRODUCT_MANAGER", "PRODUCTION_CREW", "PROFESSOR_COLLEGE", "PROGRAMMER", "PROJECT_COORDINATOR", "PROJECTIONIST", "PSYCHOLOGIST", "QUALITY_CONTROL", "RAILROAD_WORKER", "RANGER", "REALTOR", "RECEPTIONIST_SECRETARY", "REFINING_OPERATOR", "REGULATOR", "RESEARCH_PROGRAM_DIRECTOR", "RESEARCHER", "ROOFER", "SALES_AGENT_REPRESENTATIVE", "SALES_COUNTER_RENTAL", "SALES_HOMEBASED", "SALES_MANUFACTURER_REP", "SALES_REPRESENTATIVE", "SALES_RETAIL_WHOLESALE", "SALES_ROUTE_VENDOR", "SALES_TICKET_MEMBERSHIP", "SCIENTIST", "SECURITY_GUARD", "SHERIFF", "SHIPPING_RECEIVING_CLERK", "SHOEMAKER", "SOCIAL_WORKER", "SOCIOLOGIST", "SPORTS_BROADCAST_JOURNALIST", "SUBWAY_LIGHT_RAIL_OPERATOR", "SUPERINTENDENT", "SUPERVISOR", "SUPPORT_SERVICES", "SUPPORT_TECHNICIAN", "SURVEYOR_MAPMAKER", "SYSTEMS_SECURITY", "TAILOR_CUSTOM_SEWER", "TEACHER_COLLEGE", "TEACHER_K_12", "TEACHING_ASSISTANT_AIDE", "TECHNICAL_WRITER", "TECHNICIAN", "TEXTILE_WORKER", "THERAPIST", "TICKET_AGENT", "TICKET_SALES_USHER", "TIMBER_GRADER_SCALER", "TRADER_FINANCIAL_INSTRUMENTS", "TRAINER_INSTRUCTOR", "TRANSPORTATION_SPECIALIST", "TRAVEL_AGENT", "TUTOR", "UMPIRE_REFEREE", "UNDERWRITER", "UPHOLSTERER", "US_POSTAL_WORKER", "UTILITY_WORKER", "VALET", "VETERINARIAN", "WAITER_WAITRESS", "WEB_DEVELOPER", "WELDER", "WINE_STEWARD"], "type": "string"}, "OwnershipLength": {"enum": ["NOT_YET_PURCHASED", "UNDER_1_MONTH", "FROM_1_TO_12_MONTHS", "FROM_1_TO_3_YEARS", "FROM_3_TO_5_YEARS", "OVER_5_YEARS"], "type": "string"}, "PIPOptOut": {"enum": [1], "type": "integer"}, "PersonalInjuryCoverageType": {"enum": [1, 2], "type": "integer"}, "PersonalInjuryDeductibleOption": {"enum": [1, 2], "type": "integer"}, "PolicyCoveragePackage": {"properties": {"bodily_injury_per_person": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Bodily injury liability limit per person, in dollars."}, "bodily_injury_per_accident": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Bodily injury liability limit per accident, in dollars."}, "property_damage": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Property damage liability limit, in dollars."}, "uninsured_bodily_injury_per_person": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Uninsured motorist bodily injury limit per person, in dollars."}, "uninsured_bodily_injury_per_accident": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Uninsured motorist bodily injury limit per accident, in dollars."}, "uninsured_property_damage_limit": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Uninsured motorist property damage limit, in dollars, or \"Infinity\" for no limit."}, "uninsured_property_damage_deductible": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Uninsured motorist property damage deductible, in dollars. Offered in GA."}, "uninsured_motorist_type": {"anyOf": [{"$ref": "#/components/schemas/UninsuredMotoristType"}, {"type": "null"}], "default": null, "description": "How uninsured motorist coverage applies, in states that offer a choice (GA, IL, MD, NY): 1 REDUCED, 2 ADD_ON, 3 STATUTORY, 4 SUPPLEMENTAL, 5 UNSTACKED, 6 STACKED or 7 ENHANCED."}, "underinsured_bodily_injury_per_person": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Underinsured motorist bodily injury limit per person, in dollars."}, "underinsured_bodily_injury_per_accident": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Underinsured motorist bodily injury limit per accident, in dollars."}, "underinsured_property_damage": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Underinsured motorist property damage limit, in dollars, or \"Infinity\" for no limit."}, "limited_property_damage": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Limited property damage liability limit, in dollars. Offered in MI."}, "full_glass": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null, "description": "Whether glass repair and replacement have no deductible."}, "personal_injury_limit_per_person": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Personal injury protection (PIP) limit per person, in dollars, or \"Infinity\" for no limit."}, "personal_injury_deductible": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Personal injury protection (PIP) deductible, in dollars."}, "personal_injury_deductible_option": {"anyOf": [{"$ref": "#/components/schemas/PersonalInjuryDeductibleOption"}, {"type": "null"}], "default": null, "description": "Who the PIP deductible applies to, in FL and OR: 1 NAMED_INSURED or 2 NAMED_INSURED_RESIDENT_RELATIVES."}, "personal_injury_coverage_type": {"anyOf": [{"$ref": "#/components/schemas/PersonalInjuryCoverageType"}, {"type": "null"}], "default": null, "description": "Whether PIP pays before the user's health insurance, in NJ: 1 PRIMARY (PIP pays first) or 2 SECONDARY (health insurance pays first)."}, "first_party_benefits_limit": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "First party benefits (medical) limit, in dollars. Offered in PA."}, "death_indemnity": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Death indemnity benefit, in dollars."}, "medical_payment": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Medical payments limit per person, in dollars."}, "include_wage_loss": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null, "description": "Whether PIP includes wage loss benefits. Offered in FL."}, "tort": {"anyOf": [{"$ref": "#/components/schemas/Tort"}, {"type": "null"}], "default": null, "description": "The right to sue for pain and suffering, in PA: 1 LIMITED or 2 FULL."}, "no_fault": {"anyOf": [{"$ref": "#/components/schemas/NoFaultCoverageOption"}, {"type": "null"}], "default": null, "description": "No-fault coverage election, in FL and KY: 1 ALL_DRIVERS_REJECT, 2 SOME_DRIVERS_ACCEPT or 3 ALL_DRIVERS_ACCEPT."}, "mexico_limited_coverage": {"anyOf": [{"$ref": "#/components/schemas/MexicoLimitedCoverageOption"}, {"type": "null"}], "default": null, "description": "Limited coverage for driving in Mexico, in AZ: 1 NO, 2 YES or 3 ALL_DRIVERS_ACCEPT."}, "pip_opt_out": {"anyOf": [{"$ref": "#/components/schemas/PIPOptOut"}, {"type": "null"}], "default": null, "description": "Opting out of PIP medical coverage, in MI: 1 SOME_DRIVERS_OPT_OUT."}, "accidental_death_dismemberment": {"anyOf": [{"$ref": "#/components/schemas/ADDCoverageOption"}, {"type": "null"}], "default": null, "description": "Accidental death and dismemberment benefit, for one person or the family, by amount: 1 INDIVIDUAL_5K, 2 FAMILY_PLAN_5K, 3 INDIVIDUAL_10K, 4 FAMILY_PLAN_10K, 5 INDIVIDUAL_15K, 6 FAMILY_PLAN_15K, 7 INDIVIDUAL_25K, 8 FAMILY_PLAN_25K, 9 INDIVIDUAL_50K or 10 FAMILY_PLAN_50K."}, "optional_bodily_injury_per_person": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Optional bodily injury liability limit per person, in dollars. Offered in MA."}, "optional_bodily_injury_per_accident": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Optional bodily injury liability limit per accident, in dollars. Offered in MA."}, "identifier": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "The coverage level the package is based on, such as BETTER or CUSTOM."}}, "type": "object"}, "PolicyPeriod": {"description": "Term length in months for a policy", "enum": [1, 6, 12], "type": "integer"}, "QuoteCoveragePackage": {"description": "The coverages to price quotes at. Limits and deductibles are in dollars.", "properties": {"policy_package": {"$ref": "#/components/schemas/PolicyCoveragePackage", "description": "Coverages for the whole policy, such as liability limits."}, "vehicle_packages": {"description": "One per vehicle, in the same order as user_responses.vehicles.", "items": {"$ref": "#/components/schemas/VehicleCoveragePackageBase"}, "type": "array"}}, "required": ["policy_package", "vehicle_packages"], "type": "object"}, "RateableAuto": {"properties": {"coverage_history": {"$ref": "#/components/schemas/RateableCoverageHistory", "description": "Current and recent auto insurance coverage."}, "new_policy_effective_date": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Date the new policy should take effect, as MM/DD/YYYY (month first).", "examples": ["11/01/2026"]}, "user_purchase_timeframe": {"anyOf": [{"$ref": "#/components/schemas/UserPurchaseTimeframe"}, {"type": "null"}], "default": null}}, "required": ["coverage_history"], "type": "object"}, "RateableCoverageHistory": {"properties": {"current_bodily_injury_per_accident": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Bodily injury liability limit per accident on the current policy, in whole dollars.", "examples": [60000]}, "current_bodily_injury_per_person": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Bodily injury liability limit per person on the current policy, in whole dollars.", "examples": [30000]}, "current_bodily_injury_response_status": {"anyOf": [{"enum": ["I_DONT_KNOW", "PROVIDED"], "type": "string"}, {"type": "null"}], "default": null, "description": "Whether the current bodily injury limits were provided, or the driver doesn't know them."}, "currently_insured": {"description": "Whether the user has auto insurance today: 1 for yes, 0 for no. When 1, the first driver needs `insured_length`, and `had_active_insurance_in_last_thirty_one_days` must be left out.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, "current_policy": {"anyOf": [{"$ref": "#/components/schemas/CurrentPolicy"}, {"type": "null"}], "default": null, "description": "Details of a user's currently insured policy"}, "had_active_insurance_in_last_thirty_one_days": {"anyOf": [{"$ref": "#/components/schemas/HadActiveInsuranceInLastThirtyOneDays"}, {"type": "null"}], "default": null, "description": "For a driver who isn't currently insured, whether they had auto insurance in the last 31 days. Omit when currently insured."}}, "required": ["currently_insured"], "type": "object"}, "RateableDriver": {"description": "Fields every driver on the quote needs before RC1 can rate it.", "properties": {"age_first_licensed": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}], "default": null, "description": "Age, in years, at which the driver was first licensed.", "examples": [16]}, "credit_score": {"anyOf": [{"description": "Credit tiers RC1 accepts: user_data_lib's `Credit` without the deprecated `LOW`.", "enum": [0, 1, 2, 4, 5], "type": "integer", "x-enum-varnames": ["EXCELLENT", "GOOD", "AVERAGE", "POOR", "DONT_KNOW"]}, {"type": "null"}], "default": null, "description": "Self-reported credit tier: EXCELLENT (720+), GOOD (680-719), AVERAGE (620-679), POOR (below 580) or DONT_KNOW. LOW (580-619) is deprecated."}, "current_carrier": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null}, "current_carrier_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "date_of_birth": {"description": "Date of birth, as MM/DD/YYYY (month first).", "type": "string"}, "driver_relationship": {"anyOf": [{"maximum": 4, "minimum": 0, "type": "integer"}, {"type": "null"}], "default": null, "description": "Relationship to the primary driver: 0 parent, 1 spouse, 2 child, 3 other relative, 4 unrelated. Omit for the primary driver."}, "drivers_license": {"anyOf": [{"$ref": "#/components/schemas/DriverLicense"}, {"type": "null"}], "default": null, "description": "The driver's license."}, "education": {"anyOf": [{"enum": [0, 1, 2, 3, 4, 5], "type": "integer", "x-enum-varnames": ["NO_DIPLOMA", "HIGH_SCHOOL_DIPLOMA", "BACHELORS_DEGREE", "MASTERS_DEGREE", "DOCTORAL_DEGREE", "DECLINE_TO_ANSWER"]}, {"type": "null"}], "default": null, "description": "Highest level of education completed."}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "employment": {"anyOf": [{"enum": [0, 1, 2, 3, 4, 5, 6, 7], "type": "integer", "x-enum-varnames": ["EMPLOYED", "SELF_EMPLOYED", "STUDENT", "HOMEMAKER", "ACTIVE_MILITARY", "RETIRED", "UNEMPLOYED", "DECLINE_TO_ANSWER"]}, {"type": "null"}], "default": null, "description": "Employment status."}, "occupation": {"anyOf": [{"$ref": "#/components/schemas/Occupation"}, {"type": "null"}], "default": null}, "first_name": {"type": "string"}, "gender": {"enum": [0, 1, 2], "type": "integer", "x-enum-varnames": ["MALE", "FEMALE", "NON_BINARY"]}, "has_military_affiliation": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null, "description": "Whether the driver is affiliated with the military."}, "id": {"anyOf": [{"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", "type": "string"}, {"type": "null"}], "default": null, "description": "Optional. If sent, it must be a hyphenated UUID, such as 3f2b9c4e-8d1a-4b7e-9c2d-1a2b3c4d5e6f.", "format": "uuid"}, "insured_effective_date": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Date the driver's current insurance began, as MM/DD/YYYY (month first).", "examples": ["12/31/2013"]}, "insured_expiration_date": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Date the driver's current insurance expires, as MM/DD/YYYY (month first).", "examples": ["06/30/2027"]}, "insured_length": {"anyOf": [{"enum": [0, 1, 2, 3], "type": "integer", "x-enum-varnames": ["UNDER_6_MONTHS", "FROM_6_TO_12_MONTHS", "FROM_1_TO_3_YEARS", "OVER_3_YEARS"]}, {"type": "null"}], "default": null, "description": "How long the driver has been insured. Only applies when currently insured."}, "is_interested_in_account": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "last_name": {"type": "string"}, "license_status": {"anyOf": [{"enum": [0, 1, 2, 3, 4, 5, 6], "type": "integer", "x-enum-varnames": ["VALID", "PERMIT", "SUSPENDED", "EXPIRED", "REVOKED", "UNLICENSED", "FOREIGN"]}, {"type": "null"}], "default": null, "description": "Status of the driver's license."}, "marital_status": {"description": "Marital status.", "enum": [0, 1, 2, 3, 4], "type": "integer", "x-enum-varnames": ["SINGLE", "MARRIED", "DIVORCED", "WIDOWED", "DOMESTIC_PARTNER"]}, "opt_in_info_lookup": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "opts_into_marketing_sms": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "referral_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "residence_ownership": {"anyOf": [{"enum": [0, 1, 2, 3], "type": "integer", "x-enum-varnames": ["HOME", "CONDO", "RENT", "OTHER"]}, {"type": "null"}], "default": null, "description": "Whether the driver owns a home or condo, rents, or has another living arrangement."}, "violations": {"anyOf": [{"$ref": "#/components/schemas/Violations"}, {"type": "null"}], "default": null, "description": "Accidents, violations and claims on the driver's record."}, "tracking_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}}, "required": ["date_of_birth", "first_name", "gender", "last_name", "marital_status"], "type": "object"}, "RateablePrimaryDriver": {"description": "The primary driver (the user), who needs everything other drivers need plus `email`, `phone` and\n`residence_ownership`.", "properties": {"age_first_licensed": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}], "default": null, "description": "Age, in years, at which the driver was first licensed.", "examples": [16]}, "credit_score": {"anyOf": [{"description": "Credit tiers RC1 accepts: user_data_lib's `Credit` without the deprecated `LOW`.", "enum": [0, 1, 2, 4, 5], "type": "integer", "x-enum-varnames": ["EXCELLENT", "GOOD", "AVERAGE", "POOR", "DONT_KNOW"]}, {"type": "null"}], "default": null, "description": "Self-reported credit tier: EXCELLENT (720+), GOOD (680-719), AVERAGE (620-679), POOR (below 580) or DONT_KNOW. LOW (580-619) is deprecated."}, "current_carrier": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null}, "current_carrier_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "date_of_birth": {"description": "Date of birth, as MM/DD/YYYY (month first).", "type": "string"}, "driver_relationship": {"anyOf": [{"maximum": 4, "minimum": 0, "type": "integer"}, {"type": "null"}], "default": null, "description": "Relationship to the primary driver: 0 parent, 1 spouse, 2 child, 3 other relative, 4 unrelated. Omit for the primary driver."}, "drivers_license": {"anyOf": [{"$ref": "#/components/schemas/DriverLicense"}, {"type": "null"}], "default": null, "description": "The driver's license."}, "education": {"anyOf": [{"enum": [0, 1, 2, 3, 4, 5], "type": "integer", "x-enum-varnames": ["NO_DIPLOMA", "HIGH_SCHOOL_DIPLOMA", "BACHELORS_DEGREE", "MASTERS_DEGREE", "DOCTORAL_DEGREE", "DECLINE_TO_ANSWER"]}, {"type": "null"}], "default": null, "description": "Highest level of education completed."}, "email": {"type": "string"}, "employment": {"anyOf": [{"enum": [0, 1, 2, 3, 4, 5, 6, 7], "type": "integer", "x-enum-varnames": ["EMPLOYED", "SELF_EMPLOYED", "STUDENT", "HOMEMAKER", "ACTIVE_MILITARY", "RETIRED", "UNEMPLOYED", "DECLINE_TO_ANSWER"]}, {"type": "null"}], "default": null, "description": "Employment status."}, "occupation": {"anyOf": [{"$ref": "#/components/schemas/Occupation"}, {"type": "null"}], "default": null}, "first_name": {"type": "string"}, "gender": {"enum": [0, 1, 2], "type": "integer", "x-enum-varnames": ["MALE", "FEMALE", "NON_BINARY"]}, "has_military_affiliation": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null, "description": "Whether the driver is affiliated with the military."}, "id": {"anyOf": [{"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", "type": "string"}, {"type": "null"}], "default": null, "description": "Optional. If sent, it must be a hyphenated UUID, such as 3f2b9c4e-8d1a-4b7e-9c2d-1a2b3c4d5e6f.", "format": "uuid"}, "insured_effective_date": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Date the driver's current insurance began, as MM/DD/YYYY (month first).", "examples": ["12/31/2013"]}, "insured_expiration_date": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Date the driver's current insurance expires, as MM/DD/YYYY (month first).", "examples": ["06/30/2027"]}, "insured_length": {"anyOf": [{"enum": [0, 1, 2, 3], "type": "integer", "x-enum-varnames": ["UNDER_6_MONTHS", "FROM_6_TO_12_MONTHS", "FROM_1_TO_3_YEARS", "OVER_3_YEARS"]}, {"type": "null"}], "default": null, "description": "How long the driver has been insured. Only applies when currently insured."}, "is_interested_in_account": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "last_name": {"type": "string"}, "license_status": {"anyOf": [{"enum": [0, 1, 2, 3, 4, 5, 6], "type": "integer", "x-enum-varnames": ["VALID", "PERMIT", "SUSPENDED", "EXPIRED", "REVOKED", "UNLICENSED", "FOREIGN"]}, {"type": "null"}], "default": null, "description": "Status of the driver's license."}, "marital_status": {"description": "Marital status.", "enum": [0, 1, 2, 3, 4], "type": "integer", "x-enum-varnames": ["SINGLE", "MARRIED", "DIVORCED", "WIDOWED", "DOMESTIC_PARTNER"]}, "opt_in_info_lookup": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "opts_into_marketing_sms": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "phone": {"description": "The user's US phone number, in any common format, such as 512-909-1000. Stored as digits only.", "type": "string"}, "referral_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "residence_ownership": {"description": "Whether the driver owns a home or condo, rents, or has another living arrangement.", "enum": [0, 1, 2, 3], "type": "integer", "x-enum-varnames": ["HOME", "CONDO", "RENT", "OTHER"]}, "violations": {"anyOf": [{"$ref": "#/components/schemas/Violations"}, {"type": "null"}], "default": null, "description": "Accidents, violations and claims on the driver's record."}, "tracking_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}}, "required": ["date_of_birth", "email", "first_name", "gender", "last_name", "marital_status", "phone", "residence_ownership"], "type": "object"}, "RateablePrimaryVehicle": {"description": "The primary vehicle, which needs everything other vehicles need plus `garaging_address`.", "properties": {"annual_mileage": {"description": "Whole miles driven per mileage_period.", "type": "integer"}, "garaging_address": {"description": "Street address where the vehicle is kept. The apartment or unit, if any, goes in `unit`.", "type": "string"}, "id": {"anyOf": [{"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", "type": "string"}, {"type": "null"}], "default": null, "description": "Optional. If sent, it must be a hyphenated UUID, such as 3f2b9c4e-8d1a-4b7e-9c2d-1a2b3c4d5e6f.", "format": "uuid"}, "make": {"description": "Manufacturer.", "type": "string"}, "mileage_period": {"anyOf": [{"$ref": "#/components/schemas/MileagePeriodAsString"}, {"type": "null"}], "default": null, "description": "The period annual_mileage covers."}, "model": {"description": "Model.", "type": "string"}, "ownership": {"description": "Whether the vehicle is owned outright, leased or financed.", "enum": [0, 1, 2], "type": "integer", "x-enum-varnames": ["OWN", "LEASE", "FINANCE"]}, "primary_use": {"description": "What the vehicle is mainly used for.", "enum": [0, 1, 2, 3, 4], "type": "integer", "x-enum-varnames": ["COMMUTE", "PLEASURE", "BUSINESS", "DELIVERY", "FARM"]}, "submodel": {"description": "The trim, e.g. \"i\" for a Subaru Crosstrek i.", "type": "string"}, "unit": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Apartment or unit number of the garaging address.", "examples": ["2B"]}, "vehicle_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null}, "ownership_length": {"anyOf": [{"$ref": "#/components/schemas/OwnershipLength"}, {"type": "null"}], "default": null, "description": "How long the vehicle has been owned."}, "vin": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Vehicle Identification Number: 17 letters and digits.", "examples": ["1HGCM82633A004352"]}, "year": {"description": "Four-digit model year.", "type": "integer"}, "tracking_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "is_interested_in_refinancing": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}}, "required": ["annual_mileage", "garaging_address", "make", "model", "ownership", "primary_use", "submodel", "year"], "type": "object"}, "RateableUserResponses": {"description": "The user's answers RC1 needs before it can rate them.", "properties": {"auto": {"$ref": "#/components/schemas/RateableAuto", "description": "Current and recent auto insurance coverage, and when the customer wants a new policy to start."}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "City of the policyholder's address.", "examples": ["Austin"]}, "county": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "County of the policyholder's address.", "examples": ["Travis County"]}, "discounts": {"anyOf": [{"$ref": "#/components/schemas/Discount"}, {"type": "null"}], "default": null}, "drivers": {"description": "Drivers on the policy. The first is the primary driver (the user). Depending on other answers, it also needs `education` (unless `state` is MA), `credit_score` (unless `state` is HI or CA or MA) and `insured_length` (only when `auto.coverage_history.currently_insured` is 1; leave it out when it is 0).", "items": {"$ref": "#/components/schemas/RateableDriver"}, "minItems": 1, "prefixItems": [{"$ref": "#/components/schemas/RateablePrimaryDriver"}], "type": "array"}, "id": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "interested_in_bundling": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "is_interested_in_bundling_renters": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "is_pet_owner": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}, "start": {"$ref": "#/components/schemas/Start", "default": {"currently_insured": null}}, "state": {"description": "Two-letter abbreviation of the state of the policyholder's address.", "enum": ["ZZ", "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VI", "VA", "WA", "WV", "WI", "WY"], "type": "string", "x-enum-varnames": ["TEST", "ALABAMA", "ALASKA", "ARIZONA", "ARKANSAS", "CALIFORNIA", "COLORADO", "CONNECTICUT", "DELAWARE", "DISTRICT_OF_COLUMBIA", "FLORIDA", "GEORGIA", "GUAM", "HAWAII", "IDAHO", "ILLINOIS", "INDIANA", "IOWA", "KANSAS", "KENTUCKY", "LOUISIANA", "MAINE", "MARYLAND", "MASSACHUSETTS", "MICHIGAN", "MINNESOTA", "MISSISSIPPI", "MISSOURI", "MONTANA", "NEBRASKA", "NEVADA", "NEW_HAMPSHIRE", "NEW_JERSEY", "NEW_MEXICO", "NEW_YORK", "NORTH_CAROLINA", "NORTH_DAKOTA", "OHIO", "OKLAHOMA", "OREGON", "PENNSYLVANIA", "PUERTO_RICO", "RHODE_ISLAND", "SOUTH_CAROLINA", "SOUTH_DAKOTA", "TENNESSEE", "TEXAS", "UTAH", "VERMONT", "VIRGIN_ISLANDS", "VIRGINIA", "WASHINGTON", "WEST_VIRGINIA", "WISCONSIN", "WYOMING"]}, "vehicles": {"description": "Vehicles on the policy.", "items": {"$ref": "#/components/schemas/RateableVehicle"}, "minItems": 1, "prefixItems": [{"$ref": "#/components/schemas/RateablePrimaryVehicle"}], "type": "array"}, "zipcode": {"description": "ZIP code of the policyholder's address: exactly 5 digits, keeping leading zeros, without ZIP+4.", "type": "string"}}, "required": ["auto", "drivers", "state", "vehicles", "zipcode"], "type": "object"}, "RateableVehicle": {"description": "Fields every vehicle on the quote needs before RC1 can rate it.", "properties": {"annual_mileage": {"description": "Whole miles driven per mileage_period.", "type": "integer"}, "garaging_address": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Street address where the vehicle is usually parked.", "examples": ["123 Elm St"]}, "id": {"anyOf": [{"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", "type": "string"}, {"type": "null"}], "default": null, "description": "Optional. If sent, it must be a hyphenated UUID, such as 3f2b9c4e-8d1a-4b7e-9c2d-1a2b3c4d5e6f.", "format": "uuid"}, "make": {"description": "Manufacturer.", "type": "string"}, "mileage_period": {"anyOf": [{"$ref": "#/components/schemas/MileagePeriodAsString"}, {"type": "null"}], "default": null, "description": "The period annual_mileage covers."}, "model": {"description": "Model.", "type": "string"}, "ownership": {"description": "Whether the vehicle is owned outright, leased or financed.", "enum": [0, 1, 2], "type": "integer", "x-enum-varnames": ["OWN", "LEASE", "FINANCE"]}, "primary_use": {"description": "What the vehicle is mainly used for.", "enum": [0, 1, 2, 3, 4], "type": "integer", "x-enum-varnames": ["COMMUTE", "PLEASURE", "BUSINESS", "DELIVERY", "FARM"]}, "submodel": {"description": "The trim, e.g. \"i\" for a Subaru Crosstrek i.", "type": "string"}, "unit": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Apartment or unit number of the garaging address.", "examples": ["2B"]}, "vehicle_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null}, "ownership_length": {"anyOf": [{"$ref": "#/components/schemas/OwnershipLength"}, {"type": "null"}], "default": null, "description": "How long the vehicle has been owned."}, "vin": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "Vehicle Identification Number: 17 letters and digits.", "examples": ["1HGCM82633A004352"]}, "year": {"description": "Four-digit model year.", "type": "integer"}, "tracking_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null}, "is_interested_in_refinancing": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": null}}, "required": ["annual_mileage", "make", "model", "ownership", "primary_use", "submodel", "year"], "type": "object"}, "Start": {"additionalProperties": false, "properties": {"currently_insured": {"anyOf": [{"description": "A yes/no answer: 1 for yes, 0 for no.", "enum": [0, 1], "type": "integer", "x-enum-varnames": ["FALSE", "TRUE"]}, {"type": "null"}], "default": null, "deprecated": true}}, "type": "object"}, "Tort": {"enum": [1, 2], "type": "integer"}, "UninsuredMotoristType": {"enum": [1, 2, 3, 4, 5, 6, 7], "type": "integer"}, "UserPurchaseTimeframe": {"description": "User's intended policy purchase timeframe", "enum": ["TODAY", "FUTURE"], "type": "string"}, "VehicleCoveragePackageBase": {"properties": {"comprehensive": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Comprehensive deductible, in dollars. Null for no comprehensive coverage."}, "collision": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Collision deductible, in dollars. Null for no collision coverage; requires comprehensive."}, "towing_and_labor": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Towing and labor limit, in dollars, or \"Infinity\" for no limit. Requires comprehensive."}, "rental_per_day": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Rental reimbursement limit per day, in dollars. Requires comprehensive."}, "rental_per_accident": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "Rental reimbursement limit per accident, in dollars. Requires comprehensive."}, "glass": {"anyOf": [{"exclusiveMaximum": 2147483647, "type": "integer"}, {"type": "null"}], "default": null, "description": "Glass deductible, in dollars."}, "identifier": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "The standard package it is based on, if any."}}, "type": "object"}, "Violations": {"properties": {"accidents": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "deprecated": true}, "claims": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "deprecated": true}, "incidents": {"anyOf": [{"items": {"$ref": "#/components/schemas/Incident"}, "type": "array"}, {"type": "null"}], "default": null, "description": "Individual accidents, violations and claims on the driver's record."}, "tickets": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "deprecated": true}, "value": {"anyOf": [{"enum": [0, 1, 2], "type": "integer", "x-enum-varnames": ["NO", "YES", "DONT_KNOW"]}, {"type": "null"}], "default": null, "description": "Whether the driver has any accidents, violations or claims on their record."}}, "type": "object"}, "RC1CatalogVehicle": {"properties": {"vehicle": {"description": "Year, make, model and style from the vehicle catalog.", "examples": ["2020 Toyota RAV4 LE 4dr SUV"], "type": "string"}, "matched_by": {"description": "How the vehicle was found in the catalog: vin (by its VIN), style (the submodel named a style), trim (the submodel named a trim, and its lowest-priced style was used) or default_style (the submodel matched nothing, so the model's lowest-priced style was used). Confirm the vehicle with the user when it's default_style, or when you sent a VIN and it isn't vin: the catalog didn't know the VIN, so it wasn't used.", "enum": ["vin", "style", "trim", "default_style"], "type": "string"}}, "required": ["vehicle", "matched_by"], "type": "object"}, "RC1Quote": {"properties": {"quote_id": {"description": "Pass this to zebra_get_rate_action when the user picks this quote. An internal ID, not one to show the user.", "type": "string"}, "carrier_name": {"description": "The insurance carrier offering the quote.", "type": "string"}, "monthly_price": {"description": "The estimated price per month for the policy term, in dollars. The final price is set when the user buys on The Zebra.", "type": "number"}, "policy_term_months": {"description": "How long the policy lasts, in months.", "type": "integer"}, "down_payment": {"description": "Due when the policy is bought, in dollars.", "type": "number"}, "total_premium": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": null, "description": "The estimated price for the whole policy term on the carrier's recommended pay plan, in dollars. Null when the carrier doesn't give it."}, "liability_limits": {"anyOf": [{"$ref": "#/components/schemas/RC1QuoteLiabilityLimits"}, {"type": "null"}], "default": null, "description": "The policy's liability coverage limits."}, "vehicle_coverages": {"default": [], "description": "The deductibles on each vehicle.", "items": {"$ref": "#/components/schemas/RC1QuoteVehicleCoverage"}, "type": "array"}, "coverage_differences": {"default": [], "description": "Where this quote's coverage differs from what was requested; empty when it matches.", "items": {"$ref": "#/components/schemas/RC1QuoteCoverageDifference"}, "type": "array"}}, "required": ["quote_id", "carrier_name", "monthly_price", "policy_term_months", "down_payment"], "type": "object"}, "RC1QuoteCoverageDifference": {"properties": {"coverage": {"description": "The coverage that differs: bodily_injury_per_person, bodily_injury_per_accident, property_damage, personal_injury_limit_per_person (PIP), or a vehicle's comprehensive or collision deductible.", "type": "string"}, "vehicle_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": null, "description": "The vehicle a deductible applies to, as year make model. Null for policy-wide coverages."}, "requested": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}], "default": null, "description": "What was requested, in dollars, or \"Infinity\" for no limit. Null when not requested."}, "quoted": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}], "default": null, "description": "What the quote includes, in dollars, or \"Infinity\" for no limit. Null when not included."}}, "required": ["coverage"], "type": "object"}, "RC1QuoteLiabilityLimits": {"properties": {"bodily_injury_per_person": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "The maximum the policy pays for one person's injuries in an accident, in dollars."}, "bodily_injury_per_accident": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "The maximum the policy pays for all injuries in one accident, in dollars."}, "property_damage": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "The maximum the policy pays for other people's property in an accident, in dollars."}}, "type": "object"}, "RC1QuoteVehicleCoverage": {"properties": {"vehicle_label": {"description": "The vehicle these deductibles apply to, as year make model.", "examples": ["2020 Toyota Camry"], "type": "string"}, "comprehensive_deductible": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "What the user pays first on a comprehensive claim (theft, weather, etc.), in dollars."}, "collision_deductible": {"anyOf": [{"type": "integer"}, {"type": "null"}], "default": null, "description": "What the user pays first on a collision claim, in dollars."}}, "required": ["vehicle_label"], "type": "object"}}}}