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

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

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

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

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

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

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