{
  "openapi": "3.0.1",
  "info": {
    "title": "Документация по SelSup API",
    "description": "API SelSup — программный интерфейс для работы с сервисом SelSup. Даёт возможность работать со всеми функциями SelSup из вашей системы. Для использования API добавьте новый токен на странице:https://selsup.ru/application/integration/api. Добавленный токен необходимо передавать во всех запросах к API SelSup, в заголовке Authorization.",
    "contact": {
      "name": "Support Team",
      "email": "admin@selsup.ru"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://selsup.ru/dogovor-offerta/"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.selsup.ru/",
      "description": "Production server"
    }
  ],
  "tags": [
    {
      "name": "Задачи",
      "description": "Многие методы не сразу возвращают данные, а запускают асинхронную задачу. В этом случае возвращается специальный объект TmsTask - по которому можно отслеживать статус выполнения задачи и получать результат в виде файла. В данном разделе представлены методы для работы с такими задачами"
    }
  ],
  "paths": {
    "/api/task/runTask": {
      "post": {
        "tags": [
          "Задачи"
        ],
        "summary": "Запустить задачу",
        "description": "Запускает поставленную в очередь задачу. Метод доступен только суперпользователям",
        "operationId": "runTask",
        "parameters": [
          {
            "name": "taskId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/hal+json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/cancelTask": {
      "post": {
        "tags": [
          "Задачи"
        ],
        "summary": "Отменить задачу",
        "description": "Отменить выполнение задачи",
        "operationId": "cancelTask",
        "parameters": [
          {
            "name": "taskId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/TmsTask"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/getTasks": {
      "get": {
        "tags": [
          "Задачи"
        ],
        "summary": "Поиск нескольких задач",
        "description": "Получает группу последних задач по типу задачи",
        "operationId": "getTasks",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskFilter"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/hal+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TmsTask"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/task/getTask": {
      "get": {
        "tags": [
          "Задачи"
        ],
        "summary": "Последняя задача",
        "description": "Получение последней задачи по фильтру типов задач",
        "operationId": "getTask",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskFilter"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/TmsTask"
                }
              }
            }
          }
        }
      }
    },
    "/api/task/findTask": {
      "get": {
        "tags": [
          "Задачи"
        ],
        "summary": "Поиск задач",
        "description": "Возвращает задачи по фильтру",
        "operationId": "findTask",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "ID задачи",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "ID задачи",
              "format": "int64"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Тип задачи",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Тип задачи"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Статус задачи",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Статус задачи",
              "enum": [
                "CREATED",
                "RUNNING",
                "FINISHED",
                "ERROR",
                "RESTARTING",
                "INTERRUPTING",
                "INTERRUPTED",
                "STOPPED",
                "EXCEPTION"
              ]
            }
          },
          {
            "name": "organizationId",
            "in": "query",
            "description": "ID организации",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "ID организации",
              "format": "int64"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "description": "ID сущности задачи",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "ID сущности задачи",
              "format": "int64"
            }
          },
          {
            "name": "own",
            "in": "query",
            "description": "Задачи, запущенные текущим пользователем?",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Задачи, запущенные текущим пользователем?"
            }
          },
          {
            "name": "notExpired",
            "in": "query",
            "description": "Задачи, который завершены несколько дней назад?",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Задачи, который завершены несколько дней назад?"
            }
          },
          {
            "name": "types",
            "in": "query",
            "description": "Фильтр по нескольким типам. Передается types=WILDBERRIES_CREATE_CARD&types=NATIONAL_CATALOG_CREATE_CARD",
            "required": false,
            "schema": {
              "type": "array",
              "description": "Фильтр по нескольким типам. Передается types=WILDBERRIES_CREATE_CARD&types=NATIONAL_CATALOG_CREATE_CARD",
              "items": {
                "type": "string",
                "description": "Фильтр по нескольким типам. Передается types=WILDBERRIES_CREATE_CARD&types=NATIONAL_CATALOG_CREATE_CARD"
              }
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Ограничение на количество записей. Максимальное значение - 500",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Ограничение на количество записей. Максимальное значение - 500",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Номер страницы начиная с 1",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Номер страницы начиная с 1",
              "format": "int32"
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "Возвратить в ответе общее количество записей",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Возвратить в ответе общее количество записей"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Поле для сортировки",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Поле для сортировки",
              "enum": [
                "CREATED_DATE"
              ]
            }
          },
          {
            "name": "ascending",
            "in": "query",
            "description": "Порядок сортировки - по возрастанию?. Работает только при получении списка.",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Порядок сортировки - по возрастанию?. Работает только при получении списка."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/hal+json": {
                "schema": {
                  "$ref": "#/components/schemas/FindResponseTmsTask"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "TmsTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Идентификатор задачи",
            "format": "int64",
            "readOnly": true
          },
          "status": {
            "type": "string",
            "description": "Текущий статус задачи",
            "readOnly": true,
            "enum": [
              "CREATED",
              "RUNNING",
              "FINISHED",
              "ERROR",
              "RESTARTING",
              "INTERRUPTING",
              "INTERRUPTED",
              "STOPPED",
              "EXCEPTION"
            ]
          },
          "type": {
            "type": "string",
            "description": "Тип задачи",
            "readOnly": true,
            "enum": [
              "WILDBERRIES_CREATE_CARD",
              "NATIONAL_CATALOG_CREATE_CARD",
              "OZON_CREATE_CARD",
              "OZON_CARDS_IMPORT",
              "IMPORT_FBS_ORDERS",
              "UPLOAD_PHOTOGRAPHY",
              "WILDBERRIES_UPDATE_PRICE",
              "WILDBERRIES_CARD_IMPORT",
              "WILDBERRIES_CARD_UPDATE",
              "SELSUP_STOCKS",
              "REFRESH_PHOTOGRAPHY",
              "SUPPLYING_QUANTITY_TASK",
              "EXPORT_PRICE",
              "OZON_UPDATE_PRICE",
              "WILDBERRIES_FILE_TASK",
              "YANDEX_MARKET_CARD_CREATE",
              "OZON_CARD_UPDATE_TASK",
              "OZON_IMPORT_STAT_TASK",
              "WILDBERRIES_PROFIT_STAT_TASK",
              "ALIEXPRESS_CREATE_CARD_TASK",
              "ALIEXPRESS_UPDATE_CARD_TASK",
              "PRICES_IMPORT_TASK",
              "WILDBERRIES_PRICES_TASK",
              "YANDEX_MARKET_CARD_IMPORT",
              "STOCKS_UPDATE",
              "WILDBERRIES_STOCKS_IMPORT_TASK",
              "WILDBERRIES_ORDERS_AND_SALES_TASK",
              "WILDBERRIES_INCOMES_IMPORT_TASK",
              "OZON_STOCKS_IMPORT_TASK",
              "TURNOVER_DOCUMENTS_TASK",
              "INTRODUCE_WMS_ITEMS_TASK",
              "PRODUCTS_FILE_TASK",
              "MODELS_FILE_TASK",
              "UPDATE_PRODUCT_CODES_TASK",
              "INTRODUCE_CODES_TASK",
              "PRODUCTS_IMPORT_TASK",
              "PRICES_FILE_TASK",
              "YANDEX_MARKET_UPDATE_PRICE_TASK",
              "IMPORT_STOCKS_TASK",
              "MOY_SKLAD_EXPORT_ORDERS",
              "MERGE_PRODUCTS_TASK",
              "PRODUCTS_WILDBERRIES_EXCEL_IMPORT_TASK",
              "MOY_SKLAD_CREATE_CARD",
              "IMPORT_FBO_STOCKS_FROM_FILE",
              "CREATE_WMS_ITEMS",
              "MOY_SKLAD_CARDS_IMPORT",
              "PROMOTION_FILE",
              "TOCHKA_INIT_STATEMENT",
              "TOCHKA_IMPORT_TRANSACTIONS",
              "PRODUCT_ANALYTICS_FILE_TASK",
              "PROMOTION_RESET_FILE",
              "MOY_SKLAD_IMPORT_ORDERS",
              "FINANCE_REPORT_FILE_TASK",
              "YML_FILE_EXPORT",
              "PRODUCT_BALANCE_REPORT_FILE_TASK",
              "CURRENT_PRODUCT_BALANCE_FILE_TASK",
              "SBER_IMPORT_TRANSACTIONS",
              "MATCH_UNREGISTERED_PROFIT_REPORT_TASK",
              "UPDATE_AVERAGE_SERVICE_EXPENSES_TASK",
              "YANDEX_MARKET_ORDER_IMPORT_STAT_TASK",
              "ABC_REPORT_FILE_TASK",
              "MODEL_CONTRACTORS_IMPORT",
              "MODEL_CONTRACTORS_EXPORT",
              "BANK_TRANSACTION_IMPORT_FILE_TASK",
              "YML_IMPORT_TASK",
              "SALES_DYNAMIC_REPORT_FILE_TASK",
              "UPDATE_FBS_ORDERS",
              "EXPORT_TRANSACTION_IN_EXCEL_FILE_TASK",
              "IMPORT_TRANSACTION_FROM_EXCEL_FILE_TASK",
              "EXPORT_PROFIT_REPORT_FILE_TASK",
              "IMPORT_PROFIT_REPORT_FROM_EXCEL_FILE_TASK",
              "IMPORT_REALIZATION_REPORT_TASK",
              "STOCK_RECONCILIATION",
              "ORDER_REPORT_FILE_TASK",
              "GET_WB_FBO_ORDER_FROM_PROFIT_REPORT_TASK",
              "TO_QUANTITY_STORAGE_METHOD",
              "APPLY_RECONCILIATION",
              "OZON_IMPORT_FBO_ORDERS_TASK",
              "UPDATE_PURCHASE_PRICE_IN_PROFIT_REPORT_TASK",
              "FBS_LABELS",
              "MERGE_PRODUCT_STOCKS",
              "CREATE_ORDER_FROM_FILE",
              "ALIEXPRESS_CARD_IMPORT",
              "PRICE_LIST_IMPORT",
              "WB_STOCK_REPORT_FILE",
              "CONTRACTORS_REPORT_FILE",
              "PRODUCTS_SBER_MEGA_MARKET_EXCEL_IMPORT_TASK",
              "EXPORT_PROBLEMATIC_PRODUCT_REPORT",
              "PLAN_SUPPLY_REPORT_TASK",
              "PLAN_FACT_SALES_REPORT_FILE",
              "IMPORT_PLAN_SALES_FROM_EXCEL_FILE_TASK",
              "EXPORT_PLAN_SALES_EXCEL_FILE_TASK",
              "ORDERS_TO_BUY_FILE_TASK",
              "MERGE_PRICE_ON_OTHER_MP_TASK",
              "MATCH_PRODUCT_LAST_OPERATION_DATE_TASK",
              "PROBLEMATIC_PRODUCT_PRICE_FILE_TASK",
              "CATEGORIES_IMPORT_EXCEL_TASK",
              "AVITO_CARD_IMPORT",
              "UPDATE_OLD_WB_ORDER_STATUSES_TASK",
              "PRESTA_SHOP_IMPORT_TASK",
              "PRODUCTS_AVITO_EXCEL_IMPORT_TASK",
              "FBO_STOCK_RECONCILIATION_TASK",
              "APPLY_FBO_RECONCILIATION_TASK",
              "EXPORT_REPRICE_PRODUCT_CONFIG_TASK",
              "IMPORT_REPRICE_PRODUCT_CONFIG_TASK",
              "OZON_CASH_FLOW_STATEMENT_IMPORT_TASK",
              "IMPORT_PROMOTION_STRATEGY_FILE_TASK",
              "UPDATE_ORDER_DELIVERY_INFO_TASK",
              "BILLING_OPERATION_TASK",
              "SET_PURCHASE_PERCENT_TASK",
              "REMOVE_PRODUCT_IMAGES_TASK",
              "STRUCTURE_TURNOVER_TASK",
              "OZON_NEW_UPDATE_PRICE",
              "REPLACE_PRODUCT_IMAGE_TASK",
              "UPDATE_OZON_PROMOTION_DATA_TASK",
              "WILDBERRIES_IMPORT_CAMPAIGN_TASK",
              "WILDBERRIES_STORAGE_REPORT_TASK",
              "WEBASYST_LINK_ARTICLE_TASK",
              "DELIVERY_SERVICE_LABELS",
              "HAND_ON_PULSE_FILE_TASK",
              "ITEMS_INCOME_EXCEL_TASK",
              "UPDATE_SETS_EXCEL_TASK",
              "DELETE_PROFIT_REPORTS_BY_FILE_HISTORY_IDS_TASK",
              "EXPORT_PRODUCT_SETS_TASK",
              "AMAZON_CARD_IMPORT",
              "IMPORT_ACCEPTED_PRODUCTS_TASK",
              "ADD_ORDER_PRODUCT_FROM_FILE_TASK",
              "EXPORT_ITEM_HISTORY_FILE_TASK",
              "WILDBERRIES_IMPORT_CAMPAIGN_BY_EXCEL_TASK",
              "REMOVE_CLIENT_ORGANIZATION",
              "EBAY_CARD_IMPORT_TASK",
              "PRODUCTS_IMPORT_FROM_ORGANIZATION_TASK",
              "IMPORT_FBO_ORDERS",
              "LAMODA_CARD_IMPORT",
              "UPDATE_WB_PROMOTION_DATA_TASK",
              "IMPORT_RETURNS_REPORT_TASK",
              "UPDATE_PROMOTION_DATA_TASK",
              "RESTORE_CLIENT_ORGANIZATION",
              "LEROY_MERLIN_CARD_IMPORT",
              "YANDEX_MARKET_STOCKS_IMPORT_TASK",
              "WILDBERRIES_IMPORT_NM_REPORT_TASK",
              "ORDER_ANALYTICS_FILE_TASK",
              "CLIENT_DATABASE_MOVE_TASK",
              "FAST_CARD_IMPORT",
              "EXPORT_PRODUCT_CODE",
              "INSALES_CARD_IMPORT_TASK",
              "REMOVE_PRODUCT_VIDEOS_TASK",
              "UPDATE_CARDS_TASK",
              "FIND_UNPROFITABLE_PRODUCTS_TASK",
              "FIND_UNPURCHASED_PRODUCTS_TASK",
              "WALMART_CARD_IMPORT",
              "PRODUCT_GROUPS_TASK",
              "CONTRACTOR_ARTICLE_EXPORT_TASK",
              "CONTRACTOR_ARTICLE_IMPORT_TASK",
              "CURRENCY_CONVERSION_TASK",
              "UPDATE_SUPPLY_PLAN_REPORT_TASK",
              "EXPORT_SUPPLY_PLAN_REPORT_FILE_TASK",
              "CHECK_STOCK_ORDER",
              "PHOTOGRAPHY_EXCEL",
              "PREPARE_FINDIR_DATA_TASK",
              "CARD_SPLITTING_TASK",
              "EXPORT_IMAGE_UPDATES_TEMPLATE_TASK",
              "IMPORT_IMAGE_UPDATES_TASK",
              "PREPARE_PRODUCT_HAND_ON_PULSE_TASK",
              "UPDATE_OZON_AVERAGE_DELIVERY_TIME",
              "UPDATE_COMMISSIONS_TASK",
              "WOOCOMMERCE_CARD_IMPORT"
            ]
          },
          "name": {
            "type": "string",
            "description": "Данные задачи в json - могут быть пустыми"
          },
          "clientId": {
            "type": "integer",
            "format": "int64"
          },
          "entityId": {
            "type": "integer",
            "description": "Сущность, к которой относится задача",
            "format": "int64"
          },
          "progress": {
            "type": "integer",
            "description": "Прогресс выполнения задачи в процентах",
            "format": "int32"
          },
          "processedQuantity": {
            "type": "integer",
            "description": "Количество обработанных записей задачи",
            "format": "int32"
          },
          "organizationId": {
            "type": "integer",
            "description": "Организация задачи, может быть 0, если не зависит от организации",
            "format": "int64"
          },
          "priority": {
            "type": "integer",
            "description": "Приоритет задачи - чем выше тем быстрее задача запустится",
            "format": "int32"
          },
          "properties": {
            "type": "string",
            "description": "Параметры задачи"
          },
          "message": {
            "type": "string",
            "description": "Сообщение с результатом выполнения задачи"
          },
          "messageParams": {
            "type": "string",
            "description": "Параметры сообщения с результатом выполнения задачи"
          },
          "createdDate": {
            "type": "string",
            "description": "Дата добавления задачи в очередь",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "description": "Дата запуска задачи",
            "format": "date-time"
          },
          "finishDate": {
            "type": "string",
            "description": "Дата завершения задачи",
            "format": "date-time"
          },
          "url": {
            "type": "string",
            "description": "Ссылка на скачивание файла с результатом задачи"
          },
          "inputFileUrl": {
            "type": "string",
            "description": "Ссылка на загруженный файл"
          },
          "retryNumber": {
            "type": "integer",
            "description": "Счётчик перезапуска задачи.",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "description": "Пользователь запустивший задачу",
            "format": "int32"
          },
          "retryDate": {
            "type": "string",
            "description": "Запланированная дата перезапуска",
            "format": "date-time"
          },
          "debug": {
            "type": "boolean",
            "description": "Запуск задачи в режиме отладки с большим логированием"
          },
          "forcedStart": {
            "type": "boolean",
            "description": "Ручной запуск задачи"
          },
          "service": {
            "type": "string",
            "description": "Сервис",
            "enum": [
              "NONE",
              "WILDBERRIES",
              "OZON",
              "YANDEX_MARKET",
              "FAMILIYA",
              "NATIONAL_CATALOG",
              "ALIEXPRESS",
              "OTHER",
              "MOY_SKLAD",
              "SBER_MEGA_MARKET",
              "CISLINK",
              "ONE_C",
              "AVITO",
              "LEROY_MERLIN",
              "DETMIR",
              "KAZAN_EXPRESS",
              "EVOTOR",
              "WEBASYST",
              "AMAZON",
              "EBAY",
              "SIMALAND",
              "INSALES",
              "LAMODA",
              "OZON_PERFORMANCE",
              "WALMART",
              "GOOGLE",
              "YANDEX_DISC",
              "EMAIL",
              "WOOCOMMERCE"
            ]
          },
          "lang": {
            "type": "string",
            "description": "Язык на котором сейчас запущена таска"
          }
        },
        "description": "Фоновая задача SelSup. Возвращается в разных методах, которые можно выполнять асинхронно. Далее можно проверять статус задачи, вызывая метод /task/getTask?id="
      },
      "TaskFilter": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Ограничение на количество записей. Максимальное значение - 500",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Номер страницы начиная с 1",
            "format": "int32"
          },
          "count": {
            "type": "boolean",
            "description": "Возвратить в ответе общее количество записей"
          },
          "sortBy": {
            "type": "string",
            "description": "Поле для сортировки",
            "enum": [
              "CREATED_DATE"
            ]
          },
          "ascending": {
            "type": "boolean",
            "description": "Порядок сортировки - по возрастанию?. Работает только при получении списка."
          },
          "id": {
            "type": "integer",
            "description": "ID задачи",
            "format": "int64"
          },
          "type": {
            "type": "string",
            "description": "Тип задачи"
          },
          "status": {
            "type": "string",
            "description": "Статус задачи",
            "enum": [
              "CREATED",
              "RUNNING",
              "FINISHED",
              "ERROR",
              "RESTARTING",
              "INTERRUPTING",
              "INTERRUPTED",
              "STOPPED",
              "EXCEPTION"
            ]
          },
          "organizationId": {
            "type": "integer",
            "description": "ID организации",
            "format": "int64"
          },
          "entityId": {
            "type": "integer",
            "description": "ID сущности задачи",
            "format": "int64"
          },
          "own": {
            "type": "boolean",
            "description": "Задачи, запущенные текущим пользователем?"
          },
          "notExpired": {
            "type": "boolean",
            "description": "Задачи, который завершены несколько дней назад?"
          },
          "types": {
            "type": "array",
            "description": "Фильтр по нескольким типам. Передается types=WILDBERRIES_CREATE_CARD&types=NATIONAL_CATALOG_CREATE_CARD",
            "items": {
              "type": "string",
              "description": "Фильтр по нескольким типам. Передается types=WILDBERRIES_CREATE_CARD&types=NATIONAL_CATALOG_CREATE_CARD"
            }
          }
        }
      },
      "FindResponseTmsTask": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "description": "Строки с результатом поиска",
            "items": {
              "$ref": "#/components/schemas/TmsTask"
            }
          },
          "total": {
            "type": "integer",
            "description": "Общее количество найденных записей. Возвращается только, когда count = true",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Номер запрошенной страницы",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Есть ли следующая страница"
          },
          "emptyPurchase": {
            "type": "integer",
            "description": "Показатель пустой закупочной цены",
            "format": "int64"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    }
  }
}