# landing.role.setRights

URL: https://chugunov.pro/api-bitrix24/landing/rights/role-model/landing-role-set-rights/
Проверено на Битрикс24 REST API, обновлено 11.09.2026 (ревизия источника fb39d6c).
Источник: официальная документация Битрикс24 (bitrix-tools/b24-rest-docs, лицензия MIT, © Bitrix). Справочник независимый, официальной документацией не является.

Установить права роли для списка сайтов
Scope: `landing`
Кто может выполнять метод: администратор или пользователь с правом «полный доступ» к разделу «Сайты и магазины»

## Описание

Метод `landing.role.setRights` устанавливает права роли по сайтам. Для каждого сайта можно задать отдельные права, а для остальных — общие права по умолчанию. Новый набор прав полностью заменяет предыдущий.

## Параметры

- `scope` `string` — необязательный. Раздел, к которому относится роль. Параметр не связан с REST-скоупом `landing` в названии метода.
  Значения `GROUP`, `KNOWLEDGE` и `MAINPAGE` соответствуют типам сайтов из статьи [Работа с типами сайтов и скоупами](https://apidocs.bitrix24.ru/api-reference/landing/types.html).
  Возможные значения:
  `GROUP` — роли для сайтов групп
  `KNOWLEDGE` — роли для баз знаний
  `MAINPAGE` — роли для главной страницы или вайба
  Если параметр не передать, метод работает с ролями для сайтов и интернет-магазинов. Для роли другого раздела метод вернет ошибку `ROLE_SCOPE_MISMATCH`
- `id` `integer` — обязательный. Идентификатор роли, для которой нужно обновить права.
  Получить идентификатор можно с помощью метода [landing.role.getList](https://chugunov.pro/api-bitrix24/landing/rights/role-model/landing-role-get-list/).
  Если передать идентификатор несуществующей роли, метод вернет ошибку `ROLE_SCOPE_MISMATCH`
- `rights` `object` — обязательный. Объект формата:
  ```json
  {
      "0": ["read"],
      "<siteId>": ["read", "edit", "sett"]
  }
  ```
  где:
  - `0` — право по умолчанию для сайтов без отдельной настройки
  - `<siteId>` — идентификатор сайта
  Список доступных кодов прав описан [ниже](#right-codes), а структура объекта — в таблице параметра [rights](#rights).
  Метод полностью заменяет ранее сохраненные права роли по сайтам
- `additional` `string[]` — необязательный. Дополнительные возможности роли.
  **Возможные значения:**
  - `menu24` — показывать для роли пункт меню раздела
  - `create` — разрешить создавать в разделе новые сайты, базы знаний или страницы
  Коды зависят от раздела из параметра `scope`. Для баз знаний, сайтов групп и главной страницы у кодов есть префикс — `knowledge_`, `group_` и `vibe_` соответственно. Например, для базы знаний нужно передать `knowledge_create`.
  Коды другого раздела метод не сохраняет.
  Если параметр не передавать, текущие дополнительные возможности роли сохранятся без изменений

### Параметр rights

- `0` `string[]` — необязательный. Права роли по умолчанию для всех сайтов, у которых нет отдельной настройки.
  Доступные коды прав описаны [ниже](#right-codes)
- `<siteId>` `string[]` — необязательный. Права роли для сайта с указанным идентификатором.
  Ключом служит идентификатор сайта, значением — массив кодов прав. Если сайт с таким идентификатором не найден, запись будет пропущена без ошибки.
  Идентификатор сайта можно получить с помощью метода [landing.site.getList](https://chugunov.pro/api-bitrix24/landing/site/landing-site-get-list/) или из результата метода [landing.site.add](https://chugunov.pro/api-bitrix24/landing/site/landing-site-add/).
  Для каждого сайта передавайте массив кодов прав. Если вместо массива передать другое значение, запись для этого сайта будет пропущена без ошибки

### Коды прав

- `denied` — необязательный. Доступ к сайту запрещен
- `read` — необязательный. Просмотр сайта
- `edit` — необязательный. Изменение страниц сайта
- `sett` — необязательный. Изменение настроек сайта
- `public` — необязательный. Публикация
- `delete` — необязательный. Удаление в корзину и восстановление из корзины

## Ответ

HTTP-статус: 200

```json
{
    "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](https://chugunov.pro/api-bitrix24/landing/rights/role-model/landing-role-get-rights/)
- `time` `time`. Информация о времени выполнения запроса

## Ошибки

HTTP-статус: 400

```json
{
    "error": "MISSING_PARAMS",
    "error_description": "Недостаточно параметров вызова, пропущены: rights"
}
```

- `ACCESS_DENIED` — Недостаточно прав для работы с разделом «Сайты и магазины»
- `IS_NOT_ADMIN` — Для метода нужны права администратора или право «полный доступ» к разделу «Сайты и магазины»
- `FEATURE_NOT_AVAIL` — Управление правами в разделе «Сайты и магазины» недоступно на текущем тарифе
- `MISSING_PARAMS` — Не передан обязательный параметр `id` или `rights`
- `ROLE_SCOPE_MISMATCH` — Роль не относится к разделу из параметра `scope`. Метод возвращает эту ошибку и для роли другого раздела, и для несуществующей роли

## Примеры запроса

### cURL (Webhook)

```bash
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 (OAuth)

```bash
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"
```

### JS (TS)

```ts
// 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)
}
```

### JS (UMD)

```html
<!-- 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>
```

### Python

```python
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}")
```

### PHP

```php
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.js

```js
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());
        }
    }
);
```

### PHP CRest

```php
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>';
}
```

### Go

```go
// 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)
```

Оригинал в официальной документации: https://apidocs.bitrix24.ru/api-reference/landing/rights/role-model/landing-role-set-rights.html
