फ़ाइल के कॉन्टेंट को सुरक्षित रखना

Google Drive API, फ़ाइल में बदलाव करने से रोकने के कई तरीके उपलब्ध कराता है. इनमें फ़ाइल के कॉन्टेंट पर पाबंदी लगाना और फ़ाइलों को डाउनलोड, प्रिंट या कॉपी करने के विकल्प पर पाबंदी लगाना शामिल है.

Drive में कॉन्टेंट पर पाबंदियां लगाकर, फ़ाइलों को सिर्फ़ पढ़ने के लिए उपलब्ध कराना

Google Drive में मौजूद किसी फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लगाई जा सकती है. इससे उपयोगकर्ताओं को ये काम करने से रोका जा सकता है:

  • टाइटल में बदलाव करना
  • कॉन्टेंट में बदलाव करना
  • बदलाव अपलोड करना
  • टिप्पणियां जोड़ना या उनमें बदलाव करना

कॉन्टेंट पर पाबंदी लगाने का मतलब, ऐक्सेस पर पाबंदी लगाना नहीं है. उपयोगकर्ता, फ़ाइल के कॉन्टेंट में बदलाव नहीं कर सकते. हालांकि, उन्हें अपने ऐक्सेस लेवल के हिसाब से अन्य कार्रवाइयां करने की अनुमति होती है. उदाहरण के लिए, बदलाव करने का ऐक्सेस रखने वाला उपयोगकर्ता अब भी किसी आइटम को एक जगह से दूसरी जगह ले जा सकता है या उसकी शेयर करने की सेटिंग बदल सकता है.

Drive में मौजूद किसी फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लगाने या हटाने के लिए, उपयोगकर्ता के पास उससे जुड़ी permissions होनी चाहिए. अगर आपको capabilities.canModifyEditorContentRestriction वाली फ़ाइल या फ़ोल्डर को 'मेरी ड्राइव' या 'शेयर की गई ड्राइव' में ले जाना है, तो आपके पास role=writer होना चाहिए. अगर 'मेरी ड्राइव' या शेयर की गई ड्राइव में मौजूद किसी फ़ाइल या फ़ोल्डर पर ownerRestricted कॉन्टेंट से जुड़ी पाबंदी लगी है, तो आपके पास उस फ़ाइल का मालिकाना हक होना चाहिए या आपके पास ownerRestricted होना चाहिए.role=organizer पाबंदी वाला कॉन्टेंट देखने के लिए, उपयोगकर्ताओं के पास role=reader या इससे ज़्यादा का वर्शन होना चाहिए. भूमिकाओं की पूरी सूची देखने के लिए, भूमिकाएं और अनुमतियां लेख पढ़ें. किसी फ़ाइल की अनुमतियां अपडेट करने के लिए, अनुमतियां अपडेट करना लेख पढ़ें.

कॉन्टेंट पर पाबंदी लगाने के लिए, files संसाधन पर मौजूद contentRestrictions.readOnly बूलियन फ़ील्ड का इस्तेमाल किया जा सकता है. ध्यान दें कि किसी आइटम पर कॉन्टेंट से जुड़ी पाबंदी सेट करने से, मौजूदा पाबंदी बदल जाती है.

कॉन्टेंट पर पाबंदियां लगाने के उदाहरण

Drive आइटम पर कॉन्टेंट से जुड़ी पाबंदी से लोगों को यह पता चलता है कि कॉन्टेंट में बदलाव नहीं किया जाना चाहिए. ऐसा इनमें से किसी वजह से हो सकता है:

  • समीक्षा या ऑडिट की अवधि के दौरान, साथ मिलकर बनाए गए दस्तावेज़ पर काम करना बंद करना.
  • किसी आइटम को मंज़ूरी मिलने जैसी फ़ाइनल स्थिति पर सेट करना.
  • संवेदनशील मीटिंग के दौरान बदलावों को रोकना.
  • ऑटोमेटेड सिस्टम (कार्रवाइयों को अपने-आप पूरा करने वाला सिस्टम) से मैनेज किए जाने वाले वर्कफ़्लो में बाहरी बदलावों को रोकना.
  • Google Apps Script और Google Workspace ऐड-ऑन के ज़रिए बदलाव करने पर पाबंदी लगाना.
  • किसी दस्तावेज़ में गलती से होने वाले बदलावों को रोकना.

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

