Запрос статуса продавца через API

Случаи использования

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

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

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

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

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 . Ответ также содержит токен страницы (если это не последняя страница) для запроса следующей страницы.

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

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

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