סקירה כללית
ב-Reseller API נעשה שימוש ב-Pub/Sub API כדי לשלוח התראות דחיפה לגבי אירועי מינויים שונים ב-Google Workspace. לדוגמה, אפשר להגדיר התראות לדחיפה כדי לקבל התראה כשסטטוס המינוי של הלקוחות משתנה.
דרישות מוקדמות
- מפעילים את Pub/Sub API בפרויקט ב-Google Cloud.
- מקצים לחשבון השירות בפרויקט ב-Cloud את תפקידי ה-IAM של Pub/Sub. הענקת התפקיד
roles/pubsub.editor
היא פשרה טובה (קלה ולא רחבה מדי), אבל כדאי להשתמש בהרשאות Pub/Sub ספציפיות יותר.
יצירת נושא
כדי ליצור נושא, צריך להירשם ל-Reseller API באמצעות ה-method resellernotify.register
.
השיטה resellernotify.register
מקבלת כפרמטר את כתובת האימייל של חשבון השירות. רק חשבונות שירות שהוענקה להם הרשאה בשיטה הזו יוכלו להירשם לנושא שיצרתם.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
בתגובה מוצלחת מוחזר קוד סטטוס HTTP 200
ותגובה בפורמט JSON שמכילה את שם הנושא ב-Pub/Sub.
דוגמה לתגובה:
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
כדי להעניק הרשאה לחשבונות שירות נוספים להשתמש בנושא, אפשר לבצע שוב את הקריאה ל-resellernotify.register
.
ביטול הגישה של חשבון שירות
באמצעות Reseller API אפשר גם לבטל את הרישום של חשבונות שירות באמצעות נקודת הקצה resellernotify.unregister
:
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
הרשמה לנושא
אחרי שיוצרים את נושא ה-Pub/Sub, צריך להגדיר את אופן השימוש של האפליקציה באירועי השינוי. בחר אחת מהאפשרויות הבאות:
- הרשמה לקבלת התראות: אתם מספקים קריאה חוזרת (callback) מסוג HTTP
POST
. מערכת Pub/Sub משתמשת בקריאה החוזרת הזו כדי להודיע לאפליקציה על אירועים חדשים. - מינוי משיכה: האפליקציה שולחת מדי פעם קריאה ל-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
: נקודת הקצה של הטיפול בהתראות ה-push.
תגובה מוצלחת מחזירה קוד סטטוס 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 למפיצים.RENEWAL_WITH_TYPE_CANCEL
: ההתחייבות של הלקוח הסתיימה והשירות שלו בוטל בסוף תקופת ההתחייבות.RESELLER_INITIATED
: המפיץ השעה את המינוי באופן ידני.TRIAL_ENDED
: תוקף תקופת הניסיון של הלקוח פג, והלקוח לא בחר בחבילה ללא תקופת ניסיון.OTHER
: הלקוח הושעה מסיבה פנימית של Google, למשל, ניצול לרעה.
מגבלות של Pub/Sub
אנחנו לא יכולים להבטיח באיזה סדר יוצגו ההתראות. יכול להיות שההודעות יישלחו כמה פעמים, ובמצבים קיצוניים הן לא יישלחו בכלל. מומלץ להשתמש ב-reseller.subscriptions.get
בכל המינויים שהשתנו כדי למשוך את המצב הנוכחי.