Drive Activity API का डेटा मॉडल

इस गाइड में, Google Drive Activity API में रिस्पॉन्स के मुख्य कॉम्पोनेंट के बारे में बताया गया है. साथ ही, उदाहरण दिए गए हैं और उन्हें समझने का तरीका भी बताया गया है.

ऑब्जेक्ट

  • DriveActivity—यह Drive Activity API को भेजी गई क्वेरी से मिलने वाला मुख्य संसाधन है. इसमें एक या एक से ज़्यादा टारगेट पर असर डालने वाली एक या एक से ज़्यादा कार्रवाइयां करने वाले एक या एक से ज़्यादा ऐक्टर के बारे में बताया जाता है.

  • Timestamp और TimeRange—इनसे, गतिविधि के होने के समय के किसी एक पॉइंट या किसी समयावधि के दौरान गतिविधि के शुरू और खत्म होने के समय के बारे में पता चलता है.

  • Actor—आम तौर पर, Actor एक असली उपयोगकर्ता होता है. हालांकि, कभी-कभी सिस्टम इवेंट, Action को ट्रिगर कर सकता है. ऐसा तब होता है, जब कोई एडमिन उपयोगकर्ता या खुद के तौर पर काम कर रहा हो या जब कोई ऐसा व्यक्ति काम कर रहा हो जिसकी पहचान नहीं की जा सकती. Actor मैसेज में इन सभी मामलों के बारे में बताया गया है.

  • TargetTarget किसी गतिविधि का ऑब्जेक्ट होता है. जैसे, फ़ाइल, फ़ोल्डर, शेयर की गई ड्राइव या फ़ाइल पर की गई टिप्पणी. ध्यान दें कि कई तरह की कार्रवाइयां, एक से ज़्यादा तरह के टारगेट के साथ काम करती हैं. उदाहरण के लिए, Edit आम तौर पर Drive की फ़ाइलों पर लागू होता है. हालांकि, Rename और Create जैसी अन्य कार्रवाइयां, Drive के फ़ोल्डर और शेयर की गई ड्राइव पर भी लागू हो सकती हैं. Drive आइटम के तौर पर सेट नहीं किए गए टारगेट, किसी 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 में ग्रुप किया जाता है. इस उदाहरण में, दो मिलती-जुलती कार्रवाइयों को एक ग्रुप में रखा गया है: दो अलग-अलग उपयोगकर्ताओं की एक Edit कार्रवाई का टाइप.

"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 में सिर्फ़ खास जानकारी का इस्तेमाल कैसे कर सकते हैं. जवाब से पता चलता है कि दो उपयोगकर्ताओं ने किसी फ़ाइल में, एक तय समयावधि के दौरान बदलाव किया है.

किसी उपयोगकर्ता ने दो फ़ाइलों को नई डायरेक्ट्री में ले जाया:

इस उदाहरण में, एक साथ कई टास्क करने की रणनीति ने मिलती-जुलती दो 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 जैसी ही हैं.