Pular para o conteúdo

API do Google Wallet

A API do Google Wallet permite criar, atualizar, listar e gerenciar passes do Google Wallet programaticamente. Ela suporta as mesmas operações que o construtor de passes no Painel de Controle realiza.

Use-a para emitir cartões de fidelidade, ofertas, cartões-presente, ingressos para eventos, cartões de embarque de voos, bilhetes de transporte e passes genéricos, e para enviar atualizações em tempo real para passes já salvos nos dispositivos dos seus usuários.

https://apple-passkit.svc-nue.pushwoosh.com

Todos os endpoints são servidos via HTTPS. As solicitações e respostas usam application/json, a menos que seja indicado o contrário.

Autenticação

Anchor link to

Cada solicitação deve incluir um cabeçalho Authorization com seu token de acesso da API Pushwoosh:

Authorization: Token <api-token>

A conta proprietária do token deve ser a proprietária do aplicativo referenciado por applicationCode. Uma solicitação para um aplicativo que pertence a outra conta retorna 403 Forbidden.

Convenções

Anchor link to
  • Nomenclatura de campos: Os campos JSON usam lowerCamelCase (por exemplo, serialNumber, hexBackgroundColor, logoUrl).
  • Campos não preenchidos: as respostas incluem todos os campos, mesmo quando vazios ou com valor zero.
  • Identidade: o serialNumber é sempre atribuído pelo servidor quando um passe é criado. Qualquer valor que você enviar na criação é ignorado. O ID completo do objeto do Google Wallet é {issuerId}.{serialNumber}.
  • Imagens: logoUrl e heroImageUrl são URLs HTTPS públicas para imagens que o Google busca — não são arquivos carregados.
  • Estilo do passe: exatamente um objeto de estilo (generic, offer, loyalty, eventTicket, giftCard, flight ou transit) deve ser definido em um passe. O estilo não pode ser alterado após a criação.

Respostas de erro

Anchor link to
Status HTTPSignificado
400 Bad RequestArgumento inválido — um campo obrigatório está ausente ou malformado.
401 UnauthorizedCabeçalho Authorization ausente ou inválido.
403 ForbiddenO aplicativo não pertence à conta do solicitante.
404 Not FoundO passe, modelo ou aplicativo não foi encontrado.
503 Service UnavailableO serviço está em sua capacidade máxima ou temporariamente indisponível.
MétodoCaminhoDescrição
POST/api/google/pass/validateValidar uma configuração de passe
POST/api/google/pass/createCriar um novo objeto de passe e obter um link para salvar
POST/api/google/pass/update/{serialNumber}Atualizar um passe existente; o Google entrega a alteração
GET/api/google/pass/{applicationCode}/{serialNumber}/save-linkObter um link para salvar “Adicionar ao Google Wallet”
GET/api/google/pass/{applicationCode}/{serialNumber}Obter um único passe
GET/api/google/passesListar todos os passes de um aplicativo
POST/api/google/pass/{applicationCode}/{serialNumber}/stateAtivar ou invalidar um passe
DELETE/api/google/pass/{applicationCode}/{serialNumber}Excluir um passe
GET/api/google/configObter a configuração do Google Wallet do aplicativo
GET/api/google/templatesListar modelos de passes disponíveis
GET/api/google/templates/{filename}Obter um único modelo

Criar um passe

Anchor link to

Cria a classe e o objeto do passe no Google Wallet, e então retorna o número de série atribuído pelo servidor, o ID completo do objeto e um link para salvar “Adicionar ao Google Wallet”.

POST /api/google/pass/create

Corpo da solicitação

