landing.role.setRights
Установить права роли для списка сайтов
Описание
Метод landing.role.setRights устанавливает права роли по сайтам. Для каждого сайта можно задать отдельные права, а для остальных — общие права по умолчанию. Новый набор прав полностью заменяет предыдущий.
Параметры
scope
string
необязательный
Раздел, к которому относится роль. Параметр не связан с REST-скоупом landing в названии метода.
Значения GROUP, KNOWLEDGE и MAINPAGE соответствуют типам сайтов из статьи Работа с типами сайтов и скоупами.
Возможные значения:
GROUP — роли для сайтов групп
KNOWLEDGE — роли для баз знаний
MAINPAGE — роли для главной страницы или вайба
Если параметр не передать, метод работает с ролями для сайтов и интернет-магазинов. Для роли другого раздела метод вернет ошибку ROLE_SCOPE_MISMATCH
id
integer
обязательный
Идентификатор роли, для которой нужно обновить права.
Получить идентификатор можно с помощью метода landing.role.getList.
Если передать идентификатор несуществующей роли, метод вернет ошибку ROLE_SCOPE_MISMATCH
rights
object
обязательный
Объект формата:
{
"0": ["read"],
"<siteId>": ["read", "edit", "sett"]
}
где:
- 0 — право по умолчанию для сайтов без отдельной настройки
- <siteId> — идентификатор сайта
Список доступных кодов прав описан ниже, а структура объекта — в таблице параметра rights.
Метод полностью заменяет ранее сохраненные права роли по сайтам
additional
string[]
необязательный
Дополнительные возможности роли.
Возможные значения:
menu24— показывать для роли пункт меню разделаcreate— разрешить создавать в разделе новые сайты, базы знаний или страницы
Коды зависят от раздела из параметра scope. Для баз знаний, сайтов групп и главной страницы у кодов есть префикс — knowledge_, group_ и vibe_ соответственно. Например, для базы знаний нужно передать knowledge_create.
Коды другого раздела метод не сохраняет.
Если параметр не передавать, текущие дополнительные возможности роли сохранятся без изменений
Параметр rights
0
string[]
необязательный
Права роли по умолчанию для всех сайтов, у которых нет отдельной настройки.
Доступные коды прав описаны ниже
<siteId>
string[]
необязательный
Права роли для сайта с указанным идентификатором.
Ключом служит идентификатор сайта, значением — массив кодов прав. Если сайт с таким идентификатором не найден, запись будет пропущена без ошибки.
Идентификатор сайта можно получить с помощью метода landing.site.getList или из результата метода landing.site.add.
Для каждого сайта передавайте массив кодов прав. Если вместо массива передать другое значение, запись для этого сайта будет пропущена без ошибки
Коды прав
denied
необязательный
Доступ к сайту запрещен
read
необязательный
Просмотр сайта
edit
необязательный
Изменение страниц сайта
sett
необязательный
Изменение настроек сайта
public
необязательный
Публикация
delete
необязательный
Удаление в корзину и восстановление из корзины
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"id": 11,
"rights": {
"0": ["read"],
"66": ["read", "edit", "sett"],
"71": ["denied"]
},
"additional": ["menu24", "create"]
}' \
"https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.role.setRights.json"
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"id": 11,
"rights": {
"0": ["read"],
"66": ["read", "edit", "sett"],
"71": ["denied"]
},
"additional": ["menu24", "create"],
"auth": "**put_access_token_here**"
}' \
"https://**put.your-domain-here**/rest/landing.role.setRights.json"
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
try {
const response = await $b24.actions.v2.call.make<boolean>({
method: 'landing.role.setRights',
params: {
id: 11,
rights: {
0: ['read'],
66: ['read', 'edit', 'sett'],
71: ['denied'],
},
additional: ['menu24', 'create'],
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Rights set successfully:', result)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function setRoleRights() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'landing.role.setRights',
params: {
id: 11,
rights: {
0: ['read'],
66: ['read', 'edit', 'sett'],
71: ['denied'],
},
additional: ['menu24', 'create'],
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Rights set successfully:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', setRoleRights)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.landing.role.set_rights(
bitrix_id=11,
rights={
"0": [
"read",
],
"66": [
"read",
"edit",
"sett",
],
"71": [
"denied",
],
},
additional=[
"menu24",
"create",
],
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'landing.role.setRights',
[
'id' => 11,
'rights' => [
0 => ['read'],
66 => ['read', 'edit', 'sett'],
71 => ['denied'],
],
'additional' => ['menu24', 'create'],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . var_export($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error setting role rights: ' . $e->getMessage();
}
BX24.callMethod(
'landing.role.setRights',
{
id: 11,
rights: {
0: ['read'],
66: ['read', 'edit', 'sett'],
71: ['denied']
},
additional: ['menu24', 'create']
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'landing.role.setRights',
[
'id' => 11,
'rights' => [
0 => ['read'],
66 => ['read', 'edit', 'sett'],
71 => ['denied'],
],
'additional' => ['menu24', 'create'],
]
);
if (isset($result['error']))
{
echo 'Ошибка: ' . $result['error_description'];
}
else
{
echo '<pre>';
print_r($result['result']);
echo '</pre>';
}
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "landing.role.setRights", b24.Params{
"id": 11,
"rights": b24.Params{
"0": []string{"read"},
"66": []string{"read", "edit", "sett"},
"71": []string{"denied"},
},
"additional": []string{"menu24", "create"},
})
if err != nil {
return fmt.Errorf("landing.role.setRights: %w", err)
}
var ok bool
if err := json.Unmarshal(res.Result, &ok); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("выполнено:", ok)
Ответ
HTTP-статус: 200
{
"result": true,
"time": {
"start": 1775071662,
"finish": 1775071663.148474,
"duration": 1.1484739780426025,
"processing": 0,
"date_start": "2026-04-01T22:27:42+03:00",
"date_finish": "2026-04-01T22:27:43+03:00",
"operating_reset_at": 1775072263,
"operating": 0.1147608757019043
}
}
Возвращаемые данные
result
boolean
Результат вызова.
Метод возвращает true, если запрос обработан без ошибки доступа или системной ошибки.
Значение true не гарантирует, что права были записаны для каждого переданного сайта. Если сайт не найден или формат одной из записей некорректен, такая запись будет пропущена без ошибки.
После вызова проверьте сохраненный набор прав методом landing.role.getRights
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "MISSING_PARAMS",
"error_description": "Недостаточно параметров вызова, пропущены: rights"
}
| Код | Описание | Значение |
|---|---|---|
ACCESS_DENIED |
Недостаточно прав для работы с разделом «Сайты и магазины» | |
IS_NOT_ADMIN |
Для метода нужны права администратора или право «полный доступ» к разделу «Сайты и магазины» | |
FEATURE_NOT_AVAIL |
Управление правами в разделе «Сайты и магазины» недоступно на текущем тарифе | |
MISSING_PARAMS |
Не передан обязательный параметр id или rights |
|
ROLE_SCOPE_MISMATCH |
Роль не относится к разделу из параметра scope. Метод возвращает эту ошибку и для роли другого раздела, и для несуществующей роли |

