מודל נתונים ב-Drive Activity API

במדריך הזה מוסבר מהם הרכיבים העיקריים של תגובה ב-Google Drive Activity API, ומופיעות דוגמאות והסברים על פרשנות התגובה.

אובייקטים

  • DriveActivity: זהו המשאב הראשי שמוחזר על ידי שאילתות ל-Drive Activity API. הוא מתאר גורם אחד או יותר שמבצע פעולה אחת או יותר שמשפיעה על יעד אחד או יותר.

  • Timestamp ו-TimeRange: השדות האלה מתארים, בהתאמה, נקודה בודדת בזמן שבה הפעילות התרחשה, או את תחילת הפעילות ואת סופה במהלך פרק זמן.

  • Actor: בדרך כלל, Actor הוא משתמש קצה. עם זאת, לפעמים אירוע מערכת יכול להפעיל Action כשאדמין פועל בתור משתמש או בתור עצמו, או כשהפעולה מתבצעת על ידי אדם לא מזוהה. ההודעה Actor מכילה את כל המקרים האלה.

  • Target: Target הוא אובייקט של פעילות, כמו קובץ, תיקייה, אחסון שיתופי או תגובה לקובץ. חשוב לזכור שסוגי פעולות רבים תומכים ביותר מסוג אחד של יעד. לדוגמה, הקיצור Edit רלוונטי בדרך כלל לקבצים ב-Drive, אבל פעולות אחרות כמו Rename ו-Create רלוונטיות גם לתיקיות ב-Drive ולאחסונים שיתופיים. מטרות שלא הן פריטים ב-Drive עדיין יכולות להפנות לפריטים ב-Drive, כמו תיקיית השורש של נסיעה או המסמך הראשי שמכיל את התגובה לקובץ.

  • Action: לכל משאב DriveActivity יש לפחות פעולה אחת קשורה. ה-Action הוא עצמאי, כמו אירוע, בכך שהוא כולל לא רק את הסוג המפורט ואת המידע על הפעולה, אלא גם Actor,‏ Target ו-Timestamp או TimeRange. כדי למנוע חזרות מיותרות, Action לא מאכלס שדות Target,‏ Actor או זמן משלו כשהם זהים לשדות הDriveActivity הכוללים.

  • ActionDetail: זהו הסוג הספציפי והמידע המפורט על Action. לדוגמה, פרטי הפעולה Move כוללים מיקום מקור ומיקום יעד, ופרטים של PermissionChange מציינים למי יש עכשיו גישה למסמך ואילו הרשאות יש לו.

תגובות לדוגמה

בהמשך מפורטות דוגמאות לתשובות.

משתמש ערך קובץ ב-Drive

משאב DriveActivity יכול לכלול רק פעולה אחת, למשל משתמש שעורך קובץ אחד.

"activities":[{
  "primaryActionDetail":{ "edit":{} },
  "actors":[ { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "driveItem":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } } ],
  "timestamp":{ "seconds":"1536794657", "nanos":791000000 },
  "actions":[ { "detail":{ "edit":{} } } ]
}]

הפלט הזה כולל את הערכים הבאים:

  • ACCOUNT_ID: המזהה של המשתמש. אפשר להשתמש בו עם People API כדי לקבל מידע נוסף.
  • ITEM_ID: המזהה של הפריט ב-Drive.
  • TITLE: השם של הפריט ב-Drive.

שימו לב שהאובייקט Action בתגובה הזו לא כולל את Actor,‏ Target או timestamp כי הם זהים ל-DriveActivity הכולל.

שני משתמשים ערכו את אותו קובץ בזמנים דומים

כשמשתמשים ב-ConsolidationStrategy, הפעולות הקשורות מקובצות ל-DriveActivity משולב אחד. בדוגמה הזו, שתי פעולות דומות מקובצות: סוג פעולה אחד מסוג Edit משני משתמשים שונים.

"activities":[{
  "primaryActionDetail":{ "edit":{} },
  "actors":[
    { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_1" } } },
    { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "driveItem":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "timeRange":{
    "startTime":{ "seconds":"1541089823", "nanos":712000000 },
    "endTime":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

הפלט הזה כולל את הערכים הבאים:

  • ACCOUNT_ID_1: המזהה של המשתמש הראשון. אפשר להשתמש בו עם People API כדי לקבל מידע נוסף.
  • ACCOUNT_ID_2: המזהה של המשתמש השני.
  • ITEM_ID: המזהה של הפריט ב-Drive.
  • TITLE: שם הפריט ב-Drive.

שימו לב שהאובייקט Action בתגובה הזו לא כולל את Target כי הוא זהה ל-DriveActivity הכולל.

הדוגמה גם ממחישה איך אפליקציות עשויות להשתמש רק במידע הסיכום שב-DriveActivity, בלי לבדוק את הפעולות הספציפיות. התגובה מציינת ששני משתמשים ערכו קובץ מסוים לאורך תקופה מסוימת.

משתמש העביר שני קבצים לספרייה חדשה

בדוגמה הזו, המערכת קיבצה שתי פעולות Move קשורות כי הקבצים הועברו מאותו מקור לאותו יעד באותו זמן.ConsolidationStrategy

"activities":[{
  "primaryActionDetail":{
    "move":{
      "addedParents":[ { ... } ]
      "removedParents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "knownUser":{ "personName":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "driveItem":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "driveItem":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "addedParents":[ { ... } ] "removedParents":[ { ... } ] } },
      "target":{ "driveItem":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "addedParents":[ { ... } ] "removedParents":[ { ... } ] } },
      "target":{ "driveItem":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
    }
  ]
}]

הפלט הזה כולל את הערכים הבאים:

  • ACCOUNT_ID: המזהה של המשתמש. אפשר להשתמש בו עם People API כדי לקבל מידע נוסף.
  • ITEM_ID_1: המזהה של הפריט הראשון ב-Drive.
  • ITEM_ID_2: המזהה של הפריט השני ב-Drive.
  • TITLE_1: השם של הפריט הראשון ב-Drive.
  • TITLE_2: השם של הפריט השני ב-Drive.

שימו לב שאובייקט Action בתגובה הזו לא כולל את Actor או את timestamp כי הם זהים ל-DriveActivity הכולל.