documentgenerator.role.add
Добавить роль
Описание
Метод documentgenerator.role.add добавляет новую роль.
Параметры
fields
object
обязательный
Поля роли (подробное описание)
Параметр fields
name
string
обязательный
Название роли
code
string
необязательный
Символьный код роли
permissions
object
необязательный
Права роли (подробное описание).
Ключи внутри permissions чувствительны к регистру. Передавайте только в верхнем регистре:
- SETTINGS, TEMPLATES, DOCUMENTS
- MODIFY, VIEW
Если передать ключи в нижнем регистре, роль сохранится, но права будут пустыми.
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"fields": {
"name": "Редакторы шаблонов",
"code": "DOCGEN_TEMPLATE_EDITORS",
"permissions": {
"SETTINGS": {
"MODIFY": ""
},
"TEMPLATES": {
"MODIFY": "D"
},
"DOCUMENTS": {
"MODIFY": "X",
"VIEW": "X"
}
}
}
}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/documentgenerator.role.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"fields": {
"name": "Редакторы шаблонов",
"code": "DOCGEN_TEMPLATE_EDITORS",
"permissions": {
"SETTINGS": {
"MODIFY": ""
},
"TEMPLATES": {
"MODIFY": "D"
},
"DOCUMENTS": {
"MODIFY": "X",
"VIEW": "X"
}
}
},
"auth": "**put_access_token_here**"
}' \
https://**put_your_bitrix24_address**/rest/documentgenerator.role.add
// 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
// Shape of the payload returned in result (match the "response handling" section of the page)
type RoleAddResult = {
role: {
id: number
name: string
code: string
permissions: {
settings: {
modify: string
}
templates: {
modify: string
}
documents: {
modify: string
view: string
}
}
}
}
try {
const response = await $b24.actions.v2.call.make<RoleAddResult>({
method: 'documentgenerator.role.add',
params: {
fields: {
name: 'Template Editors',
code: 'DOCGEN_TEMPLATE_EDITORS',
permissions: {
SETTINGS: {
MODIFY: '',
},
TEMPLATES: {
MODIFY: 'D',
},
DOCUMENTS: {
MODIFY: 'X',
VIEW: 'X',
},
},
},
},
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('Added role:', result.role.id, result.role.name)
}
} 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 addRole() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'documentgenerator.role.add',
params: {
fields: {
name: 'Template Editors',
code: 'DOCGEN_TEMPLATE_EDITORS',
permissions: {
SETTINGS: {
MODIFY: '',
},
TEMPLATES: {
MODIFY: 'D',
},
DOCUMENTS: {
MODIFY: 'X',
VIEW: 'X',
},
},
},
},
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('Added role:', result.role.id, result.role.name)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addRole)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.documentgenerator.role.add(
fields={
"name": "Редакторы шаблонов",
"code": "DOCGEN_TEMPLATE_EDITORS",
"permissions": {
"SETTINGS": {
"MODIFY": "",
},
"TEMPLATES": {
"MODIFY": "D",
},
"DOCUMENTS": {
"MODIFY": "X",
"VIEW": "X",
},
},
},
).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(
'documentgenerator.role.add',
[
'fields' => [
'name' => 'Редакторы шаблонов',
'code' => 'DOCGEN_TEMPLATE_EDITORS',
'permissions' => [
'SETTINGS' => [
'MODIFY' => '',
],
'TEMPLATES' => [
'MODIFY' => 'D',
],
'DOCUMENTS' => [
'MODIFY' => 'X',
'VIEW' => 'X',
],
],
],
]
);
$result = $response->getResponseData()->getResult();
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
}
BX24.callMethod(
'documentgenerator.role.add',
{
fields: {
name: 'Редакторы шаблонов',
code: 'DOCGEN_TEMPLATE_EDITORS',
permissions: {
SETTINGS: {
MODIFY: ''
},
TEMPLATES: {
MODIFY: 'D'
},
DOCUMENTS: {
MODIFY: 'X',
VIEW: 'X'
}
}
}
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'documentgenerator.role.add',
[
'fields' => [
'name' => 'Редакторы шаблонов',
'code' => 'DOCGEN_TEMPLATE_EDITORS',
'permissions' => [
'SETTINGS' => [
'MODIFY' => '',
],
'TEMPLATES' => [
'MODIFY' => 'D',
],
'DOCUMENTS' => [
'MODIFY' => 'X',
'VIEW' => 'X',
],
],
],
]
);
print_r($result);
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "documentgenerator.role.add", b24.Params{
"fields": b24.Params{
"name": "Редакторы шаблонов",
"code": "DOCGEN_TEMPLATE_EDITORS",
"permissions": b24.Params{
"SETTINGS": b24.Params{
"MODIFY": "",
},
"TEMPLATES": b24.Params{
"MODIFY": "D",
},
"DOCUMENTS": b24.Params{
"MODIFY": "X",
"VIEW": "X",
},
},
},
})
if err != nil {
return fmt.Errorf("documentgenerator.role.add: %w", err)
}
// Метод заворачивает ответ в объект с ключом "role".
raw, ok := b24.Unwrap(res.Result, "role")
if !ok {
return fmt.Errorf("в ответе нет ключа role")
}
var item struct {
ID b24.ID `json:"id"`
Name string `json:"name"`
Code string `json:"code"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.ID, item.Name)
Ответ
HTTP-статус: 200
{
"result": {
"role": {
"id": 9,
"name": "Редакторы шаблонов",
"code": "DOCGEN_TEMPLATE_EDITORS",
"permissions": {
"settings": {
"modify": ""
},
"templates": {
"modify": "D"
},
"documents": {
"modify": "X",
"view": "X"
}
}
}
},
"time": {
"start": 1774008850,
"finish": 1774008850.528288,
"duration": 0.5282878875732422,
"processing": 0,
"date_start": "2026-03-20T15:14:10+03:00",
"date_finish": "2026-03-20T15:14:10+03:00",
"operating_reset_at": 1774009450,
"operating": 0
}
}
Возвращаемые данные
result
object
Корневой элемент ответа (подробное описание)
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "100",
"error_description": "Could not find value for parameter {fields}"
}
| Код | Описание | Значение |
|---|---|---|
400 |
100 |
Could not find value for parameter {fields} |
400 |
BX_EMPTY_REQUIRED |
Не заполнено обязательное поле "NAME" |
400 |
0 |
You do not have permissions to modify settings |
403 |
DOCGEN_ACCESS_ERROR |
Your plan does not support this operation |