Anchor link to
ParâmetroTipoObrigatórioDescrição
passobjetoSimO objeto de passe que descreve o passe. Exatamente um estilo deve ser definido.
userIdstringSimO ID de Usuário da Pushwoosh para quem o passe é emitido.
applicationCodestringSimO código do aplicativo Pushwoosh.
Exemplo de solicitação
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"hexBackgroundColor": "#3c414c",
"logoUrl": "https://cdn.acme.com/logo.png",
"loyalty": {
"programName": "Acme Rewards",
"accountName": "Jane Doe",
"accountId": "1234567890",
"pointsLabel": "Points",
"pointsBalance": "1200",
"rewardsTier": "Gold"
},
"barcode": {
"format": "QR_CODE",
"value": "1234567890"
}
}
}
CampoTipoDescrição
serialNumberstringIdentidade única do passe criado, atribuída pelo servidor.
objectIdstringID completo do objeto do Google Wallet: {issuerId}.{serialNumber}.
saveLinkstringLink “Adicionar ao Google Wallet”: https://pay.google.com/gp/v/save/{jwt}.
messagestringMensagem de resultado.
Exemplo de resposta
Anchor link to
{
"serialNumber": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"objectId": "XXXXXXXXXXXXXXX.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"saveLink": "https://pay.google.com/gp/v/save/{jwt}",
"message": "Pass created successfully"
}

Validar um passe

Anchor link to

Verifica uma configuração de passe em relação aos requisitos do Google sem criá-lo. Útil antes de chamar a criação.

POST /api/google/pass/validate

Corpo da solicitação

Anchor link to
ParâmetroTipoObrigatórioDescrição
passobjetoSimO objeto de passe a ser validado.
CampoTipoDescrição
validbooleanSe o passe passa na validação.
errorsarray de stringsProblemas bloqueadores que devem ser corrigidos.
warningsarray de stringsAvisos não bloqueadores.

Atualizar um passe

Anchor link to

Aplica um patch no objeto do passe com novo conteúdo. O Google então entrega a versão atualizada para cada dispositivo que salvou o passe. Opcionalmente, envia uma notificação do Android com a atualização.

POST /api/google/pass/update/{serialNumber}

Parâmetros de caminho

Anchor link to
ParâmetroTipoDescrição
serialNumberstringO número de série retornado quando o passe foi criado.

Corpo da solicitação

Anchor link to
ParâmetroTipoObrigatórioDescrição
updatesobjetoSimO objeto de passe com o novo conteúdo. O estilo não pode ser alterado.
applicationCodestringSimO código do aplicativo Pushwoosh.
notifyMessagestringNãoQuando não estiver vazio, envia uma notificação push do Android com este texto para todos que salvaram o passe. Vazio significa uma atualização silenciosa.
notifyOnUpdatebooleanNãoSolicita uma notificação de atualização de campo. Apenas passes do tipo loyalty, eventTicket e flight realmente notificam; outros estilos aceitam a flag, mas nunca enviam uma. As notificações são disparadas apenas dentro de 3 horas de um horário de início relevante, e o Google as limita a 3 notificações por passe a cada 24 horas.
CampoTipoDescrição
successbooleanSe a atualização foi bem-sucedida.
messagestringMensagem de resultado.
Anchor link to

Retorna um link “Adicionar ao Google Wallet” para um passe já criado. O objeto do passe já deve existir (criado via Criar um passe).

GET /api/google/pass/{applicationCode}/{serialNumber}/save-link

CampoTipoDescrição
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}.

Obter um passe

Anchor link to

Retorna um único passe armazenado, incluindo seu objeto de passe completo.

GET /api/google/pass/{applicationCode}/{serialNumber}

Retorna { "pass": { ... } }, um único objeto de registro de passe.

Listar passes

Anchor link to

Retorna uma lista paginada e ordenada dos passes armazenados para um aplicativo.

GET /api/google/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

Parâmetros de consulta

Anchor link to
ParâmetroTipoObrigatórioDescrição
applicationCodestringSimO código do aplicativo Pushwoosh.
orderBystringNãoCampo de ordenação: UPDATED (padrão) ou CREATED.
orderDirectionstringNãoDireção da ordenação: DESC (padrão, mais recentes primeiro) ou ASC.
pageintegerNãoÍndice da página baseado em zero. O padrão é 0.
perPageintegerNãoTamanho da página. 0 ou omitido usa o padrão do servidor.
CampoTipoDescrição
passesarray de objetosA página atual de registros de passe.
pageintegerO índice da página retornada.
perPageintegerO tamanho da página usado para esta resposta.
totalintegerNúmero total de passes para o aplicativo em todas as páginas.

Definir o estado do passe

Anchor link to

Ativa ou invalida um passe. Um passe invalidado (inativo) é movido para a seção Passes expirados do usuário no Google Wallet; o registro é mantido para que possa ser reativado.

