Engine Catalog Service API

The CatalogService API from Engine — 1 operation(s) for catalogservice.

Documentation

Specifications

Other Resources

OpenAPI Specification

hotel-engine-catalogservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Omni, Powered by Engine Catalog 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: CatalogService
paths:
  /content/v1/catalog/property:
    post:
      summary: List the full property catalog.
      description: Retrieves one page of the lodging properties catalog.
      operationId: CatalogService_ListPropertyCatalog
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1ListPropertyCatalogResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      tags:
      - CatalogService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1ListPropertyCatalogRequest'
        description: A request to retrieve one page of the property catalog.
        required: true
components:
  schemas:
    v1ListPropertyCatalogRequestDetails:
      type: object
      properties:
        pageSize:
          type: integer
          format: int32
          default: '100'
          title: 'The maximum number of records to be returned in a page.

            Default: 100

            Minimum: 1

            Maximum: 250'
          maximum: 250.0
          minimum: 1.0
        updatedAfter:
          type: string
          title: 'Optionally, return only properties updated after this timestamp.

            When omitted, the full catalog is returned.

            Conforms to ISO-8601, see https://en.wikipedia.org/wiki/ISO_8601'
      description: Parameters and filters to be applied to a property catalog request.
      title: ListPropertyCatalogRequestDetails_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
    v1PropertyCatalogState:
      type: string
      enum:
      - PROPERTY_CATALOG_STATE_UNSPECIFIED
      - PROPERTY_CATALOG_STATE_ACTIVE
      - PROPERTY_CATALOG_STATE_INACTIVE
      default: PROPERTY_CATALOG_STATE_UNSPECIFIED
      description: "The state of a property within the catalog.\n\n - PROPERTY_CATALOG_STATE_UNSPECIFIED: The state is unknown or unspecified.\n - PROPERTY_CATALOG_STATE_ACTIVE: The property is active within the catalog\n - PROPERTY_CATALOG_STATE_INACTIVE: The property is inactive within the catalog."
      title: PropertyCatalogState_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
    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
    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
    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
    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
    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
    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
    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
    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
    v1ListPropertyCatalogResponse:
      type: object
      properties:
        entries:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/v1PropertyCatalogEntry'
          description: 'The catalog entries returned by the request.

            It will contain up to [ListPropertyCatalogRequestDetails].page_size records.'
        nextPageToken:
          type: string
          description: Optionally, an opaque token to be passed into the next [ListPropertyCatalogRequest] to retrieve the next page.
      description: A response to a [CatalogService.ListPropertyCatalog] request.
      title: ListPropertyCatalogResponse_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).'
    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
    v1PropertyCatalogEntry:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/v1PropertyCatalogState'
          description: The [PropertyCatalogState] of this entry within the catalog.
        property:
          $ref: '#/components/schemas/lodgingProperty'
          description: The [Property] content for this entry.
      description: A single entry in the property catalog, wrapping a [Property] together with its state.
      title: PropertyCatalogEntry_v1
    v1ListPropertyCatalogRequest:
      type: object
      properties:
        request:
          $ref: '#/components/schemas/v1ListPropertyCatalogRequestDetails'
          description: The parameters and filters to retrieve the first page of the catalog.
        pageToken:
          type: string
          description: Optionally, a `page_token` retrieved from a previous call.
      description: A request to retrieve one page of the property catalog.
      title: ListPropertyCatalogRequest_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\": <string>,\n      \"lastName\": <string>\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    }"
externalDocs: https://engine-public.github.io/engine-partner-api