Изменить настройки доступа сущности

Запрос позволяет выдать или отозвать доступ к сущности — цели, проекту или портфелю проектов. Подробнее о настройках доступа читайте в разделе Как настроить права доступа в проектах, портфелях и целях.

PATCH

https://api.tracker.yandex.net/v3/entities/<тип_сущности>/<id_сущности>/extendedPermissions

Чтобы настроить права доступа к сущности, также можно использовать запрос:

PATCH https://api.tracker.yandex.net/v3/entities/<тип_сущности>/<id_сущности>/permissions

Этот запрос отличается тем, что не позволяет задать параметр permissionSources — родительскую сущность, от которой текущая сущность должна наследовать права доступа. Формат тела запроса и ответа совпадает с форматом объекта acl — см. описание.

Формат запроса

Перед выполнением запроса получите доступ к API.

Чтобы изменить сущность, используйте HTTP-запрос с методом PATCH. В теле запроса укажите параметры в формате JSON.

PATCH /v3/entities/<тип_сущности>/<id_сущности>/extendedPermissions
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth-токен>
X-Org-ID или X-Cloud-Org-ID: <идентификатор_организации>

{
    "permissionSources": [],
    "acl": {
        "grant": {
            "READ": {
                "users": ["username1", "username2"],
                "groups": [],
                "roles": []
            },
            "WRITE": {
                "users": [],
                "groups": [1, 2],
                "roles": []
            },
            "GRANT": {
                "users": [],
                "groups": [],
                "roles": []
            }
        },
        "revoke": {
            "READ": {
                "users": {"uid": 123********},
                "groups": 3,
                "roles": []
            },
            "WRITE": {
                "users": [],
                "groups": [],
                "roles": "FOLLOWER"
            },
            "GRANT": {
                "users": [],
                "groups": [],
                "roles": []
            }
        }
    }
}
Заголовки
  • Host: адрес узла, предоставляющего API.

  • Authorization: токен для авторизации в одном из форматов:

    • OAuth <OAuth-токен> при авторизации по протоколу OAuth 2.0. Читать подробнее

    • Bearer <IAM-токен> при авторизации с помощью IAM-токена — если к Трекеру привязана организация Yandex Cloud Organization. Читать подробнее

  • X-Org-ID или X-Cloud-Org-ID: идентификатор организации.

    • Используйте заголовок X-Org-ID, если к Трекеру привязана организация Яндекс 360 для бизнеса.

    • Используйте заголовок X-Cloud-Org-ID, если к Трекеру привязана организация Yandex Cloud Organization.

    Чтобы узнать идентификатор организации, перейдите на страницу АдминистрированиеОрганизации и скопируйте значение поля идентификатор.

Ресурс
Параметр Описание Тип данных
<тип_сущности> Тип сущности:
  • project — проект;
  • portfolio — портфель;
  • goal — цель
Строка
<id_сущности> Идентификатор сущности. Чтобы получить идентификатор, посмотрите список сущностей. В качестве идентификатора можно использовать параметр id или shortId. Строка
Параметры тела запроса

Дополнительные параметры

Параметр

Описание

Тип данных

permissionSources

Идентификатор родительской сущности, от которой текущая сущность должна наследовать права доступа.

  • Чтобы включить наследование прав доступа, укажите идентификатор основного портфеля (для портфеля или проекта) или родительской цели (для цели).
    Идентификатор родительской сущности указан в ответе на запрос Получить настройки доступа сущности.
    Чтобы изменить родительскую сущность, используйте запрос Изменить сущность.
  • Чтобы отключить наследование прав доступа, передайте значение "permissionSources": []

Строка или массив строк

acl

Объект, содержащий информацию о типах доступа, которые требуется выдать или отозвать

Объект

Если задано непустое значение permissionSources:

Чтобы изменить права доступа, сначала отключите наследование прав от родительской сущности.

Поля объекта acl

Параметр Описание Тип данных
grant Объект, содержащий информацию о типах доступа, которые требуется выдать пользователям, группам или ролям Объект
revoke Объект, содержащий информацию о типах доступа, которые требуется отозвать у пользователей, групп или ролей Объект

