Модель данных Drive Activity API

В этом руководстве объясняются основные компоненты ответа в Google Drive Activity API, приводятся примеры и способы их интерпретации.

Объекты

  • DriveActivity — это основной ресурс, возвращаемый запросами к Drive Activity API. Он описывает одного или нескольких акторов, выполняющих одно или несколько действий, влияющих на одну или несколько целей.

  • Timestamp и TimeRange — описывают, соответственно, либо отдельный момент времени, когда произошло действие, либо начало и конец, когда действие произошло в течение определенного промежутка времени.

  • Actor — Обычно Actor является конечным пользователем. Однако иногда системное событие может инициировать Action , когда администратор действует как пользователь или как он сам, или когда оно выполняется неизвестным лицом. Сообщение Actor инкапсулирует каждый из этих случаев.

  • TargetTarget — это объект действия, такой как файл, папка, общий диск или комментарий к файлу. Обратите внимание, что многие типы действий поддерживают более одного типа цели. Например, несмотря на то, что Edit » обычно применяется к файлам на Диске, другие действия, такие как Rename » и « Create », также могут применяться к папкам на Диске и общим дискам. Цели, не являющиеся элементами Диска, по-прежнему могут ссылаться на них, например на корневую папку диска или родительский документ, содержащий комментарий к файлу.

  • Action — у каждого ресурса DriveActivity есть одно или несколько связанных действий. Action самодостаточен, как и event , в том смысле, что он содержит не только подробный тип и информацию о действии, но также Actor , Target и либо Timestamp , либо TimeRange . Чтобы избежать избыточности, Action не заполняет свои собственные поля Target , Actor или time , если они совпадают с общей DriveActivity .

  • ActionDetail — это конкретный тип и подробная информация о Action . Например, деталь действия « Move » имеет исходное и целевое расположение, а PermissionChange указывает, кто теперь может получить доступ к документу и с какими привилегиями.

Примеры ответов

Пользователь отредактировал файл на Диске:

Простой ресурс 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 : идентификатор пользователя. Его можно использовать с API People для получения дополнительной информации.
  • ITEM_ID : идентификатор элемента Диска.
  • TITLE : название элемента Диска.

Обратите внимание, что 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 : идентификатор первого пользователя. Его можно использовать с API People для получения дополнительной информации.
  • ACCOUNT_ID_2 : идентификатор второго пользователя.
  • ITEM_ID : идентификатор элемента Диска.
  • TITLE : название элемента Диска.

Обратите внимание, что действия в этом ответе не включают 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 : идентификатор пользователя. Его можно использовать с API People для получения дополнительной информации.
  • ITEM_ID_1 : идентификатор первого элемента Диска.
  • ITEM_ID_2 : идентификатор второго элемента Диска.
  • TITLE_1 : название первого элемента Диска.
  • TITLE_2 : название второго элемента Диска.

Обратите внимание, что действия в этом ответе не включают в себя Actor или TimeStamp потому что они совпадают с общей DriveActivity .