Listas de espera de reservas consultando o status do comerciante pela API

Casos de uso

A API Google Maps Booking oferece dois métodos que podem ser usados para recuperar programaticamente um status dos comerciantes individuais para várias integrações ou inventário de anúncios dos Serviços Locais.

Casos de uso da API Merchant Status:

  • Aprimore as ferramentas de gestão de relacionamento com o cliente para demonstrar a eles como o inventário aparece no Google.
  • Crie um painel para acompanhar o status do inventário e de correspondência dos seus comerciantes.
  • Recupere de forma programática os status de correspondência e de reserva dos seus comerciantes e corrija as informações incorretas para melhorar a qualidade dos dados.

O que o status do comerciante contém

O MerchantStatus contém as seguintes informações:

  • Status do inventário do comerciante: aplicável aos comerciantes de agendamento e/ou lista de espera.
  • Status de correspondência do comerciante: inclui detalhes sobre a ficha da empresa correspondente
  • Somente para anúncios dos Serviços Locais do Google) Provedor de serviços de comerciante correspondente: inclui o ID de cliente e as categorias de serviço.
  • Os URLs para demonstrar como o comerciante aparece no Google.

Procurar um único status de comerciante

Você pode conferir o status de um único comerciante usando inventory.partners.merchants.getStatus:

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

Confira um exemplo de código em Python (confira exemplos em outras linguagens):

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')

Um exemplo de resposta MerchantStatus é semelhante:

  {
    "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"
      }
    ]
  }

Recuperar o status dos comerciantes em massa

É possível recuperar os status de todos os comerciantes ou de um grupo de comerciantes que atendem a determinadas condições de inventário/correspondência usando inventory.partners.merchants.status.list. Por exemplo, é possível fazer essa chamada para conseguir todos os comerciantes sem correspondência com um inventário de reservas válido e datado:

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

Um exemplo de resposta seria semelhante a este:

  {
    "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"
  }

Essa resposta conterá 50 MerchantStatus que atendem às condições de filtragem e classificados por merchant_id. A resposta também contém um token de página (se não for a última página) para consultar a próxima página.

Observação: as condições de filtragem precisam ser consistentes em todas as páginas.

Práticas recomendadas

Como os status dos comerciantes não mudam com frequência, é recomendável armazenar os resultados recuperados em cache e recuperá-los periodicamente (por exemplo, a cada poucas horas) por meio de novas consultas. A Central de ações poderá limitar as consultas se o número de solicitações por segundo for considerado excessivamente alto.