sign.b2e.document.send
Отправить документ на подписание
Описание
Метод sign.b2e.document.send отправляет документ на подписание со стороны компании.
Метод работает только в контексте авторизации приложения.
Параметры
fields
object
обязательный
Параметры отправки документа на подписание (подробное описание)
language
string
необязательный
Язык локализации статусов в ответе.
По умолчанию en
Параметр fields
company
object
обязательный
Компания, от имени которой отправляется документ (подробное описание)
members
array
обязательный
Список участников подписания. Должен содержать минимум одного участника с ролью signer и одного с ролью assignee (подробное описание)
responsible
object
обязательный
Ответственный за документ (подробное описание)
companyProviderUid
string
обязательный
Идентификатор провайдера подписи. Получить список доступных провайдеров подписи можно методом sign.b2e.company.provider.list
files
array
обязательный
Файл подписываемого документа (подробное описание)
regionDocumentType
string
обязательный
Тип документа для региона (подробное описание)
externalSettings
object
обязательный
Внешние параметры документа (подробное описание)
language
string
необязательный
Язык документа
Параметр company
uuid
string
обязательный
UUID компании в HCM Link.
Требует дополнительный scope humanresources.hcmlink
crmId
integer
обязательный
Идентификатор компании в CRM, подключенный в интеграции как «моя компания»
Элемент массива members
employeeCode
string
обязательный
Код сотрудника в HCM Link.
Требует дополнительный scope humanresources.hcmlink
employeeId
integer
обязательный
Идентификатор сотрудника в HCM Link.
Требует дополнительный scope humanresources.hcmlink
userId
integer
обязательный
Идентификатор пользователя в Битрикс24
role
string
обязательный
Роль участника. Возможные значения:
- signer — подписант,
- assignee — представитель компании,
- reviewer — согласующий,
- editor — редактор
Параметр responsible
employeeCode
string
обязательный
Код сотрудника в HCM Link.
Требует дополнительный scope humanresources.hcmlink
employeeId
integer
обязательный
Идентификатор сотрудника в HCM Link.
Требует дополнительный scope humanresources.hcmlink
userId
integer
обязательный
Идентификатор пользователя в Битрикс24
role
string
необязательный
Роль участника. Возможные значения:
- signer — подписант,
- assignee — представитель компании, значение по умолчанию
- reviewer — согласующий,
- editor — редактор
Элемент массива files
fileName
string
обязательный
Имя файла. Обязательно с расширением .pdf
fileType
string
обязательный
MIME-тип файла. Поддерживается application/pdf
fileContent
string
обязательный
Содержимое файла, закодированное в Base64
Параметр externalSettings
externalId
string
обязательный
Внешний идентификатор. Максимальная длина — 255 символов
externalDateCreate
string
обязательный
Дата создания внешнего документа в формате ISO 8601
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"company":{"crmId":12},"members":[{"userId":25,"role":"signer"},{"userId":42,"role":"assignee"}],"responsible":{"userId":7},"companyProviderUid":"d4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b","files":[{"fileName":"contract.pdf","fileType":"application/pdf","fileContent":"JVBERi0xLjQKJ..."}],"regionDocumentType":"12.999","externalSettings":{"externalId":"EXT-123","externalDateCreate":"2025-02-18T09:19:34+03:00"}},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sign.b2e.document.send
// 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 SendDocumentResult = {
uid: string
state: {
code: string
name: string
}
members: {
uid: string
role: string
party: number
user: {
employeeCode: string
employeeId: number
userId: number
}
state: {
code: string
name: string
}
}[]
}
try {
const response = await $b24.actions.v2.call.make<SendDocumentResult>({
method: 'sign.b2e.document.send',
params: {
fields: {
company: { crmId: 12 },
members: [
{ userId: 25, role: 'signer' },
{ userId: 42, role: 'assignee' },
],
responsible: { userId: 7 },
companyProviderUid: 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
files: [
{
fileName: 'contract.pdf',
fileType: 'application/pdf',
fileContent: 'JVBERi0xLjQKJ...',
},
],
regionDocumentType: '12.999',
externalSettings: {
externalId: 'EXT-123',
externalDateCreate: '2025-02-18T09:19:34+03:00',
},
},
},
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('Document uid:', result.uid, 'state:', result.state.code, 'members:', result.members.length)
}
} 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 sendDocument() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'sign.b2e.document.send',
params: {
fields: {
company: { crmId: 12 },
members: [
{ userId: 25, role: 'signer' },
{ userId: 42, role: 'assignee' },
],
responsible: { userId: 7 },
companyProviderUid: 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
files: [
{
fileName: 'contract.pdf',
fileType: 'application/pdf',
fileContent: 'JVBERi0xLjQKJ...',
},
],
regionDocumentType: '12.999',
externalSettings: {
externalId: 'EXT-123',
externalDateCreate: '2025-02-18T09:19:34+03:00',
},
},
},
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('Document uid:', result.uid, 'state:', result.state.code, 'members:', result.members.length)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', sendDocument)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
fields = {
"company": {
"crmId": 12,
},
"members": [
{
"userId": 25,
"role": "signer",
},
{
"userId": 42,
"role": "assignee",
},
],
"responsible": {
"userId": 7,
},
"companyProviderUid": "d4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b",
"files": [
{
"fileName": "contract.pdf",
"fileType": "application/pdf",
"fileContent": "JVBERi0xLjQKJ...",
},
],
"regionDocumentType": "12.999",
"externalSettings": {
"externalId": "EXT-123",
"externalDateCreate": "2025-02-18T09:19:34+03:00",
},
}
try:
bitrix_response = client.sign.b2e.document.send(
fields=fields,
).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(
'sign.b2e.document.send',
[
'fields' => [
'company' => [
'crmId' => 12
],
'members' => [
[ 'userId' => 25, 'role' => 'signer' ],
[ 'userId' => 42, 'role' => 'assignee' ]
],
'responsible' => [ 'userId' => 7 ],
'companyProviderUid' => 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
'files' => [
[
'fileName' => 'contract.pdf',
'fileType' => 'application/pdf',
'fileContent' => 'JVBERi0xLjQKJ...'
]
],
'regionDocumentType' => '12.999',
'externalSettings' => [
'externalId' => 'EXT-123',
'externalDateCreate' => '2025-02-18T09:19:34+03:00'
]
]
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error: ' . $e->getMessage();
}
BX24.callMethod(
'sign.b2e.document.send',
{
fields: {
company: { crmId: 12 },
members: [
{ userId: 25, role: 'signer' },
{ userId: 42, role: 'assignee' }
],
responsible: { userId: 7 },
companyProviderUid: 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
files: [
{
fileName: 'contract.pdf',
fileType: 'application/pdf',
fileContent: 'JVBERi0xLjQKJ...'
}
],
regionDocumentType: '12.999',
externalSettings: {
externalId: 'EXT-123',
externalDateCreate: '2025-02-18T09:19:34+03:00'
}
}
},
result => {
if (result.error()) {
console.error(result.error());
} else {
console.dir(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'sign.b2e.document.send',
[
'fields' => [
'company' => [ 'crmId' => 12 ],
'members' => [
[ 'userId' => 25, 'role' => 'signer' ],
[ 'userId' => 42, 'role' => 'assignee' ]
],
'responsible' => [ 'userId' => 7 ],
'companyProviderUid' => 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
'files' => [
[
'fileName' => 'contract.pdf',
'fileType' => 'application/pdf',
'fileContent' => 'JVBERi0xLjQKJ...'
]
],
'regionDocumentType' => '12.999',
'externalSettings' => [
'externalId' => 'EXT-123',
'externalDateCreate' => '2025-02-18T09:19:34+03:00'
]
]
]
);
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, "sign.b2e.document.send", b24.Params{
"fields": b24.Params{
"company": b24.Params{
"crmId": 12,
},
"members": []b24.Params{
{
"userId": 25,
"role": "signer",
},
{
"userId": 42,
"role": "assignee",
},
},
"responsible": b24.Params{
"userId": 7,
},
"companyProviderUid": "d4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b",
"files": []b24.Params{
{
"fileName": "contract.pdf",
"fileType": "application/pdf",
"fileContent": "JVBERi0xLjQKJ...",
},
},
"regionDocumentType": "12.999",
"externalSettings": b24.Params{
"externalId": "EXT-123",
"externalDateCreate": "2025-02-18T09:19:34+03:00",
},
},
})
if err != nil {
return fmt.Errorf("sign.b2e.document.send: %w", err)
}
var item struct {
Uid string `json:"uid"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.Uid)
Ответ
HTTP-статус: 200
{
"result": {
"uid": "b6f5f1f1-9d20-4b6b-ae0f-2f0a8a0c2b3c",
"state": {
"code": "sent",
"name": "Отправлен"
},
"members": [
{
"uid": "f1c2d3e4",
"role": "signer",
"party": 0,
"user": {
"employeeCode": "EMP-001",
"employeeId": 123,
"userId": 25
},
"state": {
"code": "waiting",
"name": "Ожидает"
}
}
]
},
"time": {
"start": 1739860000.123,
"finish": 1739860000.456,
"duration": 0.333,
"processing": 0.111,
"date_start": "2025-02-18T09:19:34+03:00",
"date_finish": "2025-02-18T09:19:34+03:00",
"operating_reset_at": 1739860600,
"operating": 0
}
}
Возвращаемые данные
result
object
Информация о документе и участниках подписания
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 200
{
"error": "BAD_REQUEST",
"error_description": "[companyProviderUid] field is required"
}
| Код | Описание | Значение |
|---|---|---|
ACCESS_DENIED |
Access denied! | Недостаточно прав |
WRONG_AUTH_TYPE |
Current authorization type is denied for this method | Вызов не из контекста приложения |
BAD_REQUEST |
Empty request fields | Не передан объект fields |
BAD_REQUEST |
companyProviderUid field is required | Не передан companyProviderUid |
BAD_REQUEST |
The responsible field is required | Не передан responsible |
BAD_REQUEST |
At least one signing party with role signer is required | В members нет участника с ролью signer |
BAD_REQUEST |
At least one signing party with role assignee is required | В members нет участника с ролью assignee |
BAD_REQUEST |
Invalid role ... | Передана роль вне допустимых значений |
BAD_REQUEST |
Employee ID is required | Не передан employeeId/employeeCode и не передан userId |
BAD_REQUEST |
Employee with code ... was not found | Сотрудник с указанным employeeCode не найден |
BAD_REQUEST |
Employee with ID ... was not found | Сотрудник с указанным employeeId не найден |
BAD_REQUEST |
Could not find employee for specified User ID | Пользователь по userId не найден |
BAD_REQUEST |
Could not find user for specified employee | Для сотрудника не найден пользователь |
BAD_REQUEST |
At least one file is required to sign the document | Не передан массив files |
BAD_REQUEST |
Signing multiple files is currently not supported | В files передано более одного файла |
BAD_REQUEST |
The specified file type is not supported | Указан fileType, отличный от application/pdf |
BAD_REQUEST |
Invalid file name | Некорректное имя файла |
BAD_REQUEST |
Invalid file name. File extension is not specified | Не указано расширение файла |
BAD_REQUEST |
The specified file extension is not supported | Расширение файла не поддерживается |
BAD_REQUEST |
Region document type is required. Use value '12.999' as a default value | Не передан regionDocumentType при наличии списка кодов |
BAD_REQUEST |
Region document type is not valid. Use value '12.999' as a default value | Передан неподдерживаемый regionDocumentType |
BAD_REQUEST |
Signing provider is not available | Провайдер недоступен для компании |
BAD_REQUEST |
Signing provider has expired | Истек срок действия провайдера |
BAD_REQUEST |
External date create field is required | Не передан externalSettings.externalDateCreate |
BAD_REQUEST |
External ID field is required | Не передан externalSettings.externalId |
BAD_REQUEST |
External date create invalid field value | Неверный формат даты в externalSettings.externalDateCreate |
BAD_REQUEST |
External ID maximum length of 255 is exceeded | Превышена длина externalSettings.externalId |
INTERNAL_ERROR |
Internal error | Ошибка при отправке документа или формировании ответа |
| — | humanresources module is not installed | Модуль humanresources не установлен при использовании полей HCM Link |

