Данный API предназначен для интеграции внешней торговой системы с сервером заказов УКМ 5. Подробное описание функционала и настроек сервера заказов приведены в соответствующей статье.

{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "Сервер заказов"
  },  
  "security" : [ ],
  "paths" : {
    "/api/v1.0/order/{number}" : {
      "get" : {
        "tags" : [ "Order" ],
        "summary" : "Получение заказа с сервера",
        "description" : "Получить по номеру содержимое заказа и его статус с сервера",
        "operationId" : "getOrder",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Заказ успешно получен",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Order"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка получения заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Order" ],
        "summary" : "Изменение заказа",
        "description" : "Изменить состав ранее загруженного заказа по номеру",
        "operationId" : "putOrder",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Order"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Заказ успешно изменён",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Order"
                }
              }
            }
          },
          "400" : {
            "description" : "Неправильный номер заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка изменения заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Order" ],
        "summary" : "Удаление заказа",
        "description" : "Удалить заказ по номеру",
        "operationId" : "deleteOrder",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Заказ успешно удалён",
            "content" : {
              "*/*" : { }
            }
          },
          "500" : {
            "description" : "Ошибка удаления заказа",
            "content" : {
              "*/*" : { }
            }
          }
        }
      }
    },
    "/api/v1.0/order/{number}/status" : {
      "get" : {
        "tags" : [ "Order" ],
        "summary" : "Получение статусa заказа с сервера",
        "description" : "Получить по номеру статус заказа с сервера",
        "operationId" : "getOrderStatus",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Статус заказа успешно получен",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка получения статуса заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Order" ],
        "summary" : "Изменение статуса заказа",
        "description" : "Изменить статус заказа по номеру",
        "operationId" : "postOrder",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "newStatus",
          "in" : "query",
          "description" : "Возможные значения: 'WaitsPrepayment' (ожидает предоплаты), 'Prepaid' (предоплата получена), 'WaitsPurchase' (oжидает выкупа), 'Purchased' (Выкуплен), 'WaitsPrepaymentReturn' (ожидает возврата предоплаты), 'PrepaymentReturned' (предоплата возвращена), 'WaitsReturn' (ожидает возврата), 'Returned' (возвращён)",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Статус заказа успешно изменён",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка изменения статуса заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1.0/order/{number}/pickstatus" : {
      "post" : {
        "tags" : [ "Order" ],
        "summary" : "Изменение статуса сборки заказа",
        "description" : "Изменить статус сборки заказа по номеру",
        "operationId" : "postOrderPickStatus",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "newStatus",
          "in" : "query",
          "description" : " Возможные значения: 'NotPicked' (Не собран), 'Picking' (собирается), 'Complete' (Сформирован), 'ApprovedByBuyer' (Согласовано с Покупателем)",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Статус сборки заказа успешно изменён",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка изменения статуса сборки заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1.0/order/{number}/items" : {
      "get" : {
        "tags" : [ "Order" ],
        "summary" : "Получение состава заказа с сервера",
        "description" : "Получить содержимое заказа по номеру",
        "operationId" : "getOrderItems",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Состав заказа успешно получен",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ItemSeq"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка получения состава заказа",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1.0/orders/{storeId}" : {
      "get" : {
        "tags" : [ "Orders" ],
        "summary" : "Получение списка не собранных заказов для магазина с сервера",
        "description" : "Получить список не собранных заказов для конкретного магазина",
        "operationId" : "getOrders",
        "parameters" : [ {
          "name" : "storeId",
          "in" : "path",
          "description" : "Номер магазина",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Список успешно получен",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/HeaderSeq"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка получения",
            "content" : {
              "text/html(UTF-8)" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1.0/order" : {
      "post" : {
        "tags" : [ "LoadOrder" ],
        "summary" : "Загрузка заказа на сервер",
        "description" : "Загрузить содержимое заказа и его статус из интернет-магазина или от внешней системы на сервер заказов",
        "operationId" : "postLoad",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Order"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Заказ успешно загружен",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "500" : {
            "description" : "Ошибка загрузки заказа",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "SeqPickItem" : {
        "required" : [ "traversableAgain" ],
        "type" : "array",
        "properties" : {
          "traversableAgain" : {
            "type" : "boolean"
          },
          "empty" : {
            "type" : "boolean"
          }
        },
        "description" : "Товары",
        "items" : {
          "$ref" : "#/components/schemas/PickItem"
        }
      },
      "HeaderSeq" : {
        "type" : "object",
        "properties" : {
          "orderHeaders" : {
            "required" : [ "traversableAgain" ],
            "type" : "array",
            "properties" : {
              "traversableAgain" : {
                "type" : "boolean"
              },
              "empty" : {
                "type" : "boolean"
              }
            },
            "description" : "3аказы",
            "items" : {
              "$ref" : "#/components/schemas/OrderHeader"
            }
          }
        },
        "description" : "Список заголовков заказа"
      },
      "OrderHeader" : {
        "required" : [ "number", "status", "storeId", "type" ],
        "type" : "object",
        "properties" : {
          "number" : {
            "type" : "string",
            "description" : "Номер заказа"
          },
          "description" : {
            "type" : "string",
            "description" : "Описание заказа - любая дополнительная информация"
          },
          "type" : {
            "type" : "string",
            "description" : "Тип заказа. Возможные значения: 'Sale', 'Return'"
          },
          "status" : {
            "type" : "string",
            "description" : "Статус заказа. Возможные значения: 'WaitsPrepayment' (ожидает предоплаты), 'Prepaid' (предоплата получена), 'WaitsPurchase' (oжидает выкупа), 'Purchased' (Выкуплен), 'WaitsPrepaymentReturn' (ожидает возврата предоплаты), 'PrepaymentReturned' (предоплата возвращена), 'WaitsReturn' (ожидает возврата), 'Returned' (возвращён), 'Cancelled' (отменен)"
          },
          "storeId" : {
            "type" : "string",
            "description" : "Магазин, в котором будет получен заказ"
          },
          "loyaltyCard" : {
            "type" : "string",
            "description" : "Карта клиента"
          },
          "registrationDate" : {
            "type" : "string",
            "description" : "Дата/время регистрации заказа"
          },
          "deliveryDate" : {
            "type" : "string",
            "description" : "Дата/время доставки заказа"
          },
          "buyerName" : {
            "type" : "string",
            "description" : "ФИО покупателя"
          },
          "buyerPhoneNumber" : {
            "type" : "string",
            "description" : "Моб.тел. покупателя"
          },
          "pickingStatus" : {
            "type" : "string",
            "description" : "Статус сборки. Возможные значения: 'NotPicked' (Не собран), 'Picking' (собирается), 'Complete' (Сформирован), 'ApprovedByBuyer' (Согласовано с Покупателем)"
          },
          "pickerId" : {
            "type" : "string",
            "description" : "Идентификатор сборщика заказа"
          }
        },
        "description" : "Заголовок заказа"
      },
      "Payment" : {
        "required" : [ "amount", "type" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "description" : "Тип платежа. Возможные значения: 'Cash', 'Card'"
          },
          "amount" : {
            "type" : "number",
            "description" : "Сумма платежа",
            "format" : "double"
          },
          "rrn" : {
            "type" : "string",
            "description" : "RRN (только для оплат картой)"
          },
          "authCode" : {
            "type" : "string",
            "description" : "Код авторизации (только для оплат картой)"
          }
        },
        "description" : "Платежи заказа"
      },
      "Item" : {
        "required" : [ "discountPolicy", "position", "quantity", "sku" ],
        "type" : "object",
        "properties" : {
          "position" : {
            "type" : "integer",
            "description" : "Номер позиции в заказе",
            "format" : "int32"
          },
          "sku" : {
            "type" : "string",
            "description" : "Артикул"
          },
          "quantity" : {
            "type" : "number",
            "description" : "Количество",
            "format" : "double"
          },
          "price" : {
            "type" : "object",
            "description" : "Цена",
            "default" : "0"
          },
          "minPrice" : {
            "type" : "object",
            "description" : "Минимальная цена",
            "default" : "0"
          },
          "discountPolicy" : {
            "type" : "string",
            "description" : "Политика применения скидок: None - скидки не применяются, Bonuses - применяется только оплата бонусами, Front - применяются только фронтальные скидки, All - применяются любые скидки"
          },
          "kiz" : {
            "type" : "string",
            "description" : "КИЗ для позиции"
          }
        },
        "description" : "Позиция заказа"
      },
      "ItemSeq" : {
        "type" : "object",
        "properties" : {
          "orderItems" : {
            "required" : [ "traversableAgain" ],
            "type" : "array",
            "properties" : {
              "traversableAgain" : {
                "type" : "boolean"
              },
              "empty" : {
                "type" : "boolean"
              }
            },
            "description" : "Товары",
            "items" : {
              "$ref" : "#/components/schemas/PickItem"
            }
          }
        },
        "description" : "Список позиций заказа для сборки"
      },
      "PickItem" : {
        "required" : [ "quantity", "sku" ],
        "type" : "object",
        "properties" : {
          "sku" : {
            "type" : "string",
            "description" : "Артикул"
          },
          "quantity" : {
            "type" : "number",
            "description" : "Количество",
            "format" : "double"
          },
          "price" : {
            "type" : "object",
            "description" : "Цена",
            "default" : "0"
          }
        },
        "description" : "Позиция заказа для сборки"
      },
      "Order" : {
        "required" : [ "items", "number", "status", "storeId", "type" ],
        "type" : "object",
        "properties" : {
          "number" : {
            "type" : "string",
            "description" : "Номер заказа"
          },
          "description" : {
            "type" : "string",
            "description" : "Описание заказа - любая дополнительная информация"
          },
          "type" : {
            "type" : "string",
            "description" : "Тип заказа. Возможные значения: 'Sale', 'Return'"
          },
          "status" : {
            "type" : "string",
            "description" : "Статус заказа. Возможные значения: 'WaitsPrepayment' (ожидает предоплаты), 'Prepaid' (предоплата получена), 'WaitsPurchase' (oжидает выкупа), 'Purchased' (Выкуплен), 'WaitsPrepaymentReturn' (ожидает возврата предоплаты), 'PrepaymentReturned' (предоплата возвращена), 'WaitsReturn' (ожидает возврата), 'Returned' (возвращён), 'Cancelled' (отменен)"
          },
          "storeId" : {
            "type" : "string",
            "description" : "Магазин, в котором будет получен заказ"
          },
          "loyaltyCard" : {
            "type" : "string",
            "description" : "Карта клиента"
          },
          "items" : {
            "required" : [ "traversableAgain" ],
            "type" : "array",
            "properties" : {
              "traversableAgain" : {
                "type" : "boolean"
              },
              "empty" : {
                "type" : "boolean"
              }
            },
            "description" : "Товары",
            "items" : {
              "$ref" : "#/components/schemas/Item"
            }
          },
          "payments" : {
            "type" : "array",
            "properties" : {
              "traversableAgain" : {
                "type" : "boolean"
              },
              "empty" : {
                "type" : "boolean"
              }
            },
            "description" : "Оплаты",
            "items" : {
              "$ref" : "#/components/schemas/Payment"
            }
          },
          "registrationDate" : {
            "type" : "string",
            "description" : "Дата/время регистрации заказа"
          },
          "deliveryDate" : {
            "type" : "string",
            "description" : "Дата/время доставки заказа"
          },
          "buyerName" : {
            "type" : "string",
            "description" : "ФИО покупателя"
          },
          "buyerPhoneNumber" : {
            "type" : "string",
            "description" : "Моб.тел. покупателя"
          },
          "pickingStatus" : {
            "type" : "string",
            "description" : "Статус сборки. Возможные значения: 'NotPicked' (Не собран), 'Picking' (собирается), 'Complete' (Сформирован), 'ApprovedByBuyer' (Согласовано с Покупателем)"
          },
          "pickerId" : {
            "type" : "string",
            "description" : "Идентификатор сборщика заказа"
          }
        },
        "description" : "Заказ"
      }
    }
  }
}