סקירה כללית
ה-API של המפיץ משתמש ב-Pub/Sub API כדי להעביר התראות על אירועים שונים של מינויים ל-Google Workspace. לדוגמה, אפשר להגדיר התראות כדי לקבל התראה כשסטטוסי המינויים של הלקוחות שלך משתנים.
דרישות מוקדמות
- מפעילים את Pub/Sub API לפרויקט ב-Google Cloud.
- נותנים לחשבון השירות תפקידי Pub/Sub IAM בפרויקט Cloud. הקצאת התפקיד
roles/pubsub.editor
היא פשרה טובה (קלה ולא רחבה מדי), אבל יכול להיות שתרצו להשתמש בהרשאות Pub/Sub ספציפיות יותר.
יצירת נושא
על מנת ליצור נושא צריך להירשם ב-Seller API באמצעות ה-method resellernotify.register
.
השיטה resellernotify.register
מתייחסת לכתובת אימייל של חשבון שירות כפרמטר. רק חשבונות שירות המורשים בשיטה הזו יכולים להירשם לנושא החדש שיצרתם.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
תשובה מוצלחת מחזירה את קוד הסטטוס 200
של HTTP ותגובת JSON שמכילה את שם נושא ה-Pub/Sub שלכם.
דוגמה לתגובה:
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
כדי לתת הרשאה לחשבונות שירות נוספים להשתמש בנושא שלך, אפשר להתקשר שוב אל resellernotify.register
.
שלילת הגישה לחשבון שירות
ה-API של המפיץ מאפשר גם לבטל רישום של חשבונות שירות באמצעות נקודת הקצה resellernotify.unregister
:
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
הרשמה לנושא
אחרי שיצרתם את הנושא Pub/Sub, עליכם להגדיר את האופן שבו האפליקציה צורכת את אירועי השינוי שלכם. בוחרים אחת מהאפשרויות הבאות:
- מינוי Push: אתם מספקים קריאה חוזרת (callback) של HTTP מסוג
POST
. Pub/Sub משתמש בקריאה החוזרת הזו כדי לעדכן את האפליקציה לגבי אירועים חדשים. - Pull subscription (שליפת מינוי): האפליקציה מבצעת מדי פעם קריאת HTTP כדי לקבל את כל השינויים שבתור.
הנה דוגמה לבקשת הרשמה לנושא:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME { "topic": "TOPIC_NAME" // Only needed for push configurations "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, }
מחליפים את מה שכתוב בשדות הבאים:
PROJECT
: הפרויקט שלכם ב-Google Cloud.SUBSCRIPTION_NAME
: שם מזהה של המינוי שלך.TOPIC_NAME
: נושא ה-Pub/Sub שיצרתם בעבר.PUSH_NOTIFICATION_ENDPOINT
: נקודת הקצה של ה-handler של ההתראות.
תגובה מוצלחת מחזירה קוד סטטוס HTTP 200
. זו דוגמה לתגובה:
{ "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME", "topic": "TOPIC_NAME", "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, "ackDeadlineSeconds": 10 }
פורמטים של התראות
דוגמה להתראה ב-Pub/Sub נתוני ההודעה משודרים כמחרוזת JSON בקידוד base64.
{ "message": { "attributes": {}, "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9", "message_id": 1234567891012131 }, "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME" }
זהו האובייקט message.data
לדוגמה לאחר פענוח הקוד:
{
"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"
}
סוגי אירועים
הרשימה הבאה כוללת את כל סוגי האירועים האפשריים:
NEW_SUBSCRIPTION_CREATED
: נוצר מינוי חדש.SUBSCRIPTION_TRIAL_ENDED
: תקופת הניסיון של המינוי הסתיימה.PRICE_PLAN_SWITCHED
: הלקוח עבר מתוכנית גמישה לתוכנית שנתית. האירוע לא מופעל אם הלקוח עובר מתוכנית מסוג התחייבות לתוכנית גמישה כחלק מהחידוש.COMMITMENT_CHANGED
: ההתחייבות השנתית הוגדלה או הופחתה.SUBSCRIPTION_RENEWED
: המינוי השנתי חודש.SUBSCRIPTION_SUSPENDED
: המינוי מושעה. בודקים את השדהsubscription_suspension_reasons
.SUBSCRIPTION_SUSPENSION_REVOKED
: השעיה בוטלה עבור מינוי שהושעה בעבר.SUBSCRIPTION_CANCELLED
: המינוי בוטל. בודקים את השדהsubscription_cancellation_reason
. יכול לשמש גם לזיהוי העברות.SUBSCRIPTION_CONVERTED
: המינוי הומר. דוגמאות למקרים כאלה:- המרת המינוי הישיר למינוי של המפיץ.
- המרת מינוי בתשלום למבצע חסד.
- המרת המינוי אונליין למינוי אופליין.
SUBSCRIPTION_UPGRADE
: המק"ט של המינוי שודרג. לדוגמה, המינוי שודרג מ-Google Workspace Business Starter ל-Business Standard.SUBSCRIPTION_DOWNGRADE
: המק"ט של המינוי שודרג לאחור. לדוגמה, המינוי שודרג לאחור מ-Google Workspace Business Standard ל-Business Starter.LICENSE_ASSIGNMENT_CHANGED
: הרישיון הוקצה למשתמש או בוטל ממנו. אפשר להשתמש באירוע הזה כדי לעקוב באופן תגובתי אחר השינויים בספירת העמדות במינויים גמישים.
סיבות לביטול המינוי
הסיבה לביטול המינוי מאוכלסת כשהערך של event_type
הוא SUBSCRIPTION_CANCELLED
. אלה הסיבות האפשריות לביטול:
TRANSFERRED_OUT
: הלקוח עבר לחיוב ישיר או למפיץ אחר.PURCHASE_OF_SUBSUMING_SKU
: הלקוח שדרג למק"ט שמחליף מק"ט אחר. לדוגמה, אם לקוח עם Google Workspace Business Starter ו-Google Vault משדרג ל-Google Workspace Business Plus, המינוי ל-Vault הוא כלול ב-Google Workspace Business Plus.RESELLER_INITIATED
: המפיץ ביטל את המינוי.OTHER
: המינוי בוטל מסיבה שאינה רשומה.
סיבות להשעיית המינוי
הסיבה להשעיית המינוי מאוכלסת כשהערך של event_type
הוא SUBSCRIPTION_SUSPENDED
. אלה הסיבות האפשריות להשעיה:
PENDING_TOS_ACCEPTANCE
: הלקוח לא התחבר ולא אישר את התנאים וההגבלות של Google Workspace Resold.RENEWAL_WITH_TYPE_CANCEL
: ההתחייבות של הלקוח הסתיימה והשירות בוטל בסוף התקופה.RESELLER_INITIATED
: המפיץ השעה את המינוי באופן ידני.TRIAL_ENDED
: פג תוקף תקופת הניסיון של הלקוח, והלקוח לא בחר תוכנית ללא תקופת ניסיון.OTHER
: הלקוח הושעה מסיבה פנימית של Google – לדוגמה, התנהלות פוגעת.
מגבלות Pub/Sub
הסדר של ההתראות לא מובטח. ההודעות עשויות להישלח מספר פעמים ובמצבים קיצוניים, בכלל לא. כדי לקבל את המצב הנוכחי, מומלץ להשתמש ב-reseller.subscriptions.get
בכל המינויים שהשתנו.