Поля объектов grant и revoke

Параметр Описание Тип данных
READ Объект с информацией о пользователях, группах и ролях, которым требуется выдать или отозвать доступ для просмотра сущности Объект
GRANT Объект с информацией о пользователях, группах и ролях, которым требуется выдать или отозвать права для настройки доступа к сущности Объект
WRITE Объект с информацией о пользователях, группах и ролях, которым требуется выдать или отозвать доступ для редактирования сущности Объект

Поля объектов READ, GRANT и WRITE

Параметр

Описание

Тип данных

users

Идентификаторы или логины пользователей, которым требуется выдать или отозвать данный тип доступа

Строка или массив строк

groups

Идентификаторы групп, которым требуется выдать или отозвать данный тип доступа

Число или массив чисел

roles

Список ролей сущности, которым требуется выдать или отозвать данный тип доступа:

  • AUTHOR — Автор
  • OWNER — Ответственный
  • CLIENT — Заказчики
  • FOLLOWER — Наблюдатели
  • MEMBER — Участники

Строка или массив строк

Пример 1: Включить наследование прав доступа к проекту от основного портфеля

PATCH /v3/entities/project/655f8cc52*****/extendedPermissions
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth-токен>
X-Org-ID или X-Cloud-Org-ID: <идентификатор_организации>

{
   "permissionSources": "67ffd7e3********"
}

Пример 2: Отключить наследование прав доступа к проекту от основного портфеля и выдать права для редактирования проекта группе с идентификатором 2.

PATCH /v3/entities/project/655f8cc52*****/extendedPermissions
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth-токен>
X-Org-ID или X-Cloud-Org-ID: <идентификатор_организации>

{
   "permissionSources": [],
   "acl": {
       "grant": {
           "WRITE": {
               "users": [],
               "groups": 2,
               "roles": []
           }
       }
   }
}

Пример 3: Выдать доступ для просмотра проекта пользователю с логином username1. Наследование прав доступа от основного портфеля должно быть предварительно отключено.

PATCH /v3/entities/project/655f8cc52*****/extendedPermissions
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth-токен>
X-Org-ID или X-Cloud-Org-ID: <идентификатор_организации>

{
  "acl": {
      "grant": {
          "READ": {
              "users": {"login": "username1"}
          }
      }
  }
}

Пример 4: Отозвать права на управление доступом к проекту у пользователя с логином username2с помощью метода https://api.tracker.yandex.net/v3/entities/<тип_сущности>/<id_сущности>/permissions. Наследование прав доступа от основного портфеля должно быть предварительно отключено.

PATCH /v3/entities/project/655f8cc52*****/permissions
Host: api.tracker.yandex.net
Authorization: OAuth <OAuth-токен>
X-Org-ID или X-Cloud-Org-ID: <идентификатор_организации>

{
  "revoke": {
      "GRANT": {
          "users": "username2"
      }
    }
}

Формат ответа

В случае успешного выполнения запроса API возвращает ответ с кодом 200 OK.

Тело ответа содержит информацию о настройках доступа сущности в формате JSON.

