---
title: "Prepare Order"
method: POST
path: "/orders/prepare"
tags: ["Shopping"]
---

# Prepare Order

`POST /orders/prepare`

## Request

- Base URL: `https://vesremont.com/api/v1`
- URL: `https://vesremont.com/api/v1/orders/prepare`
- Auth: OAuth 2 (authorization code, authorization URL `https://vesremont.com/oauth/authorize`, token URL `https://vesremont.com/oauth/token`, scopes: `order:prepare`)

After get_checkout validation succeeds, prepare the exact order summary and a short-lived browser confirmation link. The buyer must personally approve that summary before submit_order; this prepares confirmation state but does not submit or pay for an order. OAuth scopes: order:prepare. Changes buyer or order state. Requires a JSON object body; use {} for an operation without body fields.

## Request body

- object

## Response `200`

Successful operation.

- object
  - `status` 'awaiting_user_confirmation', required
  - `confirmation_token` string, required
  - `confirmation_url` string, uri, required
  - `expires_at` string, date-time, required
  - `cart_revision` string, required
  - `summary` object, required
    - `cart` object, required
      - `items` object[], required
        - `item_id` integer, required
        - `product_id` integer, required
        - `name` string, required
        - `url` string, uri, nullable, required
        - `quantity` number, required
        - `unit_price` number, nullable, required
        - `line_total` number, nullable, required
        - `currency` 'RUB', required
        - `orderable` boolean, required
        - `price_changed` boolean, nullable, required
        - `stock` object, required: Both fields are the aggregate across the store warehouse network. They do not promise pickup today or a delivery lead time.
          - `local` number, nullable, required
          - `total` number, nullable, required
        - `availability` 'in_stock' | 'backorder' | 'preorder' | 'out_of_stock' | 'unavailable' | 'unknown', required
      - `empty` boolean, required
      - `total_quantity` number, required
      - `subtotal` number, nullable, required
      - `currency` 'RUB', required
      - `orderable` boolean, required
    - `customer` object, required
      - `delivery` 'pickup' | 'courier', nullable, required
      - `payment` 'cash' | 'sbp' | 'card' | 'invoice', nullable, required
      - `address` string, required
      - `name` string, required
      - `email` string, required
      - `phone` string, required
      - `comment` string, required
    - `quote` object, nullable, required
      - `items` object[], required
        - `item_id` integer, required
        - `product_id` integer, required
        - `name` string, required
        - `quantity` number, required
        - `unit_price` number, required
        - `line_total` number, required
      - `items_total` number, required
      - `recorded_order_total` number, required
      - `recorded_delivery` number, required
      - `currency` 'RUB', required
      - `delivery_finalized` unknown, required
    - `options` object, required
      - `delivery` object[], required
        - `id` string, required
        - `name` string, required
      - `payment` object[], required
        - `id` string, required
        - `name` string, required
    - `validation` object, required
      - `valid` boolean, required
      - `errors` string[], required
    - `totals` object, required
      - `items` number, nullable, required
      - `delivery` unknown, required
      - `final` unknown, required
      - `currency` 'RUB', required
      - `note` string, required
    - `revision` string, required

## Other responses

- `400`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `401`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `403`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `404`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `405`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `406`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `409`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `413`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `414`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `415`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `422`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `429`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `431`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `500`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `503`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.

---

[API](https://skmtc.dev/vesremont/apis/vesremont-public-api.md) · [All operations](https://skmtc.dev/vesremont/apis/vesremont-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vesremont/apis/vesremont-public-api/revisions/3bfec100b67d?raw)
