Offer

LINT.IfChange(offer_definition) [START offer_definition] Next tag: 26

JSON representation
{
  "offerId": string,
  "entityIds": [
    string
  ],
  "addOnOfferApplicableToAllEntities": boolean,
  "offerSource": enum (OfferSource),
  "actionType": enum (ActionType),
  "offerModes": [
    enum (OfferMode)
  ],
  "offerCategory": enum (OfferCategory),
  "sourceAssignedPriority": integer,
  "offerDetails": {
    object (OfferDetails)
  },
  "offerRestrictions": {
    object (OfferRestrictions)
  },
  "coupon": {
    object (Coupon)
  },
  "paymentInstrument": {
    object (PaymentInstrument)
  },
  "subscription": {
    object (Subscription)
  },
  "terms": {
    object (Terms)
  },
  "validityPeriods": [
    {
      object (ValidityPeriod)
    }
  ],
  "offerUrl": string,
  "imageUrl": string,
  "tags": [
    enum (OfferTag)
  ],
  "brandId": string
}
Fields
offerId

string

Unique ID of the offer. Required.

entityIds[]

string

List of merchants who are participating in this offer.

addOnOfferApplicableToAllEntities

boolean

If true, this offer is applicable to all entities under the aggregator. Only applicable for add on offers.

offerSource

enum (OfferSource)

An offer can be provided by the aggregator, an individual merchant, or even a third party as an add on. Required.

actionType

enum (ActionType)

The service that is providing the offer. An offerId can belong to only one actionType. If an offer can be shared across multiple service types then duplicate offers with unique Ids are expected to be created for each service type. Required.

offerModes[]

enum (OfferMode)

The methods the offer can be availed - walk in, reservation, online, etc. Required.

offerCategory

enum (OfferCategory)

The category of the offer. Required.

sourceAssignedPriority

integer

Non-negative integer ([1-100], where 1 represents the highest priority) indicating the priority level of the offer assigned by the source. When multiple offers are available for the same merchant, this will be a signal for ranking offers. 0 would represent that the priority is not set.

offerDetails

object (OfferDetails)

Details of the offer such as the discount, booking cost, etc. Required.

offerRestrictions

object (OfferRestrictions)

Describes how the offer is restricted i.e. whether a subscription/payment instrument is required, whether this offer can be combined with other offers (and what types), etc. Required.

coupon

object (Coupon)

Details of a coupon. Required for offerCategory: OFFER_CATEGORY_ADD_ON_COUPON_OFFER.

paymentInstrument

object (PaymentInstrument)

Details of a payment instrument. Required for offerCategory: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.

subscription

object (Subscription)

Details of a subscription. Required for offerCategory: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER.

terms

object (Terms)

Terms and conditions of the offer. Required.

validityPeriods[]

object (ValidityPeriod)

The validity period of the offer. Describes what time period the offer is valid for including start and end times, days of the week, etc. Required.

offerUrl

string

URL to the merchant's offer page. Required for offerCategory: OFFER_CATEGORY_BASE_OFFER.

imageUrl

string

URL to the merchant’s offer image.

tags[]

enum (OfferTag)

Special tags associated with the offer. This is used to identify special offers like "Festive", "Top Rated", "Most booked", etc.

brandId

string

Required for Gift Card deals to identify the brand offering the deal.

OfferDetails

[START offer_details_definition] Next tag: 15

JSON representation
{
  "offerDisplayText": string,
  "maxDiscountValue": {
    object (Money)
  },
  "minSpendValue": {
    object (Money)
  },
  "bookingCost": {
    object (Money)
  },
  "bookingCostUnit": enum (FeeUnit),
  "convenienceFee": {
    object (Fee)
  },
  "bookingCostAdjustable": boolean,
  "additionalFees": [
    {
      object (AdditionalFee)
    }
  ],
  "giftCardInfo": {
    object (GiftCardInfo)
  },

  // Union field offer_specification can be only one of the following:
  "discountPercent": number,
  "discountValue": {
    object (Money)
  },
  "otherOfferDetailText": string
  // End of list of possible types for union field offer_specification.
}
Fields
offerDisplayText

string

The offer text the offer provider wants to display to customers on the search results page. Required.

maxDiscountValue

object (Money)

The maximum discount that can be availed. For example, 10% off up to $100.

minSpendValue

object (Money)

The minimum spend value to avail the discount. For example, 10% off when the total price is $100 or more.

bookingCost

object (Money)

The cost to book this offer. For example, $100 off the final bill when a table is reserved at the cost of $15.

bookingCostUnit

enum (FeeUnit)

The unit of the booking cost. For example, per person, per transaction.

convenienceFee

object (Fee)

bookingCostAdjustable

boolean

Whether the booking cost is adjustable i.e. the booking cost is subtracted from the final bill. For example: 30% off dinner with reservation. Cost to reserve $15 and it will be applied to the final bill. Hence final bill: Total Spent - 30% - $15