{
    "acl": {
        "READ": {
            "users": [
                {
                    "self": "https://api.tracker.yandex.net/v3/users/11********",
                    "id": "11********",
                    "display": "Имя Фамилия",
                    "passportUid": 11********
                }
            ],
            "groups": [
                {
                    "self": "https://api.tracker.yandex.net/v3/groups/1",
                    "id": "1",
                    "display": "Группа 1"
                }
            ],
            "roles": []
        },
        "GRANT": {
            "users": [],
            "groups": [
                {
                    "self": "https://api.tracker.yandex.net/v3/groups/2",
                    "id": "2",
                    "display": "Группа 2"
                }
            ],
            "roles": [
                "AUTHOR",
                "OWNER"
            ]
        },
        "WRITE": {
            "users": [],
            "groups": [
                {
                    "self": "https://api.tracker.yandex.net/v3/groups/3",
                    "id": "3",
                    "display": "Группа 3"
                }
            ],
            "roles": [
                "CLIENT",
                "AUTHOR",
                "FOLLOWER",
                "OWNER",
                "MEMBER"
            ]
        }
    },
    "permissionSources": [
        {
            "self": "https://api.tracker.yandex.net/v3/entities/portfolio/67ffd7e3********",
            "id": "67ffd7e3********",
            "display": "My portfolio"
        }
    ],
    "parentEntities": {
        "primary": {
            "self": "https://api.tracker.yandex.net/v3/entities/portfolio/67ffd7e3********",
            "id": "67ffd7e3********",
            "display": "My portfolio"
        },
        "secondary": []
    }
}
Параметры ответа
Параметр Описание Тип данных
acl Объект с информацией о пользователях, группах и ролях, которые имеют различные типы доступа к сущности Объект
permissionSources Родительская сущность (основной портфель или родительская цель), от которой текущая сущность наследует права доступа Объект
parentEntities Список родительских сущностей, от которых текущая сущность наследует права доступа Объект

Поля объекта parentEntities

Параметр Описание Тип данных
primary Основной портфель (для проектов и портфелей) или родительская цель (для целей) Объект
secondary Для проектов и портфелей — список дополнительных портфелей
Для целей значение параметра всегда пусто
Массив объектов

Поля объекта, содержащего данные сущности

Параметры permissionSources, primary и secondary содержат объекты со следующими полями:

Параметр Описание Тип данных
self Адрес ресурса API, который содержит информацию о сущности Строка
id Идентификатор сущности Строка
display Название сущности Строка

Поля объекта acl

Параметр Описание Тип данных
READ Объект с информацией о пользователях, группах и ролях, которые имеют доступ для просмотра сущности Объект
GRANT Объект с информацией о пользователях, группах и ролях, которые могут изменять настройки доступа к сущности Объект
WRITE Объект с информацией о пользователях, группах и ролях, которые имеют доступ для редактирования сущности Объект

Поля объектов READ, GRANT и WRITE

Параметр

Описание

Тип данных

users

Список пользователей, которые имеют данный тип доступа

Массив объектов

groups

Список групп, которые имеют данный тип доступа

Массив объектов

roles

Список ролей сущности, которые имеют данный тип доступа:

  • AUTHOR — Автор
  • OWNER — Ответственный
  • CLIENT — Заказчики
  • FOLLOWER — Наблюдатели
  • MEMBER — Участники

Массив строк

Поля объектов в массиве users

Параметр Описание Тип данных
self Адрес ресурса API, который содержит информацию о пользователе. Строка
id Идентификатор пользователя. Строка
display Отображаемое имя пользователя. Строка
passportUid Уникальный идентификатор аккаунта пользователя в организации Яндекс 360 для бизнеса и Яндекс ID. Число
cloudUid Уникальный идентификатор пользователя в Yandex Cloud Organization. Строка

Поля объектов в массиве groups

Параметр Описание Тип данных
self Адрес ресурса API, который содержит информацию о группе пользователей Строка
id Идентификатор группы Строка
display Отображаемое имя группы Строка

Если запрос не был успешно обработан, API возвращает ответ с кодом ошибки:

400
Один или несколько параметров запроса имеют недопустимое значение.
401
Пользователь не авторизован. Проверьте, были ли выполнены действия, описанные в разделе Доступ к API.
403
У вас не хватает прав на выполнение этого действия. Наличие прав можно перепроверить в интерфейсе Трекера — для выполнения действия при помощи API и через интерфейс требуются одинаковые права.
412
При редактировании объекта возник конфликт. Возможно, ошибка возникла из-за неправильно указанной версии изменений.
423
Редактирование объекта заблокировано. Возможно, превышено допустимое значение параметра version — количество обновлений объекта. Максимальное значение версии составляет 10100 для роботов и 11100 для пользователей.
428
Доступ к ресурсу отклонен. Проверьте, указаны ли все обязательные условия выполнения запроса.