{"openapi":"3.0.3","info":{"title":"External API Documentation (Implementation Removed)","description":"API documentation preserved for reference. Implementation has been removed.","version":"1.1.0"},"servers":[{"url":"https://external-api.holidu.com"}],"paths":{"/search":{"post":{"operationId":"search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pageIndex":{"type":"integer","minimum":0,"maximum":10000,"description":"Zero-based page index"},"pageSize":{"type":"integer","minimum":1,"maximum":50,"description":"Number of results per page"},"searchTerm":{"type":"string"},"locationBoundingBox":{"type":"object","properties":{"neLat":{"type":"number","minimum":-90,"maximum":90},"neLng":{"type":"number","minimum":-180,"maximum":180},"swLat":{"type":"number","minimum":-90,"maximum":90},"swLng":{"type":"number","minimum":-180,"maximum":180}},"required":["neLat","neLng","swLat","swLng"],"additionalProperties":false,"description":"Bounding box of the search location. Overrides the searchTerm parameter"},"checkin":{"type":"string","format":"date","description":"Check-in date in ISO format YYYY-MM-DD"},"checkout":{"type":"string","format":"date","description":"Check-out date in ISO format YYYY-MM-DD"},"adults":{"type":"integer","minimum":1,"maximum":50,"description":"Number of adult guests"},"children":{"type":"integer","minimum":0,"maximum":50,"description":"Number of child guests"},"childrenAges":{"type":"array","items":{"type":"integer","minimum":0,"maximum":17},"minItems":1,"maxItems":50,"description":"Ages of child guests, defaults to 10 if not specified"},"bedrooms":{"type":"integer","minimum":1,"description":"Number of bedrooms"},"locale":{"type":"string","pattern":"^[a-z]{2}-[A-Z]{2}$","description":"Locale code in format ISO 639-1 + ISO 3166-1 alpha-2, e.g. \"en-US\""},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"propertyTypes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"description":"List of property types"},"propertyIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"minItems":1,"maxItems":50,"description":"List of property IDs to search for specifically (max 50)"},"facilities":{"type":"array","items":{"type":"string"},"description":"List of facilities"},"extras":{"type":"array","items":{"type":"string","enum":["description","photos","facilities"]},"description":"Extra fields to include in the response. Supported values: description, photos, facilities"},"salesChannelId":{"type":"string","minLength":1,"maxLength":80,"description":"Only for special cases, consult Holidu"},"domainId":{"type":"integer","minimum":1,"maximum":99999,"description":"Only for special cases, consult Holidu"}},"required":["adults","children","locale","currency"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"description":{"type":"string","nullable":true,"description":"Short text description of the offer"},"photos":{"type":"array","items":{"type":"object","properties":{"thumbnail":{"type":"string","format":"uri"},"medium":{"type":"string","format":"uri"},"large":{"type":"string","format":"uri"}},"required":["thumbnail","medium","large"],"additionalProperties":false},"nullable":true},"url":{"type":"string"},"area":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","enum":["UNIT_SM","UNIT_SF"],"description":"Unit of the area. Either UNIT_SM (square meters) of UNIT_SF (square feet)"}},"required":["value","unit"],"additionalProperties":false,"nullable":true},"bedroomCount":{"type":"integer","nullable":true},"guestCount":{"type":"integer","description":"Number of guests the offer can accommodate"},"title":{"type":"string"},"propertyType":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","minLength":1,"maxLength":80}},"required":["id","title"],"additionalProperties":false},"facilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","minLength":2,"maxLength":80},"group":{"type":"string"}},"required":["id","title","group"],"additionalProperties":false},"nullable":true},"petsAllowed":{"type":"boolean"},"location":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":350},"distance":{"type":"string","nullable":true,"description":"Distance in meters to the center of search region if specified, otherwise null"},"postalCode":{"type":"string","nullable":true,"description":"Postal code, can be null if not shared by the provider"},"city":{"type":"string","nullable":true,"description":"City name, can be null if not shared by the provider"},"coordinates":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false}},"required":["name","distance","postalCode","city","coordinates"],"additionalProperties":false,"nullable":true},"price":{"anyOf":[{"type":"object","properties":{"currency":{"type":"string","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"daily":{"type":"number"},"total":{"type":"number"},"nights":{"type":"integer"},"discountAmount":{"type":"number","minimum":0,"nullable":true,"description":"Absolute discount amount in given currency"},"discountPercentage":{"type":"number","nullable":true},"totalBeforeDiscount":{"type":"number","nullable":true},"dailyBeforeDiscount":{"type":"number","nullable":true}},"required":["currency","daily","total","nights","discountAmount","discountPercentage","totalBeforeDiscount","dailyBeforeDiscount"],"additionalProperties":false,"description":"Price information for the offer for a given travel dates"},{"type":"object","properties":{"currency":{"type":"string","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"daily":{"type":"number"}},"required":["currency","daily"],"additionalProperties":false,"description":"Minimal daily price for a property, doesn't depend on travel dates"}],"description":"Price information for the offer, either for a given travel dates or as a starting price"},"cancellationPolicy":{"type":"object","properties":{"type":{"type":"string","enum":["FREE_CANCELLATION","LIGHT_CANCELLATION"]}},"required":["type"],"additionalProperties":false,"nullable":true},"rating":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":10},"count":{"type":"integer","minimum":0}},"required":["value","count"],"additionalProperties":false,"nullable":true}},"required":["id","description","photos","url","area","bedroomCount","guestCount","title","propertyType","facilities","petsAllowed","location","price","cancellationPolicy","rating"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"apartmentId":{"type":"string"},"code":{"type":"number"},"message":{"type":"string"}},"required":["apartmentId","code","message"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"default":{"$ref":"#/components/responses/error"}}}},"/details":{"post":{"operationId":"details","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"propertyIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"minItems":1,"maxItems":50,"description":"List of property IDs"},"locale":{"type":"string","pattern":"^[a-z]{2}-[A-Z]{2}$","description":"Locale code in format ISO 639-1 + ISO 3166-1 alpha-2, e.g. \"en-US\""},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"extras":{"type":"array","items":{"type":"string","enum":["description","photos","facilities","rooms","reviews","guestCardsAndCertificates"]},"description":"Extra fields to include in the response. Supported values: description, photos, facilities, rooms, reviews."},"domainId":{"type":"number","description":"Only for special cases, consult Holidu"},"salesChannelId":{"type":"string","description":"Sales channel identifier, required for filtering by sales channel"}},"required":["propertyIds","locale","currency"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"description":{"type":"string","nullable":true,"description":"Short text description of the offer"},"photos":{"type":"array","items":{"type":"object","properties":{"thumbnail":{"type":"string","format":"uri"},"medium":{"type":"string","format":"uri"},"large":{"type":"string","format":"uri"}},"required":["thumbnail","medium","large"],"additionalProperties":false},"nullable":true},"urlTemplate":{"type":"string","description":"RFC 6570 URI template to generate checkout page link with check-in, check-out and guest information. Date placeholders must be in ISO 8601 format."},"area":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","enum":["UNIT_SM","UNIT_SF"],"description":"Unit of the area. Either UNIT_SM (square meters) of UNIT_SF (square feet)"}},"required":["value","unit"],"additionalProperties":false,"nullable":true},"bedrooms":{"type":"integer","nullable":true},"bathrooms":{"type":"integer","nullable":true},"guests":{"type":"integer","minimum":1},"title":{"type":"string","minLength":2,"maxLength":250},"propertyType":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","maxLength":250,"nullable":true}},"required":["id","title"],"additionalProperties":false},"facilities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","minLength":2,"maxLength":80},"group":{"type":"string"}},"required":["id","title","group"],"additionalProperties":false},"nullable":true},"guestCardsAndCertificates":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"}},"required":["title","name"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false,"nullable":true},"petsAllowed":{"type":"boolean","nullable":true},"location":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":350},"postalCode":{"type":"string","nullable":true,"description":"Postal code, can be null if not shared by the provider"},"city":{"type":"string","nullable":true,"description":"City name, can be null if not shared by the provider"},"coordinates":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180}},"required":["lat","lng"],"additionalProperties":false}},"required":["name","postalCode","city","coordinates"],"additionalProperties":false,"nullable":true},"cancellationPolicy":{"type":"object","properties":{"type":{"type":"string","enum":["FREE_CANCELLATION","LIGHT_CANCELLATION"]}},"required":["type"],"additionalProperties":false,"nullable":true},"rating":{"type":"object","properties":{"value":{"type":"number","minimum":0,"maximum":10},"count":{"type":"integer","minimum":0}},"required":["value","count"],"additionalProperties":false,"nullable":true},"rooms":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["BEDROOM","LIVING_ROOM","BATHROOM","KITCHEN"]}},"required":["type"],"additionalProperties":false},"nullable":true},"rules":{"enum":["null"],"nullable":true,"description":"TODO: implement rules schema"},"pois":{"enum":["null"],"nullable":true,"description":"TODO: implement pois schema"},"reviews":{"type":"object","properties":{"averageRatings":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"rating":{"type":"number"}},"required":["category","rating"],"additionalProperties":false}},"reviewDetails":{"type":"array","items":{"type":"object","properties":{"publishedAt":{"type":"string"},"comment":{"type":"string"},"language":{"type":"string"}},"required":["publishedAt","comment","language"],"additionalProperties":false}}},"required":["averageRatings","reviewDetails"],"additionalProperties":false,"nullable":true},"price":{"type":"object","properties":{"currency":{"type":"string","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"daily":{"type":"number"}},"required":["currency","daily"],"additionalProperties":false,"description":"Minimal daily price for a property, doesn't depend on travel dates"},"instantBookable":{"type":"boolean"}},"required":["id","description","urlTemplate","area","bedrooms","bathrooms","guests","title","propertyType","petsAllowed","location","cancellationPolicy","rating","rooms","rules","pois","reviews","price","instantBookable"],"additionalProperties":false}},"errors":{"type":"array","items":{"type":"object","properties":{"propertyId":{"type":"string"},"code":{"type":"number"},"message":{"type":"string"}},"required":["propertyId","code","message"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"default":{"$ref":"#/components/responses/error"}}}},"/availabilities":{"post":{"operationId":"availabilities","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"propertyIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"minItems":1,"maxItems":200,"description":"List of property IDs"},"checkin":{"type":"string","format":"date","description":"Check-in date in ISO format YYYY-MM-DD"},"checkout":{"type":"string","format":"date","description":"Check-out date in ISO format YYYY-MM-DD"},"adults":{"type":"integer","minimum":1,"maximum":50,"description":"Number of adult guests"},"children":{"type":"integer","minimum":0,"maximum":50,"description":"Number of child guests"},"childrenAges":{"type":"array","items":{"type":"integer","minimum":0},"minItems":1,"maxItems":50,"description":"Ages of child guests"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"salesChannelId":{"type":"string","minLength":1,"maxLength":80,"description":"Only for special cases, consult Holidu"},"locale":{"type":"string","pattern":"^[a-z]{2}-[A-Z]{2}$","description":"Locale code in format ISO 639-1 + ISO 3166-1 alpha-2, e.g. \"en-US\""},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"Country code in ISO 3166-1 alpha-2 format"},"deviceType":{"type":"string","enum":["DESKTOP","MOBILE"],"description":"Device type, either \"DESKTOP\" or \"MOBILE\""}},"required":["propertyIds","checkin","checkout","adults","children","currency","locale","country"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"propertyId":{"type":"string","minLength":1},"isAvailable":{"type":"boolean"},"price":{"type":"object","properties":{"currency":{"type":"string","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"daily":{"type":"number"},"total":{"type":"number"},"nights":{"type":"integer"},"discountAmount":{"type":"number","minimum":0,"nullable":true,"description":"Absolute discount amount in given currency"},"discountPercentage":{"type":"number","nullable":true},"totalBeforeDiscount":{"type":"number","nullable":true},"dailyBeforeDiscount":{"type":"number","nullable":true}},"required":["currency","daily","total","nights","discountAmount","discountPercentage","totalBeforeDiscount","dailyBeforeDiscount"],"additionalProperties":false,"description":"Price for the given dates. Null if property is not available for the given dates.","nullable":true},"cancellationPolicy":{"type":"string","nullable":true,"description":"TODO: cancellation policy"}},"required":["propertyId","isAvailable","price"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"default":{"$ref":"#/components/responses/error"}}}},"/filters":{"post":{"operationId":"filters","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"searchTerm":{"type":"string"},"checkin":{"type":"string","format":"date","description":"Check-in date in ISO format YYYY-MM-DD"},"checkout":{"type":"string","format":"date","description":"Check-out date in ISO format YYYY-MM-DD"},"adults":{"type":"integer","minimum":1,"maximum":50,"description":"Number of adult guests"},"children":{"type":"integer","minimum":0,"maximum":50,"description":"Number of child guests"},"childrenAges":{"type":"array","items":{"type":"integer","minimum":0,"maximum":17},"minItems":1,"maxItems":50,"description":"Ages of child guests, defaults to 10 if not specified"},"bedrooms":{"type":"integer","minimum":1,"description":"Number of bedrooms"},"locale":{"type":"string","pattern":"^[a-z]{2}-[A-Z]{2}$","description":"Locale code in format ISO 639-1 + ISO 3166-1 alpha-2, e.g. \"en-US\""},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency code in ISO 4217 format, e.g. \"USD\""},"propertyTypes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"description":"List of property types"},"facilities":{"type":"array","items":{"type":"string"},"description":"List of facilities"},"salesChannelId":{"type":"string","minLength":1,"maxLength":80,"description":"Only for special cases, consult Holidu"}},"required":["adults","children","locale","currency"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1,"maxLength":160},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":160},"name":{"type":"string","minLength":1,"maxLength":160,"nullable":true}},"required":["value","name"],"additionalProperties":false}}},"required":["type","values"],"additionalProperties":false}}},"required":["filters"],"additionalProperties":false}}}},"default":{"$ref":"#/components/responses/error"}}}},"/changed":{"post":{"operationId":"changed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"changedSince":{"type":"string","format":"date-time","description":"Start of the time window (inclusive) in ISO-8601 format from which property changes are returned, e.g. 2024-10-01T14:48:00.000Z"},"changedUntil":{"type":"string","format":"date-time","description":"End of the time window (inclusive) in ISO-8601 format until which property changes are returned, e.g. 2024-10-01T16:00:00.000Z"},"domainId":{"type":"number","description":"Controls visibility of inventory, you should get the value from your TAM"}},"required":["changedSince","domainId"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"changedPropertyIds":{"type":"array","items":{"type":"string"},"description":"List of property IDs with data updated within the specified time window."}},"required":["changedPropertyIds"],"additionalProperties":false}}}},"default":{"$ref":"#/components/responses/error"}}}}},"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"responses":{"error":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false}}}}}}}