{"openapi":"3.1.0","info":{"title":"DayToGo API","version":"0.2.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/api/v1/destinations":{"get":{"summary":"List Destinations","operationId":"list_destinations_api_v1_destinations_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/destinations/{slug}/products":{"get":{"summary":"List Products","operationId":"list_products_api_v1_destinations__slug__products_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"departure_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Departure From"}},{"name":"departure_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Departure To"}},{"name":"duration_days_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Duration Days Min"}},{"name":"duration_days_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Duration Days Max"}},{"name":"price_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Max"}},{"name":"package_scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Package Scope"}},{"name":"activity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity"}},{"name":"age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Age"}},{"name":"shopping_count","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Shopping Count"}},{"name":"bookability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bookability"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}":{"get":{"summary":"Get Product","operationId":"get_product_api_v1_products__product_id__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}/offers":{"get":{"summary":"List Offers","operationId":"list_offers_api_v1_products__product_id__offers_get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Product Id"}},{"name":"departure_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Departure From"}},{"name":"available_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Available Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/compare":{"get":{"summary":"Compare","operationId":"compare_api_v1_compare_get","parameters":[{"name":"left_product_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Left Product Id"}},{"name":"right_product_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Right Product Id"}},{"name":"left_offer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Left Offer Id"}},{"name":"right_offer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Right Offer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ActivitySummary":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"inclusion":{"anyOf":[{"type":"string","enum":["included","optional","excluded","mentioned"]},{"type":"null"}],"title":"Inclusion"},"occurrence":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Occurrence"},"name_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Raw"},"venue_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Venue Raw"}},"type":"object","required":["id","slug","name"],"title":"ActivitySummary"},"AudienceSummary":{"properties":{"min_age":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Age"},"max_age":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Age"},"raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw"}},"type":"object","title":"AudienceSummary"},"AvailabilitySummary":{"properties":{"departure_status":{"anyOf":[{"type":"string","enum":["unknown","scheduled","likely","confirmed","cancelled","completed"]},{"type":"null"}],"title":"Departure Status"},"booking_status":{"anyOf":[{"type":"string","enum":["available","unavailable","inquiry_required","waitlist","closed","unknown"]},{"type":"null"}],"title":"Booking Status"},"booking_basis":{"anyOf":[{"type":"string","enum":["explicit_label","structured_metadata","verified_quantity","manual","none"]},{"type":"null"}],"title":"Booking Basis"},"bookability":{"anyOf":[{"type":"string","enum":["available","inquiry_required","unavailable","unknown"]},{"type":"null"}],"title":"Bookability"},"remaining_quantity":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Remaining Quantity"},"remaining_unit":{"anyOf":[{"type":"string","enum":["participant","seat","source_block","room","unknown"]},{"type":"null"}],"title":"Remaining Unit"},"freshness_status":{"anyOf":[{"type":"string","enum":["fresh","stale","expired","unknown"]},{"type":"null"}],"title":"Freshness Status"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observed At"},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Checked At"}},"type":"object","title":"AvailabilitySummary"},"CompareResponse":{"properties":{"left":{"$ref":"#/components/schemas/CompareSide"},"right":{"$ref":"#/components/schemas/CompareSide"}},"type":"object","required":["left","right"],"title":"CompareResponse"},"CompareSide":{"properties":{"product":{"$ref":"#/components/schemas/ProductCard"},"selected_offer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Offer Id"},"selection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Reason"}},"type":"object","required":["product"],"title":"CompareSide"},"ComponentSummary":{"properties":{"international_flight_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"International Flight Status"},"domestic_transport_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Domestic Transport Status"},"accommodation_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Accommodation Status"},"meals_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Meals Status"},"guide_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Guide Status"},"insurance_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Insurance Status"},"airport_transfer_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Airport Transfer Status"},"tips_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Tips Status"},"shopping_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Shopping Count"},"free_time_status":{"anyOf":[{"type":"string","enum":["included","excluded","optional","unknown"]},{"type":"null"}],"title":"Free Time Status"}},"type":"object","title":"ComponentSummary"},"DestinationAlias":{"properties":{"raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw"},"normalized":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Normalized"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},"type":"object","title":"DestinationAlias"},"DestinationCard":{"properties":{"destination_id":{"type":"string","title":"Destination Id"},"slug":{"type":"string","title":"Slug"},"canonical_name":{"type":"string","title":"Canonical Name"},"canonical_name_normalized":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Name Normalized"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"aliases":{"items":{"$ref":"#/components/schemas/DestinationAlias"},"type":"array","title":"Aliases"},"product_count":{"type":"integer","title":"Product Count","default":0},"fresh_available_product_count":{"type":"integer","title":"Fresh Available Product Count","default":0},"minimum_amount":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Minimum Amount"},"minimum_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Minimum Currency"},"minimum_price_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Minimum Price Scope"},"minimum_price_qualifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Minimum Price Qualifier"},"next_departure_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Next Departure Date"},"hero_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Url"}},"type":"object","required":["destination_id","slug","canonical_name"],"title":"DestinationCard"},"DestinationListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DestinationCard"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"DestinationListResponse"},"DestinationSummary":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"sequence":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Sequence"},"label_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Raw"}},"type":"object","required":["id","slug","name"],"title":"DestinationSummary"},"DurationRange":{"properties":{"raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw"},"min_days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Days"},"max_days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Days"},"days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Days"},"nights":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Nights"}},"type":"object","title":"DurationRange"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"OfferListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OfferSummary"},"type":"array","title":"Items"},"summary":{"$ref":"#/components/schemas/OfferListSummary"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"}},"type":"object","title":"OfferListResponse"},"OfferListSummary":{"properties":{"total":{"type":"integer","title":"Total","default":0},"available":{"type":"integer","title":"Available","default":0},"first_departure":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Departure"},"last_departure":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Departure"},"min_amount":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Min Amount"},"min_amount_display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Amount Display"},"summary_ko":{"type":"string","title":"Summary Ko","default":"조회된 회차가 없습니다."}},"type":"object","title":"OfferListSummary"},"OfferSummary":{"properties":{"id":{"type":"string","title":"Id"},"schedule_kind":{"type":"string","enum":["fixed_departure","validity_window","undated"],"title":"Schedule Kind"},"departure_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Departure Date"},"return_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Return Date"},"valid_from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Valid To"},"duration":{"$ref":"#/components/schemas/DurationRange"},"route":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Route"},"carrier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carrier"},"airport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Airport"},"visibility":{"type":"string","enum":["visible","hidden","quarantined"],"title":"Visibility"},"price":{"anyOf":[{"$ref":"#/components/schemas/PriceSummary"},{"type":"null"}]},"availability":{"anyOf":[{"$ref":"#/components/schemas/AvailabilitySummary"},{"type":"null"}]},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"As Of"},"freshness":{"anyOf":[{"type":"string","enum":["fresh","stale","expired","unknown"]},{"type":"null"}],"title":"Freshness"},"summary_ko":{"type":"string","title":"Summary Ko"}},"type":"object","required":["id","schedule_kind","visibility","summary_ko"],"title":"OfferSummary"},"OutlinkSummary":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"status":{"anyOf":[{"type":"string","enum":["active","redirected","temporarily_unavailable","broken","retired"]},{"type":"null"}],"title":"Status"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Checked At"}},"type":"object","title":"OutlinkSummary"},"PartySummary":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"PartySummary"},"PriceSummary":{"properties":{"amount":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"amount_display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Display"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"amount_status":{"anyOf":[{"type":"string","enum":["known","free","placeholder","planned","inquiry","not_published","unknown"]},{"type":"null"}],"title":"Amount Status"},"qualifier":{"anyOf":[{"type":"string","enum":["exact","from","minimum","maximum","promotion","unknown"]},{"type":"null"}],"title":"Qualifier"},"basis":{"anyOf":[{"type":"string","enum":["per_person","per_room","per_group","unknown"]},{"type":"null"}],"title":"Basis"},"price_kind":{"anyOf":[{"type":"string","enum":["base","single_supplement","member_discount","mandatory_fee","optional_activity","other"]},{"type":"null"}],"title":"Price Kind"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"observed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observed At"}},"type":"object","title":"PriceSummary"},"ProductCard":{"properties":{"id":{"type":"string","title":"Id"},"source":{"$ref":"#/components/schemas/PartySummary"},"operator":{"anyOf":[{"$ref":"#/components/schemas/PartySummary"},{"type":"null"}]},"seller":{"anyOf":[{"$ref":"#/components/schemas/PartySummary"},{"type":"null"}]},"platform":{"anyOf":[{"$ref":"#/components/schemas/PartySummary"},{"type":"null"}]},"title":{"type":"string","title":"Title"},"title_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Raw"},"package_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Package Scope"},"travel_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Travel Style"},"duration":{"$ref":"#/components/schemas/DurationRange"},"audience":{"$ref":"#/components/schemas/AudienceSummary"},"restriction_codes":{"items":{"type":"string"},"type":"array","title":"Restriction Codes"},"restrictions_raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Restrictions Raw"},"components":{"$ref":"#/components/schemas/ComponentSummary"},"destinations":{"items":{"$ref":"#/components/schemas/DestinationSummary"},"type":"array","title":"Destinations"},"activities":{"items":{"$ref":"#/components/schemas/ActivitySummary"},"type":"array","title":"Activities"},"selected_offer":{"anyOf":[{"$ref":"#/components/schemas/OfferSummary"},{"type":"null"}]},"selection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Reason"},"hero_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Url"},"outlink":{"anyOf":[{"$ref":"#/components/schemas/OutlinkSummary"},{"type":"null"}]},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Checked At"},"freshness":{"anyOf":[{"type":"string","enum":["fresh","stale","expired","unknown"]},{"type":"null"}],"title":"Freshness"},"notice":{"type":"string","title":"Notice"}},"type":"object","required":["id","source","title","notice"],"title":"ProductCard"},"ProductListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ProductCard"},"type":"array","title":"Items"},"facets":{"additionalProperties":true,"type":"object","title":"Facets"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"ProductListResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}