landing.role.setAccessCodes
Установить коды доступа для роли
Описание
Метод landing.role.setAccessCodes задает, кому назначена роль: пользователям, группам или отделам. После вызова метод заново применяет уже сохраненные права этой роли для сайтов.
Параметры
scope
string
необязательный
Раздел, к которому относится роль. Параметр не связан с REST-скоупом landing в названии метода.
Значения GROUP, KNOWLEDGE и MAINPAGE соответствуют типам сайтов из статьи Работа с типами сайтов и скоупами.
Возможные значения:
GROUP — роли для сайтов групп
KNOWLEDGE — роли для баз знаний
MAINPAGE — роли для главной страницы или вайба
Если параметр не передать, метод работает с ролями для сайтов и интернет-магазинов. Для роли другого раздела метод вернет ошибку ROLE_SCOPE_MISMATCH
id
integer
обязательный
Идентификатор роли. Получить идентификатор можно с помощью метода landing.role.getList
codes
string[]
необязательный
Итоговый список кодов доступа для роли.
Метод полностью заменяет ранее сохраненный список и не объединяет его с текущим.
Варианты кодов доступа:
- U<ID> — пользователь
- G<ID> — группа пользователей
- DR<ID> — отдел вместе с подотделами
- AU — все авторизованные пользователи
- SG<ID> — рабочая группа
Подробнее о кодах доступа и правилах их использования рассказано в описании метода landing.site.setRights
Метод не проверяет каждый код доступа по отдельности. Если в списке есть неподдерживаемый или несуществующий код, отдельной ошибки не будет
Если параметр codes не передать, список кодов роли будет очищен. При этом сохраненные права роли по сайтам не исчезают автоматически, поэтому после вызова доступ может сохраниться у большего числа пользователей, чем ожидалось
После изменения кодов доступа система пересчитывает не только права по сайтам, но и дополнительные права роли: возможность создавать сайты, видеть раздел «Сайты и магазины» в меню и администрировать раздел
Получить сохраненный список кодов доступа через REST нельзя. Метод landing.role.getList возвращает только идентификатор, название и XML_ID роли, а landing.role.getRights показывает только права роли по сайтам
Если передать параметр codes не в формате массива, метод вернет ошибку ERROR_ARGUMENT
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"id": 11,
"codes": [
"U45",
"DR7",
"SG3_A"
]
}' \
"https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.role.setAccessCodes.json"
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"id": 11,
"codes": [
"U45",
"DR7",
"SG3_A"
],
"auth": "**put_access_token_here**"
}' \
"https://**put.your-domain-here**/rest/landing.role.setAccessCodes.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.setAccessCodes',
params: {
id: 11,
codes: [
'U45',
'DR7',
'SG3_A',
],
},
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('Access codes updated:', 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 setRoleAccessCodes() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'landing.role.setAccessCodes',
params: {
id: 11,
codes: [
'U45',
'DR7',
'SG3_A',
],
},
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('Access codes updated:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', setRoleAccessCodes)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.landing.role.set_access_codes(
bitrix_id=11,
codes=[
"U45",
"DR7",
"SG3_A",
],
).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.setAccessCodes',
[
'id' => 11,
'codes' => [
'U45',
'DR7',
'SG3_A',
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error setting role access codes: ' . $e->getMessage();
}
BX24.callMethod(
'landing.role.setAccessCodes',
{
id: 11,
codes: [
'U45',
'DR7',
'SG3_A'
]
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'landing.role.setAccessCodes',
[
'id' => 11,
'codes' => [
'U45',
'DR7',
'SG3_A',
],
]
);
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.setAccessCodes", b24.Params{
"id": 11,
"codes": []string{"U45", "DR7", "SG3_A"},
})
if err != nil {
return fmt.Errorf("landing.role.setAccessCodes: %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": 1775067129,
"finish": 1775067129.196438,
"duration": 0.19643807411193848,
"processing": 0,
"date_start": "2026-04-01T21:12:09+03:00",
"date_finish": "2026-04-01T21:12:09+03:00",
"operating_reset_at": 1775067729,
"operating": 0
}
}
Возвращаемые данные
result
boolean
Результат вызова
Метод возвращает true, если запрос завершился без ошибки доступа или системной ошибки.
Значение true само по себе не подтверждает, что роль с таким id существует или что список кодов был изменен.
После вызова проверьте результат в интерфейсе. Через REST можно дополнительно проверить, какие права роли применяются к сайтам, методом landing.role.getRights, но итоговый список кодов доступа этот метод не возвращает
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "MISSING_PARAMS",
"error_description": "Недостаточно параметров вызова, пропущены: id"
}
| Код | Описание | Значение |
|---|---|---|
ACCESS_DENIED |
Недостаточно прав для работы с разделом «Сайты и магазины» | |
IS_NOT_ADMIN |
Для метода нужны права администратора или право «полный доступ» к разделу «Сайты и магазины» | |
FEATURE_NOT_AVAIL |
Управление правами в разделе «Сайты и магазины» недоступно на текущем тарифе | |
MISSING_PARAMS |
Не передан обязательный параметр id |
|
ERROR_ARGUMENT |
Параметр codes передан не в формате массива |
|
ROLE_SCOPE_MISMATCH |
Роль не относится к разделу из параметра scope. Метод возвращает эту ошибку и для роли другого раздела, и для несуществующей роли |

