openapi: 3.2.0 info: title: Omni, Powered by Engine Content Service API description: Definitions for the Omni travel API. version: 2.4.0 contact: name: Omni API Support url: https://omni.engine.com/ license: name: Apache License Version 2.0 url: https://github.com/engine-public/engine-partner-api/blob/main/LICENSE servers: - url: https://partner-api.engine.com tags: - name: Content Service paths: /content/v1/properties: post: summary: Retrieves details for specific properties description: Retrieves details for the set of properties specified in the request operationId: ContentService_GetProperties responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/v1GetPropertiesResponse' '400': description: Invalid request parameters. content: application/json: schema: {} default: description: An unexpected error response. content: application/json: schema: $ref: '#/components/schemas/rpcStatus' tags: - Content Service requestBody: content: application/json: schema: $ref: '#/components/schemas/v1GetPropertiesRequest' description: A request to retrieve specific Properties by their IDs. required: true /content/v1/property: get: summary: List properties near a point of interest operationId: ContentService_ListProperties responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/v1ListPropertiesResponse' example: properties: - property: id: L00000000000000140124 name: Holiday Inn Express & Suites Austin Downtown - University physicalAddress: addressLine: - 805 Neches St administrativeArea: TX locality: Austin postalCode: '78701' countryCode: US coordinates: latitude: 30.2693 longitude: -97.737122 heroImageUri: https://i.travelapi.com/lodging/13000000/12310000/12303000/12302973/8299c3c9_z.jpg description: Attractively located in the center of Austin, Holiday Inn Express Hotel & Suites Austin Downtown - University, an IHG Hotel has air-conditioned rooms, an outdoor swimming pool, free WiFi and a fitness center. This 3-star hotel offers a 24-hour front desk and an ATM. Private parking is available on site. The rooms at the hotel come with a seating area and a flat-screen TV with satellite channels. At Holiday Inn Express Hotel & Suites Austin Downtown - University, an IHG Hotel rooms contain a private bathroom with free toiletries and a hairdryer. Breakfast is available each morning, and includes buffet, continental and American options. The accommodation has a sun terrace. Guests can use the business center or relax in the snack bar. Popular points of interest near Holiday Inn Express Hotel & Suites Austin Downtown - University, an IHG Hotel include Shoal Beach, Capitol Building and Austin Convention Center. Austin-Bergstrom International Airport is 5.6 miles from the property. distance: value: 5.2 unit: DISTANCE_UNIT_MILE - property: id: L00000000000000092817 name: Sonesta Select Austin North physicalAddress: addressLine: - 7522 N Interstate Hwy 35 administrativeArea: TX locality: Austin postalCode: '78752' countryCode: US coordinates: latitude: 30.33843 longitude: -97.703827 heroImageUri: https://i.travelapi.com/lodging/1000000/50000/41300/41290/232ce1b7_z.jpg description: Featuring an outdoor pool, Sonesta Select Austin North Central is 5 mi from Austin city center. This hotel offers free WiFi access. Rooms at Sonesta Select Austin North Central will provide you with a flat-screen TV with cable and an air-conditioned seating area. Complete with a refrigerator, the dining area also has a coffee machine. At Sonesta Select Austin North Central you will find a fitness center. Other facilities offered include meeting facilities, a shared lounge and dry cleaning. The hotel is 4.2 mi from University of Texas and 5.6 mi from Austin Convention Center. Bergstrom Airport is 8.7 mi away. The property offers free parking. When traveling with pets, please note that an extra charge of $75 per pet, per stay applies. A maximum of 2 pets per room is allowed distance: value: 6.7 unit: DISTANCE_UNIT_MILE default: description: An unexpected error response. content: application/json: schema: $ref: '#/components/schemas/rpcStatus' parameters: - name: request.criteria.radius.coordinates.latitude description: The center-point latitude. in: query required: false schema: type: number format: double - name: request.criteria.radius.coordinates.longitude description: The center-point longitude. in: query required: false schema: type: number format: double - name: request.criteria.radius.physicalAddress.recipients description: 'Optionally, any individual recipients. For example, "Alexander Hamilton", "Aaron Burr" May be empty.' in: query required: false style: form explode: true schema: type: array items: type: string - name: request.criteria.radius.physicalAddress.organization description: 'Optionally, any organization or company as a recipient. For example, "Engine".' in: query required: false schema: type: string - name: request.criteria.radius.physicalAddress.addressLine description: 'Optionally, any address lines, in order as they''d appear on an envelope. For example, "233 S Wacker Dr", "108th Floor". May be empty.' in: query required: false style: form explode: true schema: type: array items: type: string - name: request.criteria.radius.physicalAddress.administrativeArea description: 'Optionally, the State, province, prefecture, oblast, or area. For example, "Texas"' in: query required: false schema: type: string - name: request.criteria.radius.physicalAddress.locality description: 'Optionally, the City, or Post Town For example, "Austin"' in: query required: false schema: type: string - name: request.criteria.radius.physicalAddress.postalCode description: 'Optionally, the postal code, if one exists, for the address. For example, "78757".' in: query required: false schema: type: string - name: request.criteria.radius.physicalAddress.countryCode description: 'Optionally, the ISO 3166-1 alpha-2 country code. For example, "US". See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 See https://www.iso.org/iso-3166-country-codes.html' in: query required: false schema: type: string - name: request.criteria.radius.freeformSearchText description: 'A description of a point of interest, an unstructured address, etc. Freeform input will make a "best effort" match to a point of interest and its corresponding geo coordinates. If available, using `coordinates` or `physical_address` will yield better results.' in: query required: false schema: type: string - name: request.criteria.radius.radius.value description: The distance quantity. in: query required: false schema: type: number format: double - name: request.criteria.radius.radius.unit description: "The unit of distance measurement.\n\n - DISTANCE_UNIT_MILE: A mile in the imperial system of units.\n - DISTANCE_UNIT_KILOMETER: A kilometer in the international system of units (metric)." in: query required: false schema: type: string enum: - DISTANCE_UNIT_MILE - DISTANCE_UNIT_KILOMETER default: DISTANCE_UNIT_MILE - name: request.criteria.excludePropertiesWithoutHeroImage description: 'Optionally, if true, properties that do not have a `Property#hero_image_uri` will not be returned. Excluded properties will not count against the page size or limit.' in: query required: false schema: type: boolean default: 'false' - name: request.criteria.excludePropertiesWithoutDescription description: 'Optionally, if true, properties that do not have a `Property#description` will not be returned. Excluded properties will not count against the page size or limit.' in: query required: false schema: type: boolean default: 'false' - name: request.criteria.sortMode description: "The order in which the properties will be returned.\n\n - PROPERTY_SORT_MODE_DISTANCE: Results are returned in ascending order from the center point of the `ListProperties.inclusion_type`." in: query required: false schema: type: string enum: - PROPERTY_SORT_MODE_DISTANCE default: PROPERTY_SORT_MODE_DISTANCE - name: request.pageSize description: 'The maximum number of search results to be returned in a page. Default: 100 Minimum: 1 Maximum: 500' in: query required: false schema: type: integer format: int32 default: '100' - name: nextPageToken description: Optionally, a `next_page_token` retrieved from a `ListPropertiesResponse`. in: query required: false schema: type: string tags: - Content Service components: schemas: v1Image: type: object properties: uri: type: string title: 'The URI of the [Image]. For example, "https://example.com/image.jpg"' description: Represents an [Image] with optional metadata. title: Common_Image_v1 lodgingExternalCatalogIdentifiers: type: object properties: giataIdentifier: type: string description: GIATA identifier for this property. catalogIdentifiers: type: object additionalProperties: $ref: '#/components/schemas/lodgingExternalCatalogIdentifierList' description: Catalog identifiers keyed by source keys. description: External catalog identifiers for property mapping. title: Content_ExternalCatalogIdentifiers_v1 v1PostalAddress: type: object properties: recipients: type: array items: type: string description: 'Optionally, any individual recipients. For example, "Alexander Hamilton", "Aaron Burr" May be empty.' organization: type: string description: 'Optionally, any organization or company as a recipient. For example, "Engine".' addressLine: type: array items: type: string description: 'Optionally, any address lines, in order as they''d appear on an envelope. For example, "233 S Wacker Dr", "108th Floor". May be empty.' administrativeArea: type: string title: 'Optionally, the State, province, prefecture, oblast, or area. For example, "Texas"' locality: type: string title: 'Optionally, the City, or Post Town For example, "Austin"' postalCode: type: string description: 'Optionally, the postal code, if one exists, for the address. For example, "78757".' countryCode: type: string title: 'Optionally, the ISO 3166-1 alpha-2 country code. For example, "US". See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 See https://www.iso.org/iso-3166-country-codes.html' description: Represents a Postal Address. title: Common_PostalAddress_v1 v1MediaItem: type: object properties: image: $ref: '#/components/schemas/v1Image' title: An [Image] this media item represents description: type: string title: 'A description of this media item Example: "A large restaurant"' tags: type: array items: type: string title: 'Tags categorizing the content of this media item Example: ["outdoor", "pool"]' description: A media item for visual or marketing context. title: Common_MediaItem_v1 enginecontentservicev1ResponsiveProperty: type: object properties: property: $ref: '#/components/schemas/lodgingProperty' description: The property details. distance: $ref: '#/components/schemas/v1Distance' description: The distance between the center point of the `ListProperties.inclusion_type` and the property. description: A `Property` that meets the criteria of a `ContentServiceV1.ListProperties` request. title: ResponsiveProperty_v1 v1GetPropertiesResponse: type: object properties: properties: type: array items: type: object $ref: '#/components/schemas/lodgingProperty' description: The list of available [Property] objects including phone numbers. inaccessiblePropertyIds: type: array items: type: string description: The list of [Property] IDs that were requested but not found. description: A response containing [Property] information. title: GetPropertiesResponse_v1 lodgingExternalCatalogIdentifierList: type: object properties: identifiers: type: array items: type: string description: 'Supplier property identifiers for the associated catalog key. May contain multiple identifiers when more than one external record is mapped to the Engine record.' description: A list of external catalog identifiers for a single catalog key. title: Content_ExternalCatalogIdentifierList_v1 v1EmailType: type: string enum: - EMAIL_TYPE_UNSPECIFIED - EMAIL_TYPE_GENERAL - EMAIL_TYPE_BILLING - EMAIL_TYPE_RESERVATIONS - EMAIL_TYPE_SUPPORT default: EMAIL_TYPE_UNSPECIFIED description: "Describes the type of an email contact.\n\n - EMAIL_TYPE_UNSPECIFIED: Unspecified email type.\n - EMAIL_TYPE_GENERAL: General contact email.\n - EMAIL_TYPE_BILLING: Billing-related email.\n - EMAIL_TYPE_RESERVATIONS: Reservations and booking email.\n - EMAIL_TYPE_SUPPORT: Customer support email." title: Common_EmailType_v1 v1GeoPoint: type: object properties: latitude: type: number format: double description: The center-point latitude. longitude: type: number format: double description: The center-point longitude. description: A single geographic point, defined by latitude and longitude. title: Common_GeoPoint_v1 v1Distance: type: object properties: value: type: number format: double description: The distance quantity. unit: $ref: '#/components/schemas/v1DistanceUnit' description: The unit of distance measurement. description: The distance between two geographic points. title: Common_Distance_v1 lodgingPropertyAmenity: type: object properties: amenityName: type: string title: 'Amenity name describing a [Property] feature or service. Examples: "Free WiFi", "Free Breakfast"' amenityCode: $ref: '#/components/schemas/lodgingLodgingAmenityCode' description: 'Amenity code, providing an easily machine readable representation of a [Property] feature or service, if mapped.' description: '[Property] amenity containing name for property features and services.' title: Content_PropertyAmenity_v1 v1ContactEmail: type: object properties: emailAddress: type: string description: The email address. emailType: $ref: '#/components/schemas/v1EmailType' description: Optional type of email contact. description: Contact email information. title: Common_ContactEmail_v1 v1LoyaltyRewardsProgram: type: object properties: name: type: string description: Name of the loyalty reward program. description: Represents a single loyalty rewards program. title: Common_LoyaltyRewardsProgram_v1 lodgingLodgingAmenityCode: type: string enum: - LODGING_AMENITY_CODE_UNKNOWN - LODGING_AMENITY_CODE_AIR_CONDITIONING - LODGING_AMENITY_CODE_DINING - LODGING_AMENITY_CODE_DRY_CLEANING - LODGING_AMENITY_CODE_ELECTRIC_VEHICLE_CHARGING - LODGING_AMENITY_CODE_FITNESS_CENTER - LODGING_AMENITY_CODE_FREE_AIRPORT_SHUTTLE - LODGING_AMENITY_CODE_FREE_BREAKFAST - LODGING_AMENITY_CODE_FREE_PARKING - LODGING_AMENITY_CODE_FULL_KITCHEN - LODGING_AMENITY_CODE_HIGH_SPEED_INTERNET - LODGING_AMENITY_CODE_KITCHENETTE - LODGING_AMENITY_CODE_MEETING_SPACE - LODGING_AMENITY_CODE_PET_FRIENDLY - LODGING_AMENITY_CODE_SPA - LODGING_AMENITY_CODE_SWIMMING_POOL - LODGING_AMENITY_CODE_TRUCK_PARKING default: LODGING_AMENITY_CODE_UNKNOWN title: Content_LodgingAmenityCode_v1 lodgingProperty: type: object properties: id: type: string description: The [Engine] identifier for this [Property]. name: type: string description: The full name of this [Property]. physicalAddress: $ref: '#/components/schemas/v1PostalAddress' description: 'The physical address of this [Property]. This may differ from the mailing, billing, or other administrative addresses.' coordinates: $ref: '#/components/schemas/v1GeoPoint' description: The geographic location of this [Property]. heroImageUri: type: string description: If available, A URI to the image to use as the primary image to identify this [Property]. description: type: string description: If available, a brief textual description of this [Property]. phoneNumber: type: string title: 'If available, an E.164-compliant primary phone number for this [Property]. See https://en.wikipedia.org/wiki/E.164' emails: type: array items: type: object $ref: '#/components/schemas/v1ContactEmail' description: 'Contact email addresses for this property. May include general contact, billing, or reservation emails.' starRating: type: string title: 'Star rating for this property. Represents the official star rating classification system. See https://en.wikipedia.org/wiki/Hotel_rating Examples: "4", "5", "3.5"' amenities: type: array items: type: object $ref: '#/components/schemas/lodgingPropertyAmenity' title: 'Property amenities for this [Property]. List of amenity names describing features and services available to guests. Examples: "Free WiFi", "Pool", "Fitness Center", "Free Breakfast"' mediaItems: type: array items: type: object $ref: '#/components/schemas/v1MediaItem' description: 'Media items for property gallery. Collection of media URIs for detailed property viewing and marketing.' catalog: $ref: '#/components/schemas/lodgingExternalCatalogIdentifiers' description: 'External catalog identifiers for this property. Used for integration with external booking systems.' checkInTime: type: string description: Check-in time in local time HH:MM 24-hour format (e.g., "15:00") for the [Property]. checkOutTime: type: string description: Check-out time in local time HH:MM 24-hour format (e.g., "11:00") for the [Property]. loyaltyRewardsProgram: $ref: '#/components/schemas/v1LoyaltyRewardsProgram' description: The loyalty rewards program associated with the [Property]. timeZone: type: string title: 'The time zone for the [Property] in the IANA format. See https://www.iana.org/time-zones Examples: "America/Denver", "Atlantic/Madeira"' description: An individual Lodging location identified by [Engine]. title: Content_Property_v1 v1GetPropertiesRequest: type: object properties: propertyIds: type: array items: type: string description: 'The list of Engine [Property] IDs. Maximum of 50 property IDs per request.' maxItems: 50.0 minItems: 1.0 description: A request to retrieve specific Properties by their IDs. title: GetPropertiesRequest_v1 rpcStatus: type: object properties: code: type: integer format: int32 description: 'The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].' message: type: string description: 'A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.' details: type: array items: type: object $ref: '#/components/schemas/protobufAny' description: 'A list of messages that carry the error details. There is a common set of message types for APIs to use.' description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).' v1DistanceUnit: type: string enum: - DISTANCE_UNIT_MILE - DISTANCE_UNIT_KILOMETER default: DISTANCE_UNIT_MILE description: "The unit type for a distance measurement.\n\n - DISTANCE_UNIT_MILE: A mile in the imperial system of units.\n - DISTANCE_UNIT_KILOMETER: A kilometer in the international system of units (metric)." title: Common_DistanceUnit_v1 protobufAny: type: object properties: '@type': type: string description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." additionalProperties: {} description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" v1ListPropertiesResponse: type: object properties: properties: type: array items: type: object $ref: '#/components/schemas/enginecontentservicev1ResponsiveProperty' title: Up to `ListPropertiesRequest.page_size` responsive to nextPageToken: type: string description: Optionally, an opaque token to be passed into the next `ListPropertiesRequest` in order to retrieve the next page of results. description: A response to a `ContentServiceV1.ListProperties` request. title: ListPropertiesResponse_v1 externalDocs: https://engine-public.github.io/engine-partner-api