Google Pass
Called by Google, not by tenants. save increments the pass's Google installation count (setting the Google installation date on the first one), increments its active and total installation counts, and emits a pass-installed event carrying the source the pass was downloaded from. del decrements the Google count; when it reaches zero the pass is no longer counted as saved in Google Wallet and a pass-uninstalled event is emitted. A message already processed, recognised by its nonce, changes nothing.
The installation change was recorded.
No content
A del for a pass that is no longer on record; nothing changes.
Nothing to record: signedMessage is missing or has no nonce, or the message was already processed.
signedMessage is not JSON, or its event type is neither save nor del; Google need not retry it.
No pass has the id taken from objectId.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/passes/google HTTP/1.1
Host: app.neostore.cloud
Content-Type: application/json
Accept: */*
No content
Sends a Google Wallet user who tapped "Sign in" on a loyalty program to the tenant's sign-in page, pre-filled with any profile Google shares.
Google documents a form POST carrying SharedDataType; Google Wallet also issues a bare GET, so both are accepted. Emits a discoverable-program sign-in event, then redirects to {public site}/{tenantId}/{url} with the profile keys renamed as on the sign-up endpoint.
Query url: the page path under the tenant to redirect to, set in the Google class's sign-in URL.
Query SharedDataType: the profile as Base64Url-encoded JSON. Wins over the form field.
Form field SharedDataType: the profile as Base64Url-encoded JSON.
Redirect to the sign-in page with the profile as query parameters.
No content
The profile is not valid Base64Url-encoded JSON of string values.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
GET /api/{tenantId}/passes/google/signin HTTP/1.1
Host: app.neostore.cloud
Content-Type: multipart/form-data
Accept: */*
Content-Length: 25
{
"SharedDataType": "text"
}No content
Sends a Google Wallet user who tapped "Sign in" on a loyalty program to the tenant's sign-in page, pre-filled with any profile Google shares.
Google documents a form POST carrying SharedDataType; Google Wallet also issues a bare GET, so both are accepted. Emits a discoverable-program sign-in event, then redirects to {public site}/{tenantId}/{url} with the profile keys renamed as on the sign-up endpoint.
Query url: the page path under the tenant to redirect to, set in the Google class's sign-in URL.
Query SharedDataType: the profile as Base64Url-encoded JSON. Wins over the form field.
Form field SharedDataType: the profile as Base64Url-encoded JSON.
Redirect to the sign-in page with the profile as query parameters.
No content
The profile is not valid Base64Url-encoded JSON of string values.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/passes/google/signin HTTP/1.1
Host: app.neostore.cloud
Content-Type: multipart/form-data
Accept: */*
Content-Length: 25
{
"SharedDataType": "text"
}No content
Sends a Google Wallet user who tapped "Sign up" on a loyalty program to the tenant's sign-up page, pre-filled with the profile Google shares.
Posted by Google Wallet's WebView (discoverable program merchant sign-up flow) as a form. Emits a discoverable-program sign-up event, then redirects to {public site}/{tenantId}/{url} with the profile as query parameters. Google's keys, camelCase or legacy UPPER_SNAKE_CASE, are renamed: firstName, lastName, address (from addressLine1/STREET_ADDRESS), city, zipCode, country, email, phoneNumber (from phone/PHONE). Other keys are forwarded unchanged. Every profile field is optional.
Query url: the page path under the tenant to redirect to, set in the Google class's sign-up URL.
Form field SharedDataType: the profile as Base64Url-encoded JSON, the field Google sends for loyalty classes.
Form field userProfile: read only when SharedDataType is absent; the name Google's offer enrollment guide uses for the same profile.
Redirect to the sign-up page with the profile as query parameters.
No content
The profile is not valid Base64Url-encoded JSON of string values.
Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after Retry-After.
POST /api/{tenantId}/passes/google/signup HTTP/1.1
Host: app.neostore.cloud
Content-Type: multipart/form-data
Accept: */*
Content-Length: 46
{
"SharedDataType": "text",
"userProfile": "text"
}No content
Last updated