कॉन्टेंट से जुड़ी पाबंदियों वाली फ़ाइलों को मैनेज करना

Google Docs, Google Sheets, और Google Slides के साथ-साथ अन्य सभी फ़ाइलों में, कॉन्टेंट से जुड़ी पाबंदियां हो सकती हैं.

किसी सामान पर कॉन्टेंट से जुड़ी पाबंदी होने पर, उसके टाइटल और कॉन्टेंट में बदलाव नहीं किया जा सकता. इसमें ये बदलाव शामिल हैं:

  • टिप्पणियां और सुझाव (Docs, Sheets, Slides, और बाइनरी फ़ाइलों पर)
  • किसी बाइनरी फ़ाइल के वर्शन
  • Docs में टेक्स्ट और फ़ॉर्मैटिंग
  • Sheets में मौजूद टेक्स्ट या फ़ॉर्मूले, Sheets का लेआउट, और Sheets में मौजूद इंस्टेंस
  • Slides में मौजूद सारा कॉन्टेंट, साथ ही स्लाइड का क्रम और उनकी संख्या

कुछ फ़ाइल टाइप में कॉन्टेंट से जुड़ी पाबंदी नहीं लगाई जा सकती. इसके कुछ उदाहरण यहां दिए गए हैं:

कॉन्टेंट पर पाबंदी जोड़ना

किसी फ़ाइल के कॉन्टेंट पर पाबंदी लगाने के लिए, files.update तरीके का इस्तेमाल करें. साथ ही, contentRestrictions.readOnly फ़ील्ड को true पर सेट करें. पाबंदी लगाने की वजह बताने के लिए, reason जोड़ें. हालांकि, ऐसा करना ज़रूरी नहीं है. जैसे, "अनुबंध फ़ाइनल हो गया है." यहां दिए गए कोड के उदाहरण में, कॉन्टेंट पर पाबंदी लगाने का तरीका बताया गया है:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set a content restriction on a file.
* @return{obj} updated file
**/
async function addContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसमें आपको बदलाव करना है.

सैंपल कोड चलाने पर, फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लग जाती है. साथ ही, Google Drive के यूज़र इंटरफ़ेस (यूआई) में फ़ाइल के नाम के बगल में लॉक का निशान () दिखता है. यह फ़ाइल अब सिर्फ़ पढ़ने के लिए उपलब्ध है.

Drive की फ़ाइल सूची में मौजूद ऐसी फ़ाइल जिसमें कॉन्टेंट से जुड़ी पाबंदी लागू है.
पहली इमेज. Drive की फ़ाइल सूची में मौजूद ऐसी फ़ाइल जिसमें कॉन्टेंट से जुड़ी पाबंदी लगी हो.

कॉन्टेंट पर लगी पाबंदी हटाना

किसी फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाने के लिए, files.update तरीके का इस्तेमाल करें. साथ ही, contentRestrictions.readOnly फ़ील्ड को false पर सेट करें. यहां दिए गए कोड के उदाहरण में, कॉन्टेंट पर लगी पाबंदी हटाने का तरीका बताया गया है:

Java

