OPERA Cloud Distribution Book

OPERA Cloud Distribution Reservations API allows authorized channel partners to create and update reservations for any active property in Oracle Hospitality Distribution (regardless if the property is using OPERA Cloud, OPERA V5 / Suite8 / on-premise PMS Versions). Regardless of how the reservation is created, either directly in Oracle Hospitality Distribution API (reservation request operations) or already created and committed in another external system (reservation notification operations) the same API can be used. Compatible with OPERA Cloud release 26.2.0.0. 5 operation(s) documented; base path /book/v1. Harvested verbatim from Oracle's public hospitality-api-docs repository (Swagger 2.0, release 26.2.0.0).

OpenAPI Specification

oracle-hospitality-distribution-v1-book.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "title": "OPERA Cloud Distribution Book",
    "description": "OPERA Cloud Distribution Reservations API allows authorized channel partners to create and update reservations for any active property in Oracle Hospitality Distribution (regardless if the property is using OPERA Cloud, OPERA V5 / Suite8 / on-premise PMS Versions).<br/> Regardless of how the reservation is created, either directly in Oracle Hospitality Distribution API (reservation request operations) or already created and committed in another external system (reservation notification operations) the same API can be used.<br /><br /> Compatible with OPERA Cloud release 26.2.0.0<br /><br /><p> This document and all content within is available under the Universal Permissive License v 1.0 (https://oss.oracle.com/licenses/upl). Copyright (c) 2020, 2026 Oracle and/or its affiliates.</p>",
    "version": "26.2.0.0",
    "termsOfService": "https://www.oracle.com/legal/terms.html",
    "contact": {
      "email": "hospitality_apis_ww_grp@oracle.com"
    },
    "license": {
      "name": "UPL",
      "url": "https://opensource.org/licenses/upl"
    }
  },
  "basePath": "/book/v1",
  "schemes": [
    "https"
  ],
  "produces": [
    "application/json; charset=utf-8"
  ],
  "paths": {
    "/hotels/{hotelCode}/reservations": {
      "post": {
        "summary": "Create reservation",
        "operationId": "postReservation",
        "description": "<p>Create new reservation.</p> <p><strong>OperationId:</strong>postReservation</p>",
        "tags": [
          "Reservation Request"
        ],
        "consumes": [
          "application/json; charset=utf-8"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CreateRequestType"
            },
            "required": true
          },
          {
            "$ref": "#/parameters/hotelCodePath"
          },
          {
            "$ref": "#/parameters/x-tracing-key"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/channelCodeHeader"
          },
          {
            "$ref": "#/parameters/appKey"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          },
          {
            "$ref": "#/parameters/x-request-id"
          },
          {
            "$ref": "#/parameters/x-originating-application"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "schema": {
              "$ref": "#/definitions/Response"
            }
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        }
      }
    },
    "/hotels/{hotelCode}/reservations/{confirmationNum}": {
      "put": {
        "summary": "Modify reservation",
        "operationId": "putReservation",
        "description": "<p>Modify a reservation.</p> <p><strong>OperationId:</strong>putReservation</p>",
        "tags": [
          "Reservation Request"
        ],
        "consumes": [
          "application/json; charset=utf-8"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/ModifyRequestType"
            },
            "required": true
          },
          {
            "$ref": "#/parameters/hotelCodePath"
          },
          {
            "$ref": "#/parameters/confirmationNumberPath"
          },
          {
            "$ref": "#/parameters/x-tracing-key"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/channelCodeHeader"
          },
          {
            "$ref": "#/parameters/appKey"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          },
          {
            "$ref": "#/parameters/x-request-id"
          },
          {
            "$ref": "#/parameters/x-originating-application"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "schema": {
              "$ref": "#/definitions/Response"
            }
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        }
      },
      "get": {
        "summary": "Retrieve reservation",
        "operationId": "getReservation",
        "description": "<p>Get reservation.</p> <p><strong>OperationId:</strong>getReservation</p>",
        "tags": [
          "Reservation Request"
        ],
        "produces": [
          "application/json; charset=utf-8"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/hotelCodePath"
          },
          {
            "$ref": "#/parameters/x-tracing-key"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/channelCodeHeader"
          },
          {
            "$ref": "#/parameters/appKey"
          },
          {
            "$ref": "#/parameters/confirmationNumberPath"
          },
          {
            "$ref": "#/parameters/idExtension"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          },
          {
            "$ref": "#/parameters/x-request-id"
          },
          {
            "$ref": "#/parameters/x-originating-application"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "schema": {
              "$ref": "#/definitions/Response"
            }
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        }
      }
    },
    "/hotels/{hotelCode}/reservations/{confirmationNum}/cancellations": {
      "post": {
        "summary": "Cancel reservation",
        "operationId": "postCancelReservation",
        "description": "<p>Cancel a reservation.</p> <p><strong>OperationId:</strong>postCancelReservation</p>",
        "tags": [
          "Reservation Request"
        ],
        "consumes": [
          "application/json; charset=utf-8"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CancelRequestType"
            },
            "required": true
          },
          {
            "$ref": "#/parameters/hotelCodePath"
          },
          {
            "$ref": "#/parameters/confirmationNumberPath"
          },
          {
            "$ref": "#/parameters/x-tracing-key"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/channelCodeHeader"
          },
          {
            "$ref": "#/parameters/appKey"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          },
          {
            "$ref": "#/parameters/x-request-id"
          },
          {
            "$ref": "#/parameters/x-originating-application"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "schema": {
              "$ref": "#/definitions/CancelResponse"
            }
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        }
      }
    },
    "/hotels/{hotelCode}/reservations/{confirmationNum}/status": {
      "post": {
        "summary": "Commit/Ignore an onHold reservation",
        "operationId": "postOnHoldReservation",
        "description": "<p>Commit/Ignore an onHold reservation.</p> <p><strong>OperationId:</strong>postOnHoldReservation</p>",
        "tags": [
          "Reservation Request"
        ],
        "consumes": [
          "application/json; charset=utf-8"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/OnHoldRequestType"
            },
            "required": true
          },
          {
            "$ref": "#/parameters/hotelCodePath"
          },
          {
            "$ref": "#/parameters/confirmationNumberPath"
          },
          {
            "$ref": "#/parameters/x-tracing-key"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/channelCodeHeader"
          },
          {
            "$ref": "#/parameters/appKey"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          },
          {
            "$ref": "#/parameters/x-request-id"
          },
          {
            "$ref": "#/parameters/x-originating-application"
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "schema": {
              "$ref": "#/definitions/OnHoldResponse"
            }
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        }
      }
    }
  },
  "definitions": {
    "Response": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/BookingResponse"
      }
    },
    "BookingResponse": {
      "type": "object",
      "properties": {
        "reservationIds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReservationId"
          }
        },
        "lastModifyDateTime": {
          "type": "string",
          "format": "date-time",
          "description": "Date and time when this reservation was last updated, including time zone information. Timestamp as defined in ISO 8601 format and always be in the following format: YYYY-MM-DDThh:mm:ssZ (time is UTC).",
          "example": "2023-11-17T12:21:00Z"
        },
        "releaseTime": {
          "type": "string",
          "example": "22:30"
        },
        "roomStay": {
          "$ref": "#/definitions/RoomStayData"
        },
        "reservationGuests": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReservationGuestResponse"
          },
          "example": [
            {
              "profileInfo": {
                "profile": {
                  "customer": {
                    "personName": [
                      {
                        "surname": "Smith",
                        "givenName": "Mary",
                        "middleName": "Angel",
                        "nameTitle": "Mr and Mrs",
                        "nameType": "Primary",
                        "email": "customer@example.com",
                        "phoneNumber": "415.555.0100",
                        "address": {
                          "addressLine": [
                            "Street 7031 Columbia Gateway Dr."
                          ],
                          "cityName": "Columbia",
                          "postalCode": "21046",
                          "country": {
                            "code": "US"
                          },
                          "state": "MD"
                        }
                      }
                    ],
                    "language": "en-us"
                  },
                  "profileType": "Guest"
                }
              },
              "primary": true,
              "arrivalTransport": {
                "comments": "Comments Area",
                "type": "adf",
                "transportCode": "XXXX",
                "carrierCode": "XXXX",
                "stationCode": "XXXX",
                "dateTime": "2020-09-17T12:21:00.000Z",
                "transportationReqd": true
              },
              "departureTransport": {
                "comments": "Comments Area",
                "type": "adf",
                "transportCode": "XXXX",
                "carrierCode": "XXXX",
                "stationCode": "XXXX",
                "dateTime": "2020-09-17T12:21:00.000Z",
                "transportationReqd": true
              }
            },
            {
              "profileInfo": {
                "profileIdList": [
                  {
                    "id": "12345671",
                    "idContext": "Central",
                    "type": "TravelAgent"
                  }
                ],
                "profile": {
                  "profileType": "TravelAgent",
                  "companyInfo": {
                    "companyName": "Smith Travel1",
                    "email": "customer@example.com",
                    "phoneNumber": "415.555.0100",
                    "address": {
                      "addressLine": [
                        "Street 7031 Columbia Gateway Dr."
                      ],
                      "cityName": "Columbia",
                      "postalCode": "21046",
                      "country": {
                        "code": "US"
                      },
                      "state": "MD"
                    }
                  }
                }
              },
              "primary": true
            },
            {
              "profileInfo": {
                "profileIdList": [
                  {
                    "id": "12345672",
                    "idContext": "Central",
                    "type": "Source"
                  }
                ],
                "profile": {
                  "profileType": "Source",
                  "companyInfo": {
                    "companyName": "Smith Travel POS1",
                    "email": "customer@example.com",
                    "phoneNumber": "415.555.0100",
                    "address": {
                      "addressLine": [
                        "Street 7031 Columbia Gateway Dr."
                      ],
                      "cityName": "Columbia",
                      "postalCode": "21046",
                      "country": {
                        "code": "US"
                      },
                      "state": "MD"
                    }
                  }
                }
              },
              "primary": true
            },
            {
              "profileInfo": {
                "profileIdList": [
                  {
                    "id": "",
                    "idContext": "Central",
                    "type": "Company"
                  }
                ],
                "profile": {
                  "profileType": "Company",
                  "companyInfo": {
                    "companyName": "Oracle Corporation1",
                    "email": "customer@example.com",
                    "phoneNumber": "415.555.0100",
                    "address": {
                      "addressLine": [
                        "Street 7031 Columbia Gateway Dr."
                      ],
                      "cityName": "Columbia",
                      "postalCode": "21046",
                      "country": {
                        "code": "US"
                      },
                      "state": "MD"
                    }
                  }
                },
                "primary": true
              }
            }
          ]
        },
        "reservationPaymentMethods": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/PaymentMethod"
          }
        },
        "reservationMemberships": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReservationMembership"
          }
        },
        "reservationPolicies": {
          "$ref": "#/definitions/ReservationPoliciesResponse"
        },
        "hotelCode": {
          "description": "The unique identifier of the Property in Channel system.",
          "type": "string",
          "example": "XUSXXYY99"
        },
        "comments": {
          "type": "array",
          "description": "Comments associated to the Reservation",
          "items": {
            "type": "object",
            "properties": {
              "comment": {
                "$ref": "#/definitions/CommentType"
              }
            }
          }
        },
        "reservationStatus": {
          "type": "string",
          "enum": [
            "Reserved",
            "ReservedChanged",
            "Cancelled",
            "OnHold"
          ],
          "example": "Reserved"
        },
        "isSessionRequest": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Used to determine if the incoming reservation should be treated as a session reservation. By default this parameter is set to false."
        },
        "printRate": {
          "description": "Defines if the rate is printed on various correspondence. Possible values are 'true' or 'false'.",
          "type": "boolean",
          "example": false
        },
        "optedForCommunication": {
          "description": "Defines if guest agreed to receive correspondence from the property via email, phone, letter, etc. Possible values are 'true' or 'false'.",
          "type": "boolean",
          "example": false
        },
        "propertyInfo": {
          "type": "object",
          "$ref": "#/definitions/PropertyInfo"
        },
        "subChannelCode": {
          "type": "string",
          "description": "Sub Channel Code associated to reservation.",
          "example": "CH1"
        },
        "travelPurpose": {
          "description": "Indicates the purpose of Guest Stay",
          "type": "string",
          "enum": [
            "Leisure",
            "Business"
          ]
        }
      },
      "required": [
        "reservationIds",
        "roomStay",
        "reservationGuests",
        "reservationPaymentMethods"
      ]
    },
    "ReservationMembership": {
      "type": "object",
      "description": "Details of the membership added to the reservation.",
      "properties": {
        "membershipLevel": {
          "type": "string",
          "example": "ENTRY",
          "description": "Code that designates this membership level."
        },
        "membershipId": {
          "type": "string",
          "example": "O12345F",
          "description": "The guest's membership ID number"
        },
        "membershipType": {
          "type": "string",
          "example": "MF",
          "description": "The membership type belonging to the program the guest is enrolled with"
        }
      },
      "required": [
        "membershipId"
      ]
    },
    "PropertyInfo": {
      "type": "object",
      "description": "Property Info section data",
      "properties": {
        "hotelId": {
          "type": "string",
          "description": "The Hotel ID associated to the Hotel",
          "example": "Hotel1"
        },
        "hotelCode": {
          "type": "string",
          "description": "The unique identifier of the Property in Channel system.",
          "example": "XUSXXYY99"
        },
        "hotelName": {
          "type": "string",
          "description": "The name of the Hotel",
          "example": "The Palmyra Resort"
        },
        "chainCode": {
          "type": "string",
          "description": "Chain code associated with the Hotel",
          "example": "CHAIN1"
        },
        "address": {
          "description": "The alternates property adress",
          "$ref": "#/definitions/OfferAddress"
        },
        "propertyAmenities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OfferHotelAmenity"
          }
        },
        "transportations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Transportation"
          }
        },
        "direction": {
          "type": "object",
          "$ref": "#/definitions/Direction"
        },
        "location": {
          "type": "object",
          "$ref": "#/definitions/Location"
        },
        "generalInformation": {
          "type": "object",
          "description": "This section contain information about property check-in, check-out time",
          "$ref": "#/definitions/GeneralInformation"
        },
        "communications": {
          "type": "object",
          "$ref": "#/definitions/Communications"
        },
        "alternateProperties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OfferAlternateProperty"
          }
        },
        "pointOfInterest": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OfferPointOfInterest"
          }
        },
        "marketingMessage": {
          "type": "string",
          "description": "Property level marketing message.",
          "example": "Thank you for choosing our property."
        }
      }
    },
    "OfferHotelAmenity": {
      "type": "object",
      "properties": {
        "hotelAmenity": {
          "type": "string",
          "example": "12",
          "description": "descriptive id of hotel amenity"
        },
        "description": {
          "type": "string",
          "example": "Swimming Pool"
        },
        "quantity": {
          "type": "integer",
          "example": 1
        },
        "includeInRate": {
          "type": "boolean",
          "example": true
        },
        "confirmable": {
          "type": "boolean",
          "example": false
        }
      }
    },
    "Transportation": {
      "type": "object",
      "properties": {
        "transportationCode": {
          "type": "string",
          "description": "Transportation type ex: Bus, Taxi. Enum values from globalCodes TRP - Transportation Code",
          "example": "Metro"
        },
        "description": {
          "type": "string",
          "maxLength": 1024,
          "example": "Description for a Transportation"
        },
        "includeInRate": {
          "type": "boolean",
          "description": "Indicates whether charge rate is included or excluded",
          "example": false
        },
        "reservationRequired": {
          "type": "boolean",
          "description": "Indicates whether reservation is required for this Transportation",
          "example": true
        }
      }
    },
    "OfferAlternateProperty": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/PropertyInfo"
        },
        {
          "type": "object",
          "properties": {
            "distance": {
              "description": "The alternates property distance information",
              "$ref": "#/definitions/OfferAlternatePropertyDistance"
            }
          }
        }
      ]
    },
    "OfferAlternatePropertyDistance": {
      "type": "object",
      "properties": {
        "distance": {
          "type": "number",
          "format": "double",
          "description": "Distance from hotel to alternate property",
          "example": 12.5,
          "minimum": 0.01
        },
        "distanceUnit": {
          "type": "string",
          "description": "Measured Distance Unit from hotel to alternate property",
          "$ref": "#/definitions/OfferDistanceUnit"
        },
        "compassDirection": {
          "type": "string",
          "description": "Relative direction from hotel to alternate property",
          "$ref": "#/definitions/OfferCompassDirection"
        },
        "comments": {
          "type": "string",
          "description": "Free text comment provided by the user for the alternate property",
          "example": "ITC Royal Bengal is the next pereferred hotel after JW Marriott Kolkata."
        }
      }
    },
    "OfferCompassDirection": {
      "type": "string",
      "enum": [
        "N",
        "NE",
        "E",
        "SE",
        "S",
        "SW",
        "W",
        "NW"
      ],
      "description": "Relative direction from hotel to alternate property"
    },
    "OfferDistanceUnit": {
      "type": "string",
      "enum": [
        "Kilometers",
        "Miles"
      ],
      "description": "Distance unit of measure"
    },
    "GeneralInformation": {
      "type": "object",
      "description": "This section contain information about property check-in, check-out time",
      "properties": {
        "checkInTime": {
          "type": "string",
          "pattern": "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$",
          "example": "04:30",
          "description": "check in time for the property"
        },
        "checkOutTime": {
          "type": "string",
          "pattern": "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$",
          "example": "14:30",
          "description": "check out time for the property"
        }
      }
    },
    "Direction": {
      "type": "object",
      "properties": {
        "propertyDirection": {
          "type": "string",
          "maxLength": 1024,
          "example": "SE ABC hills"
        }
      }
    },
    "OfferPointOfInterest": {
      "type": "object",
      "description": "The point of interest for guests to get to the hotel.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the point of interest.",
          "example": "Dallas airport, Park"
        },
        "pointOfInterestType": {
          "type": "string",
          "description": "The point of interest type available to choose.",
          "example": "AIRPORT",
          "enum": [
            "AIRPORT",
            "ATTRACTIONS"
          ]
        },
        "description": {
          "description": "The description of the point of interest.",
          "type": "string"
        },
        "airportCode": {
          "description": "The unique 3 letter IATA code to identify the airport.",
          "type": "string",
          "example": "DAL"
        },
        "distance": {
          "description": "The distance from the point of interest to the hotel",
          "type": "number",
          "format": "double",
          "example": 6.3
        },
        "distanceUnit": {
          "description": "Unit of measurement for the distance",
          "type": "string",
          "example": "Kilometers"
        },
        "attractionDirection": {
          "description": "The attraction direction from point of interest to the hotel.",
          "type": "string",
          "example": "N",
          "enum": [
            "N",
            "W",
            "S",
            "E",
            "NW",
            "NE",
            "SW",
            "SE"
          ]
        },
        "transportation": {
          "description": "The transportation type for the chosen point of interest.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "objId"
          ]
        },
        "directionDescription": {
          "description": "The description for how to get from point of interest to the hotel.",
          "type": "string",
          "example": "Free text to describe route from property to attraction"
        },
        "drivingTime": {
          "description": "The driving time it will take to get from point of interest to the hotel.",
          "type": "number",
          "format": "double",
          "example": 3.5
        }
      }
    },
    "Communications": {
      "type": "object",
      "properties": {
        "phones": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Phone"
          },
          "minItems": 1
        },
        "emails": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Email"
          }
 

# --- truncated at 32 KB (122 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/oracle-hospitality/refs/heads/main/openapi/oracle-hospitality-distribution-v1-book.json