openapi: 3.0.3 info: title: 'Документация по веб-сервису API для подключение интернет-магазина запчастей ЯрКамп Детали-машин' description: 'Подробная документация для подключения поставщика к веб-сервису API интернет-магазина запчастей ЯрКамп Детали-машин' version: 1.0.0 servers: - url: 'https://shop.yarkamp.ru' tags: - name: Запросы description: '' components: securitySchemes: default: type: http scheme: bearer description: 'Для получения вашего API-ключа свяжитесь с менеджером.' security: - default: [] paths: /api/v1/auth/check: get: summary: 'Проверка авторизации' operationId: '' description: 'Необходимые права: info' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: id: 801 name: 'Ольнев Антон Тестович' scopes: - '*' properties: status: type: string example: success description: 'Статус ответа' data: type: object properties: id: type: integer example: 801 description: 'ID пользователя' name: type: string example: 'Ольнев Антон Тестович' description: 'Имя пользователя' scopes: type: array example: - '*' description: 'Доступные права' items: type: string required: - id - name - scopes description: Пользователь required: - status - data tags: - Запросы /api/v1/payment-accounts: get: summary: 'Получение платежных аккаунтов' operationId: '' description: 'Необходимые права: info' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: - id: 2 account_name: 'ФЛ, Ольнев Антон Сергеевич' - id: 3 account_name: 'ЮЛ, ООО Рога и тестовая' - id: 4 account_name: 'ИП, Ольнев Антонио Тестович' - id: 5 account_name: 'ИП, Иванов Сергей Александрович' - id: 364 account_name: 'ЮЛ, ООО "БизнесБас Сервис"' - id: 824 account_name: 'ЮЛ, ООО "МАРВИКС"' - id: 825 account_name: 'ИП, Козодаев Сергеевич Михаил' - id: 1090 account_name: 'ИП, Кобцев Александр' - id: 1192 account_name: 'ИП, Гарифуллина Энже Рафитовна' - id: 1240 account_name: 'ЮЛ, ИП Ольнев Антон Сергеевич' - id: 1279 account_name: 'ЮЛ, ООО "АВТОЦЕНТР "ГАЗ"' - id: 1384 account_name: 'ЮЛ, ООО "УК "ТАТСПЕЦТРАНСПОРТ"' properties: status: type: string example: success description: 'Статус ответа' data: type: array example: - id: 2 account_name: 'ФЛ, Ольнев Антон Сергеевич' - id: 3 account_name: 'ЮЛ, ООО Рога и тестовая' - id: 4 account_name: 'ИП, Ольнев Антонио Тестович' - id: 5 account_name: 'ИП, Иванов Сергей Александрович' - id: 364 account_name: 'ЮЛ, ООО "БизнесБас Сервис"' - id: 824 account_name: 'ЮЛ, ООО "МАРВИКС"' - id: 825 account_name: 'ИП, Козодаев Сергеевич Михаил' - id: 1090 account_name: 'ИП, Кобцев Александр' - id: 1192 account_name: 'ИП, Гарифуллина Энже Рафитовна' - id: 1240 account_name: 'ЮЛ, ИП Ольнев Антон Сергеевич' - id: 1279 account_name: 'ЮЛ, ООО "АВТОЦЕНТР "ГАЗ"' - id: 1384 account_name: 'ЮЛ, ООО "УК "ТАТСПЕЦТРАНСПОРТ"' description: 'Платежные аккаунты' items: type: object properties: id: type: integer example: 2 description: 'ID аккаунта' account_name: type: string example: 'ФЛ, Ольнев Антон Сергеевич' description: 'Название аккаунта' required: - id - account_name required: - status - data tags: - Запросы /api/v1/shop-offices: get: summary: 'Получение списка офисов' operationId: '' description: 'Необходимые права: search' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: - id: 1 name: 'г. Ярославль, ул. Пожарского' - id: 2 name: 'г. Кострома' properties: status: type: string example: success description: 'Статус ответа' data: type: array example: - id: 1 name: 'г. Ярославль, ул. Пожарского' - id: 2 name: 'г. Кострома' description: Склады items: type: object properties: id: type: integer example: 1 description: 'ID офиса' name: type: string example: 'г. Ярославль, ул. Пожарского' description: 'Наименование офиса' required: - id - name required: - status - data tags: - Запросы /api/v1/warehouses: get: summary: 'Получение списка складов' operationId: '' description: 'Необходимые права: search' parameters: - in: query name: office_id description: '' example: '1' required: true schema: type: integer description: '' example: '1' responses: 500: description: '' content: application/json: schema: type: object example: message: 'Server Error' properties: message: type: string example: 'Server Error' tags: - Запросы /api/v1/search: post: summary: 'Поиск запчастей' operationId: '' description: 'Необходимые права: search' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: [] properties: status: type: string example: success description: 'Статус ответа' data: type: array example: [] description: Товары required: - status - data tags: - Запросы requestBody: required: true content: application/json: schema: type: object properties: payment_account_id: type: integer description: 'ID платежного аккаунта' example: '17' article: type: string description: 'Фильтр по артикулу' example: '101350115510' brand: type: string description: 'Фильтр по бренду' example: МАЗ name: type: string description: 'Фильтр по наименованию' example: Шайба product_id: type: integer description: 'Фильтр по id' example: 4260201 warehouse_ids: type: array description: 'Фильтр по складам' example: - 48 items: type: integer price_min: type: number description: 'Минимальная цена' example: 200 price_max: type: number description: 'Максимальная цена' example: 300 offset: type: integer description: 'Номер позиции, с которой необходимо получить ответ' example: 0 limit: type: integer description: 'Количество элементов в ответе' example: 100 is_analog: type: boolean description: 'Включать аналоги' example: true required: - payment_account_id /api/v1/search-external: post: summary: 'Поиск запчастей на внешнем складе' operationId: '' description: 'Необходимые права: search' parameters: [] responses: 403: description: '' content: application/json: schema: type: object example: status: error errors: 'Недоступные склады: 48' properties: status: type: string example: error description: 'Статус ответа' errors: type: string example: 'Недоступные склады: 48' required: - status tags: - Запросы requestBody: required: true content: application/json: schema: type: object properties: office_id: type: integer description: 'ID офиса' example: 1 warehouse_ids: type: array description: 'ID внешних складов; пусто - все доступные внешние' example: - 48 items: type: integer term: type: string description: 'Поисковая строка' example: '101350115510' article: type: string description: Артикул example: '101350115510' brand: type: string description: Бренд example: МАЗ price_min: type: number description: 'Минимальная цена' example: 200 price_max: type: number description: 'Максимальная цена' example: 300 exist_min: type: integer description: 'Минимальный остаток' example: 1 exist_max: type: integer description: 'Максимальный остаток' example: 100 exec_min: type: integer description: 'Мин. срок доставки, дней' example: 1 exec_max: type: integer description: 'Макс. срок доставки, дней' example: 30 required: - office_id /api/v1/addresses: post: summary: 'Получение адресов доставки' operationId: '' description: 'Необходимые права: order' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: - id: 1 address: 'г. Москва' properties: status: type: string example: success description: 'Статус ответа' data: type: array example: - id: 1 address: 'г. Москва' description: 'Адреса доставки' items: type: object properties: id: type: integer example: 1 description: 'ID адреса' address: type: string example: 'г. Москва' description: 'Адрес доставки' required: - id - address required: - status - data tags: - Запросы requestBody: required: true content: application/json: schema: type: object properties: payment_account_id: type: integer description: 'ID платежного аккаунта' example: 17 required: - payment_account_id /api/v1/addresses/create: post: summary: 'Создание адреса доставки' operationId: '' description: 'Необходимые права: order' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: id: 1 address: 'г. Москва' properties: status: type: string example: success description: 'Статус ответа' data: type: object properties: id: type: integer example: 1 description: 'ID адреса' address: type: string example: 'г. Москва' description: 'Адрес доставки' required: - id - address description: Адрес required: - status - data tags: - Запросы requestBody: required: true content: application/json: schema: type: object properties: payment_account_id: type: integer description: 'ID платежного аккаунта' example: 17 address: type: string description: 'Адрес доставки' example: 'г. Москва' required: - payment_account_id - address /api/v1/orders/statuses: get: summary: 'Список статусов' operationId: '' description: 'Необходимые права: order' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: - id: 1 name: Оформлен - id: 2 name: 'В работе' - id: 3 name: Выполнен - id: 4 name: 'Можно забрать' - id: 5 name: Выполнен - id: 6 name: 'Отказ поставщика' - id: 7 name: 'Отмена клиентом' - id: 8 name: 'Изменен, необходимо согласовать' - id: 9 name: 'Частичный отказ поставщика' - id: 10 name: 'Отгружен поставщиком' - id: 11 name: 'Ожидается поступление' - id: 12 name: 'Частично можно забирать' - id: 13 name: 'Частично отгружен поставщиком' - id: 14 name: Закрыт properties: status: type: string example: success description: 'Статус ответа' data: type: array example: - id: 1 name: Оформлен - id: 2 name: 'В работе' - id: 3 name: Выполнен - id: 4 name: 'Можно забрать' - id: 5 name: Выполнен - id: 6 name: 'Отказ поставщика' - id: 7 name: 'Отмена клиентом' - id: 8 name: 'Изменен, необходимо согласовать' - id: 9 name: 'Частичный отказ поставщика' - id: 10 name: 'Отгружен поставщиком' - id: 11 name: 'Ожидается поступление' - id: 12 name: 'Частично можно забирать' - id: 13 name: 'Частично отгружен поставщиком' - id: 14 name: Закрыт description: Статусы items: type: object properties: id: type: integer example: 1 description: 'ID статуса' name: type: string example: Оформлен description: 'Название статуса' required: - id - name required: - status - data tags: - Запросы /api/v1/orders/item-statuses: get: summary: 'Список статусов позиций' operationId: '' description: 'Необходимые права: order' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success data: - id: 1 name: Оформлен - id: 2 name: 'В работе' - id: 3 name: Выполнен - id: 4 name: 'Можно забрать' - id: 5 name: Выполнен - id: 6 name: 'Отказ поставщика' - id: 7 name: 'Отмена клиентом' - id: 8 name: 'Изменен, необходимо согласовать' - id: 10 name: 'Частичный отказ поставщика' - id: 11 name: 'Отгружен поставщиком' - id: 12 name: 'Ожидается поступление' - id: 13 name: Закрыт properties: status: type: string example: success description: 'Статус ответа' data: type: array example: - id: 1 name: Оформлен - id: 2 name: 'В работе' - id: 3 name: Выполнен - id: 4 name: 'Можно забрать' - id: 5 name: Выполнен - id: 6 name: 'Отказ поставщика' - id: 7 name: 'Отмена клиентом' - id: 8 name: 'Изменен, необходимо согласовать' - id: 10 name: 'Частичный отказ поставщика' - id: 11 name: 'Отгружен поставщиком' - id: 12 name: 'Ожидается поступление' - id: 13 name: Закрыт description: 'Статусы позиций' items: type: object properties: id: type: integer example: 1 description: 'ID статуса' name: type: string example: Оформлен description: 'Название статуса' required: - id - name required: - status - data tags: - Запросы /api/v1/orders/create: post: summary: 'Оформление заказа' operationId: '' description: 'Необходимые права: order' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: success order_id: 1 properties: status: type: string example: success description: 'Статус ответа' order_id: type: integer example: 1 description: 'ID сформированного заказа' required: - status - order_id tags: - Запросы requestBody: required: true content: application/json: schema: type: object properties: payment_account_id: type: integer description: 'ID платежного аккаунта' example: 17 office_id: type: integer description: 'ID офиса' example: 1 how_get: type: integer description: 'Способ доставки 1 - самовывоз, 2 - доставка по адресу или ТК, 5 - доставка ТК СДЭК' example: 1 how_pay: type: integer description: 'Способ оплаты 1 - наличными при получении, 2 - картой при получении, 3 - оплата онлайн, 4 - оплата по счёту' example: 1 address_id: type: integer description: 'ID адреса доставки' example: 1 comments: type: string description: 'Комментарий к заказу' example: комментарий products: type: array description: 'Товары в заказе' example: - [] items: type: object properties: id: type: integer description: 'ID товара из каталога (для каталожных позиций)' example: 17 warehouse_id: type: integer description: 'Склад товара (для каталожных позиций)' example: 17 metadata: type: string description: 'Данные предложения из searchExternal (для внешних позиций)' example: consequatur quantity: type: integer description: 'Количество товара' example: 17 required: - quantity required: - payment_account_id - office_id - products /api/v1/orders/list: post: summary: 'Список заказов' operationId: '' description: 'Необходимые права: order' parameters: [] responses: 422: description: '' content: application/json: schema: type: object example: status: error errors: payment_account_id: 'Payment account not found' properties: status: type: string example: error description: 'Статус ответа' errors: type: object properties: payment_account_id: type: string example: 'Payment account not found' required: - status tags: - Запросы requestBody: required: false content: application/json: schema: type: object properties: payment_account_id: type: integer description: 'ID платежного аккаунта' example: 17 status_id: type: integer description: 'ID статуса заказа' example: 1 date_from: type: date description: 'Дата от' example: '2025-01-01' date_to: type: date description: 'Дата до' example: '2026-01-01' order_ids: type: array description: 'ID заказов' example: - 17 items: type: integer