File updatedFile =
new File()
    .setContentRestrictions(
        ImmutableList.of(new ContentRestriction().setReadOnly(false));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': False}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Remove a content restriction on a file.
* @return{obj} updated file
**/
async function removeContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': False,
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसमें आपको बदलाव करना है.

सैंपल कोड चलाने पर, फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी नहीं रहती.

कॉन्टेंट पर लगी पाबंदी हटाने और कॉन्टेंट में बदलाव करने की अनुमति देने के लिए, Drive के यूज़र इंटरफ़ेस (यूआई) का भी इस्तेमाल किया जा सकता है. हालांकि, इसके लिए आपके पास ज़रूरी अनुमतियां होनी चाहिए. ऐसा करने के लिए, आपके पास दो विकल्प हैं:

  1. Drive में, उस फ़ाइल पर राइट क्लिक करें जिस पर कॉन्टेंट से जुड़ी पाबंदी लगी है. इसके बाद, अनलॉक करें पर क्लिक करें.

    Drive की फ़ाइल सूची में मौजूद किसी फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.
    दूसरी इमेज. Drive में मौजूद फ़ाइलों की सूची में, किसी फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.
  2. कॉन्टेंट पर पाबंदी वाली फ़ाइल खोलें. इसके बाद, (लॉक किया गया मोड) > फ़ाइल अनलॉक करें पर क्लिक करें.

    किसी दस्तावेज़ में मौजूद फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.
    तीसरी इमेज. किसी दस्तावेज़ में मौजूद फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.

कॉन्टेंट पर लगी पाबंदी की जांच करना

कॉन्टेंट से जुड़ी पाबंदी की जांच करने के लिए, contentRestrictions फ़ील्ड के साथ files.get तरीके का इस्तेमाल करें. यहां दिए गए कोड के उदाहरण में, कॉन्टेंट पर पाबंदी की स्थिति की जांच करने का तरीका बताया गया है:

Java

File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();

Python

response = drive_service.files().get(fileId="FILE_ID", fields = "contentRestrictions").execute();

Node.js

/**
* Get content restrictions on a file.
* @return{obj} updated file
**/
async function fetchContentRestrictions() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  try {
    const response = await service.files.get({
      fileId: 'FILE_ID',
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसकी आपको जांच करनी है.

सैंपल कोड चलाने पर, अगर ContentRestriction संसाधन मौजूद है, तो यह तरीका उसे दिखाता है.

कॉन्टेंट से जुड़ी पाबंदी जोड़ना. इसमें सिर्फ़ फ़ाइल का मालिक बदलाव कर सकता है

फ़ाइल के कॉन्टेंट पर पाबंदी लगाने के लिए, files.update तरीके का इस्तेमाल करें. इससे सिर्फ़ फ़ाइल के मालिक ही इस सुविधा को टॉगल कर पाएंगे. इसके लिए, contentRestrictions.ownerRestricted बूलियन फ़ील्ड को true पर सेट करें. यहां दिए गए कोड के उदाहरण में, सिर्फ़ फ़ाइल के मालिकों के लिए कॉन्टेंट पर पाबंदी लगाने का तरीका बताया गया है:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setOwnerRestricted(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'ownerRestricted': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set an owner restricted content restriction on a file.
* @return{obj} updated file
**/
async function addOwnerRestrictedContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': True,
    'ownerRestricted': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसमें आपको बदलाव करना है.

सैंपल कोड चलाने पर, फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लग जाती है. इसे सिर्फ़ फ़ाइल के मालिक हटा सकते हैं. अगर आपके पास फ़ाइल का मालिकाना हक है, तो आपको Drive के यूज़र इंटरफ़ेस (यूआई) में फ़ाइल के नाम के बगल में, लॉक का चालू सिंबल () दिखेगा. अगर आपके पास मालिकाना हक नहीं है, तो लॉक का निशान धुंधला हो जाता है.

ownerRestricted फ़्लैग हटाने के लिए, files.update तरीके का इस्तेमाल करें. साथ ही, contentRestrictions.ownerRestricted फ़ील्ड को false पर सेट करें.

कॉन्टेंट पर पाबंदी लगाने की सुविधाएं

files रिसॉर्स में, बूलियन capabilities फ़ील्ड का कलेक्शन होता है. इनका इस्तेमाल यह बताने के लिए किया जाता है कि किसी फ़ाइल पर कोई कार्रवाई की जा सकती है या नहीं.

कॉन्टेंट पर पाबंदियों की सेटिंग में ये capabilities शामिल हैं:

  • capabilities.canModifyEditorContentRestriction: इससे पता चलता है कि मौजूदा उपयोगकर्ता, कॉन्टेंट पर पाबंदी लगा सकता है या उसमें बदलाव कर सकता है या नहीं.
  • capabilities.canModifyOwnerContentRestriction: इससे पता चलता है कि मौजूदा उपयोगकर्ता, मालिक के कॉन्टेंट पर पाबंदी लगा सकता है या उसमें बदलाव कर सकता है या नहीं.
  • capabilities.canRemoveContentRestriction: क्या मौजूदा उपयोगकर्ता, लागू की गई कॉन्टेंट पर पाबंदी (अगर मौजूद है) को हटा सकता है.

ज़्यादा जानकारी के लिए, फ़ाइल की सुविधाओं के बारे में जानकारी लेख पढ़ें.

फ़ाइल capabilities को वापस पाने के उदाहरण के लिए, फ़ाइल की सुविधाएं पाना देखें.

लोगों को, आपकी फ़ाइल डाउनलोड करने, प्रिंट करने या उसे कॉपी करने से रोकना

आपके पास यह तय करने का विकल्प होता है कि उपयोगकर्ता, Drive, Docs, Sheets, और Slides में फ़ाइलों को किस तरह डाउनलोड, प्रिंट, और कॉपी कर सकते हैं.

यह तय करने के लिए कि उपयोगकर्ता किसी फ़ाइल के मालिक या आयोजक की ओर से डाउनलोड करने पर लगाई गई पाबंदियों को बदल सकता है या नहीं, capabilities.canChangeItemDownloadRestriction बूलियन फ़ील्ड देखें. अगर capabilities.canChangeItemDownloadRestriction को true पर सेट किया जाता है, तो फ़ाइल को डाउनलोड करने पर पाबंदियां लगाई जा सकती हैं. ज़्यादा जानकारी के लिए, फ़ाइल की सुविधाओं के बारे में जानें लेख पढ़ें.

किसी फ़ाइल को डाउनलोड करने से जुड़ी पाबंदियां लागू करने के लिए, files.update तरीके का इस्तेमाल करके downloadRestrictions फ़ील्ड सेट करें. DownloadRestrictionsMetadata ऑब्जेक्ट का इस्तेमाल करके, फ़ील्ड सेट किया जा सकता है.

DownloadRestrictionsMetadata ऑब्जेक्ट में दो फ़ील्ड होते हैं: itemDownloadRestriction और effectiveDownloadRestrictionWithContext. दोनों फ़ील्ड पढ़े जा सकते हैं, लेकिन सिर्फ़ itemDownloadRestriction को सेट किया जा सकता है. itemDownloadRestriction फ़ील्ड, DownloadRestriction ऑब्जेक्ट दिखाता है. DownloadRestriction ऑब्जेक्ट में दो अलग-अलग बूलियन फ़ील्ड होते हैं: restrictedForReaders और restrictedForWriters.

itemDownloadRestriction फ़ील्ड सेट करते समय, फ़ाइल डाउनलोड करने पर पाबंदी लगाने की सुविधा सीधे तौर पर मालिक या आयोजक लागू करता है. इसमें शेयर की गई ड्राइव की सेटिंग या डेटा लीक होने की रोकथाम (डीएलपी) के नियमों को शामिल नहीं किया जाता. ज़्यादा जानकारी के लिए, डीएलपी के बारे में जानकारी लेख पढ़ें.

अगर itemDownloadRestriction फ़ील्ड को अपडेट करके itemDownloadRestriction फ़ील्ड को true पर सेट किया जाता है, तो इसका मतलब है कि restrictedForReaders true है.restrictedForWriters इसी तरह, restrictedForWriters को true और restrictedForReaders को false पर सेट करने का मतलब है कि restrictedForWriters और restrictedForReaders, दोनों को true पर सेट किया गया है.

effectiveDownloadRestrictionWithContext फ़ील्ड के लिए, फ़ाइल डाउनलोड करने पर पाबंदी लगाई जाती है. साथ ही, यह पाबंदी, पाबंदी से जुड़ी सभी सेटिंग और डीएलपी नियमों के हिसाब से लगाई जाती है.

effectiveDownloadRestrictionWithContext फ़ील्ड को restrictedForWriters या restrictedForReaders पर सेट किया जा सकता है. अगर फ़ाइल की सेटिंग, शेयर की गई Drive की सेटिंग या डीएलपी नियमों (कॉन्टेक्स्ट के साथ लागू होने वाले नियमों के साथ) में, भूमिकाओं के लिए डाउनलोड या कॉपी करने से जुड़ी कोई पाबंदी है, तो वैल्यू को true पर सेट किया जाता है. ऐसा न होने पर, वैल्यू को false पर सेट किया जाता है.

पिछले वर्शन के गेम खेलने की सुविधा

हमारा सुझाव है कि आप DownloadRestriction ऑब्जेक्ट का इस्तेमाल करें. इससे यह तय किया जा सकता है कि उपयोगकर्ता, फ़ाइलों को कैसे डाउनलोड, प्रिंट, और कॉपी कर सकते हैं.

अगर आपको copyRequiresWriterPermission बूलियन फ़ील्ड का इस्तेमाल करना है, तो फ़ील्ड से डेटा पढ़ने और उसमें डेटा लिखने की सुविधा अलग-अलग होती है.

copyRequiresWriterPermission फ़ील्ड की मिली हुई वैल्यू से पता चलता है कि role=commenter या role=reader की अनुमति वाले उपयोगकर्ता, Drive में मौजूद फ़ाइलों को डाउनलोड, प्रिंट या कॉपी कर सकते हैं या नहीं. फ़ील्ड वैल्यू, फ़ाइल सेटिंग, शेयर की गई ड्राइव की सेटिंग या डीएलपी नियमों के कॉम्बिनेशन को दिखाती है. हालांकि, डीएलपी के नियमों के लिए कॉन्टेक्स्ट का आकलन करने की सुविधा शामिल नहीं है.

copyRequiresWriterPermission फ़ील्ड को false पर सेट करने से, restrictedForWriters और restrictedForReaders, दोनों फ़ील्ड false पर अपडेट हो जाते हैं. इसका मतलब है कि सभी उपयोगकर्ताओं के लिए, डाउनलोड करने या कॉपी करने से जुड़ी पाबंदी की सेटिंग हटा दी जाती हैं.

डाउनलोड, प्रिंट, और कॉपी करने की सुविधाओं को कंट्रोल करने वाले फ़ील्ड

नीचे दी गई टेबल में, files संसाधन फ़ील्ड दिए गए हैं. इनसे डाउनलोड, प्रिंट, और कॉपी करने की सुविधा पर असर पड़ता है:

फ़ील्ड ब्यौरा वर्शन
capabilities.canCopy इससे पता चलता है कि मौजूदा उपयोगकर्ता किसी फ़ाइल को कॉपी कर सकता है या नहीं. v2 और v3
capabilities.canDownload इससे पता चलता है कि मौजूदा उपयोगकर्ता किसी फ़ाइल को डाउनलोड कर सकता है या नहीं. v2 और v3
capabilities.canChangeCopyRequiresWriterPermission मौजूदा उपयोगकर्ता, किसी फ़ाइल की copyRequiresWriterPermission पाबंदी में बदलाव कर सकता है या नहीं. v2 और v3
capabilities.canChangeItemDownloadRestriction इससे पता चलता है कि मौजूदा उपयोगकर्ता, किसी फ़ाइल को डाउनलोड करने पर लगी पाबंदी में बदलाव कर सकता है या नहीं. सिर्फ़ v3
copyRequiresWriterPermission क्या पढ़ने वालों और टिप्पणी करने वालों के लिए, इस फ़ाइल को कॉपी, प्रिंट या डाउनलोड करने के विकल्प बंद किए जाने चाहिए. v2 और v3
downloadRestrictions किसी फ़ाइल को डाउनलोड करने पर लागू होने वाली पाबंदियां. सिर्फ़ v3