{"openapi":"3.1.0","info":{"title":"Allegra: yacht charter API for AI assistants","description":"Use this API to help a client learn about Allegra, check whether dates are free, and get an exact price. Charters are sold by Resolute Wind LLC, the yacht's owner company. No sign-in is needed. Every endpoint is a Read tool: it only retrieves information and has no side effects. Nothing here books, holds dates, takes payment or sends messages.\n\n## How to use it\n\n1. **Learn about the yacht**: `GET /v1/discover/boat`, `/v1/discover/itinerary`, `/v1/discover/destinations`, `/v1/discover/charter-rules`, `/v1/discover/policies`, `/v1/discover/questions`.\n2. **Check dates**: `GET /v1/availability?start_date=YYYY-MM-DD&nights=N`. The answer is \"available\", \"available on request\" (free, but close to another charter, so the owner must confirm) or \"unavailable\" (with the nearest open dates). To find open dates in a period (\"what's open in January?\"), `GET /v1/open-dates` lists every open check-in day in up to 92 days, each with its total price.\n3. **Get a price**: `GET /v1/quote` with the dates, the number of guests and the payment method, `credit card` or `bank`. Ask the client how they will pay first: the prices differ, paying by bank transfer includes a discount for direct booking, and the method applies to every payment.\n4. **Give the next step**: every availability answer and quote has a `next_step` to pass on to the client, word for word.\n\n## Good to know\n\n- Charters are 5 to 7 nights, for up to 8 guests. Dates are the check-in and check-out days, in the yacht's local time.\n- Money is in US cents, in whole numbers, in fields whose names end in `_cents`: $1,234 is `123400`. Text written for people (labels, notes, next steps) shows dollars.\n- A quote is not a reservation and does not hold the dates.\n- Every quote names the seller (Resolute Wind LLC) and repeats the key terms of a booking, such as cancellation and refunds (`key_terms`), so the client sees them with the price before deciding.\n- Quotes for dates that are not free are still given, marked unavailable, with other dates to offer.\n- Never invent prices or availability: always ask this API.\n- Without a key, at most 10 requests per minute per caller address. More get HTTP 429 with a `Retry-After` header giving the seconds to wait.\n- Partners (assistant platforms) get an API key from the owner. Send it on every call as `Authorization: Bearer <key>`: calls with a key count against the partner's own allowance instead of the address. A wrong or malformed key gets HTTP 401 (`invalid_api_key`), never an answer without the key.\n- Every endpoint starts with `/v1/`. Within this version, changes only add things: new endpoints, new optional parameters, new answer fields. Anything else gets a new version.\n- Every answer has an `X-Request-ID` header. Send your own (1 to 64 letters, digits, `.`, `_` or `-`) to have it echoed; quote it when reporting a problem.","version":"0.1.0","contact":{"name":"Resolute Wind LLC","email":"info@allegra-yacht.com"}},"paths":{"/v1/discover/boat":{"get":{"tags":["discover"],"summary":"Get Boat Info","description":"The yacht: specifications, cabins, crew, amenities, included items, water toys and photos.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_boat_info_v1_discover_boat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoatResponse"},"example":{"boat_id":"allegra","name":"Allegra","model":"Bali 5.4 sailing catamaran","builder":"Bali Catamarans","year":2026,"length":"55 ft (16.8 m)","beam":"29 ft (8.8 m)","draft":"5 ft (1.5 m)","description":"Allegra is a 55-foot Bali 5.4 catamaran, chartered privately with her own captain and private chef. All-inclusive for up to 8 guests in four private queen cabins, each with its own bathroom and shower. She sails the British Virgin Islands from Village Cay Marina, Road Town, Tortola, with about 1,500 sq ft of living space across the salon, cockpits and flybridge.","cabins":"4 guest cabins with queen beds, each with its own bathroom with shower and its own air conditioning, and 1 crew cabin with 2 twin beds.","crew":"A professional captain and a private chef, dedicated to your party.","max_guests":8,"amenities":["Full air conditioning, controlled separately in every cabin","Bright salon with panoramic views","Flybridge lounge with 360-degree views","Forward cockpit with sun lounges","Aft cockpit for outdoor dining, with shade","Convertible aft deck: a drop-down door turns the aft cockpit into an air-conditioned room in any weather","Hydraulic swim platform","Onboard Wi-Fi","Full-size fridge and freezer","Ice maker and water maker","Generator","Electric toilets"],"included":["Your captain and private chef","All meals aboard on your dining plan (Full-Board: 3 meals a day)","Drinks from the ship's bar: wine with meals, spirits, beer and mixers","Fuel for normal cruising","Cruising permits and customs fees within the British Virgin Islands","All water toys","Onboard Wi-Fi","4K drone video and photos of your week","An itinerary planned with your captain around your party"],"not_included":["Crew tips (customary 15 to 20% of the charter fee, at your discretion)","Travel to and from Tortola","Premium wines, champagne and spirits beyond the ship's bar","Relocation charges for the US Virgin Islands, St. Martin / St. Barths or other islands (a relocation charge includes dockage away from Village Cay Marina)"],"water_toys":["2 paddleboards","2 sea scooters (Seabob)","Water skis and a wakeboard","Floating hammock","Snorkeling gear and fins in every size","Fishing rods","Tender"],"photos":[{"url":"https://www.allegra-yacht.com/assets/specs-hero.webp","caption":"Allegra under sail in the open Caribbean"},{"url":"https://www.allegra-yacht.com/assets/aerial-allegra-anchor.webp","caption":"Allegra from above, at anchor with paddleboards and the swim platform down"},{"url":"https://www.allegra-yacht.com/assets/Home-meet-allegra.webp","caption":"Allegra at anchor in turquoise water"},{"url":"https://www.allegra-yacht.com/assets/aboard-hero.webp","caption":"The salon, with a panoramic view of the coast through the windows"},{"url":"https://www.allegra-yacht.com/assets/Home-gallery-2.webp","caption":"Breakfast table in the salon"},{"url":"https://www.allegra-yacht.com/assets/master-cabin.webp","caption":"The master cabin, with hull windows at water level"},{"url":"https://www.allegra-yacht.com/assets/Home-gallery-7.webp","caption":"A guest cabin in the port hull"},{"url":"https://www.allegra-yacht.com/assets/escape-cta.webp","caption":"View from the flybridge over the bay to a quiet beach"},{"url":"https://www.allegra-yacht.com/assets/Home-water-toys.webp","caption":"Aft deck with water skis, fins, masks and sea scooters ready for the day"},{"url":"https://www.allegra-yacht.com/assets/Home-gallery-8.webp","caption":"Paddleboards on glassy water at sunset"},{"url":"https://www.allegra-yacht.com/assets/Home-gallery-9.webp","caption":"Sushi night by the chef: hand rolls, futomaki and tuna poke"},{"url":"https://www.allegra-yacht.com/assets/top-deck.webp","caption":"Deck plan: flybridge and main deck"},{"url":"https://www.allegra-yacht.com/assets/lower-deck.webp","caption":"Deck plan: cabins, bathrooms and storage"}],"seller":"Resolute Wind LLC","contact_email":"info@allegra-yacht.com"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/discover/itinerary":{"get":{"tags":["discover"],"summary":"Get Itinerary","description":"Home base, standard route, seasons and the off-season.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_itinerary_v1_discover_itinerary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItineraryResponse"},"example":{"home_base":"Village Cay Marina, Road Town, Tortola, British Virgin Islands","standard_route":"Every itinerary is planned with your captain around your party. A typical week sails the British Virgin Islands from Village Cay Marina: Norman Island, Jost Van Dyke, Virgin Gorda, Anegada and the quiet coves in between. Most passages are under two hours, in some of the calmest cruising waters anywhere. The US Virgin Islands and St Martin / St Barths are possible for a relocation charge.","seasons":[{"name":"Winter (high season)","start":"11-01","end":"04-30","description":"December to the end of April brings the steadiest trade winds and the driest weather. It is peak season and books first."},{"name":"Summer (low season)","start":"05-01","end":"07-31","description":"Quieter on the water and a little warmer; easier to book at short notice."}],"off_season":{"start":"08-01","end":"10-31","description":"No charters from Aug 1 to Oct 31, every year."},"utc_offset":"-04:00"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/discover/destinations":{"get":{"tags":["discover"],"summary":"Get Destinations","description":"Cruising areas, each with its relocation charge (bank-transfer and card price) and restrictions.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_destinations_v1_discover_destinations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationsResponse"},"example":{"destinations":[{"id":"bvi","name":"British Virgin Islands","home":true,"relocation_charge_bank_cents":0,"relocation_charge_card_cents":0,"restrictions":[]},{"id":"usvi","name":"US Virgin Islands","home":false,"relocation_charge_bank_cents":150000,"relocation_charge_card_cents":154500,"restrictions":["Charged once per charter.","Not available for Christmas or New Year's charters.","The relocation charge includes dockage away from Village Cay Marina."]},{"id":"st-martin","name":"St Martin","home":false,"relocation_charge_bank_cents":300000,"relocation_charge_card_cents":309000,"restrictions":["Charged once per charter.","Not available for Christmas or New Year's charters.","The relocation charge includes dockage away from Village Cay Marina.","Needs 48 hours of transit before and after the charter."]},{"id":"st-barths","name":"St Barths","home":false,"relocation_charge_bank_cents":300000,"relocation_charge_card_cents":309000,"restrictions":["Charged once per charter.","Not available for Christmas or New Year's charters.","The relocation charge includes dockage away from Village Cay Marina.","Needs 48 hours of transit before and after the charter."]}]}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/discover/charter-rules":{"get":{"tags":["discover"],"summary":"Get Charter Rules","description":"Charter length, start days, check-in and check-out times, the gap between charters, how far ahead.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_charter_rules_v1_discover_charter_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharterRulesResponse"},"example":{"min_nights":5,"max_nights":7,"typical_nights":7,"start_days":"Any day of the week","check_in_time":"12:00","check_out_time":"12:00","utc_offset":"-04:00","preferred_gap_hours":48,"booking_window_years":2,"max_guests":8,"off_season":{"start":"08-01","end":"10-31","description":"No charters from Aug 1 to Oct 31, every year."},"summary":["Charters are 5 to 7 nights; 7 is typical.","Start days: Any day of the week.","Check-in and check-out are at 12:00, local time (UTC-04:00).","48 hours between charters is preferred; dates closer to another charter are \"available on request\" and need the owner's confirmation.","Charters can start up to 2 years ahead.","Up to 8 guests.","No charters from Aug 1 to Oct 31, every year."]}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/discover/policies":{"get":{"tags":["discover"],"summary":"Get Policies","description":"Prices by payment method, payment schedule, contract, cancellation and refunds, and deadlines.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_policies_v1_discover_policies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoliciesResponse"},"example":{"policies":[{"id":"prices","title":"Card and bank-transfer prices","text":"Every quote is for the payment method you choose. The card price is the published price; paying by bank transfer includes a discount for direct booking, shown on the quote. The method you choose applies to every payment of that booking; changing it later needs a change request."},{"id":"payment-schedule","title":"Payment schedule","text":"Booking 45 or more days before boarding: 25% at booking, 25% within 7 days of the charter contract being signed by both sides, and the final 50% no later than 21 days before boarding. Booking less than 45 days before boarding: 100% at booking. Dates are held only once the first payment is received; if two clients pay for the same dates, the first payment received wins and the other is refunded in full."},{"id":"contract","title":"Charter contract","text":"Every charter has a written charter contract, plus a charter waiver. For bookings 45 or more days out, the contract is sent within 7 days of the deposit and is signed within 10 days of being sent. For later bookings it is sent as fast as possible and signed within 3 days. Where the signed contract differs from these policies, the contract wins."},{"id":"cancellation","title":"Cancellation and refunds","text":"Before the contract is signed, you can cancel for a full refund. After it is signed, cancellation requests go to the owner, and any refund is at the owner's discretion, in line with the contract. If a deadline is missed and the client cannot be reached, the booking may be cancelled and 25% of the charter price kept. If the owner cancels, you get a full refund. Refunds are made by hand, to the way you paid. Trip cancellation insurance is recommended."},{"id":"guest-details","title":"Guest details","text":"Send your guests' names, dietary needs and requests no later than 21 days before boarding, or as soon as possible for late bookings."},{"id":"tips","title":"Crew tips","text":"Crew tips are not included and are not paid through this service. They are customary at 15 to 20% of the charter fee, at your discretion."},{"id":"how-to-book","title":"How to book","text":"Booking through this service opens later. To book or ask about dates today, email info@allegra-yacht.com with your dates, number of guests and route. You must be 18 or older to book."}]}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/discover/questions":{"get":{"tags":["discover"],"summary":"Get Questions","description":"Answers to common questions, written and approved by the owner.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_questions_v1_discover_questions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionsResponse"},"example":{"questions":[{"question":"How much does a week aboard Allegra cost?","answer":"Weekly rates run from $32,000 for two guests to $35,000 for eight, all-inclusive, when paying by bank transfer. Charters of 5 or 6 nights are priced from the weekly rate, and Christmas and New Year's have flat prices. Ask for a quote to get the exact price for your dates, guests and payment method."},{"question":"What is included in the price?","answer":"Your captain and private chef, all meals aboard on your dining plan, drinks from the ship's bar, fuel for normal cruising, cruising permits and customs fees within the British Virgin Islands, all water toys, onboard Wi-Fi, and 4K drone video and photos of your week."},{"question":"What is not included?","answer":"Crew tips (customary at 15 to 20% of the charter fee), travel to and from Tortola, premium wines, champagne and spirits beyond the ship's bar, and relocation charges outside the British Virgin Islands. A relocation charge includes dockage away from Village Cay Marina."},{"question":"When is the best time to charter?","answer":"The season runs from November 1 to July 31; the boat is laid up from August 1 to October 31. December to the end of April brings the steadiest trade winds and the driest weather; it is peak season and books first. From May to the end of July it is quieter on the water and easier to book at short notice."},{"question":"How many guests can Allegra take?","answer":"Up to eight guests in four private queen cabins, each with its own bathroom and shower. The layout works for four couples, two families or a group of friends."},{"question":"Is Allegra good for families with children?","answer":"Yes. Short, calm sails between islands, a swim platform at water level, snorkeling gear in every size, and a chef who happily cooks for picky eaters. Young children are welcome; tell us their ages in advance so we can provision for them."},{"question":"Do we need any sailing experience?","answer":"None. Allegra is fully crewed: your captain handles the yacht and your chef handles the galley. You are welcome to take the helm and learn, or never touch a line all week."},{"question":"Where do we sail?","answer":"From Village Cay Marina in Road Town around the British Virgin Islands: Virgin Gorda, Jost Van Dyke, Anegada, Norman Island and the quiet coves in between, planned with your captain. The US Virgin Islands and St Martin / St Barths are possible for a relocation charge, which includes dockage away from Village Cay Marina."},{"question":"What if someone gets seasick or has dietary needs?","answer":"Tell us ahead of time and we will plan around both. The protected waters of the British Virgin Islands are some of the calmest cruising grounds anywhere, and most passages are under two hours. The chef plans the menu around allergies, diets and preferences."},{"question":"How do we get to the boat?","answer":"Fly into Beef Island airport (EIS) on Tortola; Village Cay Marina in Road Town is about 20 minutes away. Check-in is at 12:00 noon."},{"question":"Can we sleep aboard before or after the charter?","answer":"No. Sleeping aboard outside the charter dates is not available."}]}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/availability":{"get":{"tags":["plan and price"],"summary":"Get Availability","description":"Whether the yacht is free for these dates: \"available\", \"available on request\" or \"unavailable\".\n\nUnavailable answers include the nearest open dates. Every answer says what to do next.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_availability_v1_availability_get","parameters":[{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Check-in day, YYYY-MM-DD. Today or later, within the booking window (see /v1/discover/charter-rules).","title":"Start Date"},"description":"Check-in day, YYYY-MM-DD. Today or later, within the booking window (see /v1/discover/charter-rules).","example":"2027-01-06"},{"name":"nights","in":"query","required":true,"schema":{"type":"integer","description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","title":"Nights"},"description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","example":7}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilityResponse"},"example":{"start_date":"2027-01-06","nights":7,"check_out_date":"2027-01-13","status":"available","reason":"Those dates are free.","next_step":"To book, email info@allegra-yacht.com with these dates, guests and route.","nearest_open_dates":null}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"400":{"description":"Invalid request: the error names the parameter and how to fix it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/nearest-dates":{"get":{"tags":["plan and price"],"summary":"Get Nearest Dates","description":"The nearest open start dates for the same number of nights, before and after the requested one.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_nearest_dates_v1_nearest_dates_get","parameters":[{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Check-in day, YYYY-MM-DD. Today or later, within the booking window (see /v1/discover/charter-rules).","title":"Start Date"},"description":"Check-in day, YYYY-MM-DD. Today or later, within the booking window (see /v1/discover/charter-rules).","example":"2027-01-06"},{"name":"nights","in":"query","required":true,"schema":{"type":"integer","description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","title":"Nights"},"description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","example":7}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NearestDatesResponse"},"example":{"start_date":"2027-01-06","nights":7,"nearest_open_dates":{"earlier":["2026-12-02","2026-12-01"],"later":["2027-01-07","2027-01-08","2027-01-09"],"earlier_on_request":["2027-01-05","2027-01-04","2026-12-04"],"later_on_request":[]}}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"400":{"description":"Invalid request: the error names the parameter and how to fix it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/open-dates":{"get":{"tags":["plan and price"],"summary":"Get Open Dates","description":"Every check-in day in a range at which the yacht is free for these nights, each with its total price\nin US cents for the chosen payment method.\n\nFor questions like \"what's open in January?\": one call instead of a check and a quote per day. Days\nthat are \"available on request\" are included and marked. Free days the price rules refuse for the\nchosen dining plan or destination (holiday charters) are left out, and `notes` says why. Then get\nthe itemized quote for the day the client picks.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_open_dates_v1_open_dates_get","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date","description":"First check-in day to look at, YYYY-MM-DD. Today or later.","title":"From"},"description":"First check-in day to look at, YYYY-MM-DD. Today or later.","example":"2027-01-06"},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Last check-in day to look at, YYYY-MM-DD: on or after `from`, at most 92 days after it, and within the booking window (see /v1/discover/charter-rules).","title":"To"},"description":"Last check-in day to look at, YYYY-MM-DD: on or after `from`, at most 92 days after it, and within the booking window (see /v1/discover/charter-rules).","example":"2027-01-12"},{"name":"nights","in":"query","required":true,"schema":{"type":"integer","description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","title":"Nights"},"description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","example":7},{"name":"guests","in":"query","required":true,"schema":{"type":"integer","description":"Number of guests; see /v1/discover/boat for the most allowed.","title":"Guests"},"description":"Number of guests; see /v1/discover/boat for the most allowed.","example":4},{"name":"payment_method","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PaymentMethod","description":"How the client will pay: \"credit card\" or \"bank\" (bank transfer). Prices differ; the method applies to every payment of a booking."},"description":"How the client will pay: \"credit card\" or \"bank\" (bank transfer). Prices differ; the method applies to every payment of a booking.","example":"bank"},{"name":"dining_plan","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Dining plan id or name (see /v1/discover/boat); default: the yacht's standard plan.","title":"Dining Plan"},"description":"Dining plan id or name (see /v1/discover/boat); default: the yacht's standard plan.","example":"full-board"},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Destination id or name (see /v1/discover/destinations); default: the home waters.","title":"Destination"},"description":"Destination id or name (see /v1/discover/destinations); default: the home waters.","example":"bvi"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenDatesResponse"},"example":{"from":"2027-01-06","to":"2027-01-12","nights":7,"guests":4,"payment_method":"bank","dining_plan":"full-board","destination":"bvi","currency":"USD","open_dates":[{"start_date":"2027-01-06","check_out_date":"2027-01-13","status":"available","total_cents":3300000,"holiday":null},{"start_date":"2027-01-07","check_out_date":"2027-01-14","status":"available","total_cents":3300000,"holiday":null},{"start_date":"2027-01-08","check_out_date":"2027-01-15","status":"available","total_cents":3300000,"holiday":null},{"start_date":"2027-01-09","check_out_date":"2027-01-16","status":"available","total_cents":3300000,"holiday":null},{"start_date":"2027-01-10","check_out_date":"2027-01-17","status":"available","total_cents":3300000,"holiday":null},{"start_date":"2027-01-11","check_out_date":"2027-01-18","status":"available","total_cents":3300000,"holiday":null},{"start_date":"2027-01-12","check_out_date":"2027-01-19","status":"available","total_cents":3300000,"holiday":null}],"notes":[],"next_step":"Ask the client which date they prefer, then get its itemized quote and next step from /v1/quote."}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"400":{"description":"Invalid request: the error names the parameter and how to fix it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}},"/v1/quote":{"get":{"tags":["plan and price"],"summary":"Get Quote","description":"An itemized price in US cents for the chosen payment method, with the payment schedule if booked today.\n\nDates that are not free still get a quote, flagged, with the nearest open dates. A quote is not a\nreservation and does not hold the dates. Every quote names the seller, the company the client would\nbook with and pay, and repeats the key terms of a booking, such as cancellation and refunds.\n\nTool class: Read. Side effects: none. It only retrieves information: it books nothing, holds no dates, takes no payment and sends nothing.","operationId":"get_quote_v1_quote_get","parameters":[{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Check-in day, YYYY-MM-DD. Today or later, within the booking window (see /v1/discover/charter-rules).","title":"Start Date"},"description":"Check-in day, YYYY-MM-DD. Today or later, within the booking window (see /v1/discover/charter-rules).","example":"2027-01-06"},{"name":"nights","in":"query","required":true,"schema":{"type":"integer","description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","title":"Nights"},"description":"Number of nights; see /v1/discover/charter-rules for the allowed range.","example":7},{"name":"guests","in":"query","required":true,"schema":{"type":"integer","description":"Number of guests; see /v1/discover/boat for the most allowed.","title":"Guests"},"description":"Number of guests; see /v1/discover/boat for the most allowed.","example":4},{"name":"payment_method","in":"query","required":true,"schema":{"$ref":"#/components/schemas/PaymentMethod","description":"How the client will pay: \"credit card\" or \"bank\" (bank transfer). Prices differ; the method applies to every payment of a booking."},"description":"How the client will pay: \"credit card\" or \"bank\" (bank transfer). Prices differ; the method applies to every payment of a booking.","example":"bank"},{"name":"dining_plan","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Dining plan id or name (see /v1/discover/boat); default: the yacht's standard plan.","title":"Dining Plan"},"description":"Dining plan id or name (see /v1/discover/boat); default: the yacht's standard plan.","example":"full-board"},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Destination id or name (see /v1/discover/destinations); default: the home waters.","title":"Destination"},"description":"Destination id or name (see /v1/discover/destinations); default: the home waters.","example":"bvi"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteResponse"},"example":{"start_date":"2027-01-06","nights":7,"check_out_date":"2027-01-13","guests":4,"dining_plan":"full-board","destination":"bvi","payment_method":"bank","currency":"USD","holiday":null,"lines":[{"kind":"base","label":"7 nights, 4 guests","amount_cents":3300000}],"total_cents":3300000,"discount_note":"Includes discount for direct booking: $990 off the card price of $33,990","payment_schedule":[{"label":"Deposit (25%)","amount_cents":825000,"due":"at booking","due_date":null},{"label":"Second payment (25%)","amount_cents":825000,"due":"within 7 days of the contract being signed by both sides","due_date":null},{"label":"Final payment (50%)","amount_cents":1650000,"due":"by 2026-12-16, 21 days before boarding","due_date":"2026-12-16"}],"availability":{"status":"available","reason":"Those dates are free."},"nearest_open_dates":null,"next_step":"To book, email info@allegra-yacht.com with these dates, guests and route.","terms":"Prices as of 2026-10-09; not a reservation; dates are not held.","seller":"Resolute Wind LLC","key_terms":[{"id":"payment-schedule","title":"Payment schedule","text":"Booking 45 or more days before boarding: 25% at booking, 25% within 7 days of the charter contract being signed by both sides, and the final 50% no later than 21 days before boarding. Booking less than 45 days before boarding: 100% at booking. Dates are held only once the first payment is received; if two clients pay for the same dates, the first payment received wins and the other is refunded in full."},{"id":"contract","title":"Charter contract","text":"Every charter has a written charter contract, plus a charter waiver. For bookings 45 or more days out, the contract is sent within 7 days of the deposit and is signed within 10 days of being sent. For later bookings it is sent as fast as possible and signed within 3 days. Where the signed contract differs from these policies, the contract wins."},{"id":"cancellation","title":"Cancellation and refunds","text":"Before the contract is signed, you can cancel for a full refund. After it is signed, cancellation requests go to the owner, and any refund is at the owner's discretion, in line with the contract. If a deadline is missed and the client cannot be reached, the booking may be cancelled and 25% of the charter price kept. If the owner cancels, you get a full refund. Refunds are made by hand, to the way you paid. Trip cancellation insurance is recommended."},{"id":"tips","title":"Crew tips","text":"Crew tips are not included and are not paid through this service. They are customary at 15 to 20% of the charter fee, at your discretion."}]}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"400":{"description":"Invalid request: the error names the parameter and how to fix it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}}}},"401":{"description":"The API key is not valid (only when an `Authorization` header is sent; without one, calls are anonymous).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"WWW-Authenticate":{"description":"`Bearer`: send a valid partner key, or no `Authorization` header at all.","schema":{"type":"string"}}}},"429":{"description":"Too many requests: wait the seconds in `Retry-After`, then try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Request-ID":{"description":"This request's id; error answers repeat it as `request_id`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}}}}},"x-tool-class":"read","security":[{},{"partnerKey":[]}]}}},"components":{"schemas":{"AvailabilityResponse":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Check-in day, YYYY-MM-DD."},"nights":{"type":"integer","title":"Nights"},"check_out_date":{"type":"string","title":"Check Out Date","description":"Check-out day, YYYY-MM-DD."},"status":{"type":"string","title":"Status","description":"\"available\"; \"available on request\" (free, but close to another charter, so the owner must confirm); or \"unavailable\"."},"reason":{"type":"string","title":"Reason","description":"Why, in plain English. Never says who or what holds the dates."},"next_step":{"type":"string","title":"Next Step","description":"What the client can do next, in plain English."},"nearest_open_dates":{"anyOf":[{"$ref":"#/components/schemas/NearestDates"},{"type":"null"}],"description":"Only when the dates are unavailable."}},"type":"object","required":["start_date","nights","check_out_date","status","reason","next_step"],"title":"AvailabilityResponse","description":"Whether the yacht is free for a charter, why, and what to do next."},"BoatResponse":{"properties":{"boat_id":{"type":"string","title":"Boat Id","description":"Identifier of this yacht in the API."},"name":{"type":"string","title":"Name"},"model":{"type":"string","title":"Model"},"builder":{"type":"string","title":"Builder"},"year":{"type":"integer","title":"Year","description":"Year the yacht is marketed as."},"length":{"type":"string","title":"Length"},"beam":{"type":"string","title":"Beam"},"draft":{"type":"string","title":"Draft"},"description":{"type":"string","title":"Description","description":"A short description to read to the client."},"cabins":{"type":"string","title":"Cabins"},"crew":{"type":"string","title":"Crew"},"max_guests":{"type":"integer","title":"Max Guests","description":"Most guests aboard a charter."},"amenities":{"items":{"type":"string"},"type":"array","title":"Amenities"},"included":{"items":{"type":"string"},"type":"array","title":"Included","description":"What the charter price includes."},"not_included":{"items":{"type":"string"},"type":"array","title":"Not Included","description":"What the charter price does not include."},"water_toys":{"items":{"type":"string"},"type":"array","title":"Water Toys"},"photos":{"items":{"$ref":"#/components/schemas/Photo"},"type":"array","title":"Photos"},"seller":{"type":"string","title":"Seller","description":"The company the client books with and pays: the yacht's owner company."},"contact_email":{"type":"string","title":"Contact Email","description":"Where the client can write to the owner's team."}},"type":"object","required":["boat_id","name","model","builder","year","length","beam","draft","description","cabins","crew","max_guests","amenities","included","not_included","water_toys","photos","seller","contact_email"],"title":"BoatResponse","description":"The yacht: specifications, cabins, crew, amenities, what is included, photos."},"CharterRulesResponse":{"properties":{"min_nights":{"type":"integer","title":"Min Nights"},"max_nights":{"type":"integer","title":"Max Nights"},"typical_nights":{"type":"integer","title":"Typical Nights"},"start_days":{"type":"string","title":"Start Days"},"check_in_time":{"type":"string","title":"Check In Time","description":"Local time, \"HH:MM\"."},"check_out_time":{"type":"string","title":"Check Out Time","description":"Local time, \"HH:MM\"."},"utc_offset":{"type":"string","title":"Utc Offset","description":"Local time as an offset from UTC."},"preferred_gap_hours":{"type":"integer","title":"Preferred Gap Hours","description":"Preferred free time between charters; dates closer to another charter are \"available on request\"."},"booking_window_years":{"type":"integer","title":"Booking Window Years","description":"How far ahead a charter can start."},"max_guests":{"type":"integer","title":"Max Guests"},"off_season":{"$ref":"#/components/schemas/OffSeason"},"summary":{"items":{"type":"string"},"type":"array","title":"Summary","description":"The same rules in plain English, ready to read to a client."}},"type":"object","required":["min_nights","max_nights","typical_nights","start_days","check_in_time","check_out_time","utc_offset","preferred_gap_hours","booking_window_years","max_guests","off_season","summary"],"title":"CharterRulesResponse","description":"Charter length, start days, check-in and check-out, the gap between charters, how far ahead."},"DestinationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Use this value as `destination` when asking for a quote."},"name":{"type":"string","title":"Name"},"home":{"type":"boolean","title":"Home","description":"True for the home cruising area, which has no relocation charge."},"relocation_charge_bank_cents":{"type":"integer","title":"Relocation Charge Bank Cents","description":"Relocation charge when paying by bank transfer, in US cents."},"relocation_charge_card_cents":{"type":"integer","title":"Relocation Charge Card Cents","description":"Relocation charge when paying by credit card, in US cents."},"restrictions":{"items":{"type":"string"},"type":"array","title":"Restrictions","description":"Rules that apply to this destination, in plain English."}},"type":"object","required":["id","name","home","relocation_charge_bank_cents","relocation_charge_card_cents","restrictions"],"title":"DestinationResponse","description":"A cruising area a charter can be based in, with its relocation charge."},"DestinationsResponse":{"properties":{"destinations":{"items":{"$ref":"#/components/schemas/DestinationResponse"},"type":"array","title":"Destinations"}},"type":"object","required":["destinations"],"title":"DestinationsResponse","description":"Every cruising area, with its relocation charge and restrictions."},"ErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable reason, e.g. `invalid_nights`."},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field","description":"The request parameter at fault, if any."},"message":{"type":"string","title":"Message","description":"What is wrong and how to fix it, in plain English."},"retryable":{"type":"boolean","title":"Retryable","description":"True only when the same request can succeed later, unchanged: when rate limited (HTTP 429) or on a failure on our side (HTTP 5xx)."},"request_id":{"type":"string","title":"Request Id","description":"This request's id, also in the `X-Request-ID` header. Quote it when reporting a problem."},"next_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Step","description":"Only on some errors: what the client can do instead, in plain English."}},"type":"object","required":["code","field","message","retryable","request_id"],"title":"ErrorDetail"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ErrorDetail"}},"type":"object","required":["error"],"title":"ErrorResponse","description":"Every error has this shape."},"Installment":{"properties":{"label":{"type":"string","title":"Label","description":"e.g. \"Deposit (25%)\"."},"amount_cents":{"type":"integer","title":"Amount Cents","description":"US cents."},"due":{"type":"string","title":"Due","description":"When it is due, in plain English, e.g. \"at booking\"."},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date","description":"YYYY-MM-DD, when the payment has a fixed date."}},"type":"object","required":["label","amount_cents","due"],"title":"Installment"},"ItineraryResponse":{"properties":{"home_base":{"type":"string","title":"Home Base","description":"Where every charter starts and ends, unless relocated."},"standard_route":{"type":"string","title":"Standard Route"},"seasons":{"items":{"$ref":"#/components/schemas/Season"},"type":"array","title":"Seasons"},"off_season":{"$ref":"#/components/schemas/OffSeason"},"utc_offset":{"type":"string","title":"Utc Offset","description":"Local time of the home base as an offset from UTC, e.g. \"-04:00\"."}},"type":"object","required":["home_base","standard_route","seasons","off_season","utc_offset"],"title":"ItineraryResponse","description":"Where the yacht is based and sails, and its seasons."},"NearestDates":{"properties":{"earlier":{"items":{"type":"string"},"type":"array","title":"Earlier","description":"Up to 3 fully available start dates before the requested one."},"later":{"items":{"type":"string"},"type":"array","title":"Later","description":"Up to 3 fully available start dates after the requested one."},"earlier_on_request":{"items":{"type":"string"},"type":"array","title":"Earlier On Request","description":"\"Available on request\" start dates nearer than the first earlier available one."},"later_on_request":{"items":{"type":"string"},"type":"array","title":"Later On Request","description":"\"Available on request\" start dates nearer than the first later available one."}},"type":"object","required":["earlier","later","earlier_on_request","later_on_request"],"title":"NearestDates","description":"Other start dates for the same number of nights, nearest first, all inside the booking window."},"NearestDatesResponse":{"properties":{"start_date":{"type":"string","title":"Start Date"},"nights":{"type":"integer","title":"Nights"},"nearest_open_dates":{"$ref":"#/components/schemas/NearestDates"}},"type":"object","required":["start_date","nights","nearest_open_dates"],"title":"NearestDatesResponse","description":"The nearest open start dates around a requested one."},"OffSeason":{"properties":{"start":{"type":"string","title":"Start","description":"First day with no charters every year, as \"MM-DD\"."},"end":{"type":"string","title":"End","description":"Last day with no charters every year, as \"MM-DD\"."},"description":{"type":"string","title":"Description"}},"type":"object","required":["start","end","description"],"title":"OffSeason"},"OpenDate":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Check-in day, YYYY-MM-DD."},"check_out_date":{"type":"string","title":"Check Out Date","description":"Check-out day, YYYY-MM-DD."},"status":{"type":"string","title":"Status","description":"\"available\", or \"available on request\" (free, but close to another charter, so the owner must confirm)."},"total_cents":{"type":"integer","title":"Total Cents","description":"Total price in US cents for the chosen payment method, as a quote gives it."},"holiday":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holiday","description":"Name of the holiday price applied, if any."}},"type":"object","required":["start_date","check_out_date","status","total_cents"],"title":"OpenDate"},"OpenDatesResponse":{"properties":{"from":{"type":"string","title":"From","description":"First start date searched, YYYY-MM-DD."},"to":{"type":"string","title":"To","description":"Last start date searched, YYYY-MM-DD."},"nights":{"type":"integer","title":"Nights"},"guests":{"type":"integer","title":"Guests"},"payment_method":{"type":"string","title":"Payment Method","description":"\"credit card\" or \"bank\" (bank transfer)."},"dining_plan":{"type":"string","title":"Dining Plan","description":"Dining plan id used for the prices."},"destination":{"type":"string","title":"Destination","description":"Destination id used for the prices."},"currency":{"type":"string","title":"Currency","description":"Always USD."},"open_dates":{"items":{"$ref":"#/components/schemas/OpenDate"},"type":"array","title":"Open Dates","description":"The open start dates, earliest first; empty if there are none."},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","description":"Why free dates were left out (holiday rules), in plain English."},"next_step":{"type":"string","title":"Next Step","description":"What to do next, in plain English."}},"type":"object","required":["from","to","nights","guests","payment_method","dining_plan","destination","currency","open_dates","notes","next_step"],"title":"OpenDatesResponse","description":"Every open start date in a range, each with its total price for these inputs."},"PaymentMethod":{"type":"string","enum":["credit card","bank"],"title":"PaymentMethod"},"Photo":{"properties":{"url":{"type":"string","title":"Url","description":"Absolute https link to the photo."},"caption":{"type":"string","title":"Caption","description":"What the photo shows."}},"type":"object","required":["url","caption"],"title":"Photo"},"PoliciesResponse":{"properties":{"policies":{"items":{"$ref":"#/components/schemas/Policy"},"type":"array","title":"Policies"}},"type":"object","required":["policies"],"title":"PoliciesResponse","description":"Prices by payment method, payment schedule, contract, cancellation and refunds, deadlines."},"Policy":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"text":{"type":"string","title":"Text"}},"type":"object","required":["id","title","text"],"title":"Policy"},"PriceLine":{"properties":{"kind":{"type":"string","title":"Kind","description":"\"base\", \"holiday\", \"dining\" or \"relocation\"."},"label":{"type":"string","title":"Label","description":"What the line is, in plain English."},"amount_cents":{"type":"integer","title":"Amount Cents","description":"US cents at the chosen payment method's price; negative for a discount."}},"type":"object","required":["kind","label","amount_cents"],"title":"PriceLine"},"Question":{"properties":{"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"}},"type":"object","required":["question","answer"],"title":"Question"},"QuestionsResponse":{"properties":{"questions":{"items":{"$ref":"#/components/schemas/Question"},"type":"array","title":"Questions"}},"type":"object","required":["questions"],"title":"QuestionsResponse","description":"Answers to common questions, written and approved by the owner."},"QuoteAvailability":{"properties":{"status":{"type":"string","title":"Status","description":"\"available\"; \"available on request\" (free, but close to another charter, so the owner must confirm); or \"unavailable\"."},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["status","reason"],"title":"QuoteAvailability"},"QuoteResponse":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Check-in day, YYYY-MM-DD."},"nights":{"type":"integer","title":"Nights"},"check_out_date":{"type":"string","title":"Check Out Date","description":"Check-out day, YYYY-MM-DD."},"guests":{"type":"integer","title":"Guests"},"dining_plan":{"type":"string","title":"Dining Plan","description":"Dining plan id used for the price."},"destination":{"type":"string","title":"Destination","description":"Destination id used for the price."},"payment_method":{"type":"string","title":"Payment Method","description":"\"credit card\" or \"bank\" (bank transfer)."},"currency":{"type":"string","title":"Currency","description":"Always USD."},"holiday":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holiday","description":"Name of the holiday price applied, if any."},"lines":{"items":{"$ref":"#/components/schemas/PriceLine"},"type":"array","title":"Lines","description":"The price, line by line; the `amount_cents` add up to `total_cents`."},"total_cents":{"type":"integer","title":"Total Cents","description":"Total price in US cents for the chosen payment method."},"discount_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount Note","description":"For bank transfer: the discount for direct booking against the card price."},"payment_schedule":{"items":{"$ref":"#/components/schemas/Installment"},"type":"array","title":"Payment Schedule","description":"When each payment is due, if booked today."},"availability":{"$ref":"#/components/schemas/QuoteAvailability"},"nearest_open_dates":{"anyOf":[{"$ref":"#/components/schemas/NearestDates"},{"type":"null"}],"description":"Only when the dates are unavailable."},"next_step":{"type":"string","title":"Next Step","description":"What the client can do next, in plain English."},"terms":{"type":"string","title":"Terms","description":"What this quote is and is not."},"seller":{"type":"string","title":"Seller","description":"The company the client would book with and pay: the yacht's owner company."},"key_terms":{"items":{"$ref":"#/components/schemas/Policy"},"type":"array","title":"Key Terms","description":"The terms that come with a booking (for example the payment schedule, the contract, and cancellation and refunds), each as /v1/discover/policies gives it, so the client sees them with the price before deciding."}},"type":"object","required":["start_date","nights","check_out_date","guests","dining_plan","destination","payment_method","currency","lines","total_cents","payment_schedule","availability","next_step","terms","seller","key_terms"],"title":"QuoteResponse","description":"An itemized price in US cents for the chosen payment method, with its payment schedule."},"Season":{"properties":{"name":{"type":"string","title":"Name"},"start":{"type":"string","title":"Start","description":"First day of the season every year, as \"MM-DD\"."},"end":{"type":"string","title":"End","description":"Last day of the season every year, as \"MM-DD\"."},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","start","end","description"],"title":"Season"}},"securitySchemes":{"partnerKey":{"type":"http","scheme":"bearer","description":"For partners: the API key the owner gave you, sent as `Authorization: Bearer <key>`. Optional: without it, calls are anonymous and limited per address."}}},"x-error-example":{"error":{"code":"invalid_nights","field":"nights","message":"Charters are 5 to 7 nights.","retryable":false,"request_id":"req_5f0c3e9a2b7d4c18e6a1f0b9"}}}