POST /api/google/pass/{applicationCode}/{serialNumber}/state

Corpo da solicitação

Anchor link to
ParâmetroTipoObrigatórioDescrição
activebooleanSimtrue define o passe como ACTIVE; false o invalida (INACTIVE).

Retorna um objeto vazio {} em caso de sucesso.

Excluir um passe

Anchor link to

Invalida o passe no Google e remove seu registro armazenado na Pushwoosh.

DELETE /api/google/pass/{applicationCode}/{serialNumber}

Retorna um objeto vazio {} em caso de sucesso.

Obter configuração

Anchor link to

Retorna o estado da configuração do Google Wallet para um aplicativo.

GET /api/google/config?applicationCode=XXXXX-XXXXX

CampoTipoDescrição
hasServiceAccountbooleanSe uma chave de conta de serviço está configurada.
issuerIdstringO ID de Emissor do Google Pay & Wallet Console configurado.
serviceAccountEmailstringO client_email da conta de serviço configurada.

Lista os modelos de passe de exemplo disponíveis ou busca um como um objeto de passe que você pode usar como ponto de partida.

GET /api/google/templates — retorna { "templates": [ { "filename", "name", "description", "style" } ] }.

GET /api/google/templates/{filename} — retorna { "template": { ...pass object... } }.

Referência de objeto

Anchor link to

Objeto de passe

Anchor link to
CampoTipoDescrição
serialNumberstringAtribuído pelo servidor na criação; identifica o passe.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjetoO estilo do passe. Exatamente um deve ser definido. Veja os objetos de estilo abaixo.
hexBackgroundColorstringCor de fundo do cartão, #rrggbb.
logoUrlstringURL HTTPS pública da imagem do logotipo. Obrigatório para fidelidade e transporte.
heroImageUrlstringURL HTTPS pública de uma imagem de banner larga.
barcodeobjetoCódigo de barras mostrado no passe.
textModulesarrayMódulos de texto mostrados na visualização de detalhes.
linksarrayMódulos de link mostrados na visualização de detalhes.
expirationTimestringHora ISO 8601 em que o Google expira automaticamente o passe. Vazio significa sem expiração.
appLinkobjetoLink de aplicativo: um botão de CTA na frente do passe.
locationsarrayLocalizações que acionam uma notificação geocercada (máximo de 10).
holdersPolicystringQuem pode salvar o passe: ONE_USER_ALL_DEVICES (padrão), ONE_USER_ONE_DEVICE ou MULTIPLE_HOLDERS.

Objeto genérico

Anchor link to
CampoTipoDescrição
cardTitlestringObrigatório. O nome do emissor/programa no topo do cartão.
headerstringObrigatório. O título principal do cartão.
subheaderstringTítulo secundário.
cardFieldsarrayAté 6 módulos de texto fixados na frente (até 3 linhas de 2).

Objeto de oferta

Anchor link to
CampoTipoDescrição
titlestringObrigatório. Por exemplo, 20% de desconto em tudo.
providerstringObrigatório. O nome do comerciante.
detailsstringDetalhes da oferta.
finePrintstringTermos e condições.
redemptionChannelstringONLINE, INSTORE, BOTH (padrão), ou TEMPORARY_PRICE_REDUCTION.
issuerNamestringMostrado nas superfícies “emitido por” do Google; o padrão é provider.

Objeto de fidelidade

Anchor link to
CampoTipoDescrição
programNamestringObrigatório. Requer logoUrl no passe.
accountNamestringNome do membro mostrado no cartão.
accountIdstringID do membro mostrado no cartão.
pointsLabelstringPor exemplo, Pontos. Mostrado apenas com um saldo.
pointsBalancestringO saldo de pontos.
rewardsTierstringPor exemplo, Ouro.
rewardsTierLabelstringRótulo ao lado do nível; o padrão é Nível.
issuerNamestringO padrão é programName.

Objeto de ingresso para evento

