Предложения
Фильтрация предложений
Метод API предназначен для поиска и получения списка откликов исполнителей на объявления компании с использованием расширенных фильтров.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/suggestions/filter
Общая структура запроса описана в разделе Фильтрация: общая структура.
Доступные фильтры (filters)
| Имя (name) | Тип значения (value) | Пример значения | Описание |
|---|---|---|---|
| ANNOUNCEMENT_ID | array[number] | [759, 811] | Фильтр по ID объявлений |
| STATUS | array[string] | ["NEW", "ACCEPTED"] | Статусы предложения (см. справочник ниже) |
| CREATED_AT | диапазон дат | {"from": "2026-02-01T00:00:00.000Z", "to": "2026-02-28T23:59:59.999Z"} | Диапазон дат создания |
| EXPIRE_AT | диапазон дат | {"from": "2026-02-01T00:00:00.000Z", "to": "2026-02-28T23:59:59.999Z"} | Диапазон дат истечения срока предложения |
| INDIVIDUAL_INN | array[string] | ["160285864492"] | Фильтрация по ИНН исполнителей |
| TASK_INVITE_LINK_ID | array[string] | ["550e8400-e29b-41d4-a716-446655440000"] | Фильтрация по ссылкам-приглашениям |
Доступные сортировки
| Поле (field) | Описание |
|---|---|
| CREATED_AT | Дата создания предложения |
| EXPIRE_AT | Дата истечения срока предложения |
| STATUS | Статус предложения |
| ANNOUNCEMENT_ID | ID объявления |
| FULL_NAME | ФИО исполнителя |
Поля, обрабатываемые по query
Текстовый поиск (query) выполняет поиск частичного совпадения по ФИО исполнителя, ИНН исполнителя, тексту услуги из объявления.
Статусы предложения
| Статус | Описание |
|---|---|
| NEW | Предложение только что создано, ещё не просмотрено |
| READ | Предложение просмотрено заказчиком |
| ACCEPTED | Предложение принято |
| HIDDEN | Предложение скрыто |
| CANCELLED | Предложение отменено |
Пример полного запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/suggestions/filter" \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"filters": [
{
"name": "ANNOUNCEMENT_ID",
"value": [759, 811]
},
{
"name": "EXPIRE_AT",
"value": {
"from": "2026-02-01T00:00:00.000Z",
"to": "2026-02-09T23:59:59.999Z"
}
},
{
"name": "STATUS",
"value": ["NEW", "ACCEPTED"]
},
{
"name": "CREATED_AT",
"value": {
"from": "2026-02-01T00:00:00.000Z",
"to": "2026-02-09T23:59:59.999Z"
}
}
],
"pagination": {
"limit": 20,
"lastId": null
}
}'
Пример успешного ответа
{
"requestId": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
"success": true,
"result": {
"lastId": "6989d690cb32113e8cb4911e",
"items": [
{
"id": "6989d690cb32113e8cb4911e",
"announcementId": 811,
"executorId": "6968d0e58adb5d56f5420178",
"organisationId": "6942bde29c4ba8df5b14653f",
"status": "NEW",
"createdAt": "2026-02-09T12:44:00.235Z",
"updatedAt": "2026-02-09T12:44:00.235Z",
"expireAt": "2026-03-11T12:44:00.235Z",
"announcement": {
"id": 811,
"categories": [
"5f2d2620af74f046a9a86845",
"5fc965daaf6b9e0514304f37"
],
"service": "Доставка документов",
"createdAt": "2026-02-09T12:43:50.661Z",
"price": 143100,
"stats": {
"viewCount": 12,
"offerCount": 1
},
"address": "г. Москва, ул. Лесная, д. 5",
"status": "PUBLISHED",
"reward": "1431 руб.",
"workTime": "Сегодня",
"description": "Просьба срочно сегодня доставить документы"
},
"executor": {
"id": "6968d0e58adb5d56f5420178",
"phone": "+79998887766",
"firstName": "Иван",
"lastName": "Иванов",
"middleName": "",
"inn": "111122223333"
},
"taskInviteLink": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"taskAnnouncementId": 811,
"token": "k7fd2mqrx9ab",
"name": "Телеграм-канал «Работа рядом»",
"status": "ACTIVE",
"expiresAt": null
}
}
]
}
}
Описание полей ответа
| Поле | Описание |
|---|---|
| requestId | Уникальный ID запроса |
| success | Указывает на успешность выполнения запроса (true или false) |
| result | Контейнер с данными ответа |
| result.lastId | ID последнего элемента в текущем списке |
| result.items | Массив найденных предложений (откликов) |
Поля объекта предложения (items[])
| Поле | Тип | Описание |
|---|---|---|
| id | string | Уникальный ID предложения (используется как lastId) |
| announcementId | number | ID объявления, к которому относится отклик |
| executorId | string | Внутренний ID исполнителя в Маркетплейсе. Только для чтения: на вход методы API его не принимают, исполнителя везде указывают по ИНН. С исполнителями организации («Фильтрация исполнителей», id — UUID) сопоставлять по executor.inn |
| organisationId | string | ID организации |
| status | string | Статус предложения: NEW, READ, ACCEPTED, HIDDEN, CANCELLED |
| amount | number | Сумма сделки в копейках |
| paymentPurpose | string | Назначение платежа |
| createdAt | string | Дата и время создания (ISO 8601) |
| updatedAt | string | Дата последнего изменения (например, смена статуса) |
| expireAt | string | Дата, до которой объявление показывается в предложенных |
| announcement | object | Краткая информация об объявлении (см. ниже) |
| executor | object | Данные исполнителя (см. ниже) |
| taskInviteLink | object | Ссылка-приглашение, по которой пришёл отклик |
Поля объявления (announcement)
| Поле | Тип | Описание |
|---|---|---|
| id | number | ID объявления |
| categories | array[string] | Категории (Mongo ObjectId) |
| service | string | Название задачи |
| createdAt | string | Дата создания (ISO 8601) |
| price | number | Стоимость в копейках |
| stats | object | Статистика: viewCount, offerCount |
| address | string | Адрес выполнения задачи |
| status | string | Статус объявления (например, PUBLISHED) |
| reward | string | Текстовое описание вознаграждения |
| workTime | string | Описание времени исполнения задачи |
| description | string | Описание задачи |
| targetExecutorsQuantity | number | Целевое количество исполнителей |
| options | object | Опции объявления (closeOnTargetExecutorsReached) |
| groups | array[string] | Тэги объявления |
Поля исполнителя (executor)
| Поле | Тип | Описание |
|---|---|---|
| id | string | ID исполнителя |
| phone | string | Контактный телефон |
| firstName | string | Имя исполнителя |
| lastName | string | Фамилия исполнителя |
| middleName | string | Отчество исполнителя |
| inn | string | ИНН исполнителя |
Отправка предложений объявления исполнителям
Метод API предназначен для отправки предложений по конкретному объявлению списку исполнителей, идентифицируемых по ИНН.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/suggestions/send
Request Body
| Уровень 1 | Уровень 2 | Тип | Обязательное поле | Описание |
|---|---|---|---|---|
| items | array[obj] | Да | Список объектов для отправки предложений | |
| inn | string | Да | ИНН исполнителя | |
| announcementId | int32 | Да | ID объявления, которое предлагается исполнителю | |
| ignoreErrors | boolean | Нет | true - продолжать отправку при ошибке в одном из элементов; false - прервать операцию |
Правила валидации
| Параметр | Правило |
|---|---|
| items | Массив объектов, не может быть пустым |
| items[].inn | Строка, валидный ИНН исполнителя |
| items[].announcementId | Числовой ID объявления |
Пример запроса
curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/suggestions/send" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"items": [
{
"inn": "123456789012",
"announcementId": 321
}
],
"ignoreErrors": true
}'
Пример успешного ответа:
{
"requestId": "6745a9b9-10da-4cac-a7bb-574d0cb35389",
"result": {
"successfulItems": [
{
"inn": "160285864492"
}
],
"errors": []
},
"success": true
}
Описание полей ответа:
| Ключ | Описание |
|---|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения запроса (true/false) |
| result | Объект с результатами обработки списка |
| successfulItems | Список ИНН исполнителей, которым успешно отправлено предложение |
| errors | Список ошибок по конкретным ИНН (если возникли) |
Удаление предложений
Удаляет предложения по их ID. Требует доступ org.task-suggestions.write.
Запрос
Метод: DELETE URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/suggestions/remove
Request Body
| Поле | Тип | Обязательное поле | Описание |
|---|---|---|---|
| ids | array[string] | Да | Массив ID предложений (минимум 1 элемент) |
Пример запроса
curl -X 'DELETE' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/suggestions/remove" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"ids": ["507f1f77bcf86cd799439011", "507f1f77bcf86cd799439012"]
}'
Пример успешного ответа
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"successfulItems": ["507f1f77bcf86cd799439011"],
"errors": []
},
"success": true
}
Описание полей ответа
| Ключ | Описание |
|---|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения запроса (true/false) |
| result | Объект с результатами обработки списка |
| successfulItems | Список ID успешно удалённых предложений |
| errors | Список ошибок по конкретным ID (если есть) |