Отчёты
Отчёт — это выгрузка списка (исполнителей, операций, сделок, документов) в файл. Работа
асинхронная: вы заказываете отчёт, сервис формирует его в фоне, а затем отдаёт временную
ссылку на скачивание. Готовый файл живёт ограниченное время — до момента expiresAt.
Порядок работы: создать → дождаться COMPLETED → забрать ссылку.
Все методы требуют доступ org.reports.read и scope report в токене.
Создание отчёта
Заказывает формирование отчёта. Возвращает идентификатор, по которому дальше отслеживается готовность.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/reports
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Заголовки
| Заголовок | Тип | Обязательный | Описание |
|---|---|---|---|
| x-idempotency-key | string | Да | Ключ идемпотентности. Повтор с тем же ключом и телом вернёт сохранённый ответ |
Request Body
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
| type | string | Да | Тип отчёта (см. справочник ниже) |
| params | array[obj] | Да | Параметры выгрузки в формате { "name": …, "value": … } |
| string | Нет | Адрес, на который отправить готовый отчёт |
Справочник типов (type)
| Тип | Что выгружает |
|---|---|
| CONTRACTOR_LIST_REPORT | Список исполнителей |
| OPERATION_LIST_REPORT | Список операций (выплат) |
| DOCUMENT_LIST_REPORT | Список документов |
| SIGNED_DOCUMENTS_ARCHIVE_REPORT | Архив подписанных документов |
| TASK_ANNOUNCEMENT_LIST_REPORT | Список объявлений о задачах |
| TASK_ANNOUNCEMENT_SUGGESTIONS_LIST_REPORT | Список предложений по объявлениям |
| DEAL_LIST_REPORT | Список сделок |
| DEAL_DOCUMENTS_PACKAGE_REPORT | Пакет документов по сделкам |
Набор params зависит от типа отчёта и описан в разделе Параметры отчётов.
Общие правила параметров
Каждый элемент params — объект { "name": …, "value": … }. Имя параметра зависит от типа
отчёта: набор для каждого типа описан в разделе Параметры отчётов.
Неизвестное для этого типа имя — ошибка запроса, а не молча проигнорированный параметр.
Виды значений
| Вид | Форма value | Пример |
|---|---|---|
| Список строк | array[string] | ["160285864492"] |
| Список чисел | array[number], целые | [189433, 189434] |
| Одно значение enum | string | "CONTRACT" |
| Булево | boolean | true |
| Строка | string | "Иванов" |
| Диапазон дат | { "from": …, "to": … }, обе границы ISO 8601, from раньше to | {"from": "2026-01-01T00:00:00.000Z", "to": "2026-01-31T23:59:59.999Z"} |
| Диапазон суммы | { "from": …, "to": … }, целые копейки, from меньше to | {"from": 10000, "to": 100000} |
Дата проверяется по календарю: 2026-06-31 не пройдёт валидацию. Список и одиночное значение
не взаимозаменяемы — у части параметров маркетплейс принимает ровно одно значение, это указано
в таблице параметров.
Ограничение диапазона времени
Отчёт без ограничения по времени заказать нельзя. Предельная ширина диапазона зависит от типа отчёта:
| Тип отчёта | Предел |
|---|---|
| Списочные отчёты | 730 дней |
SIGNED_DOCUMENTS_ARCHIVE_REPORT, DEAL_DOCUMENTS_PACKAGE_REPORT | 92 дня |
Каким именно диапазоном ограничить выборку — выбирает вызывающий: у каждого типа отчёта есть несколько параметров-диапазонов, и в предел должен уложиться хотя бы один из переданных. Фильтры складываются по «И», поэтому более широкий второй диапазон выборку не расширит.
730 дней — значение по умолчанию. Для TASK_ANNOUNCEMENT_LIST_REPORT предел берётся из квоты
организации, если она задана, поэтому фактический лимит может отличаться от табличного.
Параметр FIELDS
FIELDS есть у каждого типа отчёта и задаёт набор колонок файла. Значения — из таблицы
«Значения FIELDS» соответствующего типа, порядок колонок в файле от порядка значений не зависит.
Без FIELDS в файл попадают все колонки.
Ограничения, из-за которых выдача может оказаться неполной
| Ограничение | Значение | Что происходит |
|---|---|---|
| Строк в отчёте с документами | 10 000 | Отчёт формируется, но файлы не скачиваются: в архиве только опись и файл ATTENTION.txt с пояснением |
| Строк в списочном отчёте | 1 000 000 | Выгрузка обрывается на пределе, в архив кладётся файл ATTENTION.txt с пояснением |
| Незавершённых отчётов организации одновременно | 3 | Новый отчёт не создаётся, ответ 400 MAXIMUM_ACTIVE_REPORTS |
| Отчётов организации за сутки по МСК | 100 | Новый отчёт не создаётся, ответ 400 DAILY_REPORTS_LIMIT |
| Срок хранения готового файла | 7 суток | Отчёт переходит в статус EXPIRED, ссылку получить нельзя |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "CONTRACTOR_LIST_REPORT",
"params": [
{ "name": "CREATED_AT", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "STATUS", "value": ["ACTIVE"] }
],
"email": "buh@example.com"
}'
Пример успешного ответа
Код ответа — 201.
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"type": "CONTRACTOR_LIST_REPORT",
"status": "CREATED"
},
"success": true
}
Возможные ошибки
| Код | Описание |
|---|---|
| 400 | Запрос не прошёл валидацию |
| 403 | Недостаточно прав либо организация вне доступа токена |
| 409 | Ключ идемпотентности уже использован с другим телом |
Кодом 400 отдаются и превышенные лимиты: MAXIMUM_ACTIVE_REPORTS — у организации уже три
незавершённых отчёта, DAILY_REPORTS_LIMIT — исчерпаны 100 отчётов за сутки по МСК.
Параметры отчётов
Для каждого типа отчёта — свой набор имён params. Общая форма значений, ограничения диапазонов
и правило FIELDS описаны в разделе Общие правила параметров.
Колонка «Обязательный» читается так: Да — параметр нужен всегда, Нет — необязателен,
Условно — обязательность зависит от других переданных параметров, правило указано над таблицей.
CONTRACTOR_LIST_REPORT
Список исполнителей организации.
Обязательно: хотя бы один из CREATED_AT, UPDATED_AT, ID, GROUP_ID.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки файла, см. таблицу ниже |
| ID | array[string] (uuid) | Условно | Отбор по идентификаторам исполнителей |
| INN | array[string] | Нет | Отбор по ИНН |
| SNILS | array[string] | Нет | Отбор по СНИЛС |
| STATUS | array[string] | Нет | Статусы исполнителя: ACTIVE, ARCHIVED, BLOCKED |
| TYPE | array[string] | Нет | Типы исполнителя, см. Исполнители |
| CITIZENSHIP | array[string] | Нет | Гражданства, коды стран |
| GENDER | array[string] | Нет | Пол: male / female |
| BIRTHDAY | array[string] | Нет | Даты рождения. Это список дат, а не диапазон |
| GROUP_ID | array[string] (uuid) | Условно | Отбор по идентификаторам групп исполнителей |
| NPD_STATUS | boolean | Нет | Подключение к НПД |
| NPD_BINDING_STATUS | array[string] | Нет | Статус привязки к платформе в «Мой налог»: BOUND, REQUESTED, REJECTED, NONE |
| CREATED_AT | диапазон дат | Условно | Диапазон дат добавления исполнителя, не больше 730 дней |
| UPDATED_AT | диапазон дат | Условно | Диапазон дат последнего изменения, не больше 730 дней |
Значения FIELDS
| Значение | Колонка в файле |
|---|---|
| id | ID исполнителя |
| inn | ИНН исполнителя |
| lastName | Фамилия |
| name | Имя |
| middleName | Отчество |
| birthday | Дата рождения |
| gender | Пол |
| type | Тип исполнителя |
| status | Статус исполнителя |
| login | Телефон |
| npdStatus | Статус подключения к НПД |
| autoSignActs | Автоматическое подписание актов |
| cardNumber | Номер карты |
| bankAccountNumber | Номер расчетного счета |
| fpsPhone | СБП (номер телефона) |
| groups | Группы исполнителя |
| createdAt | Дата добавления исполнителя |
| citizenship | Гражданство |
| description | Примечание |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "CONTRACTOR_LIST_REPORT",
"params": [
{ "name": "CREATED_AT", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "STATUS", "value": ["ACTIVE"] },
{ "name": "FIELDS", "value": ["id", "inn", "lastName", "name", "middleName", "status"] }
]
}'
OPERATION_LIST_REPORT
Список операций (выплат).
Обязательно: хотя бы один из CREATED_AT, REGISTRATION_AT.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки файла, см. таблицу ниже |
| ID | array[string] (uuid) | Нет | Отбор по идентификаторам выплат |
| REGISTRY_ID | array[string] (uuid) | Нет | Отбор по идентификаторам реестров |
| INDIVIDUAL_ID | array[string] (uuid) | Нет | Отбор по идентификаторам исполнителей |
| STATUS | array[string] | Нет | Статусы выплаты, см. Операции |
| PAYMENT_METHOD_TYPE | array[string] | Нет | Тип способа выплаты, см. Операции |
| CONTRACTOR_FULL_NAME | string | Нет | Поиск по ФИО исполнителя |
| AMOUNT | диапазон суммы | Нет | Диапазон суммы выплаты в копейках |
| CREATED_AT | диапазон дат | Условно | Диапазон дат создания выплаты, не больше 730 дней |
| REGISTRATION_AT | диапазон дат | Условно | Диапазон дат проведения выплаты, не больше 730 дней |
CREATED_AT— когда выплата была заведена,REGISTRATION_AT— когда она была фактически проведена. Для отчётности за период, как правило, нуженREGISTRATION_AT: выплата, созданная в конце месяца, может быть проведена уже в следующем.
Значения FIELDS
| Значение | Колонка в файле |
|---|---|
| id | ID операции |
| number | Номер операции |
| registryId | ID реестра |
| status | Статус операции |
| contractorId | ID исполнителя |
| fullName | ФИО исполнителя |
| inn | ИНН исполнителя |
| amount | Сумма выплаты (руб.) |
| partnerCommission | Комиссия платформы (руб.) |
| taxRetention | Удержано на налог (руб.) |
| purpose | Назначение платежа |
| paymentMethodType | Способ выплаты |
| paymentDetails | Реквизиты |
| createdAt | Дата создания |
| registrationAt | Дата проведения |
Колонка «Дата проведения» заполнена только у выплат с итогом — успешных или завершившихся ошибкой. У выплат в работе она пустая. Суммы в файле — в рублях, а не в копейках.
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "OPERATION_LIST_REPORT",
"params": [
{ "name": "REGISTRATION_AT", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-01-31T23:59:59.999Z" } },
{ "name": "STATUS", "value": ["PAYED_SUCCESS"] }
]
}'
DOCUMENT_LIST_REPORT
Список документов ЭДО.
Обязательно: хотя бы один из ID, CREATED_DATE, DATE_START, DATE_END.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки файла, см. таблицу ниже |
| ID | array[number] | Условно | Отбор по идентификаторам документов |
| UUID | array[string] | Нет | Отбор по UUID документов |
| NAME | string | Нет | Поиск по названию документа |
| TYPE | string | Нет | Тип документа, одно значение, см. ЭДО |
| STATUS | array[string] | Нет | Статусы документа, см. ЭДО |
| CONTRACTOR_ID | array[string] (uuid) | Нет | Отбор по идентификаторам исполнителей |
| COST_OF_WORK | number | Нет | Стоимость работ, целое число |
| PERIOD | number | Нет | Срок действия в днях, целое число |
| CREATED_DATE | диапазон дат | Условно | Диапазон дат создания документа, не больше 730 дней |
| DATE_START | диапазон дат | Условно | Диапазон дат начала действия, не больше 730 дней |
| DATE_END | диапазон дат | Условно | Диапазон дат окончания действия, не больше 730 дней |
Значения FIELDS
| Значение | Колонка в файле |
|---|---|
| id | ID документа |
| uuid | UUID документа |
| name | Название документа |
| type | Тип документа |
| status | Статус документа |
| createdAt | Дата создания |
| number | Номер документа |
| startDate | Дата начала |
| endDate | Дата окончания |
| duration | Срок действия, дней |
| estimatedCost | Стоимость, руб. |
| prolongation | Пролонгация |
| linkedContractId | ID связанного договора |
| companySignedAt | Дата подписания компанией |
| recipientSignedAt | Дата подписания исполнителем |
| recipient.id | ID исполнителя |
| recipient.inn | ИНН исполнителя |
| recipient.login | Логин исполнителя |
| recipient.fullName | ФИО исполнителя |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "DOCUMENT_LIST_REPORT",
"params": [
{ "name": "CREATED_DATE", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "TYPE", "value": "CONTRACT" }
]
}'
SIGNED_DOCUMENTS_ARCHIVE_REPORT
Архив подписанных документов: zip с описью и файлами документов.
Обязательно: хотя бы один из CREATED_DATE, DATE_START, DATE_END.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки описи, см. таблицу ниже |
| CONTRACTOR_PATH_BASE | string | Нет | Устарел. Принимается для совместимости, на результат не влияет, см. ниже |
| ID | array[number] | Нет | Отбор по идентификаторам документов |
| UUID | array[string] | Нет | Отбор по UUID документов |
| NAME | string | Нет | Поиск по названию документа |
| TYPE | string | Нет | Тип документа, одно значение, см. ЭДО |
| CONTRACTOR_ID | array[string] (uuid) | Нет | Отбор по идентификаторам исполнителей |
| COST_OF_WORK | number | Нет | Стоимость работ, целое число |
| PERIOD | number | Нет | Срок действия в днях, целое число |
| CREATED_DATE | диапазон дат | Условно | Диапазон дат создания документа, не больше 92 дней |
| DATE_START | диапазон дат | Условно | Диапазон дат начала действия, не больше 92 дней |
| DATE_END | диапазон дат | Условно | Диапазон дат окончания действия, не больше 92 дней |
Статусы документов отчёт задаёт сам — в архив попадают
SIGNED,EXPIREDиCANCELED. ПараметрSTATUSэтот отчёт не принимает.Диапазон дат здесь ограничен 92 днями, а не 730: год документов — это четыре отчёта подряд, а не один.
Справочник CONTRACTOR_PATH_BASE
Параметр устарел: папка исполнителя всегда называется ИНН_Фамилия_Имя. Значения ID и INN
по-прежнему принимаются и ведут себя одинаково, другие значения — ошибка запроса.
Значения FIELDS
| Значение | Колонка в описи |
|---|---|
| id | ID документа |
| uuid | UUID документа |
| name | Название документа |
| type | Тип документа |
| status | Статус документа |
| createdAt | Дата создания |
| number | Номер документа |
| startDate | Дата начала |
| duration | Срок действия (дней) |
| estimatedCost | Стоимость (руб.) |
| contractId | ID связанного договора |
| recipient.id | ID исполнителя |
| recipient.inn | ИНН исполнителя |
| recipient.login | Логин исполнителя |
| recipient.fullName | ФИО исполнителя |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "SIGNED_DOCUMENTS_ARCHIVE_REPORT",
"params": [
{ "name": "CREATED_DATE", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "TYPE", "value": "ACT" }
]
}'
TASK_ANNOUNCEMENT_LIST_REPORT
Список объявлений о задачах.
Обязательно: хотя бы один из CREATED_AT, UPDATED_AT.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки файла, см. таблицу ниже |
| QUERY | string | Нет | Текстовый поиск по названию услуги и вознаграждению |
| ID | array[number] | Нет | Отбор по идентификаторам объявлений |
| STATUS | array[string] | Нет | Статусы объявления, см. Объявления |
| CATEGORY_ID | array[string] | Нет | Отбор по категориям, Mongo ObjectId |
| GROUP_ID | array[string] | Нет | Отбор по тэгам объявлений, Mongo ObjectId |
| GROUP_PRESENCE | boolean | Нет | true — только объявления с тэгами, false — только без тэгов |
| ADDRESS | string | Нет | Поиск по полному совпадению адреса |
| CREATED_AT | диапазон дат | Условно | Диапазон дат создания объявления, не больше 730 дней |
| UPDATED_AT | диапазон дат | Условно | Диапазон дат последнего изменения, не больше 730 дней |
Значения FIELDS
| Значение | Колонка в файле |
|---|---|
| id | ID объявления |
| category | Категория |
| subcategory | Подкатегория |
| address | Адрес |
| description | Описание |
| service | Услуга |
| price | Цена |
| reward | Условия оплаты |
| workTime | Период выполнения работы |
| targetExecutorsQuantity | Целевое количество исполнителей |
| closeOnTargetExecutorsReached | Автозакрытие по кол-ву исполнителей |
| tags | Теги объявления |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "TASK_ANNOUNCEMENT_LIST_REPORT",
"params": [
{ "name": "CREATED_AT", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "STATUS", "value": ["PUBLISHED", "IN_PROGRESS"] }
]
}'
TASK_ANNOUNCEMENT_SUGGESTIONS_LIST_REPORT
Список предложений по объявлениям.
Обязательно: хотя бы один из CREATED_AT, EXPIRE_AT.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки файла, см. таблицу ниже |
| QUERY | string | Нет | Текстовый поиск |
| STATUS | array[string] | Нет | Статусы предложения, см. Предложения |
| ANNOUNCEMENT_ID | array[number] | Нет | Отбор по идентификаторам объявлений |
| INDIVIDUAL_INN | array[string] | Нет | Отбор по ИНН исполнителей |
| TASK_INVITE_LINK_ID | array[string] | Нет | Отбор по ссылкам-приглашениям |
| CREATED_AT | диапазон дат | Условно | Диапазон дат создания предложения, не больше 730 дней |
| EXPIRE_AT | диапазон дат | Условно | Диапазон дат истечения предложения, не больше 730 дней |
Значения FIELDS
| Значение | Колонка в файле |
|---|---|
| announcementId | ID объявления |
| advertisementName | Объявление |
| inn | ИНН Исполнителя |
| fullName | ФИО Исполнителя |
| phone | Телефон Исполнителя |
| amount | Сумма |
| paymentPurpose | Оказанные услуги |
| status | Статус |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "TASK_ANNOUNCEMENT_SUGGESTIONS_LIST_REPORT",
"params": [
{ "name": "CREATED_AT", "value": { "from": "2026-02-01T00:00:00.000Z", "to": "2026-02-28T23:59:59.999Z" } },
{ "name": "STATUS", "value": ["ACCEPTED"] }
]
}'
DEAL_LIST_REPORT
Список сделок.
Обязательно: хотя бы один из CREATED_AT, UPDATED_AT, ANNOUNCEMENT_ID, GROUP_ID.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки файла, см. таблицу ниже |
| QUERY | string | Нет | Текстовый поиск |
| STATUS | array[string] | Нет | Статусы сделки, см. Сделки |
| ANNOUNCEMENT_ID | array[number] | Условно | Отбор по идентификаторам объявлений |
| GROUP_ID | array[string] | Условно | Отбор по тэгам сделок, Mongo ObjectId |
| GROUP_PRESENCE | boolean | Нет | true — только сделки с тэгами, false — только без тэгов |
| INDIVIDUAL_INN | array[string] | Нет | Отбор по ИНН исполнителей |
| AMOUNT | диапазон суммы | Нет | Диапазон суммы сделки в копейках |
| LAST_PAYMENT_STATUS | string | Нет | Статус последней выплаты, одно значение, см. справочник ниже |
| LAST_PAYMENT_SUBSTATUS | array[string] | Нет | Детализация статуса выплаты, см. Операции |
| WORK_TIME | string | Нет | Период выполнения работы |
| CREATED_AT | диапазон дат | Условно | Диапазон дат создания сделки, не больше 730 дней |
| UPDATED_AT | диапазон дат | Условно | Диапазон дат последнего изменения, не больше 730 дней |
Справочник LAST_PAYMENT_STATUS
| Значение | Описание |
|---|---|
| NO_PAYMENTS | Выплат по сделке не было |
| HAVE_PAYMENT_ERROR | По сделке есть выплата с ошибкой |
| SUCCESS_PAYMENT | По сделке есть успешная выплата |
Значения FIELDS
| Значение | Колонка в файле |
|---|---|
| dealId | ID задания |
| announcementId | ID объявления |
| advertisementName | Объявление |
| inn | ИНН Исполнителя |
| phone | Телефон Исполнителя |
| fullName | ФИО Исполнителя |
| amount | Сумма |
| paymentPurpose | Оказанные услуги |
| tags | Теги сделки |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "DEAL_LIST_REPORT",
"params": [
{ "name": "CREATED_AT", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "STATUS", "value": ["COMPLETED"] }
]
}'
DEAL_DOCUMENTS_PACKAGE_REPORT
Пакет документов по сделкам: zip с описью, договорами, актами и чеками.
Обязательно: хотя бы один из CREATED_AT, UPDATED_AT, ANNOUNCEMENT_ID.
| Имя (name) | Тип значения (value) | Обязательный | Описание |
|---|---|---|---|
| FIELDS | array[string] | Нет | Колонки описи, см. таблицу ниже |
| QUERY | string | Нет | Текстовый поиск |
| DIRECTORY_STRUCTURE | string | Нет | Раскладка папок в архиве, см. справочник ниже. По умолчанию CONTRACTOR_CONTRACT_DEAL |
| CONTRACTOR_PATH_BASE | string | Нет | Устарел. Принимается для совместимости, на результат не влияет, см. ниже |
| ANNOUNCEMENT_ID | array[number] | Условно | Отбор по идентификаторам объявлений |
| GROUP_ID | array[string] | Нет | Отбор по тэгам сделок, Mongo ObjectId |
| GROUP_PRESENCE | boolean | Нет | true — только сделки с тэгами, false — только без тэгов |
| INDIVIDUAL_INN | array[string] | Нет | Отбор по ИНН исполнителей |
| AMOUNT | диапазон суммы | Нет | Диапазон суммы сделки в копейках |
| LAST_PAYMENT_STATUS | string | Нет | Статус последней выплаты, одно значение, см. Сделки |
| LAST_PAYMENT_SUBSTATUS | array[string] | Нет | Детализация статуса выплаты, см. Операции |
| WORK_TIME | string | Нет | Период выполнения работы |
| CREATED_AT | диапазон дат | Условно | Диапазон дат создания сделки, не больше 92 дней |
| UPDATED_AT | диапазон дат | Условно | Диапазон дат последнего изменения, не больше 92 дней |
Пакет собирается только по завершённым заданиям — этот фильтр отчёт задаёт сам.
CREATED_AT— диапазон дат создания сделки, то есть момента принятия отклика. Чтобы выгрузить документы по сделкам, завершённым за нужный период, беритеUPDATED_AT: в выборку попадают только завершённые сделки, поэтому их последнее изменение и есть завершение. Точную дату выплаты по каждой строке видно в описи — колонка «Дата выплаты».
Справочник DIRECTORY_STRUCTURE
| Значение | Раскладка папок |
|---|---|
| CONTRACTOR_CONTRACT_DEAL | Исполнитель → Договор → Задание. Договор лежит один раз, в корне своей ветки |
| CONTRACTOR_DEAL | Исполнитель → Задание. Папка задания самодостаточна, договор дублируется |
Справочник CONTRACTOR_PATH_BASE
Параметр устарел: папка исполнителя всегда называется ИНН_Фамилия_Имя. Значения ID и INN
по-прежнему принимаются и ведут себя одинаково, другие значения — ошибка запроса.
Значения FIELDS
| Значение | Колонка в описи |
|---|---|
| announcementId | № объявления |
| dealId | № задания |
| advertisementName | Название задания |
| fullName | Исполнитель |
| inn | ИНН |
| paymentProcessedAt | Дата выплаты |
| paymentAmount | Сумма выплаты |
| paymentCommission | Комиссия сервиса |
| contract | Договор |
| act | Акт |
| receipt | Чек |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports" \
--header "Content-Type: application/json" \
--header "x-idempotency-key: 7fe908ac-bf7d-4b7a-b6d1-8aff2a2e2cdf" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"type": "DEAL_DOCUMENTS_PACKAGE_REPORT",
"params": [
{ "name": "UPDATED_AT", "value": { "from": "2026-01-01T00:00:00.000Z", "to": "2026-03-31T23:59:59.999Z" } },
{ "name": "DIRECTORY_STRUCTURE", "value": "CONTRACTOR_DEAL" }
]
}'
Получение статуса отчёта
Короткий ответ для опроса готовности. Опрашивайте, пока статус не станет COMPLETED или
FAILED.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/reports/{reportId}/status
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| reportId | string (uuid) | Да | Идентификатор отчёта |
Справочник статусов (status)
| Статус | Описание |
|---|---|
| CREATED | Отчёт заказан, формирование ещё не началось |
| IN_PROGRESS | Формируется |
| COMPLETED | Готов, можно забирать ссылку |
| FAILED | Сформировать не удалось, причина в errorMessage |
| EXPIRED | Срок хранения истёк, файл больше недоступен |
| CANCELLED | Формирование отменено |
Пример успешного ответа
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"type": "CONTRACTOR_LIST_REPORT",
"status": "COMPLETED"
},
"success": true
}
Получение ссылки на скачивание
Возвращает временную ссылку на готовый файл. Работает, пока отчёт в статусе COMPLETED и не
истёк expiresAt.
Формат файла по ссылке не фиксирован, и на него нельзя опираться по типу отчёта. Списочный отчёт
приходит как .xlsx, но если выгрузка не уложилась в один файл или была обрезана на лимите —
как .zip с частями и файлом ATTENTION.txt. Отчёты с документами
(SIGNED_DOCUMENTS_ARCHIVE_REPORT, DEAL_DOCUMENTS_PACKAGE_REPORT) — всегда .zip.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/reports/{reportId}/download
Пример успешного ответа
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"url": "https://storage.yandexcloud.net/bucket/reports/..."
},
"success": true
}
Деталка отчёта
Полная карточка отчёта: кто заказал, с какими параметрами, когда сформирован и до какого момента доступен.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/reports/{reportId}
Описание полей ответа (result)
| Поле | Тип | Описание |
|---|---|---|
| id | string (uuid) | Идентификатор отчёта |
| type | string | Тип отчёта |
| status | string | Статус отчёта |
| organisationId | string (uuid) | Идентификатор организации |
| createdBy | object | Кто заказал: id, email, firstName, lastName, middleName |
| params | array[obj] | Параметры, с которыми отчёт был заказан |
| fileId | string | Идентификатор готового файла |
| string | Адрес, на который отправляется готовый отчёт | |
| errorMessage | string | Причина, по которой отчёт не сформирован |
| completedAt | string | Момент формирования (ISO 8601) |
| expiresAt | string | До какого момента файл доступен. null, пока отчёт не сформирован |
| createdAt | string | Дата создания |
| updatedAt | string | Дата обновления |
| deletedAt | string | Дата удаления. null — отчёт не удалён |
Фильтр отчётов
Список ранее заказанных отчётов. Общая структура тела — в разделе Фильтрация.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/reports/filter
Доступные фильтры (filters)
| Ключ | Тип значения | Описание |
|---|---|---|
| TYPE | Список строк (enum) | Тип отчёта |
| STATUS | Список строк (enum) | Статус отчёта |
| CREATED_BY | Список строк | Кто заказал |
| FILE_ID | Список строк | Идентификатор файла |
| CREATED_AT | Диапазон дат {from, to} | Дата создания |
Доступные сортировки
| Поле | Описание |
|---|---|
| CREATED_AT | По дате создания |
| UPDATED_AT | По дате обновления |
| COMPLETED_AT | По дате формирования |
| STATUS | По статусу |
| TYPE | По типу |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/reports/filter" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"filters": [
{ "name": "TYPE", "value": "CONTRACTOR_LIST_REPORT" },
{ "name": "STATUS", "value": ["COMPLETED"] }
],
"order": [{ "field": "CREATED_AT", "sort": "DESC" }],
"pagination": { "limit": 20, "lastId": null }
}'