Управление ожидающими предложениями доступа

Предложение о доступе — это предложение от запрашивающей стороны утверждающей стороне о предоставлении получателю доступа к элементу Google Диска.

Утверждающий может просматривать все неразрешённые предложения по доступу к файлам на Диске и принимать по ним решения. Это означает, что вы можете ускорить процесс утверждения, программно запрашивая предложения по доступу и затем разрешая их. Кроме того, утверждающий может просматривать все предложения в совокупности.

API Google Диска предоставляет ресурс accessproposals , позволяющий просматривать и обрабатывать ожидающие заявки на доступ. Методы ресурса accessproposals работают с файлами, папками и файлами на общем диске, но не на самом общем диске.

Следующие термины относятся к предложениям по доступу:

  • Запрашивающая сторона : пользователь, инициирующий предложение о доступе к элементу Диска.
  • Получатель : пользователь, получающий дополнительные разрешения на доступ к файлу в случае одобрения запроса. Часто получатель совпадает с запрашивающим, но не всегда.
  • Утверждающий : пользователь, ответственный за одобрение (или отклонение) предложения о доступе. Обычно это происходит, если он является владельцем документа или имеет право предоставить к нему доступ.

Список ожидающих предложений по доступу

Чтобы составить список всех ожидающих предложений доступа к элементу Диска, вызовите метод list() ресурса accessproposals и включите параметр пути fileId .

Только утверждающие могут перечислять ожидающие предложения по файлу. Утверждающий — это пользователь с полномочиями can_approve_access_proposals для файла. Если запросчик не является утверждающим, возвращается пустой список. Подробнее о capabilities см. в разделе «Ознакомление с возможностями файла» .

Тело ответа состоит из объекта AccessProposal , представляющего список неразрешенных предложений доступа к файлу.

Объект AccessProposal содержит информацию о каждом предложении, такую ​​как инициатор запроса, получатель и добавленное инициатором сообщение. Он также включает объект AccessProposalRoleAndView , который группирует предложенную инициатором запроса role с view . Поскольку поле role повторяется, для каждого предложения может существовать несколько таких полей. Например, предложение может иметь объект AccessProposalRoleAndView со значением role=reader и view=published , а также дополнительный объект AccessProposalRoleAndView только со значением role=writer . Подробнее см. в разделе Views .

Передайте следующие параметры запроса для настройки пагинации или фильтрации предложений доступа:

  • pageToken : токен страницы, полученный при предыдущем вызове списка. Укажите этот токен для получения следующей страницы.

  • pageSize : максимальное количество предложений доступа, возвращаемых на страницу.

Решить ожидающие предложения по доступу

Чтобы разрешить все ожидающие предложения по доступу к элементу Диска, вызовите метод resolve() для ресурса accessproposals и включите параметры пути fileId и proposalId .

Метод resolve() включает параметр запроса action , который определяет действие, которое необходимо выполнить над предложением. Объект Action отслеживает изменение состояния предложения, чтобы мы знали, принимается оно или отклоняется.

Метод resolve() также включает необязательные параметры запроса role и view . Поддерживаются только роли writer , commenter и reader . Если роль не указана, по умолчанию используется reader . Дополнительный необязательный параметр запроса send_notification позволяет отправлять уведомление по электронной почте инициатору запроса при принятии или отклонении предложения.

Как и в случае с методом list() , пользователи, принимающие решение по предложению, должны иметь право can_approve_access_proposals для файла. Подробнее о capabilities см. в разделе «Общие сведения о возможностях файла» .

Предложения обрабатываются по тем же шаблонам, что и в разделе «Сценарии совместного использования ресурсов Диска» . Если для одного и того же пользователя, но с разными ролями, имеется несколько предложений, применяются следующие правила:

  • Если одно предложение принято, а другое отклонено, принятая роль применяется к элементу Диска.
  • Если оба предложения принимаются одновременно, применяется предложение с более высоким уровнем доступа (например, role=writer а не role=reader ). Другое предложение доступа удаляется из элемента.

После отправки предложения методу resolve() действие по предоставлению доступа завершается. AccessProposal больше не возвращается методом list() . После принятия предложения пользователь должен использовать коллекцию permissions для обновления разрешений для файла или папки. Подробнее см. в разделе Обновление разрешений .