Panoramica
L'API Reseller utilizza l'API Pub/Sub per inviare notifiche push sui diversi eventi di abbonamento di Google Workspace. Ad esempio, puoi impostare le notifiche push per ricevere notifiche quando lo stato degli abbonamenti dei tuoi clienti cambia.
Prerequisiti
- Abilitare l'API Pub/Sub per il tuo progetto Google Cloud.
- Concedi i ruoli IAM Pub/Sub all'account di servizio nel progetto Cloud. La concessione del ruolo
roles/pubsub.editor
è un buon compromesso (facile e non troppo ampio), ma ti consigliamo di utilizzare autorizzazioni Pub/Sub più specifiche.
crea un argomento
Per creare un argomento, devi registrarti con l'API dei rivenditori
utilizzando il
metodo resellernotify.register
.
Il metodo resellernotify.register
utilizza un indirizzo email dell'account di servizio come
parametro. Solo gli account di servizio autorizzati da questo metodo possono sottoscrivere un argomento appena creato.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Una risposta corretta restituisce un codice di stato HTTP 200
e una risposta JSON contenente il nome dell'argomento Pub/Sub.
Di seguito è riportato un esempio di risposta:
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
Per autorizzare account di servizio aggiuntivi a utilizzare l'argomento, puoi chiamare di nuovo resellernotify.register
.
Revocare l'accesso per un account di servizio
L'API Reseller consente anche di annullare la registrazione degli account di servizio utilizzando l'endpoint resellernotify.unregister
:
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Iscriviti a un argomento
Dopo aver creato l'argomento Pub/Sub, devi configurare il modo in cui l'applicazione utilizza gli eventi di modifica. Scegli una delle seguenti opzioni:
- Push abbonamento: devi fornire un callback HTTP
POST
. Pub/Sub usa questo callback per notificare l'applicazione ai nuovi eventi. - Abbonamento pull: l'applicazione periodicamente effettua una chiamata HTTP per ricevere tutte le modifiche in coda.
Di seguito è riportato un esempio di richiesta di sottoscrizione a un argomento:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME { "topic": "TOPIC_NAME" // Only needed for push configurations "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, }
Sostituisci quanto segue:
PROJECT
: il tuo progetto Google Cloud.SUBSCRIPTION_NAME
: il nome che identifica l'abbonamento.TOPIC_NAME
: l'argomento Pub/Sub creato in precedenza.PUSH_NOTIFICATION_ENDPOINT
: l'endpoint del gestore delle notifiche push.
Una risposta corretta restituisce un codice di stato HTTP 200
. Ecco un esempio di risposta:
{ "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME", "topic": "TOPIC_NAME", "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, "ackDeadlineSeconds": 10 }
Formati di notifica
Di seguito è riportata una notifica Pub/Sub di esempio. I dati dei messaggi vengono trasmessi come stringa JSON codificata in base64.
{ "message": { "attributes": {}, "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9", "message_id": 1234567891012131 }, "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME" }
Di seguito è riportato l'oggetto message.data
di esempio dopo la decodifica:
{
"customer_id": "C0abcdef",
"customer_domain_name": "domain.com",
"event_type": "SUBSCRIPTION_CANCELLED",
"sku_id": "Google-Apps-Unlimited",
"subscription_id": "1234567",
// Optional fields depended on event_type
"subscription_suspension_reasons": [],
"subscription_cancellation_reason": "REASON"
}
Tipi di eventi
Il seguente elenco contiene tutti i possibili tipi di evento:
NEW_SUBSCRIPTION_CREATED
: è stato creato un nuovo abbonamento.SUBSCRIPTION_TRIAL_ENDED
: il periodo di prova di un abbonamento è terminato.PRICE_PLAN_SWITCHED
: il cliente è passato da un piano flessibile a un piano annuale. Questo evento non viene attivato se il cliente passa da un piano basato su impegno a un piano flessibile nell'ambito di un rinnovo.COMMITMENT_CHANGED
: l'impegno annuale è stato aumentato o diminuito.SUBSCRIPTION_RENEWED
: un abbonamento annuale è stato rinnovato.SUBSCRIPTION_SUSPENDED
: abbonamento sospeso. Controlla il camposubscription_suspension_reasons
.SUBSCRIPTION_SUSPENSION_REVOKED
: la sospensione è stata revocata per un abbonamento precedentemente sospeso.SUBSCRIPTION_CANCELLED
: l'abbonamento è stato annullato. Controlla il camposubscription_cancellation_reason
. Può essere utilizzato anche per rilevare i trasferimenti.SUBSCRIPTION_CONVERTED
: l'abbonamento è stato convertito. Ecco alcuni casi di esempio per questo evento:- Converti l'abbonamento diretto in abbonamento del rivenditore.
- Converti l'abbonamento a pagamento in un'offerta di tolleranza.
- Converti l'abbonamento online in abbonamento offline.
SUBSCRIPTION_UPGRADE
: è stato eseguito l'upgrade dello SKU dell'abbonamento. Ad esempio, è stato eseguito l'upgrade dell'abbonamento da Google Workspace Business Starter a Business Standard.SUBSCRIPTION_DOWNGRADE
: è stato eseguito il downgrade dello SKU dell'abbonamento. Ad esempio, è stato eseguito il downgrade dell'abbonamento da Google Workspace Business Standard a Business Starter.LICENSE_ASSIGNMENT_CHANGED
: la licenza è stata assegnata o revocata da un utente. Puoi utilizzare questo evento per monitorare in modo reattivo le variazioni del numero di utenze per gli abbonamenti flessibili.
Motivi dell'annullamento dell'abbonamento
Il motivo dell'annullamento dell'abbonamento viene compilato quando event_type
è
SUBSCRIPTION_CANCELLED
. Di seguito sono riportati i possibili motivi dell'annullamento:
TRANSFERRED_OUT
: il cliente è passato alla fatturazione diretta o a un altro rivenditore.PURCHASE_OF_SUBSUMING_SKU
: il cliente ha eseguito l'upgrade a uno SKU che sostituisce un altro. Ad esempio, se un cliente con Google Workspace Business Starter e Google Vault esegue l'upgrade a Google Workspace Business Plus, l'abbonamento a Vault viene incluso in quanto incluso in Google Workspace Business Plus.RESELLER_INITIATED
: il rivenditore ha annullato l'abbonamento.OTHER
: l'abbonamento è stato annullato per un motivo diverso da quello indicato.
Motivi della sospensione dell'abbonamento
Il motivo della sospensione dell'abbonamento viene compilato quando event_type
è
SUBSCRIPTION_SUSPENDED
. Di seguito sono riportati i possibili motivi di sospensione:
PENDING_TOS_ACCEPTANCE
: il cliente non ha eseguito l'accesso e non ha accettato i Termini di servizio del rivenditore Google Workspace.RENEWAL_WITH_TYPE_CANCEL
: l'impegno del cliente è terminato e il servizio è stato annullato al termine del periodo di validità.RESELLER_INITIATED
: il rivenditore ha sospeso manualmente l'abbonamento.TRIAL_ENDED
: la prova del cliente è scaduta e il cliente non ha selezionato un piano non di prova.OTHER
: il cliente è stato sospeso per un motivo interno di Google, ad esempio per abuso.
Limitazioni di Pub/Sub
L'ordinamento delle notifiche push non è garantito. I messaggi possono essere recapitati
più volte e in situazioni estreme, per niente. Ti consigliamo di utilizzare reseller.subscriptions.get
su tutte le sottoscrizioni modificate per eseguire il pull dello stato attuale.