مدل داده API Activity Drive

این راهنما اجزای اصلی یک پاسخ را در Google Drive Activity API توضیح می‌دهد، نمونه‌هایی و نحوه تفسیر آنها را نشان می‌دهد.

اشیاء

  • DriveActivity — این منبع اصلی است که توسط پرس و جوها به Drive Activity API بازگردانده می شود. این یک یا چند بازیگر را توصیف می کند که یک یا چند عمل را انجام می دهند که بر یک یا چند هدف تأثیر می گذارد.

  • Timestamp و TimeRange — اینها به ترتیب، یا یک نقطه زمانی را که فعالیت رخ داده است، یا شروع و پایان زمانی که فعالیت در یک بازه زمانی رخ داده است، توصیف می‌کنند.

  • Actor — معمولاً یک Actor یک کاربر نهایی است. با این حال، گاهی اوقات، یک رویداد سیستم می تواند یک Action هنگامی که یک سرپرست به عنوان یک کاربر یا خودش عمل می کند، یا زمانی که توسط یک فرد غیرقابل شناسایی انجام می شود، راه اندازی کند. پیام Actor هر یک از این موارد را در بر می گیرد.

  • Target - Target یک فعالیت است، مانند یک فایل، یک پوشه، یک درایو مشترک یا یک نظر فایل. توجه داشته باشید که بسیاری از انواع عملیات از بیش از یک نوع هدف پشتیبانی می کنند. به عنوان مثال، اگرچه Edit به طور کلی برای فایل‌های Drive اعمال می‌شود، اقدامات دیگری مانند Rename و Create نیز می‌توانند در پوشه‌های Drive و درایوهای مشترک اعمال شوند. اهدافی که آیتم‌های Drive نیستند همچنان می‌توانند به یکی از آنها ارجاع دهند، مانند پوشه اصلی یک درایو یا سند والد حاوی یک نظر فایل.

  • Action — هر منبع DriveActivity یک یا چند کنش مرتبط دارد. یک Action مانند یک رویداد مستقل است، زیرا نه تنها شامل نوع دقیق و اطلاعات مربوط به کنش است، بلکه شامل یک Actor ، یک Target ، و یک Timestamp یا TimeRange . برای جلوگیری از افزونگی، یک Action فیلدهای Target ، Actor یا زمان خودش را پر نمی‌کند، زمانی که این فیلدها با DriveActivity کلی یکسان هستند.

  • ActionDetail - این نوع خاص و اطلاعات دقیق در مورد یک Action است. به عنوان مثال، جزئیات اقدام Move دارای منبع و مکان مقصد است، و PermissionChange مشخص می کند که اکنون چه کسی می تواند به یک سند و با چه امتیازاتی دسترسی داشته باشد.

نمونه پاسخ ها

کاربری فایلی را در Drive ویرایش کرد:

یک منبع DriveActivity ساده ممکن است شامل تنها یک عمل باشد، مانند ویرایش یک فایل توسط کاربر.

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[ { "drive_item":{ "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 کلی یکسان هستند.

دو کاربر یک فایل را در زمان های مشابه ویرایش کردند:

وقتی یکپارچه سازی روشن است، اقدامات مرتبط در یک DriveActivity گروه بندی می شوند. در این مثال، 2 اقدام مشابه گروه بندی شده اند: یک نوع اقدام Edit از 2 کاربر مختلف.

"activities":[{
  "primary_action_detail":{ "edit":{} },
  "actors":[
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
    { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } }
  ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID", "title":"TITLE", "file":{} } }
  ],
  "time_range":{
    "start_time":{ "seconds":"1541089823", "nanos":712000000 },
    "end_time":{ "seconds":"1541089830", "nanos":830000000 }
  },
  "actions":[
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_1" } } },
      "timestamp":{ "seconds":"1541089830", "nanos":830000000 }
    },
    {
      "detail":{ "edit":{} },
      "actor":{ "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID_2" } } },
      "timestamp":{ "seconds":"1541089823", "nanos":712000000 }
    }
  ]
}]

این خروجی شامل مقادیر زیر است:

  • ACCOUNT_ID_1 : شناسه اولین کاربر. برای دریافت اطلاعات بیشتر می توان از آن با People API استفاده کرد.
  • ACCOUNT_ID_2 : شناسه کاربر دوم.
  • ITEM_ID : شناسه مورد Drive.
  • TITLE : عنوان مورد Drive.

توجه داشته باشید که اقدامات در این پاسخ شامل Target نمی‌شود، زیرا مانند DriveActivity کلی است.

این مثال همچنین نشان می‌دهد که چگونه برنامه‌ها ممکن است تنها از اطلاعات خلاصه در DriveActivity استفاده کنند، بدون اینکه به اقدامات فردی نگاه کنند. پاسخ نشان می دهد که 2 کاربر یک فایل معین را در یک بازه زمانی ویرایش کرده اند.

یک کاربر 2 فایل را به یک فهرست جدید منتقل کرد:

در این مثال، استراتژی تلفیق 2 اقدام Move مرتبط را گروه بندی می کند زیرا فایل ها همزمان از یک منبع به یک مقصد منتقل شده اند.

"activities":[{
  "primary_action_detail":{
    "move":{
      "added_parents":[ { ... } ]
      "removed_parents":[ { ... } ]
    }
  },
  "actors":[ { "user":{ "known_user":{ "person_name":"people/ACCOUNT_ID" } } } ],
  "targets":[
    { "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } },
    { "drive_item":{ "name":"items/ITEM_ID_2", "title":"* TITLE_2", "file":{} } }
  ],
  "timestamp":{ "seconds":"1541090960", "nanos":985000000 },
  "actions":[
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "name":"items/ITEM_ID_1", "title":"TITLE_1", "file":{} } }
    },
    {
      "detail":{ "move":{ "added_parents":[ { ... } ] "removed_parents":[ { ... } ] } },
      "target":{ "drive_item":{ "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.

توجه داشته باشید که کنش‌های این پاسخ شامل Actor یا TimeStamp نمی‌شود، زیرا آنها با DriveActivity کلی یکسان هستند.