Объявления
Создание объявления
Метод API предназначен для создания нового объявления о задаче от имени компании.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/announcements
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
Request Body
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| categories | array[string] | Да | ID категории и подкатегории в формате Mongo ObjectId |
| address | string | Да | Адрес выполнения задачи |
| description | string | Да | Подробное описание задачи |
| service | string | Да | Краткое название услуги |
| price | int32 | Нет | Стоимость выполнения В КОПЕЙКАХ |
| reward | string | Нет | Описание вознаграждения в виде строки (напр. "1000 руб/час") |
| workTime | string | Да | Описание времени исполнения задачи |
Правила валидации
| Параметр | Правило |
|---|---|
| categories | Массив не может быть пустым. Каждый элемент — строка в формате Mongo ObjectId |
| address | Строка длиной 1–2000 символов |
| description | Строка длиной 1–2000 символов |
| service | Строка длиной 1–255 символов |
| price | Целое положительное число, максимум 100 000 000 копеек (1 000 000 рублей) |
| reward | Строка длиной 1–255 символов |
| workTime | Строка длиной 1–200 символов |
Пример
curl -X POST "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/announcements" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"categories": ["5f2d2604af74f046a9a86844", "5f2d2643af74f046a9a86846"],
"address": "г. Москва, ул. Ленина, д. 1",
"description": "Требуется доставка комплекта документов в офис",
"service": "Курьерская доставка",
"price": 50000,
"reward": "500 рублей за доставку",
"workTime": "с 10:00 до 12:00"
}'
Пример успешного ответа
{
"requestId": "51427d6d-8c2a-4577-82b4-dfafc29a5479",
"result": {
"id": 809,
"createdBy": "6942bde29c4ba8df5b14653f",
"executors": [],
"categories": ["5f2d2604af74f046a9a86844", "5f2d2643af74f046a9a86846"],
"status": "PUBLISHED",
"type": "companyTask",
"address": "г. Москва, ул. Ленина, д. 1",
"description": "Требуется доставка комплекта документов в офис",
"service": "Курьерская доставка",
"workTime": "с 10:00 до 12:00",
"reward": "500 рублей за доставку",
"photos": [],
"price": 50000,
"blockedText": null,
"stats": {
"viewCount": 1,
"offerCount": 0
},
"notifySettings": {
"pushNotification": true
},
"publish_notify": false,
"createdAt": "2026-02-09T12:06:55.764Z",
"updatedAt": "2026-02-09T12:06:55.764Z"
},
"success": true
}
Описание ответа:
| Ключ | Описание |
|---|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения (true/false) |
| result | Объект созданного объявления |
| - id | Идентификатор объявления |
| - createdBy | ID пользователя (ObjectId), создавшего объявление |
| - executors | Массив ID выбранных исполнителей |
| - categories | Массив ID категорий (Mongo ObjectId) |
| - status | Текущий статус (см. справочник ниже) |
| - type | Тип объявления |
| - address | Адрес выполнения задачи |
| - description | Описание задачи |
| - service | Краткое название услуги |
| - workTime | Описание времени исполнения задачи |
| - reward | Текстовое описание вознаграждения |
| - photos | Массив ссылок на фотографии объявления |
| - price | Итоговая сумма в копейках; null — цена не указана («По договорённости») |
| - blockedText | Текст блокировки объявления модерацией (null, если нет) |
| - stats | Статистика просмотров и откликов (см. «Поля статистики» ниже) |
| - notifySettings | Настройки уведомлений (см. «Настройки уведомлений» ниже) |
| - publish_notify | Флаг отправки уведомления о публикации |
| - createdAt | Дата и время создания (ISO 8601) |
| - updatedAt | Дата и время последнего обновления (ISO 8601) |
Дополнительно объявление может содержать поля targetExecutorsQuantity (целевое количество исполнителей), options (опции объявления) и groups (тэги объявления) — см. сводные таблицы ниже.
Поля статистики (stats)
| Поле | Тип | Описание |
|---|---|---|
| viewCount | number | Количество просмотров объявления |
| offerCount | number | Количество откликов от исполнителей |
Настройки уведомлений (notifySettings)
| Поле | Тип | Описание |
|---|---|---|
| pushNotification | boolean | Push-уведомления |
Опции объявления (options)
| Поле | Тип | Описание |
|---|---|---|
| closeOnTargetExecutorsReached | boolean | Автозакрытие объявления при достижении целевого количества исполнителей |
Поля тэга объявления (groups[])
| Поле | Тип | Описание |
|---|---|---|
| id | string | ID тэга |
| name | string | Название тэга |
Справочник статусов (status)
| Статус | Описание |
|---|---|
| PUBLISHED | Объявление опубликовано и принимает отклики |
| IN_PROGRESS | Набор закрыт (close-recruitment), идёт работа по уже принятым откликам |
| CLOSED | Работы по объявлению завершены |
| CANCEL | Объявление отменено |
| ARCHIVED | Объявление перемещено в архив |
Возможные ошибки
| Code | Описание |
|---|---|
| VALIDATION_ERROR | Ошибка валидации |
| FORBIDDEN_ERROR | Ошибка авторизации |
| UNKNOWN_ERROR | Ошибка сервера |
Закрытие набора по объявлению
Метод API предназначен для прекращения приема откликов и закрытия набора исполнителей по конкретному объявлению компании. После вызова объявление переходит в статус IN_PROGRESS.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/announcements/{announcementId}/close-recruitment
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| announcementId | int32 | Да | Идентификатор объявления |
Request Body
Тело запроса не требуется (Empty Body).
Пример
curl --location --request POST "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/announcements/123/close-recruitment" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа:
{
"requestId": "b4002774-00ad-4ab5-8f5f-d660a49d04ec",
"success": true
}
Описание ответа:
| Ключ | Описание |
|---|---|
| requestId | Уникальный идентификатор запроса |
| success | Статус выполнения (true/false) |
Фильтрация объявлений
Метод предназначен для получения списка объявлений компании с расширенной фильтрацией.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/announcements/filter
Общая структура запроса описана в разделе Фильтрация: общая структура.
Доступные фильтры (filters)
| Имя (name) | Тип значения (value) | Пример значения | Описание |
|---|---|---|---|
| ID | number / array[number] | [795, 811] | Фильтрация по конкретным ID объявлений |
| STATUS | string / array[string] | ["PUBLISHED", "CLOSED"] | Строгое соответствие статусам объявления (см. справочник ниже) |
| CATEGORY_ID | string / array[string] | ["5f2d2604af74f046a9a86844"] | Соответствие указанным категориям (Mongo ObjectId) |
| GROUP_ID | string / array[string] | ["6942bde29c4ba8df5b14653f"] | Фильтрация по ID тэгов объявлений (Mongo ObjectId) |
| GROUP_PRESENCE | boolean | true | true — только объявления, имеющие хотя бы один тэг; false — только без тэгов |
| CREATED_AT | диапазон дат | {"from": "2026-01-01T00:00:00.000Z", "to": "2026-01-31T23:59:59.999Z"} | Поиск в диапазоне дат создания (включительно) |
| UPDATED_AT | диапазон дат | {"from": "2026-01-01T00:00:00.000Z", "to": "2026-01-31T23:59:59.999Z"} | Поиск в диапазоне дат последнего обновления |
| ADDRESS | string | "Москва" | Поиск по полному совпадению адреса |
Доступные сортировки
| Поле (field) | Описание |
|---|---|
| CREATED_AT | Дата создания объявления |
Других полей сортировки нет.
Поля, обрабатываемые по query
Текстовый поиск (query) выполняет поиск частичного совпадения по названию услуги и вознаграждению. Если строка запроса является числом — дополнительно ищет по идентификатору объявления.
Статусы объявления
| Статус | Описание |
|---|---|
| PUBLISHED | Объявление опубликовано и принимает отклики |
| IN_PROGRESS | Набор закрыт (close-recruitment), идёт работа по уже принятым откликам |
| CLOSED | Работы по объявлению завершены |
| CANCEL | Объявление отменено |
| ARCHIVED | Объявление перемещено в архив |
Пример
curl "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/announcements/filter" \
-H "content-type: application/json" \
--data-raw '{
"filters": [
{
"name": "CATEGORY_ID",
"value": ["5f2d2604af74f046a9a86844"]
},
{
"name": "STATUS",
"value": ["PUBLISHED", "CLOSED"]
},
{
"name": "CREATED_AT",
"value": {
"from": "2026-01-01T00:00:00.000Z",
"to": "2026-02-09T23:59:59.999Z"
}
},
{
"name": "ADDRESS",
"value": "Москва"
}
],
"order": [
{ "field": "CREATED_AT", "sort": "DESC" }
],
"pagination": {
"limit": 20,
"lastId": null
}
}'
Пример успешного ответа:
{
"requestId": "9a3b8c2d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"result": {
"lastId": 795,
"items": [
{
"id": 795,
"categories": ["5f2d2604af74f046a9a86844", "5fc9606aaf6b9e0514304f06"],
"service": "Пеший курьер (документы)",
"createdAt": "2026-01-15T14:30:00.000Z",
"price": 50000,
"stats": {
"viewCount": 42,
"offerCount": 5
},
"address": "г. Москва, БЦ Сити",
"status": "PUBLISHED",
"reward": "500 руб.",
"workTime": "В течение дня",
"description": "Забрать документы в офисе А и отвезти в офис Б."
}
]
},
"success": true
}
| Ключ | Описание |
|---|---|
| requestId | Уникальный UUID запроса для логирования и отслеживания транзакции |
| success | Флаг успешности выполнения запроса (true при успешной выборке) |
| result | Контейнер с данными выборки |
| lastId | Идентификатор (id) последнего элемента в текущем списке. Используется для пагинации в следующем запросе |
| items | Массив объектов объявлений, соответствующих заданным фильтрам |
| id | Системный порядковый номер объявления |
| categories | Список идентификаторов категорий (Mongo ObjectId), к которым относится задача |
| service | Краткое название или заголовок услуги |
| description | Полное текстовое описание условий задачи |
| address | Текстовый адрес места выполнения задачи |
| status | Текущий статус объявления |
| price | Стоимость выполнения задачи в копейках; null — цена не указана («По договорённости») |
| reward | Текстовое описание вознаграждения |
| workTime | Описание временных рамок или срока выполнения задачи |
| stats | Объект статистических данных объявления |
| viewCount | Общее количество просмотров данного объявления |
| offerCount | Количество откликов/предложений, полученных от исполнителей |
| createdAt | Дата и время создания объявления в формате ISO 8601 |
Получение информации об объявлении
Метод API предназначен для получения подробных данных по конкретному объявлению компании по его идентификатору.
Запрос
Метод: GET URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/announcements/{announcementId}
Path Parameters
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| organisationId | string (uuid) | Да | Идентификатор организации |
| announcementId | int32 | Да | Идентификатор объявления |
Пример
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/announcements/123" \
--header "accept: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пример успешного ответа:
{
"requestId": "0ab376b1-f4d7-4d0e-9653-7f897477a1a8",
"result": {
"id": 759,
"createdBy": "6942bde29c4ba8df5b14653f",
"executors": ["6964d3202c5f0714d4ef6c0e"],
"categories": ["5f2d2620af74f046a9a86845", "5f2d28b5af74f046a9a8684b"],
"status": "PUBLISHED",
"type": "companyTask",
"address": "Москва, МГУ",
"description": "APIDog test",
"service": "Test a",
"workTime": "Завтра",
"reward": "350 в час",
"photos": [],
"price": 5000,
"blockedText": null,
"stats": {
"viewCount": 43,
"offerCount": 1
},
"notifySettings": {},
"publish_notify": false,
"createdAt": "2026-02-04T10:00:15.250Z",
"updatedAt": "2026-02-04T10:00:15.250Z"
},
"success": true
}
Описание полей ответа (result)
| Ключ | Описание |
|---|---|
| id | Уникальный ID объявления в системе |
| createdBy | ID пользователя (ObjectId), создавшего объявление |
| executors | Массив ID выбранных исполнителей |
| categories | Массив ID категорий (Mongo ObjectId) |
| status | Текущий статус объявления (см. справочник выше) |
| type | Тип объявления |
| address | Адрес места выполнения задачи |
| description | Полное описание задачи |
| service | Краткое название услуги |
| workTime | Описание времени исполнения задачи |
| reward | Текстовое описание вознаграждения |
| photos | Массив ссылок на фотографии объявления |
| price | Стоимость выполнения в копейках; null — цена не указана («По договорённости») |
| blockedText | Текст блокировки объявления модерацией (null, если нет) |
| stats | Статистика просмотров и откликов (см. «Поля статистики» в методе «Создание объявления») |
| notifySettings | Настройки уведомлений (см. «Настройки уведомлений» в методе «Создание объявления») |
| publish_notify | Флаг отправки уведомления о публикации |
| createdAt | Дата и время создания (ISO 8601) |
| updatedAt | Дата и время последнего обновления (ISO 8601) |