Фильтрация документов
Метод предназначен для поиска и получения списка документов компании с использованием фильтров и постраничной навигации.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/filter
Общая структура запроса описана в разделе Фильтрация: общая структура.
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Доступные фильтры (filters)
| Имя (name) | Тип значения (value) | Пример значения | Описание |
|---|
| ID | number / array[number] | [123, 124] | Фильтрация по ID документов |
| UUID | string / array[string] | ["550e8400-e29b-41d4-a716-446655440000"] | Фильтрация по UUID документов |
| NAME | string / array[string] | "Договор" | Поиск по названию документа |
| TYPE | string / array[string] | ["CONTRACT", "ACT"] | Тип документа (см. справочник ниже) |
| STATUS | string / array[string] | ["SIGNED", "ON_SIGN"] | Статус документа (см. справочник ниже) |
| DATE_START | диапазон дат | {"from": "2026-01-01T00:00:00.000Z", "to": "2026-01-31T23:59:59.999Z"} | Диапазон даты начала действия |
| DATE_END | диапазон дат | {"from": "2026-01-01T00:00:00.000Z", "to": "2026-12-31T23:59:59.999Z"} | Диапазон даты окончания действия |
| CREATED_DATE | диапазон дат | {"from": "2026-01-01T00:00:00.000Z", "to": "2026-01-31T23:59:59.999Z"} | Диапазон дат создания документа |
| COST_OF_WORK | диапазон чисел | {"from": 10000, "to": 100000} | Диапазон стоимости работ в копейках |
| PERIOD | number / array[number] | 30 | Срок действия в днях |
| CONTRACTOR_ID | string (uuid) / array[uuid] | ["3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b"] | Фильтрация по ID исполнителей |
Доступные сортировки
| Поле (field) | Описание |
|---|
| ID | ID документа |
| NAME | Название документа |
| TYPE | Тип документа |
| STATUS | Статус документа |
| DATE_START | Дата начала |
| DATE_END | Дата окончания |
| CREATED_DATE | Дата создания |
| COST_OF_WORK | Стоимость работ |
| PERIOD | Срок действия |
| UUID | UUID документа |
| CONTRACTOR_ID | ID исполнителя |
Справочник типов (TYPE)
| Тип | Описание |
|---|
| DOCUMENT | Произвольный документ |
| CONTRACT | Договор |
| ACT | Акт |
Справочник статусов (STATUS)
| Статус | Описание |
|---|
| NEW | Новый, не отправлен на подпись |
| ON_SIGN | Отправлен на подпись |
| SIGNED | Подписан обеими сторонами |
| SIGNED_BY_COMPANY | Подписан только компанией |
| SIGNED_BY_INDIVIDUAL | Подписан только исполнителем |
| REJECTED | Отклонён |
| BLOCKED | Заблокирован |
| EXPIRED | Истёк срок подписания |
| CANCELED | Расторгнут |
| FORMING | В процессе формирования |
| FORMING_SIGN | В процессе формирования подписи |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/filter" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"filters": [
{ "name": "STATUS", "value": ["SIGNED", "ON_SIGN"] },
{ "name": "TYPE", "value": ["CONTRACT"] }
],
"pagination": { "limit": 20, "lastId": null }
}'
Пример успешного ответа
{
"requestId": "1a2b3c4d-5e6f-7890-abcd-ef0123456789",
"success": true,
"result": {
"lastId": 123,
"items": [
{
"id": 123,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "Договор оказания услуг",
"status": "SIGNED",
"type": "CONTRACT",
"hash": "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e",
"createdAt": "2026-01-15T14:30:00Z",
"recipient": {
"id": "3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b",
"inn": "770123456789",
"login": "contractor1",
"name": "Иван",
"lastName": "Иванов",
"middleName": "Иванович"
},
"metadata": {
"startDate": "2026-01-15T14:30:00Z",
"duration": 365,
"estimatedCost": 100000
}
}
]
}
}
Описание полей ответа
| Поле | Описание |
|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения запроса (true/false) |
| result | Контейнер с данными выборки |
| lastId | Идентификатор последнего элемента |
| items | Массив объектов документов |
| id | Уникальный ID документа |
| uuid | UUID документа |
| name | Название документа |
| status | Статус документа |
| type | Тип документа |
| hash | SHA256 хеш документа |
| createdAt | Дата создания (ISO 8601) |
| companySign | Подпись компании (опционально) |
| recipientSign | Подпись исполнителя (опционально) |
| recipient | Краткая информация об исполнителе |
| metadata | Метаданные документа (зависят от типа) |
Возможные ошибки
| Code | Описание |
|---|
| VALIDATION_ERROR | Ошибка валидации |
| FORBIDDEN_ERROR | Ошибка авторизации |
| UNKNOWN_ERROR | Ошибка сервера |
Получение документа
Метод API предназначен для получения детальной информации по конкретному документу.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/{documentId}
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| documentId | int32 | Да | Идентификатор документа |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/123" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа
{
"requestId": "2b3c4d5e-6f70-8901-bcde-f01234567890",
"result": {
"id": 123,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "Договор оказания услуг",
"status": "SIGNED",
"type": "CONTRACT",
"hash": "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e",
"createdAt": "2026-01-15T14:30:00Z",
"companySign": {
"uuid": "1e74aa0c-6ba9-37d6-b1bf-8d2fa1c09407",
"fullName": "Петров Пётр Петрович",
"signedAt": "2026-01-15T14:35:00Z",
"signingMethod": "+79161234567"
},
"recipientSign": {
"uuid": "2e74aa0c-6ba9-37d6-b1bf-8d2fa1c09408",
"fullName": "Иванов Иван Иванович",
"signedAt": "2026-01-15T14:40:00Z",
"signingMethod": "+79998887766"
},
"recipient": {
"id": "3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b",
"inn": "770123456789",
"login": "contractor1",
"name": "Иван",
"lastName": "Иванов",
"middleName": "Иванович"
},
"metadata": {
"number": "123",
"startDate": "2026-01-15T14:30:00Z",
"duration": 365,
"estimatedCost": 100000
}
},
"success": true
}
Описание полей ответа (result)
| Поле | Описание |
|---|
| id | Уникальный ID документа |
| uuid | UUID документа |
| name | Название документа |
| status | Текущий статус документа |
| type | Тип документа (DOCUMENT / CONTRACT / ACT) |
| hash | SHA256 хеш документа |
| createdAt | Дата создания (ISO 8601) |
| companySign | Объект подписи компании (uuid, fullName, signedAt, signingMethod) |
| recipientSign | Объект подписи исполнителя |
| recipient | Информация об исполнителе (id, ИНН, login, ФИО) |
| metadata | Метаданные документа. Поля зависят от типа: для CONTRACT — number, startDate, duration, estimatedCost, prolongation; для ACT — number, contract; для DOCUMENT — number, typeUpload, duration |
| history | История изменений (опционально, см. отдельный эндпоинт) |
Поля подписи (companySign, recipientSign)
| Поле | Тип | Описание |
|---|
| uuid | string | UUID подписи |
| fullName | string | Полное имя подписавшего |
| signedAt | string | Дата подписания (ISO 8601) |
| signingMethod | string | Метод подписания |
Поля получателя (recipient)
| Поле | Тип | Описание |
|---|
| id | string (uuid) | ID исполнителя в организации |
| inn | string | ИНН исполнителя |
| login | string | Логин исполнителя |
| name | string | Имя исполнителя |
| lastName | string | Фамилия исполнителя |
| middleName | string | Отчество исполнителя |
Возможные ошибки
| Code | Описание |
|---|
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ с указанным documentId не найден |
| DOCUMENT_DELETED | Документ был удалён |
| UNKNOWN_ERROR | Ошибка сервера |
Получение истории документа
Метод возвращает список записей истории изменений документа.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/{documentId}/history
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| documentId | int32 | Да | Идентификатор документа |
Справочник операций (operation)
| Значение | Описание |
|---|
| CREATED | Документ создан |
| CHANGED | Документ изменён |
| SENT_TO_SIGN | Отправлен на подпись |
| SIGNED | Подписан |
| SIGNED_BY_COMPANY | Подписан компанией |
| SIGNED_BY_INDIVIDUAL | Подписан исполнителем |
| REJECTED | Отклонён |
| CANCELED | Расторгнут |
| EXTENSION | Продление |
| START_FORMING | Начало формирования |
| START_FORMING_SIGN | Начало формирования подписи |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/123/history" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа
{
"requestId": "3c4d5e6f-7081-9012-cdef-012345678901",
"result": [
{
"id": 1,
"documentId": 123,
"operation": "CREATED",
"actor": {
"type": "SENDER",
"name": "Петров Пётр Петрович",
"login": "manager1"
},
"createdAt": "2026-01-15T14:30:00Z"
},
{
"id": 2,
"documentId": 123,
"operation": "SIGNED_BY_COMPANY",
"actor": {
"type": "SENDER",
"name": "Петров Пётр Петрович",
"login": "manager1"
},
"createdAt": "2026-01-15T14:35:00Z"
}
],
"success": true
}
Описание полей ответа (items)
| Поле | Описание |
|---|
| id | ID записи истории |
| documentId | ID документа |
| operation | Тип операции (см. справочник выше) |
| actor | Инициатор операции (см. «Поля инициатора» ниже) |
| createdAt | Дата операции (ISO 8601) |
| meta | Дополнительная информация (опционально, произвольный объект) |
Поля инициатора (actor)
| Поле | Тип | Описание |
|---|
| type | string | Тип инициатора: SENDER, RECIPIENT, SYSTEM |
| name | string | ФИО пользователя |
| login | string | Логин пользователя |
Возможные ошибки
| Code | Описание |
|---|
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ с указанным documentId не найден |
| DOCUMENT_HISTORY_NOT_FOUND | История по документу отсутствует |
| UNKNOWN_ERROR | Ошибка сервера |
Скачивание документа
Метод возвращает ссылку для скачивания документа в выбранном формате.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/{documentId}/download
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| documentId | int32 | Да | Идентификатор документа |
Query Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| type | string | Да | Тип скачиваемого файла: ORIGINAL — исходный документ, STAMPED — документ с штампами подписей |
Пример запроса
curl --location --request POST "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/123/download?type=STAMPED" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа
{
"requestId": "4d5e6f70-8192-0123-defa-123456789012",
"result": {
"downloadUrl": "https://files.selfwork.ru/documents/123/stamped.pdf?token=..."
},
"success": true
}
Описание полей ответа
| Поле | Описание |
|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения |
| result.downloadUrl | Временная ссылка для скачивания файла |
Возможные ошибки
| Code | Описание |
|---|
| VALIDATION_ERROR | Не указан или некорректен query-параметр type |
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ с указанным documentId не найден |
| DOCUMENT_SIGNED_URL_NOT_EXISTS | Подписанная версия документа недоступна для скачивания |
| DOCUMENT_DELETED | Документ был удалён |
| UNKNOWN_ERROR | Ошибка сервера |
Создание документа
Метод создаёт новый документ (договор, акт или произвольный документ) для исполнителя.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Уровень 1 | Уровень 2 | Тип | Обязательное поле | Описание |
|---|
| name | | string | Да | Название документа (1–128 символов) |
| type | | string | Да | Тип документа: DOCUMENT, CONTRACT, ACT |
| contractor | | object | Да | Информация об исполнителе |
| id | string (uuid) | Да | ID исполнителя |
| metadata | | object | Да | Метаданные документа. Структура зависит от type |
| typeUpload | string | Да | Способ загрузки документа. На текущий момент поддерживается только FILE — PDF-файл в Base64 в поле data |
| data | string | Да | PDF документ в Base64, префикс data:application/pdf;base64,... |
| duration | int32 | Зависит от типа | Срок действия в днях (1–365). Обязательно для CONTRACT |
| startDate | string | Нет | Дата начала (ISO 8601). Только для CONTRACT |
| estimatedCost | int32 | Нет | Ориентировочная стоимость работ в копейках. Только для CONTRACT |
| prolongation | boolean | Нет | Флаг автопролонгации. Только для CONTRACT |
| contract | object | Зависит от типа | Связанный договор ({ "id": 123, "name": "..." }). Обязательно для ACT |
Правила валидации
| Параметр | Правило |
|---|
| name | Строка длиной 1–128 символов |
| type | Одно из значений DOCUMENT / CONTRACT / ACT |
| contractor.id | UUID существующего исполнителя организации |
| metadata.typeUpload | Должно быть равно FILE |
| metadata.data | Base64-строка PDF, начинающаяся с data:application/pdf;base64, |
| metadata.duration | Целое число от 1 до 365 |
| metadata.estimatedCost | Положительное число в копейках |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"name": "Договор оказания услуг",
"type": "CONTRACT",
"contractor": { "id": "3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b" },
"metadata": {
"typeUpload": "FILE",
"data": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"startDate": "2026-01-15T14:30:00Z",
"duration": 365,
"estimatedCost": 100000
}
}'
Пример успешного ответа
{
"requestId": "5e6f7081-9203-1234-efab-234567890123",
"result": {
"id": 124,
"uuid": "650e8400-e29b-41d4-a716-446655440001",
"name": "Договор оказания услуг",
"status": "NEW",
"type": "CONTRACT",
"createdAt": "2026-02-09T12:06:55Z",
"recipient": {
"id": "3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b",
"inn": "770123456789",
"login": "contractor1",
"name": "Иван",
"lastName": "Иванов"
},
"metadata": {
"startDate": "2026-01-15T14:30:00Z",
"duration": 365,
"estimatedCost": 100000
}
},
"success": true
}
Возможные ошибки
| Code | Описание |
|---|
| VALIDATION_ERROR | Ошибка валидации тела запроса или метаданных |
| FORBIDDEN_ERROR | Ошибка авторизации |
| COMPANY_DISABLED_EDO | У компании отключён модуль ЭДО |
| CONTRACTOR_NOT_FOUND | Указанный исполнитель не найден |
| WRONG_DOCUMENT_CONTRACTOR_TYPE | Тип исполнителя не позволяет создать документ данного типа |
| WRONG_DOCUMENT_TYPE_UPLOAD_SPECIFIED | Указан неподдерживаемый способ загрузки (typeUpload) |
| CANT_READ_DOCUMENT_WITH_SPECIFIED_ENCODED_PDF | Не удалось прочитать PDF-файл из Base64 (некорректные данные или формат) |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_DATE | Действие невозможно при указанной дате документа (например, startDate в прошлом) |
| UNKNOWN_ERROR | Ошибка сервера |
Обновление документа
Метод обновляет данные существующего документа. Тип документа изменить нельзя.
Важно: обновление допустимо только для документов в статусе NEW. Для документов в других статусах метод вернёт ошибку UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS.
Запрос
Метод: PUT URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/{documentId}
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| documentId | int32 | Да | Идентификатор документа |
Request Body
| Уровень 1 | Уровень 2 | Тип | Обязательное поле | Описание |
|---|
| name | | string | Да | Название документа (1–128 символов) |
| contractor | | object | Да | Информация об исполнителе |
| id | string (uuid) | Да | ID исполнителя |
| metadata | | object | Да | Метаданные документа (тип определяется существующим документом) |
| duration | int32 | Нет | Срок действия в днях (1–365) |
| startDate | string | Нет | Дата начала (ISO 8601). Только для CONTRACT |
| estimatedCost | int32 | Нет | Ориентировочная стоимость в копейках. Только для CONTRACT |
| prolongation | boolean | Нет | Флаг автопролонгации. Только для CONTRACT |
Пример запроса
curl --location --request PUT "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/124" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"name": "Договор оказания услуг (ред.)",
"contractor": { "id": "3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b" },
"metadata": {
"startDate": "2026-02-01T00:00:00Z",
"duration": 180,
"estimatedCost": 200000
}
}'
Пример успешного ответа
В теле ответа возвращается обновлённый объект документа в формате, аналогичном методу "Получение документа".
Возможные ошибки
| Code | Описание |
|---|
| VALIDATION_ERROR | Ошибка валидации тела запроса или метаданных |
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ с указанным documentId не найден |
| DOCUMENT_DELETED | Документ был удалён |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS | Документ не в статусе NEW — обновление недоступно |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_DATE | Действие невозможно при указанной дате документа |
| CONTRACTOR_NOT_FOUND | Указанный исполнитель не найден |
| UNKNOWN_ERROR | Ошибка сервера |
Удаление документа
Метод удаляет документ по его идентификатору.
Важно: удаление допустимо только для документов в статусе NEW. Для документов в других статусах метод вернёт ошибку UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS.
Запрос
Метод: DELETE URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/{documentId}
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| documentId | int32 | Да | Идентификатор документа |
Request Body
Тело запроса не требуется (Empty Body).
Пример запроса
curl --location --request DELETE "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/124" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа
{
"requestId": "6f708192-0314-2345-fabc-345678901234",
"result": {},
"success": true
}
Возможные ошибки
| Code | Описание |
|---|
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ с указанным documentId не найден |
| DOCUMENT_DELETED | Документ уже был удалён |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS | Документ не в статусе NEW — удаление недоступно |
| UNKNOWN_ERROR | Ошибка сервера |
Отправка документов на подписание
Метод отправляет один или несколько документов исполнителю на подписание.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/send-for-signing
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| ids | array[int32] | Да | Список ID документов для отправки на подпись |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/send-for-signing" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"ids": [124, 125]
}'
Пример успешного ответа
{
"requestId": "81920314-2536-4567-bcde-567890123456",
"result": {
"successful": [124, 125],
"failed": []
},
"success": true
}
Описание полей ответа
| Поле | Описание |
|---|
| successful | Список ID успешно отправленных на подпись документов |
| failed | Список объектов с ID документов, отправка которых не удалась, и причинами ошибок ({ "id": ..., "error": "..." }) |
Возможные ошибки
Документы обрабатываются массово: документы с ошибками попадают в failed, валидные — отправляются на подпись и попадают в successful. Возможные ошибки уровня запроса и наиболее частые причины попадания документа в failed:
| Code | Описание |
|---|
| VALIDATION_ERROR | Некорректное тело запроса |
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ не найден |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS | Текущий статус документа не позволяет отправить его на подпись |
| WRONG_DOCUMENT_CONTRACTOR_TYPE | Тип исполнителя несовместим с подписанием данного типа документа |
| UNKNOWN_ERROR | Ошибка сервера |
Подписание документов
Метод подписывает один или несколько документов от имени компании.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/sign
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| ids | array[int32] | Да | Список ID документов для подписания |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/sign" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"ids": [124, 125]
}'
Пример успешного ответа
{
"requestId": "92031425-3647-5678-cdef-678901234567",
"result": {
"successful": [124, 125],
"failed": []
},
"success": true
}
Описание полей ответа
| Поле | Описание |
|---|
| successful | Список ID успешно подписанных документов |
| failed | Список объектов с ID документов, подписание которых не удалось, и причинами ошибок |
Возможные ошибки
Документы обрабатываются массово. Возможные ошибки уровня запроса и попадания в failed:
| Code | Описание |
|---|
| VALIDATION_ERROR | Некорректное тело запроса |
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ не найден |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS | Документ не находится в статусе, допускающем подписание |
| UNKNOWN_ERROR | Ошибка сервера |
Отклонение документов
Метод отклоняет один или несколько документов.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/reject
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| ids | array[int32] | Да | Список ID документов для отклонения |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/reject" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"ids": [124]
}'
Пример успешного ответа
{
"requestId": "a3142536-4758-6789-def0-789012345678",
"result": {
"successful": [124],
"failed": []
},
"success": true
}
Возможные ошибки
| Code | Описание |
|---|
| VALIDATION_ERROR | Некорректное тело запроса |
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ не найден |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS | Документ не находится в статусе, допускающем отклонение |
| UNKNOWN_ERROR | Ошибка сервера |
Расторжение документов
Метод расторгает один или несколько документов.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/terminate
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| ids | array[int32] | Да | Список ID документов для расторжения |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/terminate" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"ids": [124]
}'
Пример успешного ответа
{
"requestId": "b4253647-5869-789a-ef01-890123456789",
"result": {
"successful": [124],
"failed": []
},
"success": true
}
Возможные ошибки
| Code | Описание |
|---|
| VALIDATION_ERROR | Некорректное тело запроса |
| FORBIDDEN_ERROR | Ошибка авторизации |
| DOCUMENT_NOT_FOUND | Документ не найден |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_STATUS | Документ не находится в статусе, допускающем расторжение |
| UNABLE_TO_PERFORM_ACTION_WITH_CURRENT_DOCUMENT_DATE | Расторжение невозможно при текущей дате документа |
| UNKNOWN_ERROR | Ошибка сервера |
Импорт документов из файла
Метод импортирует список документов из Excel-файла. Поддерживаются документы одного типа за раз.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/documents/import
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Поле | Тип | Обязательно | Описание |
|---|
| data | string | Да | Excel-файл в кодировке Base64. Префикс: data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64, (либо vnd.ms-excel/msexcel/x-msexcel) |
| type | string | Да | Тип импортируемых документов: DOCUMENT / CONTRACT / ACT |
| ignoreErrors | boolean | Нет | Создать документы по валидным строкам, даже если в файле есть ошибочные. По умолчанию false: любая ошибка строки останавливает импорт, документы не создаются |
Правила валидации
| Параметр | Правило |
|---|
| data | Строка Base64 c корректным MIME-префиксом для Excel |
| type | Одно из значений DOCUMENT / CONTRACT / ACT |
| ignoreErrors | true / false |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/documents/import" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"data": "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,UEsDBBQABg...",
"type": "CONTRACT",
"ignoreErrors": true
}'
Пример успешного ответа
{
"requestId": "c5364758-697a-89ab-f012-901234567890",
"result": {
"successfulItems": [
{
"id": 124,
"uuid": "650e8400-e29b-41d4-a716-446655440001",
"name": "Договор оказания услуг",
"status": "NEW",
"type": "CONTRACT",
"hash": "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e",
"createdAt": "2026-02-09T12:06:55Z",
"recipient": {
"id": "3f2b8c1e-5a7d-4e9f-8b6a-1c2d3e4f5a6b",
"inn": "770123456789",
"login": "contractor1",
"name": "Иван",
"lastName": "Иванов",
"middleName": "Иванович"
},
"metadata": {
"startDate": "2026-02-10T00:00:00Z",
"duration": 365,
"estimatedCost": 100000
}
}
],
"errors": [
{
"row": 4,
"message": "Исполнитель с ИНН 770000000000 не найден в организации",
"attributes": { "inn": "770000000000" }
}
]
},
"success": true
}
Описание полей ответа
| Поле | Описание |
|---|
| successfulItems | Созданные документы в формате метода «Получение документа» |
| errors | Ошибки импорта по строкам файла |
| errors[].row | Номер строки в файле |
| errors[].message | Текст ошибки (несколько ошибок одной строки перечисляются через ; ) |
| errors[].attributes | Дополнительные атрибуты ошибки, например inn — ИНН исполнителя из строки (опционально) |
Если в файле есть ошибочные строки, а ignoreErrors не передан или равен false, метод возвращает успешный ответ с пустым successfulItems и полным списком errors — ни один документ не создаётся. С ignoreErrors: true документы создаются по валидным строкам; отказ ЭДО по отдельной строке тоже попадает в errors, остальные строки продолжают обрабатываться.
Возможные ошибки
Построчные ошибки импорта возвращаются в поле errors тела успешного ответа (см. выше). Ниже — ошибки уровня запроса:
| Code | Описание |
|---|
| VALIDATION_ERROR | Ошибка валидации тела запроса (неверный MIME-префикс, отсутствует поле type, и т.п.) |
| FORBIDDEN_ERROR | Ошибка авторизации |
| COMPANY_DISABLED_EDO | У компании отключён модуль ЭДО |
| CANT_READ_DOCUMENT_WITH_SPECIFIED_ENCODED_XLSX | Не удалось прочитать Excel-файл из Base64 (некорректные данные или формат) |
| UNKNOWN_ERROR | Ошибка сервера |