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

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