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

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

ऑब्जेक्ट

  • DriveActivity: यह Drive पर गतिविधि के बारे में बताने वाले एपीआई को की गई क्वेरी से मिलने वाला मुख्य संसाधन है. इसमें एक या एक से ज़्यादा उपयोगकर्ताओं के बारे में जानकारी दी जाती है. ये उपयोगकर्ता एक या एक से ज़्यादा कार्रवाइयां करते हैं, जिनका असर एक या एक से ज़्यादा टारगेट पर पड़ता है.

  • Timestamp और TimeRange: इनसे पता चलता है कि गतिविधि कब हुई या किसी समयावधि के दौरान गतिविधि कब शुरू और कब खत्म हुई.

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

  • Target: Target किसी गतिविधि का ऑब्जेक्ट होता है. जैसे, फ़ाइल, फ़ोल्डर, शेयर की गई ड्राइव या फ़ाइल पर की गई टिप्पणी. ध्यान दें कि कई तरह की कार्रवाइयां, एक से ज़्यादा तरह के टारगेट के साथ काम करती हैं. उदाहरण के लिए, 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":[{
  "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 में सिर्फ़ खास जानकारी का इस्तेमाल कैसे कर सकते हैं. जवाब से पता चलता है कि दो उपयोगकर्ताओं ने किसी फ़ाइल में, एक तय समयावधि के दौरान बदलाव किया है.

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

इस उदाहरण में, ConsolidationStrategy ने मिलती-जुलती दो Move कार्रवाइयों को एक ग्रुप में रखा है, क्योंकि फ़ाइलों को एक ही सोर्स से एक ही डेस्टिनेशन पर एक ही समय में ट्रांसफ़र किया गया था.

"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 के बराबर हैं.