Anchor link to
CampoTipoDescrição
eventNamestringObrigatório.
venueName / venueAddressstringDetalhes do local.
startDateTime / endDateTimestringISO 8601 com deslocamento (por exemplo, 2026-07-01T19:30:00+02:00).
ticketHolderName / ticketNumber / ticketTypestringDetalhes do portador e do ingresso.
section / row / seat / gatestringDetalhes do assento.
issuerNamestringO padrão é eventName.

Objeto de cartão-presente

Anchor link to
CampoTipoDescrição
merchantNamestringObrigatório.
cardNumberstringObrigatório.
pinstringPIN do cartão.
balancestringValor decimal, por exemplo 25.00. Requer balanceCurrency.
balanceCurrencystringCódigo de moeda ISO 4217, por exemplo USD.
issuerNamestringO padrão é merchantName.

Objeto de voo

Anchor link to
CampoTipoDescrição
carrierIataCodestringObrigatório. Código IATA de 2 letras, por exemplo LX.
airlineNamestringNome de exibição da companhia aérea.
flightNumberstringObrigatório. Apenas dígitos, por exemplo 113.
originAirportCode / destinationAirportCodestringObrigatório. Códigos IATA de 3 letras.
originTerminal / originGate / destinationTerminalstringDetalhes do terminal e portão.
departureDateTimestringObrigatório. Hora local do aeroporto de origem, ISO 8601 sem deslocamento (por exemplo, 2026-09-01T06:30:00).
boardingTime / arrivalDateTimestringMesmo formato local. arrivalDateTime é a hora local do destino.
passengerNamestringObrigatório.
confirmationCode / seatNumber / seatClass / boardingGroupstringDetalhes do passageiro.
issuerNamestringO padrão é airlineName, depois o código da transportadora.

Objeto de transporte

Anchor link to
CampoTipoDescrição
transitTypestringObrigatório. BUS, RAIL, TRAM, FERRY ou OTHER.
transitOperatorNamestringObrigatório. Requer logoUrl no passe.
passengerNamestringObrigatório.
ticketNumberstringNúmero do bilhete.
tripTypestringONE_WAY (padrão) ou ROUND_TRIP.
legsarrayUm ou mais trechos de transporte na ordem da viagem.
issuerNamestringO padrão é transitOperatorName.

Objeto de trecho de transporte

Anchor link to
CampoTipoDescrição
originName / destinationNamestringObrigatório.
departureDateTime / arrivalDateTimestringISO 8601; deslocamento opcional (hora local quando omitido).
platform / coach / seatstringDetalhes do embarque.
fareNamestringPor exemplo, Anytime Single.

Objeto de código de barras

Anchor link to
CampoTipoDescrição
formatstringQR_CODE, PDF_417, AZTEC, CODE_128, EAN_13 e outros tipos de código de barras do Google Wallet.
valuestringDados codificados no código de barras.
altTextstringTexto mostrado abaixo do código de barras.

Objeto de módulo de texto

Anchor link to
CampoTipoDescrição
idstringIdentificador do módulo.
headerstringTítulo do módulo.
bodystringTexto do módulo.
Anchor link to
CampoTipoDescrição
uristringURL do link externo.
descriptionstringRótulo do link mostrado na visualização de detalhes.
Anchor link to
CampoTipoDescrição
uristringURL da web ou URI de destino de link direto.
androidPackageNamestringOpcional. Quando definido, abre o aplicativo Android.
descriptionstringDescrição interna do URI de destino (não é um rótulo de botão visível); o padrão é o URI.

Objeto de localização

Anchor link to
CampoTipoDescrição
latitudenumber-90.0 a +90.0.
longitudenumber-180.0 a +180.0.

Objeto de registro de passe

Anchor link to

Retornado pelos endpoints de listagem/obtenção.

CampoTipoDescrição
serialNumberstringNúmero de série do passe.
objectIdstringID completo do objeto do Google Wallet {issuerId}.{serialNumber}.
cardTitlestringTítulo/cabeçalho de exibição para o passe.
headerstringTítulo de exibição secundário.
userIdstringID de Usuário da Pushwoosh para quem o passe foi emitido.
createdAt / updatedAtstringCarimbos de data/hora de criação e última atualização.
statestringACTIVE ou INACTIVE.
stylestringgeneric, offer, loyalty, eventTicket, giftCard, flight ou transit.
passobjetoO objeto de passe completo, para edição.