Actualizaciones en tiempo real

Las actualizaciones en tiempo real te permiten mantener tu inventario de ofertas sincronizado con Google. Puedes enviar actualizaciones incrementales casi en tiempo real. Nuestro sistema compilará los cambios del feed y la RTU para mostrar la información más reciente a los usuarios.

Extremos de la API

Para enviar o borrar actualizaciones en tiempo real, usa los siguientes extremos de la API de REST:

Envío por lotes

  • Zona de pruebas: https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchPush
  • Producción: https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchPush

Borrado por lotes

  • Zona de pruebas: https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchDelete
  • Producción: https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partner_id}/feeds/google.offer/record:batchDelete

Para obtener más información sobre la definición del objeto JSON de Offer, consulta Oferta. Para obtener más detalles sobre las propiedades de la oferta, visita la página de referencia de la oferta.

Cómo autenticar en la API

Para conectarte a la API, consulta Autenticación con la API de Mapsbooking.

Limitaciones

Cuando uses la API de actualizaciones en tiempo real, ten en cuenta las siguientes limitaciones:

  • Solo protoRecord: La API está configurada para usar solo protoRecord (no dataRecord).
  • Límites de cuota: Estas APIs tienen una cuota de 1,500 solicitudes por minuto por cuenta de socio. Cada solicitud tiene un límite de envío de 1,000 registros para la inserción o eliminación.
  • Restricciones de asignación de entidades: Para cada oferta, los socios pueden enviar una actualización para 1 ID de entidad. Si deseas actualizar la misma oferta en varios IDs de entidad, el socio debe enviar 1 registro por entityId. Los entityId siempre deben ser singulares por registro.
  • Ofertas de complementos: Debido a la restricción de asignación de entidades, las ofertas de complementos que son addOnOfferApplicableToAllEntities no son compatibles con la actualización de RTU y no se pueden actualizar de esta manera (solo a través de feeds).

Ejemplo

Ejemplo de actualizaciones por lotes

Aquí tienes un ejemplo de cómo enviar una actualización en tiempo real a través de 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

Ejemplo de borrado por lotes

Aquí tienes un ejemplo de cómo borrar una oferta a través de 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