Модель данных API активности Диска

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

Объекты

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

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

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

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

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

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

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

Просмотрите следующее, чтобы увидеть примеры ответов.

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

Ресурс 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 : идентификатор объекта на Диске.
  • TITLE : название объекта на Диске.

Обратите внимание, что объект 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 : идентификатор объекта на Диске.
  • TITLE : название объекта на Диске.

Обратите внимание, что объект 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 : идентификатор первого элемента Диска.
  • ITEM_ID_2 : идентификатор второго элемента Диска.
  • TITLE_1 : название первого объекта на Диске.
  • TITLE_2 : название второго объекта на Диске.

Обратите внимание, что объект Action в этом ответе не включает Actor или timestamp , поскольку они совпадают с общим DriveActivity .