Обновления в режиме реального времени

Обновления в реальном времени позволяют синхронизировать ваш инвентарь предложений с Google. Вы можете отправлять поэтапные обновления практически в режиме реального времени. Наша система будет компилировать изменения из ленты новостей и RTU, чтобы отображать пользователям самую актуальную информацию.

Конечные точки API

Для отправки или удаления обновлений в режиме реального времени используйте следующие конечные точки REST API:

Пакетная отправка

  • Песочница: https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchPush
  • Production: https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchPush

Пакетное удаление

  • Песочница: https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchDelete
  • Production: https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchDelete

Для получения дополнительной информации об определении объекта Offer в формате JSON см. раздел Offer . Более подробную информацию о свойствах предложения см. на странице справочника Offer .

Как пройти аутентификацию в API

Для подключения к API см. раздел «Аутентификация с помощью API Mapsbooking» .

Ограничения

При использовании API для обновления данных в реальном времени следует учитывать следующие ограничения:

  • Только protoRecord : API настроен на использование только protoRecord (а не dataRecord ).
  • Ограничения по квоте : Для этих API установлено ограничение в 1500 запросов в минуту на один партнерский аккаунт . Каждый запрос может отправить не более 1000 записей для обновления или удаления.
  • Ограничения на сопоставление сущностей : Для каждого предложения партнеры могут отправлять обновление только для одного идентификатора сущности. Если вы хотите обновить одно и то же предложение для нескольких идентификаторов сущностей, партнер должен отправить одну запись для каждого entityId . Идентификаторы entityId всегда должны быть в единственном числе в каждой записи.
  • Дополнительные предложения : Из-за ограничений сопоставления сущностей дополнительные предложения, для которых addOnOfferApplicableToAllEntities не поддерживаются обновления RTU, и их нельзя обновить таким способом (только через фиды).

Пример

Пример пакетного обновления

Вот пример отправки обновления в реальном времени с помощью curl :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token --impersonate-service-account=test@myproject.gserviceaccount.com --scopes=https://www.googleapis.com/auth/mapsbooking)" \
  -H "Content-Type: application/json" \
  -d '{
  "records": [
    {
      "generationTimestamp": {
        "seconds": 100
      },
      "protoRecord": {
        "@type": "type.googleapis.com/madden.ingestion.offer.Offer",
        "offerId": "1",
        "entityIds": [
          "1234567890"
        ],
        "addOnOfferApplicableToAllEntities": false,
        "offerSource": "OFFER_SOURCE_AGGREGATOR",
        "actionType": "ACTION_TYPE_FOOD_DELIVERY",
        "offerModes": [
          "OFFER_MODE_WALK_IN"
        ],
        "offerCategory": "OFFER_CATEGORY_BASE_OFFER",
        "tags": [
          "OFFER_TAG_NEW_YEAR_SPECIAL"
        ],
        "offerDetails": {
          "offerDisplayText": "FLAT 10% off",
          "offerSummaryText": "MONDAY TO FRIDAY",
          "discountPercent": 10
        },
        "offerRestrictions": {
          "combinableWithOtherOffers": true,
          "inclusions": [
            {
              "description": "complementary drink"
            },
            {
              "description": " starters"
            }
          ],
          "exclusions": [
            {
              "description": "taxes and Tips"
            }
          ]
        },
        "validityPeriods": [
          {
            "timeOfDay": {
              "timeWindows": [
                {
                  "openTime": {
                    "hours": 10
                  },
                  "closeTime": {
                    "hours": 20
                  }
                }
              ]
            },
            "validPeriod": {
              "validFromTime": {
                "seconds": 10
              }
            }
          }
        ],
        "offerUrl": "https://www.google.com/offer"
      }
    }
  ]
}' \
  https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/20000123/feeds/google.offer/record:batchPush

Пример пакетного удаления

Вот пример удаления предложения с помощью curl :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token --impersonate-service-account=test@myproject.gserviceaccount.com --scopes=https://www.googleapis.com/auth/mapsbooking)" \
  -H "Content-Type: application/json" \
  -d '{
  "records": [
    {
      "deleteTime": {
        "seconds": 150
      },
      "protoRecord": {
        "@type": "type.googleapis.com/madden.ingestion.offer.Offer",
        "offerId": "1",
        "entityIds": [
          "1234567890"
        ]
      }
    }
  ]
}' \
  https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/20000123/feeds/google.offer/record:batchDelete