Реклама местных услуг. Сквозной запрос статуса продавца через API

Варианты использования

Google Maps Booking API предоставляет два метода, которые можно использовать для программного получения статуса отдельных продавцов для различных интеграций или инвентаря Рекламы местных услуг .

Варианты использования API статуса продавца:

  • Усовершенствуйте существующие инструменты управления взаимоотношениями с клиентами, чтобы продемонстрировать своим клиентам, как их товары отображаются в Google.
  • Создайте панель мониторинга для отслеживания статуса запасов и статуса соответствия ваших продавцов.
  • Программно получайте статусы соответствия и возможности бронирования ваших продавцов и исправляйте любую неверную информацию, чтобы улучшить качество данных.

Что включает в себя статус продавца

MerchantStatus содержит следующую информацию:

  • Статус инвентаря продавца: применяется как к продавцам, осуществляющим бронирование, так и к продавцам, входящим в список ожидания.
  • Статус сопоставления продавцов: включает подробную информацию о сопоставленных данных о компании.
  • Только для рекламы местных услуг Google ) Соответствующий поставщик услуг продавца: включает идентификатор клиента и категории услуг.
  • URL-адреса, демонстрирующие, как продавец появляется в Google.

Поиск статуса одного продавца

Вы можете получить статус отдельного продавца, используя Inventory.partners.merchants.getStatus :

GET https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/{merchantId}/status

Вот пример кода Python (см. примеры на других языках здесь ):

from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(
    './your_key.json')
scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/mapsbooking'])
authed_session = AuthorizedSession(scoped_credentials)

response = authed_session.get('https://partnerdev-mapsbooking.googleapis.com' +
    '/v1alpha/inventory/partners/123456789/merchants/001/status')

Пример ответа MerchantStatus выглядит так:

  {
    "name": "partners/123456789/merchants/001/status",
    "merchantName": "Foo Bar Restaurant",
    "inputGeoInfo": {
      "unstructured_address": "123 Foo Bar Street, Mountain View"
    },
    "processingStatus": "COMPLETED",
    "bookingStatus": {
      "hasValidFutureInventory": true
    },
    "waitlistStatus": {
      "hasValidWaitlistService": true
    }
    "geoMatch": {
      "name": "Foo Bar Restaurant",
      "formattedAddress": "123 Foo Bar St, Mountain View, CA 94043",
      "placeId": "ChIAAAAAAAAABBBBBBBB"
    },
    "directUrls": [
      {
        "type": "BOOKING",
        "url": "https://reserve-partnerdev.sandbox.google.com/maps/reserve/v/dine/m/Nwaaaaa"
      },
      {
        "type": "WAITLIST",
        "url": "https://reserve-partnerdev.sandbox.google.com/maps/reserve/v/wait/c/iDbbbbb"
      }
    ]
  }

Массовое получение статусов продавцов

Вы можете получить статусы всех продавцов или группы продавцов, удовлетворяющих определенным условиям инвентаризации/соответствия, используя Inventory.partners.merchants.status.list . Например, вы можете сделать этот вызов, чтобы получить всех несопоставленных продавцов с действительным инвентарем для резервирования, датированным будущим:

GET https://mapsbooking.googleapis.com/v1alpha/inventory/partners/{partnerId}/merchants/status?pageSize=50&bookingInventoryStatusRestrict=HAS_VALID_FUTURE_INVENTORY&geoMatchRestrict=GEO_UNMATCHED

Примерный ответ будет выглядеть так:

  {
    "merchantStatuses": [
      {
        "name": "partners/123456789/merchants/002/status",
        "merchantName": "Bar Foo Restaurant",
        "inputGeoInfo": {
          "unstructured_address": "234 Bar Foo Street, Mountain View"
        },
        "processingStatus": "COMPLETED",
        "bookingStatus": {
          "hasValidFutureInventory": true
        },
        "waitlistStatus": {},
      },
      ...
      {
        "name": "partners/123456789/merchants/080/status",
        "merchantName": "Baz Restaurant",
        "inputGeoInfo": {
          "unstructured_address": "345 Baz Street, Mountain View"
        },
        "processingStatus": "COMPLETED",
        "bookingStatus": {
          "hasValidFutureInventory": true
        },
        "waitlistStatus": {
          "hasValidWaitlistService": true
        },
      },
    ],
    "nextPageToken": "AAABBBB"
  }

Этот ответ будет содержать 50 MerchantStatus , которые удовлетворяют условиям фильтрации и упорядочены по merchant_id . Ответ также содержит токен страницы (если это не последняя страница) для запроса следующей страницы.

Обратите внимание: условия фильтрации должны быть одинаковыми на всех страницах.

Лучшие практики

Поскольку статусы продавцов в большинстве случаев не меняются часто, рекомендуется кэшировать полученные результаты и периодически (например, каждые несколько часов) получать их с помощью новых запросов. Центр действий может ограничить ваши запросы, если количество запросов в секунду окажется слишком высоким.