additionalFees[]

object (AdditionalFee)

Additional fees that are charged to the user. Examples: convenience, handling, delivery, packaging, service fee etc.

giftCardInfo

object (GiftCardInfo)

Details specifically for gift card deals.

Union field offer_specification. The discount can be a percentage or a fixed value subtracted from the total value. For example: 1. 10% off the final bill. 2. $15 off an order. Merchants can also offer custom discounts such as ‘buy one get one free’ through the relevant specification fields. Required. offer_specification can be only one of the following:
discountPercent

number

Percentage of the bill that is discounted. [0, 100] For 1+1 or 50% off offers that are applicable to the whole meal (e.g. 1+1 buffet, 1+1 on entire bill, 1+1 on set menu), this value can be set to 50.

discountValue

object (Money)

Fixed value of the discount.

otherOfferDetailText

string

Free-form text to describe the discount. For specific 1+1 offers (e.g. 1+1 drinks, +1 main course, 1+1 selected menu items), these details should be described here.

OfferRestrictions

[START offer_restrictions_definition] Next tag: 11

JSON representation
{
  "combinableWithOtherOffers": boolean,
  "combinableOfferCategories": [
    enum (OfferCategory)
  ],
  "combinableOfferIds": [
    string
  ],
  "inclusions": [
    {
      object (OfferCondition)
    }
  ],
  "exclusions": [
    {
      object (OfferCondition)
    }
  ],
  "minGuest": integer,
  "foodOfferRestrictions": {
    object (FoodOfferRestrictions)
  },
  "specialConditions": [
    string
  ]
}
Fields
combinableWithOtherOffers

boolean

Whether this offer can be combined with other offers. When true, partners can specify what offers this offer can be combined with. If both combinableOfferCategories & combinableOfferIds are set then any offer matching one of the conditions above will be combinable.

combinableOfferCategories[]

enum (OfferCategory)

List of offer types that this offer can be combined with. For example, this offer may be combinable with other Coupons. If combinableWithOtherOffers is true and this field is unset all types will be combinable.

combinableOfferIds[]

string

List of offer_ids that this offer can be combined with. Some offers may only be combined with certain specific other offer_ids (can be considered parent offers). If combinableWithOtherOffers is true and this field is unset all offer ids will be combinable.

inclusions[]

object (OfferCondition)

List of conditions that must be met for the offer to be valid (e.g., non-alcoholic drinks, food).

exclusions[]

object (OfferCondition)

List of conditions that would invalidate the offer (e.g., buffet, combo offers, and cocktails ).

minGuest

integer

The minimum number of people required to avail the offer.

foodOfferRestrictions

object (FoodOfferRestrictions)

Restrictions specific to food offers.

specialConditions[]

string

Special conditions for this offer that must be shown to the user. Examples: "Only valid for payment in [area]", "Excludes online payments"

OfferCondition

[START offer_condition_definition]

JSON representation
{
  "description": string
}
Fields
description

string

PaymentInstrument

[START payment_instrument_definition]

JSON representation
{
  "items": [
    {
      object (PaymentInstrumentItem)
    }
  ],
  "providerName": string
}
Fields
items[]

object (PaymentInstrumentItem)

List of payment instruments that can be used to avail the offer. Required.

providerName

string

Name of the payment instrument provider. Could be a banking partner, name of a bank, etc. For example: American Express, HDFC, ICICI.

PaymentInstrumentItem

[START payment_instrument_item_definition]

JSON representation
{
  "type": enum (PaymentInstrumentType),
  "name": string
}
Fields
type

enum (PaymentInstrumentType)

Type of the payment instrument. Required.

name

string

Name of the payment instrument item like the name of the credit card. For example: HDFC Infinia, American Express Platinum. Required.

Subscription

[START subscription_definition]

JSON representation
{
  "name": string,
  "subscriptionAutoAdded": boolean,
  "cost": {
    object (Money)
  },
  "subscriptionDuration": string,
  "termsAndConditionsUrl": string
}
Fields
name

string

The name of the subscription. Required.

subscriptionAutoAdded

boolean

Whether the subscription is auto added when a user avails this offer

cost

object (Money)

The cost of the subscription. Required.

subscriptionDuration

string (Duration format)

How long the subscription is valid for at the subscription_cost. Required.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

termsAndConditionsUrl

string

URL to the partner's terms and conditions relevant to this subscription.

Terms

[START terms_definition]

JSON representation
{
  "url": string,
  "restrictedToCertainUsers": boolean,
  "termsAndConditions": string,
  "additionalTermsAndConditions": [
    string
  ]
}
Fields
url

string

URL to the partner's terms and conditions.

restrictedToCertainUsers

boolean

Whether the offer is restricted to certain users.

termsAndConditions

string

Primary T&C text provided by the partner.

additionalTermsAndConditions[]

string

Terms and conditions in addition to the primary T&C from the partner.