{
  "components": {
    "schemas": {
      "Attachment": {
        "properties": {
          "highlight": {
            "description": "The moment on a souvenir charm.",
            "type": "integer",
            "x-ru": "Момент на сувенирном брелоке."
          },
          "id": {
            "description": "Its number in the game.",
            "type": "integer",
            "x-ru": "Номер в игре."
          },
          "image_url": {
            "description": "Its picture.",
            "type": "string",
            "x-ru": "Изображение."
          },
          "name": {
            "description": "Its name.",
            "type": "string",
            "x-ru": "Название."
          },
          "offset_x": {
            "description": "Its offset along x, as the game places it.",
            "type": "number",
            "x-ru": "Смещение по x, как в игре."
          },
          "offset_y": {
            "description": "Its offset along y, as the game places it.",
            "type": "number",
            "x-ru": "Смещение по y, как в игре."
          },
          "offset_z": {
            "description": "Its offset along z, as the game places it.",
            "type": "number",
            "x-ru": "Смещение по z, как в игре."
          },
          "pattern": {
            "description": "The pattern of a charm.",
            "type": "integer",
            "x-ru": "Узор брелока."
          },
          "rotation": {
            "description": "Its rotation, as the game places it.",
            "type": "number",
            "x-ru": "Поворот, как в игре."
          },
          "scale": {
            "description": "Its scale, as the game places it.",
            "type": "number",
            "x-ru": "Масштаб, как в игре."
          },
          "slot": {
            "description": "Which place on the item it takes.",
            "type": "integer",
            "x-ru": "Какое место на предмете занимает."
          },
          "tint_id": {
            "description": "Its tint's number in the game.",
            "type": "integer",
            "x-ru": "Номер оттенка в игре."
          },
          "wear": {
            "description": "How scraped it is, 0 for intact.",
            "type": "number",
            "x-ru": "Насколько потёрта, 0 — целая."
          }
        },
        "required": [
          "name",
          "slot"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "name",
          "image_url",
          "slot",
          "wear",
          "scale",
          "rotation",
          "offset_x",
          "offset_y",
          "offset_z",
          "tint_id",
          "pattern",
          "highlight"
        ]
      },
      "AutoBuy": {
        "properties": {
          "bought": {
            "description": "How many it has bought so far.",
            "type": "integer",
            "x-ru": "Сколько уже купила."
          },
          "created_at": {
            "description": "When it began to wait.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда она начала ждать."
          },
          "filter": {
            "$ref": "#/components/schemas/AutoBuyFilter",
            "description": "Which lots it takes.",
            "x-ru": "Какие лоты она берёт."
          },
          "id": {
            "description": "The auto-buy's id.",
            "type": "string",
            "x-ru": "Id автопокупки."
          },
          "image_url": {
            "description": "The item's picture.",
            "type": "string",
            "x-ru": "Изображение предмета."
          },
          "item_slug": {
            "description": "The item's slug.",
            "type": "string",
            "x-ru": "Slug предмета."
          },
          "max_price_cents": {
            "description": "The most it pays for one lot, in US cents.",
            "type": "integer",
            "x-ru": "Сколько самое большее она платит за один лот, в центах США."
          },
          "name": {
            "description": "The market_hash_name.",
            "type": "string",
            "x-ru": "market_hash_name."
          },
          "quantity": {
            "description": "How many lots it buys in all.",
            "type": "integer",
            "x-ru": "Сколько всего лотов она купит."
          },
          "rarity": {
            "description": "Rarity, such as Classified.",
            "type": "string",
            "x-ru": "Редкость, например Classified."
          }
        },
        "required": [
          "id",
          "item_slug",
          "name",
          "image_url",
          "max_price_cents",
          "quantity",
          "bought",
          "filter",
          "created_at"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "item_slug",
          "name",
          "image_url",
          "rarity",
          "max_price_cents",
          "quantity",
          "bought",
          "filter",
          "created_at"
        ]
      },
      "AutoBuyFilter": {
        "properties": {
          "charm": {
            "description": "A charm's name, as the catalog names it without \"Charm | \" or \"Souvenir Charm | \". It has to hang on the item.",
            "type": "string",
            "x-ru": "Название брелока, как в каталоге, но без «Charm | » или «Souvenir Charm | ». Он должен висеть на предмете."
          },
          "float_max": {
            "description": "The highest float, from 0 to 1 and no lower than float_min.",
            "type": "number",
            "x-ru": "Максимальный флот, от 0 до 1 и не ниже float_min."
          },
          "float_min": {
            "description": "The lowest float, from 0 to 1.",
            "type": "number",
            "x-ru": "Минимальный флот, от 0 до 1."
          },
          "paint_seeds": {
            "description": "Paint seeds from 0 to 1000, up to 25: a lot with any of them passes.",
            "items": {
              "type": "integer"
            },
            "type": "array",
            "x-ru": "Paint seed от 0 до 1000, до 25 штук: подходит лот с любым из них."
          },
          "phase": {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "type": "string",
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          "stickers": {
            "description": "Up to 5 stickers, each of which has to be on the item. Only an unscratched sticker counts, and a name given twice asks for two of it.",
            "items": {
              "$ref": "#/components/schemas/StickerFilter"
            },
            "type": "array",
            "x-ru": "До 5 наклеек, каждая из которых должна быть на предмете. Считается только не поцарапанная наклейка, а название, указанное дважды, требует двух таких."
          }
        },
        "type": "object",
        "x-fields": [
          "phase",
          "float_min",
          "float_max",
          "paint_seeds",
          "stickers",
          "charm"
        ]
      },
      "AutoBuyRequest": {
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/AutoBuyFilter",
            "description": "Which lots it takes. A lot has to pass every field that is set, and an empty field narrows nothing.",
            "x-ru": "Какие лоты она берёт. Лот должен пройти каждое заданное поле, а пустое поле ничего не сужает."
          },
          "max_price_cents": {
            "description": "The most one lot may cost, in US cents.",
            "type": "integer",
            "x-ru": "Сколько самое большее может стоить один лот, в центах США."
          },
          "quantity": {
            "description": "How many lots to buy in all, from 1 to 100.",
            "type": "integer",
            "x-ru": "Сколько всего лотов купить, от 1 до 100."
          }
        },
        "required": [
          "max_price_cents",
          "quantity",
          "filter"
        ],
        "type": "object",
        "x-fields": [
          "max_price_cents",
          "quantity",
          "filter"
        ]
      },
      "Balance": {
        "properties": {
          "available_cents": {
            "description": "What you can spend now.",
            "type": "integer",
            "x-ru": "Сколько можно потратить сейчас."
          },
          "held_cents": {
            "description": "What is held until your deals end.",
            "type": "integer",
            "x-ru": "Сколько удержано до конца сделок."
          }
        },
        "required": [
          "available_cents",
          "held_cents"
        ],
        "type": "object",
        "x-fields": [
          "available_cents",
          "held_cents"
        ]
      },
      "Bargain": {
        "properties": {
          "actions": {
            "description": "What you can do with the bargain now.",
            "items": {
              "enum": [
                "accept",
                "counter",
                "decline",
                "cancel"
              ],
              "type": "string"
            },
            "type": "array",
            "x-ru": "Что можно сделать с торгом сейчас."
          },
          "counter_cents": {
            "description": "The seller's answer to it, in US cents. Left out until there is one.",
            "type": "integer",
            "x-ru": "Ответная цена продавца, в центах США. Поля нет, пока её нет."
          },
          "created_at": {
            "description": "When the buyer offered the price.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда покупатель предложил цену."
          },
          "expires_at": {
            "description": "When the side whose turn it is runs out of time.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда у стороны, чья очередь, выйдет время."
          },
          "id": {
            "description": "The bargain's id.",
            "type": "string",
            "x-ru": "Id торга."
          },
          "item": {
            "$ref": "#/components/schemas/Item",
            "description": "The item as the lot shows it.",
            "x-ru": "Предмет, как его показывает лот."
          },
          "item_slug": {
            "description": "The item's slug.",
            "type": "string",
            "x-ru": "Slug предмета."
          },
          "lot_id": {
            "description": "The lot it is for.",
            "type": "string",
            "x-ru": "Лот, о котором торг."
          },
          "lot_price_cents": {
            "description": "What the lot costs now, in US cents.",
            "type": "integer",
            "x-ru": "Сколько лот стоит сейчас, в центах США."
          },
          "order_id": {
            "description": "The deal an accepted bargain became.",
            "type": "string",
            "x-ru": "Сделка, которой стал принятый торг."
          },
          "price_cents": {
            "description": "The buyer's price, in US cents.",
            "type": "integer",
            "x-ru": "Цена покупателя, в центах США."
          },
          "role": {
            "description": "Your side of the bargain.",
            "enum": [
              "buyer",
              "seller"
            ],
            "type": "string",
            "x-ru": "Ваша сторона в торге."
          },
          "status": {
            "description": "Where the bargain stands. One whose time ran out reads expired.",
            "enum": [
              "open",
              "countered",
              "accepted",
              "declined",
              "cancelled",
              "expired"
            ],
            "type": "string",
            "x-ru": "Где сейчас торг. Торг, у которого вышло время, читается как expired."
          }
        },
        "required": [
          "id",
          "role",
          "status",
          "lot_id",
          "item_slug",
          "item",
          "lot_price_cents",
          "price_cents",
          "actions",
          "created_at",
          "expires_at"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "role",
          "status",
          "lot_id",
          "item_slug",
          "item",
          "lot_price_cents",
          "price_cents",
          "counter_cents",
          "order_id",
          "actions",
          "created_at",
          "expires_at"
        ]
      },
      "BulkBuyRequest": {
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/LotFilter",
            "description": "Which lots count, as the filters of the listings. An empty field narrows nothing.",
            "x-ru": "Какие лоты подходят, как фильтры списка лотов. Пустое поле ничего не сужает."
          },
          "max_price_cents": {
            "description": "The most one lot may cost, in US cents.",
            "type": "integer",
            "x-ru": "Сколько самое большее может стоить один лот, в центах США."
          },
          "quantity": {
            "description": "How many lots to buy, from 1 to 100.",
            "type": "integer",
            "x-ru": "Сколько лотов купить, от 1 до 100."
          }
        },
        "required": [
          "max_price_cents",
          "quantity",
          "filter"
        ],
        "type": "object",
        "x-fields": [
          "max_price_cents",
          "quantity",
          "filter"
        ]
      },
      "CatalogItem": {
        "properties": {
          "category": {
            "description": "The market's section.",
            "type": "string",
            "x-ru": "Раздел маркета."
          },
          "exterior": {
            "description": "Exterior as a code: FN, MW, FT, WW or BS.",
            "type": "string",
            "x-ru": "Код состояния: FN, MW, FT, WW или BS."
          },
          "image_url": {
            "description": "The item's picture.",
            "type": "string",
            "x-ru": "Изображение предмета."
          },
          "lot_count": {
            "description": "How many lots are on sale.",
            "type": "integer",
            "x-ru": "Сколько лотов в продаже."
          },
          "max_float": {
            "description": "The highest float this skin can have.",
            "type": "number",
            "x-ru": "Максимальный флот этого скина."
          },
          "min_float": {
            "description": "The lowest float this skin can have.",
            "type": "number",
            "x-ru": "Минимальный флот этого скина."
          },
          "min_price_cents": {
            "description": "The lowest price. Left out while nothing is on sale.",
            "type": "integer",
            "x-ru": "Минимальная цена. Поля нет, пока ничего не выставлено."
          },
          "name": {
            "description": "The market_hash_name.",
            "type": "string",
            "x-ru": "market_hash_name."
          },
          "phases": {
            "description": "The looks of a Doppler or Gamma Doppler. They all sell under one name.",
            "items": {
              "$ref": "#/components/schemas/Phase"
            },
            "type": "array",
            "x-ru": "Варианты Doppler или Gamma Doppler. Все продаются под одним названием."
          },
          "rarity": {
            "description": "Rarity, such as Classified.",
            "type": "string",
            "x-ru": "Редкость, например Classified."
          },
          "skin": {
            "description": "The name without quality and exterior: what the item's variants share.",
            "type": "string",
            "x-ru": "Название без качества и состояния: то общее, что есть у вариантов предмета."
          },
          "slug": {
            "description": "The item's address on Rockvel.",
            "type": "string",
            "x-ru": "Адрес предмета на Rockvel."
          },
          "souvenir": {
            "description": "The card is for Souvenir items.",
            "type": "boolean",
            "x-ru": "Карточка предметов Souvenir."
          },
          "stattrak": {
            "description": "The card is for StatTrak items.",
            "type": "boolean",
            "x-ru": "Карточка предметов StatTrak."
          },
          "variants": {
            "description": "Cards sharing this skin, this one included.",
            "items": {
              "$ref": "#/components/schemas/MarketItem"
            },
            "type": "array",
            "x-ru": "Карточки этого же скина, включая текущую."
          }
        },
        "required": [
          "slug",
          "name",
          "skin",
          "category",
          "image_url",
          "lot_count"
        ],
        "type": "object",
        "x-fields": [
          "slug",
          "name",
          "skin",
          "category",
          "rarity",
          "exterior",
          "stattrak",
          "souvenir",
          "image_url",
          "lot_count",
          "min_price_cents",
          "min_float",
          "max_float",
          "phases",
          "variants"
        ]
      },
      "Deals": {
        "properties": {
          "more": {
            "description": "Older finished deals are left to show.",
            "type": "boolean",
            "x-ru": "Остались более старые завершённые сделки."
          },
          "orders": {
            "description": "Deals under way, then finished ones, the newest first in each.",
            "items": {
              "$ref": "#/components/schemas/Order"
            },
            "type": "array",
            "x-ru": "Сделки в работе, затем завершённые, в каждой части сначала новые."
          }
        },
        "required": [
          "orders",
          "more"
        ],
        "type": "object",
        "x-fields": [
          "orders",
          "more"
        ]
      },
      "Demand": {
        "properties": {
          "price_cents": {
            "description": "The most these auto-buys pay for one lot, in US cents.",
            "type": "integer",
            "x-ru": "Сколько самое большее эти автопокупки платят за один лот, в центах США."
          },
          "quantity": {
            "description": "How many lots they still want at this price.",
            "type": "integer",
            "x-ru": "Сколько лотов по этой цене они ещё хотят."
          }
        },
        "required": [
          "price_cents",
          "quantity"
        ],
        "type": "object",
        "x-fields": [
          "price_cents",
          "quantity"
        ]
      },
      "DescriptionRequest": {
        "properties": {
          "description": {
            "description": "The new description. Empty takes it away.",
            "type": "string",
            "x-ru": "Новое описание. Пустое убирает его."
          }
        },
        "required": [
          "description"
        ],
        "type": "object",
        "x-fields": [
          "description"
        ]
      },
      "DiscountRequest": {
        "properties": {
          "max_discount": {
            "description": "Percent below the price, from 0 to 50. 0 takes no bargains.",
            "type": "integer",
            "x-ru": "Процент ниже цены, от 0 до 50. 0 значит без торга."
          }
        },
        "required": [
          "max_discount"
        ],
        "type": "object",
        "x-fields": [
          "max_discount"
        ]
      },
      "Inventory": {
        "properties": {
          "fetched_at": {
            "description": "When this copy was uploaded.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда загружена эта копия."
          },
          "hidden_count": {
            "description": "How many more items Steam counts but didn't show. While it is above 0, nothing comes off sale for missing from the copy.",
            "type": "integer",
            "x-ru": "Сколько ещё предметов Steam считает, но не показал. Пока значение больше 0, из-за отсутствия в копии ничего не снимается с продажи."
          },
          "items": {
            "description": "What you can list: tradable, not on sale and not sold.",
            "items": {
              "$ref": "#/components/schemas/Item"
            },
            "type": "array",
            "x-ru": "Что можно выставить: предметы, доступные для обмена, не выставленные и не проданные."
          },
          "stale": {
            "description": "The copy is over 5 minutes old: time to upload a fresh one.",
            "type": "boolean",
            "x-ru": "Копии больше 5 минут: пора загрузить свежую."
          }
        },
        "required": [
          "items",
          "hidden_count",
          "fetched_at",
          "stale"
        ],
        "type": "object",
        "x-fields": [
          "items",
          "hidden_count",
          "fetched_at",
          "stale"
        ]
      },
      "InventoryPages": {
        "properties": {
          "pages": {
            "description": "Steam's answers, one for each page, as they came.",
            "items": {
              "type": "object"
            },
            "type": "array",
            "x-ru": "Ответы Steam, по одному на страницу, без изменений."
          }
        },
        "required": [
          "pages"
        ],
        "type": "object",
        "x-fields": [
          "pages"
        ]
      },
      "Item": {
        "properties": {
          "asset_id": {
            "description": "Steam's id of this very item. It changes when the item changes hands.",
            "type": "string",
            "x-ru": "Id именно этого предмета в Steam. Меняется, когда предмет переходит к другому владельцу."
          },
          "def_index": {
            "description": "The weapon's number in the game.",
            "type": "integer",
            "x-ru": "Номер оружия в игре."
          },
          "exterior": {
            "description": "Exterior as a code: FN, MW, FT, WW or BS.",
            "type": "string",
            "x-ru": "Код состояния: FN, MW, FT, WW или BS."
          },
          "float": {
            "description": "Float value, from 0 to 1. Left out for items without one.",
            "type": "number",
            "x-ru": "Флот, от 0 до 1. Поля нет у предметов без флота."
          },
          "highlight_url": {
            "description": "Video of a souvenir charm's moment.",
            "type": "string",
            "x-ru": "Видео момента сувенирного брелока."
          },
          "image_url": {
            "description": "Steam's icon of the item.",
            "type": "string",
            "x-ru": "Иконка предмета в Steam."
          },
          "inspect_link": {
            "description": "Opens the item in the game.",
            "type": "string",
            "x-ru": "Открывает предмет в игре."
          },
          "keychains": {
            "description": "Charms on the item.",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "type": "array",
            "x-ru": "Брелоки на предмете."
          },
          "kill_count": {
            "description": "StatTrak's count of kills.",
            "type": "integer",
            "x-ru": "Счётчик убийств StatTrak."
          },
          "kind": {
            "description": "What sort of item it is.",
            "enum": [
              "weapon",
              "knife",
              "gloves",
              "agent",
              "sticker",
              "patch",
              "charm",
              "graffiti",
              "music_kit",
              "container",
              "collectible",
              "other"
            ],
            "type": "string",
            "x-ru": "Вид предмета."
          },
          "market_hash_name": {
            "description": "Name on the Steam market. A market card has one for each.",
            "type": "string",
            "x-ru": "Название на торговой площадке Steam. На каждое своя карточка маркета."
          },
          "marketable": {
            "description": "Steam lets this item be sold on its own market.",
            "type": "boolean",
            "x-ru": "Steam разрешает продавать предмет на своей площадке."
          },
          "name": {
            "description": "Name as Steam shows it.",
            "type": "string",
            "x-ru": "Название, как его показывает Steam."
          },
          "name_tag": {
            "description": "The name tag on the item.",
            "type": "string",
            "x-ru": "Именная бирка на предмете."
          },
          "notes": {
            "description": "Steam's lines about this item: its match, its date of issue, what a container holds.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Строки Steam об этом предмете: его матч, дата выпуска, содержимое контейнера."
          },
          "paint_index": {
            "description": "The paint's number in the game.",
            "type": "integer",
            "x-ru": "Номер раскраски в игре."
          },
          "paint_seed": {
            "description": "Paint seed, from 0 to 1000.",
            "type": "integer",
            "x-ru": "Paint seed, от 0 до 1000."
          },
          "phase": {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "type": "string",
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          "rarity": {
            "description": "Rarity in Steam's words.",
            "type": "string",
            "x-ru": "Редкость словами Steam."
          },
          "reference": {
            "$ref": "#/components/schemas/Reference",
            "description": "A hint for your price: the cheapest lot of this name on lis-skins, of this phase for a Doppler. Float, pattern and stickers do not count in it. Only in your inventory and stall, and left out when lis-skins has no such lot.",
            "x-ru": "Подсказка для цены: самый дешёвый лот этого названия на lis-skins, у Doppler — этой фазы. Флот, паттерн и наклейки в ней не учтены. Только в вашем инвентаре и на витрине, поля нет, если на lis-skins такого лота нет."
          },
          "souvenir": {
            "description": "The item is a Souvenir.",
            "type": "boolean",
            "x-ru": "Предмет Souvenir."
          },
          "stattrak": {
            "description": "The item is StatTrak.",
            "type": "boolean",
            "x-ru": "Предмет StatTrak."
          },
          "stickers": {
            "description": "Stickers on the item, and patches on an agent.",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "type": "array",
            "x-ru": "Наклейки на предмете и нашивки на агенте."
          },
          "tags": {
            "description": "All the labels Steam gives the item.",
            "items": {
              "$ref": "#/components/schemas/Tag"
            },
            "type": "array",
            "x-ru": "Все метки, которые Steam даёт предмету."
          }
        },
        "required": [
          "asset_id",
          "name",
          "market_hash_name",
          "image_url",
          "kind",
          "marketable"
        ],
        "type": "object",
        "x-fields": [
          "asset_id",
          "name",
          "market_hash_name",
          "image_url",
          "kind",
          "rarity",
          "exterior",
          "stattrak",
          "souvenir",
          "marketable",
          "float",
          "paint_seed",
          "kill_count",
          "paint_index",
          "def_index",
          "phase",
          "name_tag",
          "inspect_link",
          "highlight_url",
          "stickers",
          "keychains",
          "tags",
          "notes",
          "reference"
        ]
      },
      "ListRequest": {
        "properties": {
          "lots": {
            "description": "The items and their prices.",
            "items": {
              "$ref": "#/components/schemas/PriceTag"
            },
            "type": "array",
            "x-ru": "Предметы и их цены."
          }
        },
        "required": [
          "lots"
        ],
        "type": "object",
        "x-fields": [
          "lots"
        ]
      },
      "Lot": {
        "properties": {
          "description": {
            "description": "What the seller wrote about the lot. Plain text.",
            "type": "string",
            "x-ru": "Что продавец написал о лоте. Простой текст."
          },
          "float": {
            "description": "The float the seller's inventory showed.",
            "type": "number",
            "x-ru": "Флот из инвентаря продавца."
          },
          "id": {
            "description": "The lot's id, to buy it by.",
            "type": "string",
            "x-ru": "Id лота, по нему лот покупается."
          },
          "image_url": {
            "description": "The item's picture.",
            "type": "string",
            "x-ru": "Изображение предмета."
          },
          "listed_at": {
            "description": "When the lot went on sale.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда лот выставлен."
          },
          "max_discount": {
            "description": "How far below the price, in percent, the seller takes bargains. Left out if they take none.",
            "type": "integer",
            "x-ru": "На сколько процентов ниже цены продавец принимает торг. Поля нет, если не принимает."
          },
          "own": {
            "description": "The lot is yours. Left out otherwise.",
            "type": "boolean",
            "x-ru": "Лот ваш. Иначе поля нет."
          },
          "paint_seed": {
            "description": "The paint seed the seller's inventory showed.",
            "type": "integer",
            "x-ru": "Paint seed из инвентаря продавца."
          },
          "phase": {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "type": "string",
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          "price_cents": {
            "description": "The price in US cents.",
            "type": "integer",
            "x-ru": "Цена в центах США."
          },
          "seller": {
            "$ref": "#/components/schemas/Seller",
            "description": "Who sells it. Left out if their stall is closed.",
            "x-ru": "Кто продаёт. Поля нет, если витрина закрыта."
          },
          "stickers": {
            "description": "Stickers the seller's inventory showed.",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "type": "array",
            "x-ru": "Наклейки из инвентаря продавца."
          }
        },
        "required": [
          "id",
          "price_cents",
          "image_url",
          "listed_at"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "price_cents",
          "float",
          "paint_seed",
          "phase",
          "image_url",
          "stickers",
          "description",
          "max_discount",
          "seller",
          "own",
          "listed_at"
        ]
      },
      "LotFilter": {
        "properties": {
          "float_max": {
            "description": "The highest float.",
            "type": "number",
            "x-ru": "Максимальный флот."
          },
          "float_min": {
            "description": "The lowest float.",
            "type": "number",
            "x-ru": "Минимальный флот."
          },
          "paint_seed": {
            "description": "One paint seed.",
            "type": "integer",
            "x-ru": "Один paint seed."
          },
          "phase": {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "type": "string",
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          "stickers": {
            "description": "with or without.",
            "enum": [
              "with",
              "without"
            ],
            "type": "string",
            "x-ru": "with или without."
          }
        },
        "type": "object",
        "x-fields": [
          "phase",
          "stickers",
          "float_min",
          "float_max",
          "paint_seed"
        ]
      },
      "LotIDs": {
        "properties": {
          "ids": {
            "description": "The lots: those asked about, or in an answer those it changed.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Лоты: о которых спрашивают, а в ответе — те, что изменились."
          }
        },
        "required": [
          "ids"
        ],
        "type": "object",
        "x-fields": [
          "ids"
        ]
      },
      "LotPage": {
        "properties": {
          "lots": {
            "description": "The lots of this page.",
            "items": {
              "$ref": "#/components/schemas/Lot"
            },
            "type": "array",
            "x-ru": "Лоты этой страницы."
          },
          "page_size": {
            "description": "How many fit on one page.",
            "type": "integer",
            "x-ru": "Сколько помещается на страницу."
          },
          "total": {
            "description": "How many there are on all pages.",
            "type": "integer",
            "x-ru": "Сколько всего на всех страницах."
          }
        },
        "required": [
          "lots",
          "total",
          "page_size"
        ],
        "type": "object",
        "x-fields": [
          "lots",
          "total",
          "page_size"
        ]
      },
      "MarketItem": {
        "properties": {
          "category": {
            "description": "The market's section.",
            "type": "string",
            "x-ru": "Раздел маркета."
          },
          "exterior": {
            "description": "Exterior as a code: FN, MW, FT, WW or BS.",
            "type": "string",
            "x-ru": "Код состояния: FN, MW, FT, WW или BS."
          },
          "image_url": {
            "description": "The item's picture.",
            "type": "string",
            "x-ru": "Изображение предмета."
          },
          "lot_count": {
            "description": "How many lots are on sale.",
            "type": "integer",
            "x-ru": "Сколько лотов в продаже."
          },
          "min_price_cents": {
            "description": "The lowest price. Left out while nothing is on sale.",
            "type": "integer",
            "x-ru": "Минимальная цена. Поля нет, пока ничего не выставлено."
          },
          "name": {
            "description": "The market_hash_name.",
            "type": "string",
            "x-ru": "market_hash_name."
          },
          "rarity": {
            "description": "Rarity, such as Classified.",
            "type": "string",
            "x-ru": "Редкость, например Classified."
          },
          "skin": {
            "description": "The name without quality and exterior: what the item's variants share.",
            "type": "string",
            "x-ru": "Название без качества и состояния: то общее, что есть у вариантов предмета."
          },
          "slug": {
            "description": "The item's address on Rockvel.",
            "type": "string",
            "x-ru": "Адрес предмета на Rockvel."
          },
          "souvenir": {
            "description": "The card is for Souvenir items.",
            "type": "boolean",
            "x-ru": "Карточка предметов Souvenir."
          },
          "stattrak": {
            "description": "The card is for StatTrak items.",
            "type": "boolean",
            "x-ru": "Карточка предметов StatTrak."
          }
        },
        "required": [
          "slug",
          "name",
          "skin",
          "category",
          "image_url",
          "lot_count"
        ],
        "type": "object",
        "x-fields": [
          "slug",
          "name",
          "skin",
          "category",
          "rarity",
          "exterior",
          "stattrak",
          "souvenir",
          "image_url",
          "lot_count",
          "min_price_cents"
        ]
      },
      "MarketPage": {
        "properties": {
          "items": {
            "description": "The cards of this page.",
            "items": {
              "$ref": "#/components/schemas/MarketItem"
            },
            "type": "array",
            "x-ru": "Карточки этой страницы."
          },
          "page_size": {
            "description": "How many fit on one page.",
            "type": "integer",
            "x-ru": "Сколько помещается на страницу."
          },
          "total": {
            "description": "How many there are on all pages.",
            "type": "integer",
            "x-ru": "Сколько всего на всех страницах."
          }
        },
        "required": [
          "items",
          "total",
          "page_size"
        ],
        "type": "object",
        "x-fields": [
          "items",
          "total",
          "page_size"
        ]
      },
      "Me": {
        "properties": {
          "balance": {
            "$ref": "#/components/schemas/Balance",
            "description": "The account's money. Left out if it can't be read right now.",
            "x-ru": "Деньги аккаунта. Поля нет, если прочитать их сейчас не удалось."
          },
          "user": {
            "$ref": "#/components/schemas/PublicUser",
            "description": "The key's holder.",
            "x-ru": "Владелец ключа."
          }
        },
        "required": [
          "user"
        ],
        "type": "object",
        "x-fields": [
          "user",
          "balance"
        ]
      },
      "Notice": {
        "properties": {
          "amount_cents": {
            "description": "The price, or what the seller gets once the hold is over.",
            "type": "integer",
            "x-ru": "Цена или сумма, которую продавец получит после холда."
          },
          "created_at": {
            "description": "When it happened.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда это случилось."
          },
          "id": {
            "description": "The notice's id.",
            "type": "string",
            "x-ru": "Id уведомления."
          },
          "item_name": {
            "description": "The item's name.",
            "type": "string",
            "x-ru": "Название предмета."
          },
          "items": {
            "description": "How many deals it is about: those that went together in one trade offer. item_name is empty when their names differ, and order_id is the first one's.",
            "type": "integer",
            "x-ru": "Сколько сделок оно касается: тех, что ушли вместе в одном оффере. item_name пуст, если названия разные, а order_id — у первой."
          },
          "kind": {
            "description": "What happened.",
            "enum": [
              "sold",
              "unanswered",
              "settled",
              "reversed",
              "stopped",
              "sent",
              "refunded",
              "auto_bought",
              "bargain",
              "countered",
              "bargained",
              "answered"
            ],
            "type": "string",
            "x-ru": "Что произошло."
          },
          "order_id": {
            "description": "The deal it is about. Empty for a ticket's answer.",
            "type": "string",
            "x-ru": "Сделка, о которой речь. Пусто у ответа на обращение."
          },
          "read": {
            "description": "You have seen it.",
            "type": "boolean",
            "x-ru": "Вы его видели."
          },
          "role": {
            "description": "Your side of that deal. Empty for a ticket's answer.",
            "enum": [
              "buyer",
              "seller",
              ""
            ],
            "type": "string",
            "x-ru": "Ваша сторона в этой сделке. Пусто у ответа на обращение."
          },
          "ticket": {
            "description": "The number of your support ticket that support answered. Only with the kind answered.",
            "type": "integer",
            "x-ru": "Номер вашего обращения, на которое ответила поддержка. Только у вида answered."
          }
        },
        "required": [
          "id",
          "kind",
          "order_id",
          "role",
          "item_name",
          "items",
          "amount_cents",
          "created_at",
          "read"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "kind",
          "order_id",
          "role",
          "item_name",
          "items",
          "amount_cents",
          "ticket",
          "created_at",
          "read"
        ]
      },
      "Notices": {
        "properties": {
          "notices": {
            "description": "Your newest notices, the newest first.",
            "items": {
              "$ref": "#/components/schemas/Notice"
            },
            "type": "array",
            "x-ru": "Последние уведомления, сначала новые."
          },
          "unread": {
            "description": "How many you haven't seen.",
            "type": "integer",
            "x-ru": "Сколько вы ещё не видели."
          }
        },
        "required": [
          "notices",
          "unread"
        ],
        "type": "object",
        "x-fields": [
          "notices",
          "unread"
        ]
      },
      "OfferReport": {
        "properties": {
          "given_asset_ids": {
            "description": "The asset ids in items_to_give. A sale gives one item.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Id из items_to_give. В продаже один предмет."
          },
          "offer_id": {
            "description": "Steam's tradeofferid.",
            "type": "string",
            "x-ru": "tradeofferid из Steam."
          },
          "other_steam_id": {
            "description": "The buyer's SteamID64.",
            "type": "string",
            "x-ru": "SteamID64 покупателя."
          },
          "received_asset_ids": {
            "description": "The asset ids in items_to_receive. A sale asks for nothing, so this stays empty.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Id из items_to_receive. Продажа ничего не просит взамен, поэтому поле пустое."
          },
          "state": {
            "description": "Steam's trade_offer_state.",
            "type": "integer",
            "x-ru": "trade_offer_state из Steam."
          },
          "time_created": {
            "description": "Steam's time_created, in Unix seconds.",
            "type": "integer",
            "x-ru": "time_created из Steam, Unix-время в секундах."
          }
        },
        "required": [
          "offer_id",
          "state"
        ],
        "type": "object",
        "x-fields": [
          "offer_id",
          "state",
          "given_asset_ids",
          "received_asset_ids",
          "other_steam_id",
          "time_created"
        ]
      },
      "OfferRequest": {
        "properties": {
          "offer_id": {
            "description": "Steam's tradeofferid, digits only.",
            "type": "string",
            "x-ru": "tradeofferid из Steam, только цифры."
          }
        },
        "required": [
          "offer_id"
        ],
        "type": "object",
        "x-fields": [
          "offer_id"
        ]
      },
      "Order": {
        "properties": {
          "accepted_at": {
            "description": "When the item changed hands.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда предмет перешёл к покупателю."
          },
          "actions": {
            "description": "What you can do with the deal now.",
            "items": {
              "enum": [
                "send",
                "cancel",
                "close_offer",
                "dispute"
              ],
              "type": "string"
            },
            "type": "array",
            "x-ru": "Что можно сделать со сделкой сейчас."
          },
          "buyer_cancels_at": {
            "description": "When the buyer can cancel. Left out once that time has come.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда покупатель сможет отменить. Поля нет, когда это время наступило."
          },
          "deadline_at": {
            "description": "When the deal moves on by itself.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда сделка двинется сама."
          },
          "fee_cents": {
            "description": "The seller's fee: 1.5% of the price, rounded up to a cent.",
            "type": "integer",
            "x-ru": "Комиссия продавца: 1,5% цены с округлением вверх до цента."
          },
          "finished_at": {
            "description": "When the deal ended.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда сделка закончилась."
          },
          "group": {
            "description": "The same for deals that go to the buyer in one trade offer: the offer's id once there is one, before that a key that says nothing of the two sides.",
            "type": "string",
            "x-ru": "Общая у сделок, которые уходят покупателю в одном оффере: id оффера, когда он есть, а до того ключ, который ничего не говорит о сторонах."
          },
          "id": {
            "description": "The deal's id.",
            "type": "string",
            "x-ru": "Id сделки."
          },
          "item": {
            "$ref": "#/components/schemas/Item",
            "description": "The item as the lot showed it.",
            "x-ru": "Предмет, как его показывал лот."
          },
          "item_slug": {
            "description": "The item's slug.",
            "type": "string",
            "x-ru": "Slug предмета."
          },
          "number": {
            "description": "The deal's short number, the end of its id. Both sides see it, and the trade offer's message names it.",
            "type": "string",
            "x-ru": "Короткий номер сделки, конец её id. Его видят обе стороны, и его называет сообщение оффера."
          },
          "offer_id": {
            "description": "The Steam offer, once there is one.",
            "type": "string",
            "x-ru": "Оффер Steam, когда он появился."
          },
          "paid_at": {
            "description": "When the lot was bought.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда лот куплен."
          },
          "partner": {
            "$ref": "#/components/schemas/Profile",
            "description": "The other side of the deal: its Steam ID always, and in the list of deals also what Steam shows of them.",
            "x-ru": "Другая сторона сделки: всегда её SteamID64, а в списке сделок ещё то, что показывает о ней Steam."
          },
          "price_cents": {
            "description": "The price in US cents.",
            "type": "integer",
            "x-ru": "Цена в центах США."
          },
          "reason": {
            "description": "Why it ended up here, when there is a reason.",
            "type": "string",
            "x-ru": "Почему сделка оказалась здесь, если есть причина."
          },
          "role": {
            "description": "Your side of the deal.",
            "enum": [
              "buyer",
              "seller"
            ],
            "type": "string",
            "x-ru": "Ваша сторона в сделке."
          },
          "sent_at": {
            "description": "When the buyer could first accept the offer.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда покупатель впервые смог принять оффер."
          },
          "status": {
            "description": "Where the deal stands.",
            "enum": [
              "paid",
              "sent",
              "protected",
              "settled",
              "cancelled",
              "failed",
              "rolled_back",
              "disputed"
            ],
            "type": "string",
            "x-ru": "Где сейчас сделка."
          }
        },
        "required": [
          "id",
          "number",
          "role",
          "status",
          "item_slug",
          "item",
          "price_cents",
          "fee_cents",
          "group",
          "actions",
          "paid_at"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "number",
          "role",
          "status",
          "reason",
          "item_slug",
          "item",
          "price_cents",
          "fee_cents",
          "offer_id",
          "group",
          "actions",
          "partner",
          "paid_at",
          "sent_at",
          "accepted_at",
          "finished_at",
          "deadline_at",
          "buyer_cancels_at"
        ]
      },
      "OrderIDs": {
        "properties": {
          "ids": {
            "description": "The deals: those asked about, or in an answer those it changed.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Сделки: о которых спрашивают, а в ответе — те, что изменились."
          }
        },
        "required": [
          "ids"
        ],
        "type": "object",
        "x-fields": [
          "ids"
        ]
      },
      "OwnLot": {
        "properties": {
          "asset_id": {
            "description": "The item's asset_id.",
            "type": "string",
            "x-ru": "asset_id предмета."
          },
          "description": {
            "description": "What you wrote about the lot.",
            "type": "string",
            "x-ru": "Что вы написали о лоте."
          },
          "id": {
            "description": "The lot's id.",
            "type": "string",
            "x-ru": "Id лота."
          },
          "item": {
            "$ref": "#/components/schemas/Item",
            "description": "The item as your inventory showed it.",
            "x-ru": "Предмет, как его показал ваш инвентарь."
          },
          "item_slug": {
            "description": "The item's slug.",
            "type": "string",
            "x-ru": "Slug предмета."
          },
          "listed_at": {
            "description": "When the lot went on sale.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда лот выставлен."
          },
          "max_discount": {
            "description": "How far below the price, in percent, you take bargains. Left out if you take none.",
            "type": "integer",
            "x-ru": "На сколько процентов ниже цены вы принимаете торг. Поля нет, если не принимаете."
          },
          "paused": {
            "description": "The lot is off the market while your stall is paused. Left out otherwise.",
            "type": "boolean",
            "x-ru": "Лот снят с маркета, пока витрина на паузе. Иначе поля нет."
          },
          "price_cents": {
            "description": "The price in US cents.",
            "type": "integer",
            "x-ru": "Цена в центах США."
          }
        },
        "required": [
          "id",
          "asset_id",
          "item_slug",
          "item",
          "price_cents",
          "listed_at"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "asset_id",
          "item_slug",
          "item",
          "price_cents",
          "description",
          "max_discount",
          "paused",
          "listed_at"
        ]
      },
      "PauseRequest": {
        "properties": {
          "paused": {
            "description": "true pauses the stall, false brings the lots back.",
            "type": "boolean",
            "x-ru": "true ставит витрину на паузу, false возвращает лоты."
          }
        },
        "required": [
          "paused"
        ],
        "type": "object",
        "x-fields": [
          "paused"
        ]
      },
      "Phase": {
        "properties": {
          "image_url": {
            "description": "How this phase looks.",
            "type": "string",
            "x-ru": "Как выглядит эта фаза."
          },
          "name": {
            "description": "The phase's name.",
            "type": "string",
            "x-ru": "Название фазы."
          }
        },
        "required": [
          "name",
          "image_url"
        ],
        "type": "object",
        "x-fields": [
          "name",
          "image_url"
        ]
      },
      "PriceRequest": {
        "properties": {
          "price_cents": {
            "description": "The price in US cents: the new one for a lot, the one you saw for a purchase, the one you offer in a bargain.",
            "type": "integer",
            "x-ru": "Цена в центах США: новая для лота, увиденная для покупки, предложенная в торге."
          }
        },
        "required": [
          "price_cents"
        ],
        "type": "object",
        "x-fields": [
          "price_cents"
        ]
      },
      "PriceTag": {
        "properties": {
          "asset_id": {
            "description": "The item's asset_id in your inventory.",
            "type": "string",
            "x-ru": "asset_id предмета в вашем инвентаре."
          },
          "description": {
            "description": "What you want to say about the item, one line.",
            "type": "string",
            "x-ru": "Что вы хотите сказать о предмете, одной строкой."
          },
          "price_cents": {
            "description": "The price in US cents, from 3 to 100000000.",
            "type": "integer",
            "x-ru": "Цена в центах США, от 3 до 100000000."
          }
        },
        "required": [
          "asset_id",
          "price_cents"
        ],
        "type": "object",
        "x-fields": [
          "asset_id",
          "price_cents",
          "description"
        ]
      },
      "PricesRequest": {
        "properties": {
          "ids": {
            "description": "Your lots to change.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Ваши лоты, которые нужно изменить."
          },
          "price_cents": {
            "description": "The price in US cents.",
            "type": "integer",
            "x-ru": "Цена в центах США."
          }
        },
        "required": [
          "ids",
          "price_cents"
        ],
        "type": "object",
        "x-fields": [
          "ids",
          "price_cents"
        ]
      },
      "Profile": {
        "properties": {
          "avatar_url": {
            "description": "Their avatar on Steam now.",
            "type": "string",
            "x-ru": "Их аватар в Steam сейчас."
          },
          "level": {
            "description": "Their Steam level now, for the other side of a deal under way, unless the profile is private. Check it in Steam Guard: an account made up to look like them cannot copy it.",
            "type": "integer",
            "x-ru": "Их уровень Steam сейчас, у второй стороны идущей сделки, если профиль не закрыт. Сверяйте его в Steam Guard: аккаунт, похожий на них, его не скопирует."
          },
          "member_since": {
            "description": "When their Steam account was made, unless the profile is private.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда создан их аккаунт Steam, если профиль не закрыт."
          },
          "name": {
            "description": "Their name on Steam now.",
            "type": "string",
            "x-ru": "Их имя в Steam сейчас."
          },
          "service_xp": {
            "description": "The XP of that badge.",
            "type": "integer",
            "x-ru": "Опыт за этот значок."
          },
          "service_years": {
            "description": "Their Years of Service badge on Steam, as Steam counts it, with the level.",
            "type": "integer",
            "x-ru": "Их значок «Годы службы» в Steam, как его считает Steam, вместе с уровнем."
          },
          "steam_id": {
            "description": "Their SteamID64.",
            "type": "string",
            "x-ru": "Их SteamID64."
          }
        },
        "required": [
          "steam_id"
        ],
        "type": "object",
        "x-fields": [
          "steam_id",
          "name",
          "avatar_url",
          "member_since",
          "level",
          "service_years",
          "service_xp"
        ]
      },
      "PublicUser": {
        "properties": {
          "avatar_url": {
            "description": "Avatar in Steam.",
            "type": "string",
            "x-ru": "Аватар в Steam."
          },
          "name": {
            "description": "Name in Steam.",
            "type": "string",
            "x-ru": "Имя в Steam."
          },
          "steam_id": {
            "description": "SteamID64 of the account.",
            "type": "string",
            "x-ru": "SteamID64 аккаунта."
          },
          "trade_url": {
            "description": "Where sellers send your purchases. Left out until you set it.",
            "type": "string",
            "x-ru": "Куда продавцы отправляют ваши покупки. Поля нет, пока ссылка не указана."
          }
        },
        "required": [
          "steam_id",
          "name",
          "avatar_url"
        ],
        "type": "object",
        "x-fields": [
          "steam_id",
          "name",
          "avatar_url",
          "trade_url"
        ]
      },
      "Quote": {
        "properties": {
          "highest_cents": {
            "description": "The highest price among them.",
            "type": "integer",
            "x-ru": "Максимальная цена среди них."
          },
          "lowest_cents": {
            "description": "The lowest price among the lots the filters let through, at any price. Missing when there are none.",
            "type": "integer",
            "x-ru": "Минимальная цена среди лотов, прошедших фильтры, при любой цене. Нет, если лотов нет."
          },
          "more": {
            "description": "More lots fit the price than the list holds.",
            "type": "boolean",
            "x-ru": "Под цену подходит больше лотов, чем в списке."
          },
          "prices_cents": {
            "description": "The prices of the lots a purchase would buy now, cheapest first.",
            "items": {
              "type": "integer"
            },
            "type": "array",
            "x-ru": "Цены лотов, которые купила бы покупка сейчас, сначала дешёвые."
          }
        },
        "required": [
          "prices_cents",
          "more"
        ],
        "type": "object",
        "x-fields": [
          "prices_cents",
          "more",
          "lowest_cents",
          "highest_cents"
        ]
      },
      "Reference": {
        "properties": {
          "offers": {
            "description": "How many lots of this name, or this phase, lis-skins has.",
            "type": "integer",
            "x-ru": "Сколько лотов этого названия или фазы на lis-skins."
          },
          "price_cents": {
            "description": "The price in US cents.",
            "type": "integer",
            "x-ru": "Цена в центах США."
          }
        },
        "required": [
          "price_cents",
          "offers"
        ],
        "type": "object",
        "x-fields": [
          "price_cents",
          "offers"
        ]
      },
      "Refusal": {
        "properties": {
          "code": {
            "description": "Why the request can't be done.",
            "enum": [
              "bad_lot",
              "bad_description",
              "too_many_lots",
              "banned",
              "already_listed",
              "lot_gone",
              "price_changed",
              "own_lot",
              "not_enough_money",
              "no_such_order",
              "not_your_order",
              "too_early",
              "order_moved_on",
              "no_trade_url",
              "bad_trade_url",
              "item_gone",
              "item_unknown",
              "one_buyer_per_offer",
              "none_match",
              "too_many_auto_buys",
              "no_such_auto_buy",
              "bad_bargain",
              "no_such_bargain",
              "too_many_bargains",
              "buyer_cannot_pay",
              "bad_discount",
              "bad_address",
              "too_little",
              "no_such_withdrawal",
              "already_signed",
              "not_refundable",
              "unknown_coin",
              "stall_suspended",
              "bad_ticket",
              "too_many_tickets",
              "no_such_ticket",
              "ticket_closed",
              "wait_for_answer",
              "bad_image"
            ],
            "type": "string",
            "x-ru": "Почему запрос нельзя выполнить."
          }
        },
        "required": [
          "code"
        ],
        "type": "object",
        "x-fields": [
          "code"
        ]
      },
      "Seller": {
        "properties": {
          "avatar_url": {
            "description": "The seller's avatar when the lot went on sale.",
            "type": "string",
            "x-ru": "Аватар продавца на момент выставления."
          },
          "name": {
            "description": "The seller's name when the lot went on sale.",
            "type": "string",
            "x-ru": "Имя продавца на момент выставления."
          },
          "steam_id": {
            "description": "The seller's SteamID64.",
            "type": "string",
            "x-ru": "SteamID64 продавца."
          }
        },
        "required": [
          "steam_id",
          "name"
        ],
        "type": "object",
        "x-fields": [
          "steam_id",
          "name",
          "avatar_url"
        ]
      },
      "SellerReport": {
        "properties": {
          "offers": {
            "description": "Your sent offers from IEconService/GetTradeOffers.",
            "items": {
              "$ref": "#/components/schemas/OfferReport"
            },
            "type": "array",
            "x-ru": "Ваши отправленные офферы из IEconService/GetTradeOffers."
          },
          "problem": {
            "description": "What kept you from reading Steam, if something did.",
            "enum": [
              "steam_signed_out",
              "steam_unavailable"
            ],
            "type": "string",
            "x-ru": "Что помешало прочитать Steam, если что-то помешало."
          },
          "trades": {
            "description": "Your trades from IEconService/GetTradeHistory.",
            "items": {
              "$ref": "#/components/schemas/TradeReport"
            },
            "type": "array",
            "x-ru": "Ваши обмены из IEconService/GetTradeHistory."
          }
        },
        "required": [
          "offers",
          "trades"
        ],
        "type": "object",
        "x-fields": [
          "offers",
          "trades",
          "problem"
        ]
      },
      "SharedOfferRequest": {
        "properties": {
          "offer_id": {
            "description": "Steam's tradeofferid, digits only.",
            "type": "string",
            "x-ru": "tradeofferid из Steam, только цифры."
          },
          "order_ids": {
            "description": "The deals the offer carries, all to one buyer, 100 at most.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Сделки, которые везёт оффер, все одному покупателю, не больше 100."
          }
        },
        "required": [
          "offer_id",
          "order_ids"
        ],
        "type": "object",
        "x-fields": [
          "offer_id",
          "order_ids"
        ]
      },
      "Stall": {
        "properties": {
          "kinds": {
            "description": "How many lots of each kind are on sale, whatever the search left on the page.",
            "type": "object",
            "x-ru": "Сколько лотов каждого вида в продаже, независимо от поиска."
          },
          "lots": {
            "description": "The lots of this page.",
            "items": {
              "$ref": "#/components/schemas/OwnLot"
            },
            "type": "array",
            "x-ru": "Лоты этой страницы."
          },
          "page_size": {
            "description": "How many fit on one page.",
            "type": "integer",
            "x-ru": "Сколько помещается на страницу."
          },
          "paused": {
            "description": "Whether you have paused your stall: its lots are off the market and keep their prices.",
            "type": "boolean",
            "x-ru": "Стоит ли витрина на вашей паузе: её лоты сняты с маркета и сохраняют цены."
          },
          "public": {
            "description": "Whether your stall is open to everyone.",
            "type": "boolean",
            "x-ru": "Открыта ли витрина для всех."
          },
          "suspension": {
            "$ref": "#/components/schemas/Suspension",
            "description": "Rockvel's pause of your stall for breaking the rules. Its lots stay off the market until Rockvel lifts it. Left out otherwise.",
            "x-ru": "Пауза вашей витрины от Rockvel за нарушение правил. Её лоты сняты с маркета, пока Rockvel её не снимет. Иначе поля нет."
          },
          "total": {
            "description": "How many there are on all pages.",
            "type": "integer",
            "x-ru": "Сколько всего на всех страницах."
          }
        },
        "required": [
          "public",
          "paused",
          "lots",
          "kinds",
          "total",
          "page_size"
        ],
        "type": "object",
        "x-fields": [
          "public",
          "paused",
          "suspension",
          "lots",
          "kinds",
          "total",
          "page_size"
        ]
      },
      "StallLot": {
        "properties": {
          "description": {
            "description": "What the seller wrote about the lot. Plain text.",
            "type": "string",
            "x-ru": "Что продавец написал о лоте. Простой текст."
          },
          "exterior": {
            "description": "Exterior as a code: FN, MW, FT, WW or BS.",
            "type": "string",
            "x-ru": "Код состояния: FN, MW, FT, WW или BS."
          },
          "float": {
            "description": "The float the seller's inventory showed.",
            "type": "number",
            "x-ru": "Флот из инвентаря продавца."
          },
          "id": {
            "description": "The lot's id, to buy it by.",
            "type": "string",
            "x-ru": "Id лота, по нему лот покупается."
          },
          "image_url": {
            "description": "The item's picture.",
            "type": "string",
            "x-ru": "Изображение предмета."
          },
          "item_slug": {
            "description": "The item's slug.",
            "type": "string",
            "x-ru": "Slug предмета."
          },
          "listed_at": {
            "description": "When the lot went on sale.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда лот выставлен."
          },
          "max_discount": {
            "description": "How far below the price, in percent, the seller takes bargains. Left out if they take none.",
            "type": "integer",
            "x-ru": "На сколько процентов ниже цены продавец принимает торг. Поля нет, если не принимает."
          },
          "name": {
            "description": "The market_hash_name.",
            "type": "string",
            "x-ru": "market_hash_name."
          },
          "own": {
            "description": "The lot is yours. Left out otherwise.",
            "type": "boolean",
            "x-ru": "Лот ваш. Иначе поля нет."
          },
          "paint_seed": {
            "description": "The paint seed the seller's inventory showed.",
            "type": "integer",
            "x-ru": "Paint seed из инвентаря продавца."
          },
          "phase": {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "type": "string",
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          "price_cents": {
            "description": "The price in US cents.",
            "type": "integer",
            "x-ru": "Цена в центах США."
          },
          "rarity": {
            "description": "Rarity, such as Classified.",
            "type": "string",
            "x-ru": "Редкость, например Classified."
          },
          "seller": {
            "$ref": "#/components/schemas/Seller",
            "description": "Who sells it. Left out if their stall is closed.",
            "x-ru": "Кто продаёт. Поля нет, если витрина закрыта."
          },
          "souvenir": {
            "description": "The item is a Souvenir.",
            "type": "boolean",
            "x-ru": "Предмет Souvenir."
          },
          "stattrak": {
            "description": "The item is StatTrak.",
            "type": "boolean",
            "x-ru": "Предмет StatTrak."
          },
          "stickers": {
            "description": "Stickers the seller's inventory showed.",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "type": "array",
            "x-ru": "Наклейки из инвентаря продавца."
          }
        },
        "required": [
          "id",
          "price_cents",
          "image_url",
          "listed_at",
          "item_slug",
          "name"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "price_cents",
          "float",
          "paint_seed",
          "phase",
          "image_url",
          "stickers",
          "description",
          "max_discount",
          "seller",
          "own",
          "listed_at",
          "item_slug",
          "name",
          "rarity",
          "exterior",
          "stattrak",
          "souvenir"
        ]
      },
      "StallPage": {
        "properties": {
          "lots": {
            "description": "The lots of this page.",
            "items": {
              "$ref": "#/components/schemas/StallLot"
            },
            "type": "array",
            "x-ru": "Лоты этой страницы."
          },
          "page_size": {
            "description": "How many fit on one page.",
            "type": "integer",
            "x-ru": "Сколько помещается на страницу."
          },
          "paused": {
            "description": "The stall is paused: its lots come back after the pause. Left out otherwise.",
            "type": "boolean",
            "x-ru": "Витрина на паузе: её лоты вернутся после паузы. Иначе поля нет."
          },
          "seller": {
            "$ref": "#/components/schemas/Seller",
            "description": "The seller. Left out if the stall is closed or empty.",
            "x-ru": "Продавец. Поля нет, если витрина закрыта или пуста."
          },
          "total": {
            "description": "How many there are on all pages.",
            "type": "integer",
            "x-ru": "Сколько всего на всех страницах."
          }
        },
        "required": [
          "lots",
          "total",
          "page_size"
        ],
        "type": "object",
        "x-fields": [
          "seller",
          "paused",
          "lots",
          "total",
          "page_size"
        ]
      },
      "StallRequest": {
        "properties": {
          "public": {
            "description": "true opens the stall, false closes it.",
            "type": "boolean",
            "x-ru": "true открывает витрину, false закрывает."
          }
        },
        "required": [
          "public"
        ],
        "type": "object",
        "x-fields": [
          "public"
        ]
      },
      "Stats": {
        "properties": {
          "net_cents": {
            "description": "Sales minus purchases. Can be below zero.",
            "type": "integer",
            "x-ru": "Продажи минус покупки. Может быть меньше нуля."
          },
          "purchases_cents": {
            "description": "What the purchases cost.",
            "type": "integer",
            "x-ru": "Сколько стоили покупки."
          },
          "purchases_count": {
            "description": "Settled purchases.",
            "type": "integer",
            "x-ru": "Завершённых покупок."
          },
          "sales_cents": {
            "description": "What the sales brought, after the fee.",
            "type": "integer",
            "x-ru": "Выручка с продаж после комиссии."
          },
          "sales_count": {
            "description": "Settled sales.",
            "type": "integer",
            "x-ru": "Завершённых продаж."
          }
        },
        "required": [
          "sales_count",
          "sales_cents",
          "purchases_count",
          "purchases_cents",
          "net_cents"
        ],
        "type": "object",
        "x-fields": [
          "sales_count",
          "sales_cents",
          "purchases_count",
          "purchases_cents",
          "net_cents"
        ]
      },
      "StickerFilter": {
        "properties": {
          "name": {
            "description": "The sticker's name, as the catalog names it without \"Sticker | \".",
            "type": "string",
            "x-ru": "Название наклейки, как в каталоге, но без «Sticker | »."
          },
          "slot": {
            "description": "Its place on the weapon, from 0 to 4. Without it any place will do. Two stickers can't ask for one slot.",
            "type": "integer",
            "x-ru": "Её место на оружии, от 0 до 4. Без него подойдёт любое. Две наклейки не могут занимать один слот."
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "x-fields": [
          "name",
          "slot"
        ]
      },
      "Suspension": {
        "properties": {
          "reason": {
            "description": "Why Rockvel paused the stall.",
            "type": "string",
            "x-ru": "Почему Rockvel поставил витрину на паузу."
          },
          "since": {
            "description": "When it began.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда она началась."
          }
        },
        "required": [
          "reason",
          "since"
        ],
        "type": "object",
        "x-fields": [
          "reason",
          "since"
        ]
      },
      "Tag": {
        "properties": {
          "category": {
            "description": "The label's kind, such as Collection.",
            "type": "string",
            "x-ru": "Вид метки, например Collection."
          },
          "name": {
            "description": "The label itself.",
            "type": "string",
            "x-ru": "Сама метка."
          }
        },
        "required": [
          "category",
          "name"
        ],
        "type": "object",
        "x-fields": [
          "category",
          "name"
        ]
      },
      "TradeOrder": {
        "properties": {
          "actions": {
            "description": "What you can do now.",
            "items": {
              "enum": [
                "send",
                "cancel",
                "close_offer",
                "dispute"
              ],
              "type": "string"
            },
            "type": "array",
            "x-ru": "Что можно сделать сейчас."
          },
          "asset_id": {
            "description": "The item to send.",
            "type": "string",
            "x-ru": "Предмет для отправки."
          },
          "buyer_steam_id": {
            "description": "Whom to send it to, as a SteamID64.",
            "type": "string",
            "x-ru": "Кому отправить, SteamID64."
          },
          "id": {
            "description": "The deal's id.",
            "type": "string",
            "x-ru": "Id сделки."
          },
          "name": {
            "description": "The item's name.",
            "type": "string",
            "x-ru": "Название предмета."
          },
          "number": {
            "description": "The deal's short number: name it in the offer's message, as the buyer sees it on the site.",
            "type": "string",
            "x-ru": "Короткий номер сделки: назовите его в сообщении оффера, покупатель видит его на сайте."
          },
          "offer_id": {
            "description": "The offer you recorded, if any.",
            "type": "string",
            "x-ru": "Записанный вами оффер, если есть."
          },
          "paid_at": {
            "description": "When the lot was bought.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда лот куплен."
          },
          "status": {
            "description": "Where the deal stands.",
            "enum": [
              "paid",
              "sent",
              "protected",
              "settled",
              "cancelled",
              "failed",
              "rolled_back",
              "disputed"
            ],
            "type": "string",
            "x-ru": "Где сейчас сделка."
          },
          "trade_url": {
            "description": "The buyer's trade link.",
            "type": "string",
            "x-ru": "Трейд-ссылка покупателя."
          }
        },
        "required": [
          "id",
          "number",
          "status",
          "asset_id",
          "name",
          "buyer_steam_id",
          "trade_url",
          "paid_at",
          "actions"
        ],
        "type": "object",
        "x-fields": [
          "id",
          "number",
          "status",
          "asset_id",
          "name",
          "buyer_steam_id",
          "trade_url",
          "offer_id",
          "paid_at",
          "actions"
        ]
      },
      "TradeReport": {
        "properties": {
          "given_asset_ids": {
            "description": "The asset ids in assets_given.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-ru": "Id из assets_given."
          },
          "other_steam_id": {
            "description": "Steam's steamid_other.",
            "type": "string",
            "x-ru": "steamid_other из Steam."
          },
          "status": {
            "description": "Steam's trade status.",
            "type": "integer",
            "x-ru": "Статус обмена из Steam."
          },
          "time_init": {
            "description": "Steam's time_init, in Unix seconds.",
            "type": "integer",
            "x-ru": "time_init из Steam, Unix-время в секундах."
          },
          "trade_id": {
            "description": "Steam's tradeid.",
            "type": "string",
            "x-ru": "tradeid из Steam."
          }
        },
        "required": [
          "trade_id",
          "status"
        ],
        "type": "object",
        "x-fields": [
          "trade_id",
          "status",
          "given_asset_ids",
          "other_steam_id",
          "time_init"
        ]
      },
      "TradeURLRequest": {
        "properties": {
          "trade_url": {
            "description": "The link from steamcommunity.com/my/tradeoffers/privacy.",
            "type": "string",
            "x-ru": "Ссылка со страницы steamcommunity.com/my/tradeoffers/privacy."
          }
        },
        "required": [
          "trade_url"
        ],
        "type": "object",
        "x-fields": [
          "trade_url"
        ]
      },
      "Watch": {
        "properties": {
          "problem": {
            "description": "What the last report said kept it from reading Steam.",
            "enum": [
              "steam_signed_out",
              "steam_unavailable"
            ],
            "type": "string",
            "x-ru": "Что, по последнему отчёту, помешало прочитать Steam."
          },
          "reported_at": {
            "description": "When the last report came. Left out if none ever did.",
            "format": "date-time",
            "type": "string",
            "x-ru": "Когда пришёл последний отчёт. Поля нет, если отчётов не было."
          },
          "silent": {
            "description": "No report has come for 10 minutes, so your deals aren't moving.",
            "type": "boolean",
            "x-ru": "Отчётов нет 10 минут, поэтому ваши сделки не двигаются."
          }
        },
        "required": [
          "silent"
        ],
        "type": "object",
        "x-fields": [
          "reported_at",
          "problem",
          "silent"
        ]
      }
    },
    "securitySchemes": {
      "key": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Everything the site can do, by key. Prices are in US cents. One account has 300 requests a minute, and past that the answer is 429 with Retry-After. A refusal is a 4xx with a JSON code; other failures are the status alone.",
    "title": "Rockvel API",
    "version": "1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/auto-buys": {
      "get": {
        "description": "Your auto-buys that still wait, the newest first. What they bought is among your deals. One that bought all it asked for, or that you called off, isn't here.",
        "operationId": "list-auto-buys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "id": "019a4d02-8b1c-7e44-a6f2-3c9d5e7b1a08",
                    "item_slug": "ak-47-redline-field-tested",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "rarity": "Classified",
                    "max_price_cents": 3300,
                    "quantity": 5,
                    "bought": 2,
                    "filter": {
                      "float_max": 0.3,
                      "paint_seeds": [
                        412,
                        661
                      ],
                      "stickers": [
                        {
                          "name": "Crown (Foil)"
                        }
                      ]
                    },
                    "created_at": "2026-11-02T06:41:17Z"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AutoBuy"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "List your auto-buys",
        "tags": [
          "Auto-buy"
        ],
        "x-order": 24,
        "x-ru": {
          "description": "Ваши автопокупки, которые ещё ждут, сначала новые. Купленное ими есть среди ваших сделок. Автопокупки, которая купила всё или отменена, здесь нет.",
          "summary": "Получить свои автопокупки"
        }
      }
    },
    "/auto-buys/{id}": {
      "delete": {
        "description": "Stops your auto-buy. What it bought stays bought.",
        "operationId": "cancel-auto-buy",
        "parameters": [
          {
            "description": "The auto-buy's id.",
            "example": "019a4d02-8b1c-7e44-a6f2-3c9d5e7b1a08",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id автопокупки."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_auto_buy": {
                    "summary": "There is no such auto-buy waiting: it bought all it asked for, was called off, or isn't yours.",
                    "value": {
                      "code": "no_such_auto_buy"
                    },
                    "x-ru": "Такой ждущей автопокупки нет: она купила всё, отменена или не ваша."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "summary": "Call off an auto-buy",
        "tags": [
          "Auto-buy"
        ],
        "x-order": 25,
        "x-ru": {
          "description": "Останавливает вашу автопокупку. Купленное ею остаётся купленным.",
          "summary": "Отменить автопокупку"
        }
      }
    },
    "/bargains": {
      "get": {
        "description": "Your bargains on both sides, the newest first: those waiting for an answer, and for a day those that ended without a sale. An accepted one is a deal now, and the deals list it. actions says what you can do with each.",
        "operationId": "list-bargains",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "id": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
                    "role": "buyer",
                    "status": "countered",
                    "lot_id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                    "item_slug": "ak-47-redline-field-tested",
                    "item": {
                      "asset_id": "54267934219",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "market_hash_name": "AK-47 | Redline (Field-Tested)",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "kind": "weapon",
                      "rarity": "Classified Rifle",
                      "exterior": "FT",
                      "marketable": true,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "paint_index": 282,
                      "def_index": 7,
                      "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "tags": [
                        {
                          "category": "Type",
                          "name": "Rifle"
                        },
                        {
                          "category": "Weapon",
                          "name": "AK-47"
                        },
                        {
                          "category": "Collection",
                          "name": "The Phoenix Collection"
                        },
                        {
                          "category": "Quality",
                          "name": "Classified Rifle"
                        },
                        {
                          "category": "Exterior",
                          "name": "Field-Tested"
                        }
                      ]
                    },
                    "lot_price_cents": 3250,
                    "price_cents": 3000,
                    "counter_cents": 3150,
                    "actions": [
                      "accept",
                      "decline"
                    ],
                    "created_at": "2026-11-02T07:41:17Z",
                    "expires_at": "2026-11-03T08:41:17Z"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Bargain"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "List your bargains",
        "tags": [
          "Bargains"
        ],
        "x-order": 30,
        "x-ru": {
          "description": "Ваши торги с обеих сторон, сначала новые: те, что ждут ответа, и в течение суток те, что закончились без продажи. Принятый торг стал сделкой, его показывает список сделок. actions говорит, что можно сделать с каждым.",
          "summary": "Получить свои торги"
        }
      }
    },
    "/bargains/{id}/accept": {
      "post": {
        "description": "Takes the price waiting for your answer: the buyer's, as the seller, or the seller's counter, as the buyer. The lot is sold at it in the same moment and becomes a deal, as a purchase would, and order_id names it. If the buyer no longer has the money, the bargain ends with buyer_cannot_pay.",
        "operationId": "accept-bargain",
        "parameters": [
          {
            "description": "The bargain's id.",
            "example": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id торга."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
                  "role": "buyer",
                  "status": "accepted",
                  "lot_id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "lot_price_cents": 3250,
                  "price_cents": 3000,
                  "counter_cents": 3150,
                  "order_id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                  "actions": [],
                  "created_at": "2026-11-02T07:41:17Z",
                  "expires_at": "2026-11-03T08:41:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Bargain"
                }
              }
            },
            "description": "Done"
          },
          "402": {
            "content": {
              "application/json": {
                "examples": {
                  "not_enough_money": {
                    "summary": "The balance doesn't cover the price.",
                    "value": {
                      "code": "not_enough_money"
                    },
                    "x-ru": "На балансе не хватает денег."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Payment Required"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_bargain": {
                    "summary": "There is no such bargain waiting for your answer: it ended, it is the other side's turn, or it isn't yours.",
                    "value": {
                      "code": "no_such_bargain"
                    },
                    "x-ru": "Такого торга, ждущего вашего ответа, нет: он закончился, сейчас очередь другой стороны или он не ваш."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "buyer_cannot_pay": {
                    "summary": "The buyer no longer has the money for this price, so the bargain ended.",
                    "value": {
                      "code": "buyer_cannot_pay"
                    },
                    "x-ru": "У покупателя больше нет денег на эту цену, поэтому торг закончился."
                  },
                  "no_trade_url": {
                    "summary": "Set your trade link first.",
                    "value": {
                      "code": "no_trade_url"
                    },
                    "x-ru": "Сначала укажите трейд-ссылку."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Accept a price",
        "tags": [
          "Bargains"
        ],
        "x-order": 31,
        "x-ru": {
          "description": "Принимает цену, которая ждёт вашего ответа: цену покупателя, если вы продавец, или встречную цену продавца, если вы покупатель. Лот в тот же момент продаётся по ней и становится сделкой, как при покупке, а order_id её называет. Если у покупателя больше нет денег, торг заканчивается с buyer_cannot_pay.",
          "summary": "Принять цену"
        }
      }
    },
    "/bargains/{id}/cancel": {
      "post": {
        "description": "Buyer: takes back a price the seller hasn't answered yet.",
        "operationId": "cancel-bargain",
        "parameters": [
          {
            "description": "The bargain's id.",
            "example": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id торга."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
                  "role": "buyer",
                  "status": "cancelled",
                  "lot_id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "lot_price_cents": 3250,
                  "price_cents": 3000,
                  "actions": [],
                  "created_at": "2026-11-02T07:41:17Z",
                  "expires_at": "2026-11-03T07:41:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Bargain"
                }
              }
            },
            "description": "Done"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_bargain": {
                    "summary": "There is no such bargain waiting for your answer: it ended, it is the other side's turn, or it isn't yours.",
                    "value": {
                      "code": "no_such_bargain"
                    },
                    "x-ru": "Такого торга, ждущего вашего ответа, нет: он закончился, сейчас очередь другой стороны или он не ваш."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "summary": "Take back a price",
        "tags": [
          "Bargains"
        ],
        "x-order": 34,
        "x-ru": {
          "description": "Покупатель: отзывает цену, на которую продавец ещё не ответил.",
          "summary": "Отозвать цену"
        }
      }
    },
    "/bargains/{id}/counter": {
      "post": {
        "description": "Seller: answers the buyer's price with your own, above theirs and below the lot's. The buyer has 24 hours to accept or decline it, or can offer a new price.",
        "operationId": "counter-bargain",
        "parameters": [
          {
            "description": "The bargain's id.",
            "example": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id торга."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "price_cents": 3150
              },
              "schema": {
                "$ref": "#/components/schemas/PriceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
                  "role": "seller",
                  "status": "countered",
                  "lot_id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "lot_price_cents": 3250,
                  "price_cents": 3000,
                  "counter_cents": 3150,
                  "actions": [],
                  "created_at": "2026-11-02T07:41:17Z",
                  "expires_at": "2026-11-03T08:41:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Bargain"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_bargain": {
                    "summary": "There is no such bargain waiting for your answer: it ended, it is the other side's turn, or it isn't yours.",
                    "value": {
                      "code": "no_such_bargain"
                    },
                    "x-ru": "Такого торга, ждущего вашего ответа, нет: он закончился, сейчас очередь другой стороны или он не ваш."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_bargain": {
                    "summary": "The lot takes no bargains, the price isn't below the lot's and within its max_discount, or a counter isn't between the buyer's price and the lot's.",
                    "value": {
                      "code": "bad_bargain"
                    },
                    "x-ru": "Лот не принимает торг, цена не ниже цены лота или не в пределах его max_discount, или встречная цена не между ценой покупателя и ценой лота."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Counter a price",
        "tags": [
          "Bargains"
        ],
        "x-order": 32,
        "x-ru": {
          "description": "Продавец: отвечает на цену покупателя своей, выше его цены и ниже цены лота. У покупателя 24 часа, чтобы принять её или отказаться, или он может предложить новую цену.",
          "summary": "Назвать свою цену"
        }
      }
    },
    "/bargains/{id}/decline": {
      "post": {
        "description": "Says no to the price waiting for your answer, and the bargain ends. The lot stays on sale.",
        "operationId": "decline-bargain",
        "parameters": [
          {
            "description": "The bargain's id.",
            "example": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id торга."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
                  "role": "seller",
                  "status": "declined",
                  "lot_id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "lot_price_cents": 3250,
                  "price_cents": 3000,
                  "counter_cents": 3150,
                  "actions": [],
                  "created_at": "2026-11-02T07:41:17Z",
                  "expires_at": "2026-11-03T08:41:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Bargain"
                }
              }
            },
            "description": "Done"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_bargain": {
                    "summary": "There is no such bargain waiting for your answer: it ended, it is the other side's turn, or it isn't yours.",
                    "value": {
                      "code": "no_such_bargain"
                    },
                    "x-ru": "Такого торга, ждущего вашего ответа, нет: он закончился, сейчас очередь другой стороны или он не ваш."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "summary": "Decline a price",
        "tags": [
          "Bargains"
        ],
        "x-order": 33,
        "x-ru": {
          "description": "Отказывается от цены, которая ждёт вашего ответа, и торг заканчивается. Лот остаётся в продаже.",
          "summary": "Отклонить цену"
        }
      }
    },
    "/inventory": {
      "get": {
        "description": "The last copy of your inventory that reached Rockvel, without what is on sale or sold. Rockvel doesn't read Steam itself, so the copy is as fresh as your last upload. Answers 404 until the first one.",
        "operationId": "get-inventory",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "items": [
                    {
                      "asset_id": "54267934219",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "market_hash_name": "AK-47 | Redline (Field-Tested)",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "kind": "weapon",
                      "rarity": "Classified Rifle",
                      "exterior": "FT",
                      "marketable": true,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "paint_index": 282,
                      "def_index": 7,
                      "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "tags": [
                        {
                          "category": "Type",
                          "name": "Rifle"
                        },
                        {
                          "category": "Weapon",
                          "name": "AK-47"
                        },
                        {
                          "category": "Collection",
                          "name": "The Phoenix Collection"
                        },
                        {
                          "category": "Quality",
                          "name": "Classified Rifle"
                        },
                        {
                          "category": "Exterior",
                          "name": "Field-Tested"
                        }
                      ],
                      "reference": {
                        "price_cents": 3240,
                        "offers": 213
                      }
                    }
                  ],
                  "hidden_count": 0,
                  "fetched_at": "2026-11-01T06:41:17Z",
                  "stale": false
                },
                "schema": {
                  "$ref": "#/components/schemas/Inventory"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get your inventory",
        "tags": [
          "Inventory"
        ],
        "x-order": 3,
        "x-ru": {
          "description": "Последняя копия инвентаря, дошедшая до Rockvel, без выставленного и проданного. Сам Rockvel в Steam не ходит, поэтому копия свежа настолько, насколько свежа ваша последняя загрузка. До первой загрузки ответ 404.",
          "summary": "Получить инвентарь"
        }
      },
      "post": {
        "description": "Replaces the copy with what Steam gave you: every page of steamcommunity.com/inventory/\u003csteam_id\u003e/730/2?l=english\u0026count=2000, untouched, up to 32 MB. Within 30 seconds of the last upload the answer is the copy already there. Lots whose items left a complete inventory come off sale.",
        "operationId": "upload-inventory",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "pages": [
                  {
                    "asset_properties": [
                      {
                        "appid": 730,
                        "asset_properties": [
                          {
                            "float_value": "0.2613",
                            "name": "Wear Rating",
                            "propertyid": 2
                          }
                        ],
                        "assetid": "54267934219",
                        "contextid": "2"
                      }
                    ],
                    "assets": [
                      {
                        "amount": "1",
                        "appid": 730,
                        "assetid": "54267934219",
                        "classid": "7993041821",
                        "contextid": "2",
                        "instanceid": "9148385265"
                      }
                    ],
                    "descriptions": [
                      {
                        "classid": "7993041821",
                        "instanceid": "9148385265",
                        "market_hash_name": "AK-47 | Redline (Field-Tested)",
                        "tags": [],
                        "tradable": 1
                      }
                    ],
                    "success": 1,
                    "total_inventory_count": 1
                  }
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/InventoryPages"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "items": [
                    {
                      "asset_id": "54267934219",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "market_hash_name": "AK-47 | Redline (Field-Tested)",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "kind": "weapon",
                      "rarity": "Classified Rifle",
                      "exterior": "FT",
                      "marketable": true,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "paint_index": 282,
                      "def_index": 7,
                      "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "tags": [
                        {
                          "category": "Type",
                          "name": "Rifle"
                        },
                        {
                          "category": "Weapon",
                          "name": "AK-47"
                        },
                        {
                          "category": "Collection",
                          "name": "The Phoenix Collection"
                        },
                        {
                          "category": "Quality",
                          "name": "Classified Rifle"
                        },
                        {
                          "category": "Exterior",
                          "name": "Field-Tested"
                        }
                      ],
                      "reference": {
                        "price_cents": 3240,
                        "offers": 213
                      }
                    }
                  ],
                  "hidden_count": 0,
                  "fetched_at": "2026-11-01T06:41:17Z",
                  "stale": false
                },
                "schema": {
                  "$ref": "#/components/schemas/Inventory"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Upload your inventory",
        "tags": [
          "Inventory"
        ],
        "x-order": 4,
        "x-ru": {
          "description": "Заменяет копию тем, что отдал Steam: все страницы steamcommunity.com/inventory/\u003csteam_id\u003e/730/2?l=english\u0026count=2000 без изменений, до 32 МБ. В течение 30 секунд после прошлой загрузки ответом будет уже лежащая копия. Лоты, чьи предметы исчезли из полного инвентаря, снимаются с продажи.",
          "summary": "Загрузить инвентарь"
        }
      }
    },
    "/lots": {
      "delete": {
        "description": "Takes up to 100 of your lots off sale. Lots that sold or are already down are skipped: the answer names the ones it took down.",
        "operationId": "delist-lots",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "ids": [
                  "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12"
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/LotIDs"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "ids": [
                    "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12"
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/LotIDs"
                }
              }
            },
            "description": "Done"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "too_many_lots": {
                    "summary": "More than 100 items in one request.",
                    "value": {
                      "code": "too_many_lots"
                    },
                    "x-ru": "Больше 100 предметов в одном запросе."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Take lots down",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 16,
        "x-ru": {
          "description": "Снимает с продажи до 100 ваших лотов. Проданные и уже снятые пропускаются: ответ называет те, что сняты.",
          "summary": "Снять лоты"
        }
      },
      "patch": {
        "description": "Gives up to 100 of your lots the same new price. Lots that sold or were taken down meanwhile are skipped: the answer names the ones it changed.",
        "operationId": "reprice-lots",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "ids": [
                  "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12"
                ],
                "price_cents": 3190
              },
              "schema": {
                "$ref": "#/components/schemas/PricesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "ids": [
                    "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12"
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/LotIDs"
                }
              }
            },
            "description": "Done"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_lot": {
                    "summary": "The list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.",
                    "value": {
                      "code": "bad_lot"
                    },
                    "x-ru": "Список пуст, цена вне диапазона от 3 до 100000000 центов или фильтр вне своих границ."
                  },
                  "too_many_lots": {
                    "summary": "More than 100 items in one request.",
                    "value": {
                      "code": "too_many_lots"
                    },
                    "x-ru": "Больше 100 предметов в одном запросе."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Give lots one price",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 15,
        "x-ru": {
          "description": "Задаёт до 100 вашим лотам одну новую цену. Лоты, проданные или снятые за это время, пропускаются: ответ называет те, что изменились.",
          "summary": "Задать лотам одну цену"
        }
      },
      "post": {
        "description": "Puts up to 100 items up for sale, all of them or none. What a lot says comes from your inventory copy, so upload a fresh one first. Only the price is yours to set.",
        "operationId": "list-lots",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "lots": [
                  {
                    "asset_id": "54267934219",
                    "price_cents": 3250
                  }
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/ListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                    "asset_id": "54267934219",
                    "item_slug": "ak-47-redline-field-tested",
                    "item": {
                      "asset_id": "54267934219",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "market_hash_name": "AK-47 | Redline (Field-Tested)",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "kind": "weapon",
                      "rarity": "Classified Rifle",
                      "exterior": "FT",
                      "marketable": true,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "paint_index": 282,
                      "def_index": 7,
                      "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "tags": [
                        {
                          "category": "Type",
                          "name": "Rifle"
                        },
                        {
                          "category": "Weapon",
                          "name": "AK-47"
                        },
                        {
                          "category": "Collection",
                          "name": "The Phoenix Collection"
                        },
                        {
                          "category": "Quality",
                          "name": "Classified Rifle"
                        },
                        {
                          "category": "Exterior",
                          "name": "Field-Tested"
                        }
                      ],
                      "reference": {
                        "price_cents": 3240,
                        "offers": 213
                      }
                    },
                    "price_cents": 3250,
                    "max_discount": 10,
                    "listed_at": "2026-11-01T07:41:17Z"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/OwnLot"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "already_listed": {
                    "summary": "One of the items is already on sale or sold.",
                    "value": {
                      "code": "already_listed"
                    },
                    "x-ru": "Один из предметов уже выставлен или продан."
                  },
                  "item_gone": {
                    "summary": "An item isn't in your inventory copy. Upload a fresh one and try again.",
                    "value": {
                      "code": "item_gone"
                    },
                    "x-ru": "Предмета нет в копии инвентаря. Загрузите свежую и попробуйте снова."
                  },
                  "item_unknown": {
                    "summary": "An item isn't in the catalog yet.",
                    "value": {
                      "code": "item_unknown"
                    },
                    "x-ru": "Предмета ещё нет в каталоге."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_description": {
                    "summary": "The description is longer than 32 characters, has more than one line or space at its ends.",
                    "value": {
                      "code": "bad_description"
                    },
                    "x-ru": "Описание длиннее 32 символов, в нём несколько строк или пробелы по краям."
                  },
                  "bad_lot": {
                    "summary": "The list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.",
                    "value": {
                      "code": "bad_lot"
                    },
                    "x-ru": "Список пуст, цена вне диапазона от 3 до 100000000 центов или фильтр вне своих границ."
                  },
                  "too_many_lots": {
                    "summary": "More than 100 items in one request.",
                    "value": {
                      "code": "too_many_lots"
                    },
                    "x-ru": "Больше 100 предметов в одном запросе."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "List items for sale",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 14,
        "x-ru": {
          "description": "Выставляет до 100 предметов сразу, все или ни одного. Описание лота берётся из копии инвентаря, поэтому сначала загрузите свежую. От вас только цена.",
          "summary": "Выставить предметы"
        }
      }
    },
    "/lots/{id}": {
      "delete": {
        "description": "Takes your lot off sale. A lot that sold or is already down answers lot_gone.",
        "operationId": "delist-lot",
        "parameters": [
          {
            "description": "The lot's id.",
            "example": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id лота."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "lot_gone": {
                    "summary": "The lot sold or was taken down.",
                    "value": {
                      "code": "lot_gone"
                    },
                    "x-ru": "Лот продан или снят."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Take a lot down",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 19,
        "x-ru": {
          "description": "Снимает ваш лот с продажи. На проданный или уже снятый лот ответ lot_gone.",
          "summary": "Снять лот"
        }
      },
      "patch": {
        "description": "Gives your lot a new price. A buyer who saw the old one gets price_changed rather than a surprise.",
        "operationId": "reprice-lot",
        "parameters": [
          {
            "description": "The lot's id.",
            "example": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id лота."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "price_cents": 3190
              },
              "schema": {
                "$ref": "#/components/schemas/PriceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "lot_gone": {
                    "summary": "The lot sold or was taken down.",
                    "value": {
                      "code": "lot_gone"
                    },
                    "x-ru": "Лот продан или снят."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_lot": {
                    "summary": "The list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.",
                    "value": {
                      "code": "bad_lot"
                    },
                    "x-ru": "Список пуст, цена вне диапазона от 3 до 100000000 центов или фильтр вне своих границ."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Change a lot's price",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 17,
        "x-ru": {
          "description": "Задаёт лоту новую цену. Покупатель, видевший старую, получит price_changed, а не неожиданность.",
          "summary": "Изменить цену лота"
        }
      }
    },
    "/lots/{id}/bargains": {
      "post": {
        "description": "Offers the seller a price below the lot's, no lower than its max_discount allows: price_cents × (100 − max_discount) / 100, rounded up to a cent. The seller has 24 hours to accept, counter or decline. No money is held, but you need it on your balance now. If the seller accepts, the lot is sold to you at that price as a deal of its own, and if you no longer have the money then, the bargain ends. A new price for the same lot takes the place of your earlier one, and you can keep 100 waiting at once. You need a trade link first.",
        "operationId": "offer-price",
        "parameters": [
          {
            "description": "The lot's id.",
            "example": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id лота."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "price_cents": 3000
              },
              "schema": {
                "$ref": "#/components/schemas/PriceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4d3f-5a72-7b19-8c0e-2f6d1b9a4e57",
                  "role": "buyer",
                  "status": "open",
                  "lot_id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "lot_price_cents": 3250,
                  "price_cents": 3000,
                  "actions": [
                    "cancel"
                  ],
                  "created_at": "2026-11-02T07:41:17Z",
                  "expires_at": "2026-11-03T07:41:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Bargain"
                }
              }
            },
            "description": "Done"
          },
          "402": {
            "content": {
              "application/json": {
                "examples": {
                  "not_enough_money": {
                    "summary": "The balance doesn't cover the price.",
                    "value": {
                      "code": "not_enough_money"
                    },
                    "x-ru": "На балансе не хватает денег."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Payment Required"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "lot_gone": {
                    "summary": "The lot sold or was taken down.",
                    "value": {
                      "code": "lot_gone"
                    },
                    "x-ru": "Лот продан или снят."
                  },
                  "no_trade_url": {
                    "summary": "Set your trade link first.",
                    "value": {
                      "code": "no_trade_url"
                    },
                    "x-ru": "Сначала укажите трейд-ссылку."
                  },
                  "own_lot": {
                    "summary": "This is your own lot.",
                    "value": {
                      "code": "own_lot"
                    },
                    "x-ru": "Это ваш собственный лот."
                  },
                  "too_many_bargains": {
                    "summary": "You already have 100 prices waiting for an answer. Take one back first.",
                    "value": {
                      "code": "too_many_bargains"
                    },
                    "x-ru": "У вас уже ждут ответа 100 цен. Сначала отзовите одну."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_bargain": {
                    "summary": "The lot takes no bargains, the price isn't below the lot's and within its max_discount, or a counter isn't between the buyer's price and the lot's.",
                    "value": {
                      "code": "bad_bargain"
                    },
                    "x-ru": "Лот не принимает торг, цена не ниже цены лота или не в пределах его max_discount, или встречная цена не между ценой покупателя и ценой лота."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Offer a price",
        "tags": [
          "Bargains"
        ],
        "x-order": 29,
        "x-ru": {
          "description": "Предлагает продавцу цену ниже цены лота, но не ниже, чем позволяет его max_discount: price_cents × (100 − max_discount) / 100 с округлением вверх до цента. У продавца 24 часа, чтобы принять, назвать свою цену или отказаться. Деньги не удерживаются, но сейчас они должны быть на балансе. Если продавец примет, лот продаётся вам по этой цене отдельной сделкой, а если денег к тому времени не хватит, торг закончится. Новая цена за тот же лот заменяет прежнюю, а ждать ответа одновременно могут 100 цен. Сначала нужна трейд-ссылка.",
          "summary": "Предложить цену"
        }
      }
    },
    "/lots/{id}/buy": {
      "post": {
        "description": "Holds the price from your balance and opens a deal. Send the price you saw: if the seller changed it, the purchase is refused. The Idempotency-Key makes a retry safe, as the same key answers with the same deal and buys nothing more. You need a trade link first.",
        "operationId": "buy-lot",
        "parameters": [
          {
            "description": "The lot's id.",
            "example": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id лота."
          },
          {
            "description": "Any unique string for this purchase. Use a new one for each lot, and the same one when you retry.",
            "example": "8f2c1d6e-4b7a-4e19-a3d5-6c0b9e27f114",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Любая уникальная строка для этой покупки. Для каждого лота новая, при повторе та же."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "price_cents": 3250
              },
              "schema": {
                "$ref": "#/components/schemas/PriceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                  "number": "",
                  "role": "buyer",
                  "status": "paid",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "price_cents": 3250,
                  "fee_cents": 49,
                  "group": "b7e41c09d2a6",
                  "actions": [],
                  "paid_at": "2026-11-02T09:41:17Z",
                  "deadline_at": "2026-11-02T21:41:17Z",
                  "buyer_cancels_at": "2026-11-02T10:11:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            },
            "description": "Done"
          },
          "402": {
            "content": {
              "application/json": {
                "examples": {
                  "not_enough_money": {
                    "summary": "The balance doesn't cover the price.",
                    "value": {
                      "code": "not_enough_money"
                    },
                    "x-ru": "На балансе не хватает денег."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Payment Required"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "lot_gone": {
                    "summary": "The lot sold or was taken down.",
                    "value": {
                      "code": "lot_gone"
                    },
                    "x-ru": "Лот продан или снят."
                  },
                  "no_trade_url": {
                    "summary": "Set your trade link first.",
                    "value": {
                      "code": "no_trade_url"
                    },
                    "x-ru": "Сначала укажите трейд-ссылку."
                  },
                  "own_lot": {
                    "summary": "This is your own lot.",
                    "value": {
                      "code": "own_lot"
                    },
                    "x-ru": "Это ваш собственный лот."
                  },
                  "price_changed": {
                    "summary": "The seller changed the price. Read the lot and try again.",
                    "value": {
                      "code": "price_changed"
                    },
                    "x-ru": "Продавец сменил цену. Прочитайте лот и попробуйте снова."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Buy a lot",
        "tags": [
          "Deals"
        ],
        "x-order": 20,
        "x-ru": {
          "description": "Удерживает цену с баланса и открывает сделку. Передайте цену, которую видели: если продавец её сменил, покупка будет отклонена. Idempotency-Key делает повтор безопасным: тот же ключ вернёт ту же сделку и ничего больше не купит. Сначала нужна трейд-ссылка.",
          "summary": "Купить лот"
        }
      }
    },
    "/lots/{id}/description": {
      "put": {
        "description": "Sets the line the market shows under your lot, up to 32 characters. An empty one takes it away. It is plain text: no links.",
        "operationId": "describe-lot",
        "parameters": [
          {
            "description": "The lot's id.",
            "example": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id лота."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": "Crown in the best spot"
              },
              "schema": {
                "$ref": "#/components/schemas/DescriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "lot_gone": {
                    "summary": "The lot sold or was taken down.",
                    "value": {
                      "code": "lot_gone"
                    },
                    "x-ru": "Лот продан или снят."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_description": {
                    "summary": "The description is longer than 32 characters, has more than one line or space at its ends.",
                    "value": {
                      "code": "bad_description"
                    },
                    "x-ru": "Описание длиннее 32 символов, в нём несколько строк или пробелы по краям."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Describe a lot",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 18,
        "x-ru": {
          "description": "Задаёт строку, которую маркет показывает под вашим лотом, до 32 символов. Пустая убирает описание. Это простой текст, без ссылок.",
          "summary": "Описать лот"
        }
      }
    },
    "/lots/{id}/max-discount": {
      "put": {
        "description": "Sets how far below its price, in percent from 0 to 50, your lot takes bargains. 0 takes none. Prices already waiting stay: decline them if you like.",
        "operationId": "discount-lot",
        "parameters": [
          {
            "description": "The lot's id.",
            "example": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id лота."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "max_discount": 15
              },
              "schema": {
                "$ref": "#/components/schemas/DiscountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "lot_gone": {
                    "summary": "The lot sold or was taken down.",
                    "value": {
                      "code": "lot_gone"
                    },
                    "x-ru": "Лот продан или снят."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_discount": {
                    "summary": "The discount is outside 0 to 50 percent.",
                    "value": {
                      "code": "bad_discount"
                    },
                    "x-ru": "Скидка вне диапазона от 0 до 50 процентов."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Set a lot's discount",
        "tags": [
          "Bargains"
        ],
        "x-order": 28,
        "x-ru": {
          "description": "Задаёт, на сколько процентов ниже цены, от 0 до 50, ваш лот принимает торг. 0 значит без торга. Уже предложенные цены остаются: их можно отклонить.",
          "summary": "Задать скидку лота"
        }
      }
    },
    "/market/items": {
      "get": {
        "description": "One card for each market_hash_name, with the number of lots and the lowest price. StatTrak and Souvenir are cards of their own. 60 cards to a page.",
        "operationId": "search-market",
        "parameters": [
          {
            "description": "Words of the skin's name, in any order. A weapon or an exterior code only narrows them down: dual finds Duality, not every Dual Berettas.",
            "example": "redline",
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            },
            "x-ru": "Слова из названия скина в любом порядке. Оружие или код состояния только уточняют: dual найдёт Duality, а не все Dual Berettas."
          },
          {
            "description": "knives, gloves, rifles, pistols, smgs, shotguns, machine_guns, charms, agents or other.",
            "example": "rifles",
            "in": "query",
            "name": "category",
            "schema": {
              "type": "string"
            },
            "x-ru": "knives, gloves, rifles, pistols, smgs, shotguns, machine_guns, charms, agents или other."
          },
          {
            "description": "A weapon by name, such as AK-47.",
            "in": "query",
            "name": "weapon",
            "schema": {
              "type": "string"
            },
            "x-ru": "Оружие по названию, например AK-47."
          },
          {
            "description": "Rarity in Steam's words, such as Classified.",
            "in": "query",
            "name": "rarity",
            "schema": {
              "type": "string"
            },
            "x-ru": "Редкость словами Steam, например Classified."
          },
          {
            "description": "FN, MW, FT, WW or BS.",
            "in": "query",
            "name": "exterior",
            "schema": {
              "type": "string"
            },
            "x-ru": "FN, MW, FT, WW или BS."
          },
          {
            "description": "normal, stattrak or souvenir.",
            "in": "query",
            "name": "quality",
            "schema": {
              "type": "string"
            },
            "x-ru": "normal, stattrak или souvenir."
          },
          {
            "description": "Only items whose lowest price is at least this.",
            "in": "query",
            "name": "min_price_cents",
            "schema": {
              "type": "string"
            },
            "x-ru": "Только предметы с минимальной ценой не ниже этой."
          },
          {
            "description": "Only items whose lowest price is at most this.",
            "in": "query",
            "name": "max_price_cents",
            "schema": {
              "type": "string"
            },
            "x-ru": "Только предметы с минимальной ценой не выше этой."
          },
          {
            "description": "price or price_desc. Without it, the items with the most lots come first.",
            "in": "query",
            "name": "sort",
            "schema": {
              "type": "string"
            },
            "x-ru": "price или price_desc. Без него первыми идут предметы с наибольшим числом лотов."
          },
          {
            "description": "Which page, from 1.",
            "in": "query",
            "name": "page",
            "schema": {
              "type": "string"
            },
            "x-ru": "Номер страницы, начиная с 1."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "items": [
                    {
                      "slug": "ak-47-redline-field-tested",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "skin": "AK-47 | Redline",
                      "category": "rifles",
                      "rarity": "Classified",
                      "exterior": "FT",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "lot_count": 14,
                      "min_price_cents": 3180
                    }
                  ],
                  "total": 1,
                  "page_size": 60
                },
                "schema": {
                  "$ref": "#/components/schemas/MarketPage"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Search the market",
        "tags": [
          "Market"
        ],
        "x-order": 5,
        "x-ru": {
          "description": "Одна карточка на каждый market_hash_name с числом лотов и минимальной ценой. У StatTrak и Souvenir свои карточки. На странице 60 карточек.",
          "summary": "Искать на маркете"
        }
      }
    },
    "/market/items/{slug}": {
      "get": {
        "description": "One card with its float range and the same skin in other exteriors and qualities. Answers 404 for a slug nobody knows.",
        "operationId": "get-item",
        "parameters": [
          {
            "description": "The item's slug, from a market card.",
            "example": "ak-47-redline-field-tested",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Slug предмета из карточки маркета."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "slug": "ak-47-redline-field-tested",
                  "name": "AK-47 | Redline (Field-Tested)",
                  "skin": "AK-47 | Redline",
                  "category": "rifles",
                  "rarity": "Classified",
                  "exterior": "FT",
                  "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                  "lot_count": 14,
                  "min_price_cents": 3180,
                  "min_float": 0.1,
                  "max_float": 0.7,
                  "variants": [
                    {
                      "slug": "ak-47-redline-minimal-wear",
                      "name": "AK-47 | Redline (Minimal Wear)",
                      "skin": "AK-47 | Redline",
                      "category": "rifles",
                      "rarity": "Classified",
                      "exterior": "MW",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "lot_count": 6,
                      "min_price_cents": 3180
                    },
                    {
                      "slug": "ak-47-redline-field-tested",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "skin": "AK-47 | Redline",
                      "category": "rifles",
                      "rarity": "Classified",
                      "exterior": "FT",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "lot_count": 14,
                      "min_price_cents": 3180
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/CatalogItem"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get an item",
        "tags": [
          "Market"
        ],
        "x-order": 7,
        "x-ru": {
          "description": "Одна карточка с диапазоном флота и тем же скином в других состояниях и качествах. На неизвестный slug ответ 404.",
          "summary": "Получить предмет"
        }
      }
    },
    "/market/items/{slug}/auto-buys": {
      "get": {
        "description": "The order book of an item: what its auto-buys wait for at each price, the highest first, up to 10 prices. Their filters aren't shown, so an auto-buy at a price may take only some lots.",
        "operationId": "get-demand",
        "parameters": [
          {
            "description": "The item's slug, from a market card.",
            "example": "ak-47-redline-field-tested",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Slug предмета из карточки маркета."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "price_cents": 3300,
                    "quantity": 5
                  },
                  {
                    "price_cents": 3250,
                    "quantity": 12
                  },
                  {
                    "price_cents": 3100,
                    "quantity": 1
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Demand"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get an item's auto-buys",
        "tags": [
          "Auto-buy"
        ],
        "x-order": 22,
        "x-ru": {
          "description": "Стакан предмета: сколько ждут его автопокупки по каждой цене, сначала самые высокие, до 10 цен. Фильтров автопокупок здесь нет, поэтому автопокупка по этой цене может брать не все лоты.",
          "summary": "Получить автопокупки предмета"
        }
      },
      "post": {
        "description": "Waits for lots of the item and buys each as it comes: a new lot, or one whose seller lowered the price, at max_price_cents or less, that passes its filter: a float range, paint seeds, stickers, a charm and a phase, as on CSFloat. A sticker or a charm the catalog does not know is refused. Lots already on sale are left alone: buy them in bulk. Each lot is bought at its own price and becomes a deal of its own, until quantity are bought. No money is held meanwhile: when your balance is short, the lot goes to the next auto-buy and yours keeps waiting. The highest price goes first, then the oldest auto-buy. You can keep 100 waiting at once. The same Idempotency-Key answers with the same auto-buy.",
        "operationId": "create-auto-buy",
        "parameters": [
          {
            "description": "The item's slug, from a market card.",
            "example": "ak-47-redline-field-tested",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Slug предмета из карточки маркета."
          },
          {
            "description": "Any unique string for this auto-buy. Use a new one for each, and the same one when you retry.",
            "example": "5b8d2f17-9c4e-4a63-8e1b-d7f02a6c3945",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Любая уникальная строка для этой автопокупки. Для каждой новая, при повторе та же."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "max_price_cents": 3300,
                "quantity": 5,
                "filter": {
                  "float_max": 0.3,
                  "paint_seeds": [
                    412,
                    661
                  ],
                  "stickers": [
                    {
                      "name": "Crown (Foil)"
                    }
                  ]
                }
              },
              "schema": {
                "$ref": "#/components/schemas/AutoBuyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4d02-8b1c-7e44-a6f2-3c9d5e7b1a08",
                  "item_slug": "ak-47-redline-field-tested",
                  "name": "AK-47 | Redline (Field-Tested)",
                  "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                  "rarity": "Classified",
                  "max_price_cents": 3300,
                  "quantity": 5,
                  "bought": 0,
                  "filter": {
                    "float_max": 0.3,
                    "paint_seeds": [
                      412,
                      661
                    ],
                    "stickers": [
                      {
                        "name": "Crown (Foil)"
                      }
                    ]
                  },
                  "created_at": "2026-11-02T06:41:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/AutoBuy"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "item_unknown": {
                    "summary": "An item isn't in the catalog yet.",
                    "value": {
                      "code": "item_unknown"
                    },
                    "x-ru": "Предмета ещё нет в каталоге."
                  },
                  "no_trade_url": {
                    "summary": "Set your trade link first.",
                    "value": {
                      "code": "no_trade_url"
                    },
                    "x-ru": "Сначала укажите трейд-ссылку."
                  },
                  "too_many_auto_buys": {
                    "summary": "You already have 100 auto-buys waiting. Call one off first.",
                    "value": {
                      "code": "too_many_auto_buys"
                    },
                    "x-ru": "У вас уже ждут 100 автопокупок. Сначала отмените одну."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_lot": {
                    "summary": "The list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.",
                    "value": {
                      "code": "bad_lot"
                    },
                    "x-ru": "Список пуст, цена вне диапазона от 3 до 100000000 центов или фильтр вне своих границ."
                  },
                  "too_many_lots": {
                    "summary": "More than 100 items in one request.",
                    "value": {
                      "code": "too_many_lots"
                    },
                    "x-ru": "Больше 100 предметов в одном запросе."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Create an auto-buy",
        "tags": [
          "Auto-buy"
        ],
        "x-order": 23,
        "x-ru": {
          "description": "Ждёт лоты предмета и покупает каждый, как только он появится: новый лот или лот, которому продавец снизил цену, не дороже max_price_cents и прошедший её фильтр: диапазон флота, паттерны, наклейки, брелок и фаза, как у CSFloat. Наклейку или брелок, которых нет в каталоге, она не примет. Лоты, которые уже в продаже, она не трогает: их можно купить оптом. Каждый лот покупается по своей цене и становится отдельной сделкой, пока не куплено quantity. Деньги в это время не удерживаются: если баланса не хватает, лот достаётся следующей автопокупке, а ваша ждёт дальше. Первой идёт самая высокая цена, затем самая старая автопокупка. Ждать одновременно могут 100. Тот же Idempotency-Key вернёт ту же автопокупку.",
          "summary": "Создать автопокупку"
        }
      }
    },
    "/market/items/{slug}/buy": {
      "post": {
        "description": "Buys up to 100 of an item's cheapest lots in one go, each at its own price and none dearer than max_price_cents, through the same filters as the listings. If fewer match, fewer are bought; if the balance doesn't cover them all, none are. Each lot becomes a deal of its own. The same Idempotency-Key answers with the same deals.",
        "operationId": "buy-items",
        "parameters": [
          {
            "description": "The item's slug, from a market card.",
            "example": "ak-47-redline-field-tested",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Slug предмета из карточки маркета."
          },
          {
            "description": "Any unique string for this purchase. Use a new one for each purchase, and the same one when you retry.",
            "example": "3c7e9a41-5d2b-4f86-b0e3-91a6d4c8f257",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Любая уникальная строка для этой покупки. Для каждой покупки новая, при повторе та же."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "max_price_cents": 3300,
                "quantity": 3,
                "filter": {
                  "stickers": "with"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/BulkBuyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                    "number": "",
                    "role": "buyer",
                    "status": "paid",
                    "item_slug": "ak-47-redline-field-tested",
                    "item": {
                      "asset_id": "54267934219",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "market_hash_name": "AK-47 | Redline (Field-Tested)",
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "kind": "weapon",
                      "rarity": "Classified Rifle",
                      "exterior": "FT",
                      "marketable": true,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "paint_index": 282,
                      "def_index": 7,
                      "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "tags": [
                        {
                          "category": "Type",
                          "name": "Rifle"
                        },
                        {
                          "category": "Weapon",
                          "name": "AK-47"
                        },
                        {
                          "category": "Collection",
                          "name": "The Phoenix Collection"
                        },
                        {
                          "category": "Quality",
                          "name": "Classified Rifle"
                        },
                        {
                          "category": "Exterior",
                          "name": "Field-Tested"
                        }
                      ]
                    },
                    "price_cents": 3250,
                    "fee_cents": 49,
                    "group": "b7e41c09d2a6",
                    "actions": [],
                    "paid_at": "2026-11-02T09:41:17Z",
                    "deadline_at": "2026-11-02T21:41:17Z",
                    "buyer_cancels_at": "2026-11-02T10:11:17Z"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Order"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          },
          "402": {
            "content": {
              "application/json": {
                "examples": {
                  "not_enough_money": {
                    "summary": "The balance doesn't cover the price.",
                    "value": {
                      "code": "not_enough_money"
                    },
                    "x-ru": "На балансе не хватает денег."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Payment Required"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "banned": {
                    "summary": "This account can't start anything new on Rockvel.",
                    "value": {
                      "code": "banned"
                    },
                    "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "no_trade_url": {
                    "summary": "Set your trade link first.",
                    "value": {
                      "code": "no_trade_url"
                    },
                    "x-ru": "Сначала укажите трейд-ссылку."
                  },
                  "none_match": {
                    "summary": "No lot matches the price and filters now.",
                    "value": {
                      "code": "none_match"
                    },
                    "x-ru": "Сейчас ни один лот не подходит под цену и фильтры."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_lot": {
                    "summary": "The list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.",
                    "value": {
                      "code": "bad_lot"
                    },
                    "x-ru": "Список пуст, цена вне диапазона от 3 до 100000000 центов или фильтр вне своих границ."
                  },
                  "too_many_lots": {
                    "summary": "More than 100 items in one request.",
                    "value": {
                      "code": "too_many_lots"
                    },
                    "x-ru": "Больше 100 предметов в одном запросе."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Buy in bulk",
        "tags": [
          "Deals"
        ],
        "x-order": 21,
        "x-ru": {
          "description": "Покупает сразу до 100 самых дешёвых лотов предмета, каждый по своей цене и ни один не дороже max_price_cents, с теми же фильтрами, что у списка лотов. Если подходящих меньше, куплено будет меньше; если баланса не хватает на все, не купится ни один. Каждый лот становится отдельной сделкой. Тот же Idempotency-Key вернёт те же сделки.",
          "summary": "Купить оптом"
        }
      }
    },
    "/market/items/{slug}/lots": {
      "get": {
        "description": "Everything on sale under one item, the cheapest first. 30 lots to a page. A lot describes the item as the seller's inventory did: the protection is the hold and the dispute.",
        "operationId": "list-item-lots",
        "parameters": [
          {
            "description": "The item's slug, from a market card.",
            "example": "ak-47-redline-field-tested",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Slug предмета из карточки маркета."
          },
          {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "in": "query",
            "name": "phase",
            "schema": {
              "type": "string"
            },
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          {
            "description": "with or without.",
            "in": "query",
            "name": "stickers",
            "schema": {
              "type": "string"
            },
            "x-ru": "with или without."
          },
          {
            "description": "The lowest float.",
            "example": "0.15",
            "in": "query",
            "name": "float_min",
            "schema": {
              "type": "string"
            },
            "x-ru": "Минимальный флот."
          },
          {
            "description": "The highest float.",
            "example": "0.30",
            "in": "query",
            "name": "float_max",
            "schema": {
              "type": "string"
            },
            "x-ru": "Максимальный флот."
          },
          {
            "description": "One paint seed.",
            "in": "query",
            "name": "paint_seed",
            "schema": {
              "type": "string"
            },
            "x-ru": "Один paint seed."
          },
          {
            "description": "price_desc, float, float_desc or newest. Without it, the cheapest come first.",
            "in": "query",
            "name": "sort",
            "schema": {
              "type": "string"
            },
            "x-ru": "price_desc, float, float_desc или newest. Без него первыми идут самые дешёвые."
          },
          {
            "description": "Which page, from 1.",
            "in": "query",
            "name": "page",
            "schema": {
              "type": "string"
            },
            "x-ru": "Номер страницы, начиная с 1."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "lots": [
                    {
                      "id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                      "price_cents": 3250,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "max_discount": 10,
                      "seller": {
                        "steam_id": "76561198012345678",
                        "name": "frostbyte",
                        "avatar_url": "https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg"
                      },
                      "listed_at": "2026-11-01T07:41:17Z"
                    }
                  ],
                  "total": 14,
                  "page_size": 30
                },
                "schema": {
                  "$ref": "#/components/schemas/LotPage"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "List an item's lots",
        "tags": [
          "Market"
        ],
        "x-order": 8,
        "x-ru": {
          "description": "Всё, что продаётся под этим предметом, сначала дешёвое. На странице 30 лотов. Лот описывает предмет так, как его показал инвентарь продавца: защита покупателя — холд и спор.",
          "summary": "Получить лоты предмета"
        }
      }
    },
    "/market/items/{slug}/quote": {
      "get": {
        "description": "What a bulk purchase would buy now, with the filters of the listings: the prices of the cheapest lots at max_price_cents or less, up to 100 of them, cheapest first. Your own lots are left out. lowest_cents and highest_cents span every lot the filters let through, at any price.",
        "operationId": "quote-item",
        "parameters": [
          {
            "description": "The item's slug, from a market card.",
            "example": "ak-47-redline-field-tested",
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Slug предмета из карточки маркета."
          },
          {
            "description": "The most one lot may cost.",
            "example": "3300",
            "in": "query",
            "name": "max_price_cents",
            "schema": {
              "type": "string"
            },
            "x-ru": "Сколько самое большее может стоить один лот."
          },
          {
            "description": "The phase of a Doppler or Gamma Doppler.",
            "in": "query",
            "name": "phase",
            "schema": {
              "type": "string"
            },
            "x-ru": "Фаза Doppler или Gamma Doppler."
          },
          {
            "description": "with or without.",
            "in": "query",
            "name": "stickers",
            "schema": {
              "type": "string"
            },
            "x-ru": "with или without."
          },
          {
            "description": "The lowest float.",
            "in": "query",
            "name": "float_min",
            "schema": {
              "type": "string"
            },
            "x-ru": "Минимальный флот."
          },
          {
            "description": "The highest float.",
            "in": "query",
            "name": "float_max",
            "schema": {
              "type": "string"
            },
            "x-ru": "Максимальный флот."
          },
          {
            "description": "One paint seed.",
            "in": "query",
            "name": "paint_seed",
            "schema": {
              "type": "string"
            },
            "x-ru": "Один paint seed."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "prices_cents": [
                    3180,
                    3250,
                    3250
                  ],
                  "more": false,
                  "lowest_cents": 3180,
                  "highest_cents": 4900
                },
                "schema": {
                  "$ref": "#/components/schemas/Quote"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Quote a bulk purchase",
        "tags": [
          "Market"
        ],
        "x-order": 9,
        "x-ru": {
          "description": "Что купила бы покупка оптом сейчас, с фильтрами списка лотов: цены самых дешёвых лотов не дороже max_price_cents, до 100 штук, сначала дешёвые. Ваши лоты не учитываются. lowest_cents и highest_cents охватывают все лоты, прошедшие фильтры, при любой цене.",
          "summary": "Оценить покупку оптом"
        }
      }
    },
    "/market/suggestions": {
      "get": {
        "description": "Up to 8 cards for a search box, one for each skin, so one rifle's exteriors don't fill the list.",
        "operationId": "suggest-items",
        "parameters": [
          {
            "description": "Words of the skin's name.",
            "example": "redline",
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            },
            "x-ru": "Слова из названия скина."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "slug": "ak-47-redline-field-tested",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "skin": "AK-47 | Redline",
                    "category": "rifles",
                    "rarity": "Classified",
                    "exterior": "FT",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "lot_count": 14,
                    "min_price_cents": 3180
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MarketItem"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Suggest items",
        "tags": [
          "Market"
        ],
        "x-order": 6,
        "x-ru": {
          "description": "До 8 карточек для строки поиска, по одной на скин, чтобы состояния одной винтовки не заняли весь список.",
          "summary": "Подсказать предметы"
        }
      }
    },
    "/me": {
      "get": {
        "description": "Who the key belongs to, and their balance. A good first request: it shows the key works.",
        "operationId": "get-account",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "user": {
                    "steam_id": "76561198087654321",
                    "name": "bluegem",
                    "avatar_url": "https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg",
                    "trade_url": "https://steamcommunity.com/tradeoffer/new/?partner=127388593\u0026token=kZ3xQ9aB"
                  },
                  "balance": {
                    "available_cents": 125000,
                    "held_cents": 3250
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Me"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get your account",
        "tags": [
          "Account"
        ],
        "x-order": 0,
        "x-ru": {
          "description": "Кому принадлежит ключ и какой у него баланс. Хороший первый запрос: он показывает, что ключ работает.",
          "summary": "Получить аккаунт"
        }
      }
    },
    "/me/max-discount": {
      "get": {
        "description": "How far below the price, in percent, the lots you list next take bargains. 0 takes none. Each lot keeps the discount it was listed with.",
        "operationId": "get-discount",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "max_discount": 10
                },
                "schema": {
                  "$ref": "#/components/schemas/DiscountRequest"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get your default discount",
        "tags": [
          "Bargains"
        ],
        "x-order": 26,
        "x-ru": {
          "description": "На сколько процентов ниже цены лоты, которые вы выставите дальше, принимают торг. 0 значит без торга. Каждый лот сохраняет скидку, с которой выставлен.",
          "summary": "Получить скидку по умолчанию"
        }
      },
      "put": {
        "description": "Sets how far below the price, in percent from 0 to 50, the lots you list from now on take bargains. 0 takes none. Lots already on sale keep theirs: change each on its own.",
        "operationId": "set-discount",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "max_discount": 10
              },
              "schema": {
                "$ref": "#/components/schemas/DiscountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "max_discount": 10
                },
                "schema": {
                  "$ref": "#/components/schemas/DiscountRequest"
                }
              }
            },
            "description": "Done"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_discount": {
                    "summary": "The discount is outside 0 to 50 percent.",
                    "value": {
                      "code": "bad_discount"
                    },
                    "x-ru": "Скидка вне диапазона от 0 до 50 процентов."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Set your default discount",
        "tags": [
          "Bargains"
        ],
        "x-order": 27,
        "x-ru": {
          "description": "Задаёт, на сколько процентов ниже цены, от 0 до 50, лоты, которые вы выставите с этого момента, принимают торг. 0 значит без торга. Лоты в продаже сохраняют свою скидку: её меняют у каждого отдельно.",
          "summary": "Задать скидку по умолчанию"
        }
      }
    },
    "/me/stats": {
      "get": {
        "description": "Adds up your settled deals. A sale counts at what you got for it after the fee, so the net is the money that really moved.",
        "operationId": "get-stats",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "sales_count": 24,
                  "sales_cents": 187450,
                  "purchases_count": 7,
                  "purchases_cents": 41200,
                  "net_cents": 146250
                },
                "schema": {
                  "$ref": "#/components/schemas/Stats"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get your totals",
        "tags": [
          "Account"
        ],
        "x-order": 1,
        "x-ru": {
          "description": "Итоги завершённых сделок. Продажа считается по сумме после комиссии, поэтому чистый итог равен деньгам, которые действительно прошли.",
          "summary": "Получить итоги"
        }
      }
    },
    "/me/trade-url": {
      "put": {
        "description": "Keeps the link sellers send your purchases to. It has to be this account's own link: a typo in someone else's would hand your purchase to a stranger. You can't buy without one.",
        "operationId": "set-trade-link",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "trade_url": "https://steamcommunity.com/tradeoffer/new/?partner=127388593\u0026token=kZ3xQ9aB"
              },
              "schema": {
                "$ref": "#/components/schemas/TradeURLRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Done"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "bad_trade_url": {
                    "summary": "This isn't the trade link of this Steam account.",
                    "value": {
                      "code": "bad_trade_url"
                    },
                    "x-ru": "Это не трейд-ссылка этого аккаунта Steam."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Set your trade link",
        "tags": [
          "Account"
        ],
        "x-order": 2,
        "x-ru": {
          "description": "Сохраняет ссылку, по которой продавцы отправляют ваши покупки. Ссылка должна быть от этого аккаунта: опечатка в чужой отдала бы покупку постороннему. Без неё покупать нельзя.",
          "summary": "Указать трейд-ссылку"
        }
      }
    },
    "/notifications": {
      "get": {
        "description": "The newest news of your deals, where you have to act or your money moves, and how many you haven't seen. Where they go besides is set on the site.",
        "operationId": "list-notices",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "notices": [
                    {
                      "id": "019a4c3b-91d2-7e08-a6f4-3c1b7d0e9a25",
                      "kind": "sent",
                      "order_id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                      "role": "buyer",
                      "item_name": "AK-47 | Redline (Field-Tested)",
                      "items": 0,
                      "amount_cents": 3250,
                      "created_at": "2026-11-02T09:47:17Z",
                      "read": false
                    }
                  ],
                  "unread": 1
                },
                "schema": {
                  "$ref": "#/components/schemas/Notices"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "List your notices",
        "tags": [
          "Deals"
        ],
        "x-order": 39,
        "x-ru": {
          "description": "Последние новости ваших сделок, где нужно действовать или двигаются деньги, и сколько из них вы не видели. Куда ещё они приходят, настраивается на сайте.",
          "summary": "Получить уведомления"
        }
      }
    },
    "/notifications/read": {
      "post": {
        "description": "Marks all your notices as seen, so unread drops to 0.",
        "operationId": "read-notices",
        "responses": {
          "204": {
            "description": "Done"
          }
        },
        "summary": "Mark notices as seen",
        "tags": [
          "Deals"
        ],
        "x-order": 40,
        "x-ru": {
          "description": "Отмечает все уведомления просмотренными, и unread становится 0.",
          "summary": "Отметить уведомления прочитанными"
        }
      }
    },
    "/offers": {
      "post": {
        "description": "Says which Steam offer carries up to 100 sales to one buyer, right after making it and before confirming it. Steam keeps only 5 open offers to one person, so send their items together. It is written on all the deals or, if one has closed meanwhile, on none: then cancel that offer on Steam.",
        "operationId": "record-shared-offer",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "offer_id": "8412653097",
                "order_ids": [
                  "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03"
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/SharedOfferRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "ids": [
                    "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03"
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/OrderIDs"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "not_your_order": {
                    "summary": "This deal isn't yours, or this step belongs to the other side.",
                    "value": {
                      "code": "not_your_order"
                    },
                    "x-ru": "Сделка не ваша, или этот шаг принадлежит другой стороне."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_order": {
                    "summary": "There is no such deal.",
                    "value": {
                      "code": "no_such_order"
                    },
                    "x-ru": "Такой сделки нет."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "order_moved_on": {
                    "summary": "The deal moved on and this step no longer applies. Read it again.",
                    "value": {
                      "code": "order_moved_on"
                    },
                    "x-ru": "Сделка ушла дальше, и этот шаг уже невозможен. Прочитайте её заново."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "one_buyer_per_offer": {
                    "summary": "The deals of one offer must all go to one buyer.",
                    "value": {
                      "code": "one_buyer_per_offer"
                    },
                    "x-ru": "Все сделки одного оффера должны идти одному покупателю."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Record one offer for many deals",
        "tags": [
          "Steam trades"
        ],
        "x-order": 43,
        "x-ru": {
          "description": "Сообщает, в каком оффере Steam едут до 100 продаж одному покупателю: сразу после создания и до подтверждения. Steam держит не больше 5 открытых офферов одному человеку, поэтому его предметы отправляют вместе. Оффер записывается на все сделки или, если одна за это время закрылась, ни на одну: тогда этот оффер надо отменить в Steam.",
          "summary": "Записать один оффер на несколько сделок"
        }
      }
    },
    "/orders": {
      "get": {
        "description": "All your deals under way, on either side, and then the newest finished ones. more says older ones are left: ask for them with finished.",
        "operationId": "list-deals",
        "parameters": [
          {
            "description": "How many finished deals to show: 50 unless you ask, 1000 at most.",
            "in": "query",
            "name": "finished",
            "schema": {
              "type": "string"
            },
            "x-ru": "Сколько завершённых сделок показать: 50 по умолчанию, не больше 1000."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "orders": [
                    {
                      "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                      "number": "",
                      "role": "buyer",
                      "status": "protected",
                      "item_slug": "ak-47-redline-field-tested",
                      "item": {
                        "asset_id": "54267934219",
                        "name": "AK-47 | Redline (Field-Tested)",
                        "market_hash_name": "AK-47 | Redline (Field-Tested)",
                        "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                        "kind": "weapon",
                        "rarity": "Classified Rifle",
                        "exterior": "FT",
                        "marketable": true,
                        "float": 0.2613,
                        "paint_seed": 412,
                        "paint_index": 282,
                        "def_index": 7,
                        "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                        "stickers": [
                          {
                            "id": 1693,
                            "name": "Sticker | Crown (Foil)",
                            "slot": 1,
                            "wear": 0.08
                          }
                        ],
                        "tags": [
                          {
                            "category": "Type",
                            "name": "Rifle"
                          },
                          {
                            "category": "Weapon",
                            "name": "AK-47"
                          },
                          {
                            "category": "Collection",
                            "name": "The Phoenix Collection"
                          },
                          {
                            "category": "Quality",
                            "name": "Classified Rifle"
                          },
                          {
                            "category": "Exterior",
                            "name": "Field-Tested"
                          }
                        ]
                      },
                      "price_cents": 3250,
                      "fee_cents": 49,
                      "offer_id": "8412653097",
                      "group": "8412653097",
                      "actions": [
                        "dispute"
                      ],
                      "paid_at": "2026-11-02T09:41:17Z",
                      "sent_at": "2026-11-02T09:47:17Z",
                      "accepted_at": "2026-11-02T10:00:17Z",
                      "deadline_at": "2026-11-10T10:00:17Z"
                    }
                  ],
                  "more": false
                },
                "schema": {
                  "$ref": "#/components/schemas/Deals"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "List your deals",
        "tags": [
          "Deals"
        ],
        "x-order": 35,
        "x-ru": {
          "description": "Все ваши сделки в работе, с обеих сторон, а затем последние завершённые. more означает, что остались более старые: запросите их через finished.",
          "summary": "Получить сделки"
        }
      }
    },
    "/orders/cancel": {
      "post": {
        "description": "Calls off up to 100 of your deals at once, those of them that can be called off now, as cancel-deal would. The answer names them. If none could, the refusal says why the first could not.",
        "operationId": "cancel-deals",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "ids": [
                  "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03"
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/OrderIDs"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "ids": [
                    "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03"
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/OrderIDs"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "not_your_order": {
                    "summary": "This deal isn't yours, or this step belongs to the other side.",
                    "value": {
                      "code": "not_your_order"
                    },
                    "x-ru": "Сделка не ваша, или этот шаг принадлежит другой стороне."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_order": {
                    "summary": "There is no such deal.",
                    "value": {
                      "code": "no_such_order"
                    },
                    "x-ru": "Такой сделки нет."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "order_moved_on": {
                    "summary": "The deal moved on and this step no longer applies. Read it again.",
                    "value": {
                      "code": "order_moved_on"
                    },
                    "x-ru": "Сделка ушла дальше, и этот шаг уже невозможен. Прочитайте её заново."
                  },
                  "too_early": {
                    "summary": "The seller still has time: wait for buyer_cancels_at.",
                    "value": {
                      "code": "too_early"
                    },
                    "x-ru": "У продавца ещё есть время: дождитесь buyer_cancels_at."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "too_many_lots": {
                    "summary": "More than 100 items in one request.",
                    "value": {
                      "code": "too_many_lots"
                    },
                    "x-ru": "Больше 100 предметов в одном запросе."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Unprocessable Entity"
          }
        },
        "summary": "Cancel deals",
        "tags": [
          "Deals"
        ],
        "x-order": 37,
        "x-ru": {
          "description": "Отменяет до 100 ваших сделок сразу, те из них, что можно отменить сейчас, как это сделал бы cancel-deal. Ответ называет отменённые. Если не отменилась ни одна, отказ объясняет, почему не отменилась первая.",
          "summary": "Отменить сделки"
        }
      }
    },
    "/orders/{id}/cancel": {
      "post": {
        "description": "Calls a deal off while no trade offer exists, and the buyer gets the money back. The seller can do it at any moment, the buyer from buyer_cancels_at, 30 minutes after the purchase. Cancelling twice is safe.",
        "operationId": "cancel-deal",
        "parameters": [
          {
            "description": "The deal's id.",
            "example": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id сделки."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                  "number": "",
                  "role": "buyer",
                  "status": "cancelled",
                  "reason": "buyer_cancelled",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "price_cents": 3250,
                  "fee_cents": 49,
                  "group": "b7e41c09d2a6",
                  "actions": [],
                  "paid_at": "2026-11-02T09:41:17Z",
                  "finished_at": "2026-11-02T10:28:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "not_your_order": {
                    "summary": "This deal isn't yours, or this step belongs to the other side.",
                    "value": {
                      "code": "not_your_order"
                    },
                    "x-ru": "Сделка не ваша, или этот шаг принадлежит другой стороне."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_order": {
                    "summary": "There is no such deal.",
                    "value": {
                      "code": "no_such_order"
                    },
                    "x-ru": "Такой сделки нет."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "order_moved_on": {
                    "summary": "The deal moved on and this step no longer applies. Read it again.",
                    "value": {
                      "code": "order_moved_on"
                    },
                    "x-ru": "Сделка ушла дальше, и этот шаг уже невозможен. Прочитайте её заново."
                  },
                  "too_early": {
                    "summary": "The seller still has time: wait for buyer_cancels_at.",
                    "value": {
                      "code": "too_early"
                    },
                    "x-ru": "У продавца ещё есть время: дождитесь buyer_cancels_at."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Cancel a deal",
        "tags": [
          "Deals"
        ],
        "x-order": 36,
        "x-ru": {
          "description": "Отменяет сделку, пока оффера нет, и возвращает деньги покупателю. Продавец может сделать это в любой момент, покупатель — с buyer_cancels_at, через 30 минут после покупки. Повторная отмена безопасна.",
          "summary": "Отменить сделку"
        }
      }
    },
    "/orders/{id}/dispute": {
      "post": {
        "description": "For the buyer during the hold: the item is not what the lot said, or was taken back. No money moves until a person has looked. Opening it twice is safe.",
        "operationId": "dispute-deal",
        "parameters": [
          {
            "description": "The deal's id.",
            "example": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id сделки."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                  "number": "",
                  "role": "buyer",
                  "status": "disputed",
                  "reason": "buyer_dispute",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "price_cents": 3250,
                  "fee_cents": 49,
                  "offer_id": "8412653097",
                  "group": "8412653097",
                  "actions": [],
                  "paid_at": "2026-11-02T09:41:17Z",
                  "sent_at": "2026-11-02T09:47:17Z",
                  "accepted_at": "2026-11-02T10:00:17Z",
                  "deadline_at": "2026-11-10T10:00:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "not_your_order": {
                    "summary": "This deal isn't yours, or this step belongs to the other side.",
                    "value": {
                      "code": "not_your_order"
                    },
                    "x-ru": "Сделка не ваша, или этот шаг принадлежит другой стороне."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_order": {
                    "summary": "There is no such deal.",
                    "value": {
                      "code": "no_such_order"
                    },
                    "x-ru": "Такой сделки нет."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "order_moved_on": {
                    "summary": "The deal moved on and this step no longer applies. Read it again.",
                    "value": {
                      "code": "order_moved_on"
                    },
                    "x-ru": "Сделка ушла дальше, и этот шаг уже невозможен. Прочитайте её заново."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Open a dispute",
        "tags": [
          "Deals"
        ],
        "x-order": 38,
        "x-ru": {
          "description": "Для покупателя во время холда: предмет не соответствует лоту или его забрали обратно. Деньги не двигаются, пока не посмотрит человек. Повторное открытие безопасно.",
          "summary": "Открыть спор"
        }
      }
    },
    "/orders/{id}/offer": {
      "post": {
        "description": "Says which Steam offer you made for a deal, right after making it and before confirming it in Steam Guard. A closed deal answers order_moved_on: cancel that offer on Steam. Sending the same id again is safe.",
        "operationId": "record-offer",
        "parameters": [
          {
            "description": "The deal's id.",
            "example": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "Id сделки."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "offer_id": "8412653097"
              },
              "schema": {
                "$ref": "#/components/schemas/OfferRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                  "number": "",
                  "role": "seller",
                  "status": "paid",
                  "item_slug": "ak-47-redline-field-tested",
                  "item": {
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "market_hash_name": "AK-47 | Redline (Field-Tested)",
                    "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                    "kind": "weapon",
                    "rarity": "Classified Rifle",
                    "exterior": "FT",
                    "marketable": true,
                    "float": 0.2613,
                    "paint_seed": 412,
                    "paint_index": 282,
                    "def_index": 7,
                    "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                    "stickers": [
                      {
                        "id": 1693,
                        "name": "Sticker | Crown (Foil)",
                        "slot": 1,
                        "wear": 0.08
                      }
                    ],
                    "tags": [
                      {
                        "category": "Type",
                        "name": "Rifle"
                      },
                      {
                        "category": "Weapon",
                        "name": "AK-47"
                      },
                      {
                        "category": "Collection",
                        "name": "The Phoenix Collection"
                      },
                      {
                        "category": "Quality",
                        "name": "Classified Rifle"
                      },
                      {
                        "category": "Exterior",
                        "name": "Field-Tested"
                      }
                    ]
                  },
                  "price_cents": 3250,
                  "fee_cents": 49,
                  "offer_id": "8412653097",
                  "group": "8412653097",
                  "actions": [],
                  "paid_at": "2026-11-02T09:41:17Z",
                  "deadline_at": "2026-11-17T09:45:17Z"
                },
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "not_your_order": {
                    "summary": "This deal isn't yours, or this step belongs to the other side.",
                    "value": {
                      "code": "not_your_order"
                    },
                    "x-ru": "Сделка не ваша, или этот шаг принадлежит другой стороне."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "no_such_order": {
                    "summary": "There is no such deal.",
                    "value": {
                      "code": "no_such_order"
                    },
                    "x-ru": "Такой сделки нет."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "examples": {
                  "order_moved_on": {
                    "summary": "The deal moved on and this step no longer applies. Read it again.",
                    "value": {
                      "code": "order_moved_on"
                    },
                    "x-ru": "Сделка ушла дальше, и этот шаг уже невозможен. Прочитайте её заново."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Record an offer",
        "tags": [
          "Steam trades"
        ],
        "x-order": 42,
        "x-ru": {
          "description": "Сообщает, какой оффер вы создали в Steam для сделки: сразу после создания и до подтверждения в Steam Guard. На закрытую сделку ответ order_moved_on, и этот оффер надо отменить в Steam. Повтор того же id безопасен.",
          "summary": "Записать оффер"
        }
      }
    },
    "/stall": {
      "get": {
        "description": "Your lots on sale, the newest first, whether your stall is open and whether it is paused. 60 lots to a page. Lots on a paused stall are here too.",
        "operationId": "get-stall",
        "parameters": [
          {
            "description": "Words of the items' names.",
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            },
            "x-ru": "Слова из названий предметов."
          },
          {
            "description": "Only items of this kind, such as weapon or sticker.",
            "in": "query",
            "name": "kind",
            "schema": {
              "type": "string"
            },
            "x-ru": "Только предметы этого вида, например weapon или sticker."
          },
          {
            "description": "price, price_desc, float, float_desc or name. Without it, the newest come first.",
            "in": "query",
            "name": "sort",
            "schema": {
              "type": "string"
            },
            "x-ru": "price, price_desc, float, float_desc или name. Без него первыми идут новые."
          },
          {
            "description": "Which page, from 1.",
            "in": "query",
            "name": "page",
            "schema": {
              "type": "string"
            },
            "x-ru": "Номер страницы, начиная с 1."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "public": true,
                  "paused": false,
                  "lots": [
                    {
                      "id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                      "asset_id": "54267934219",
                      "item_slug": "ak-47-redline-field-tested",
                      "item": {
                        "asset_id": "54267934219",
                        "name": "AK-47 | Redline (Field-Tested)",
                        "market_hash_name": "AK-47 | Redline (Field-Tested)",
                        "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                        "kind": "weapon",
                        "rarity": "Classified Rifle",
                        "exterior": "FT",
                        "marketable": true,
                        "float": 0.2613,
                        "paint_seed": 412,
                        "paint_index": 282,
                        "def_index": 7,
                        "inspect_link": "steam://run/730//+csgo_econ_action_preview%2006168DEAFD92CC071E0E26F0072E0536023EE1",
                        "stickers": [
                          {
                            "id": 1693,
                            "name": "Sticker | Crown (Foil)",
                            "slot": 1,
                            "wear": 0.08
                          }
                        ],
                        "tags": [
                          {
                            "category": "Type",
                            "name": "Rifle"
                          },
                          {
                            "category": "Weapon",
                            "name": "AK-47"
                          },
                          {
                            "category": "Collection",
                            "name": "The Phoenix Collection"
                          },
                          {
                            "category": "Quality",
                            "name": "Classified Rifle"
                          },
                          {
                            "category": "Exterior",
                            "name": "Field-Tested"
                          }
                        ],
                        "reference": {
                          "price_cents": 3240,
                          "offers": 213
                        }
                      },
                      "price_cents": 3250,
                      "max_discount": 10,
                      "listed_at": "2026-11-01T07:41:17Z"
                    }
                  ],
                  "kinds": {
                    "weapon": 1
                  },
                  "total": 1,
                  "page_size": 60
                },
                "schema": {
                  "$ref": "#/components/schemas/Stall"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get your stall",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 11,
        "x-ru": {
          "description": "Ваши лоты в продаже, сначала новые, открыта ли витрина и стоит ли она на паузе. На странице 60 лотов. Лоты витрины на паузе здесь тоже есть.",
          "summary": "Получить свою витрину"
        }
      },
      "put": {
        "description": "A closed stall takes your name, avatar and link off your lots. The lots stay on the market.",
        "operationId": "set-stall",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "public": false
              },
              "schema": {
                "$ref": "#/components/schemas/StallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Open or close your stall",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 12,
        "x-ru": {
          "description": "Закрытая витрина убирает с ваших лотов ник, аватар и ссылку. Сами лоты остаются на маркете.",
          "summary": "Открыть или закрыть витрину"
        }
      }
    },
    "/stall/pause": {
      "put": {
        "description": "A pause takes all your lots off the market, item pages, your public stall and auto-buys, and keeps them listed with their prices and descriptions. Lots you list meanwhile wait too. Bargains on your lots end, and deals already paid go on as usual. Ending the pause brings every lot back as a new one. While Rockvel has suspended your stall, the pause can't end.",
        "operationId": "pause-stall",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "paused": true
              },
              "schema": {
                "$ref": "#/components/schemas/PauseRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {},
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Done"
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "stall_suspended": {
                    "summary": "Rockvel has suspended your stall, and only Rockvel can lift it.",
                    "value": {
                      "code": "stall_suspended"
                    },
                    "x-ru": "Rockvel приостановил вашу витрину, и снять это может только Rockvel."
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Refusal"
                }
              }
            },
            "description": "Forbidden"
          }
        },
        "summary": "Pause your stall",
        "tags": [
          "Stall and lots"
        ],
        "x-order": 13,
        "x-ru": {
          "description": "Пауза убирает все ваши лоты с маркета, страниц предметов, публичной витрины и из автопокупок, а сами лоты остаются выставленными с ценами и описаниями. Лоты, выставленные на паузе, тоже ждут. Торг по вашим лотам гаснет, а уже оплаченные сделки идут как обычно. Конец паузы возвращает каждый лот как новый. Пока витрину приостановил Rockvel, паузу снять нельзя.",
          "summary": "Поставить витрину на паузу"
        }
      }
    },
    "/stalls/{steam_id}": {
      "get": {
        "description": "Everything one seller has on sale. 30 lots to a page. A closed stall looks the same as an empty one. A paused one shows its seller with paused and no lots.",
        "operationId": "get-seller-stall",
        "parameters": [
          {
            "description": "The seller's SteamID64.",
            "example": "76561198012345678",
            "in": "path",
            "name": "steam_id",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-ru": "SteamID64 продавца."
          },
          {
            "description": "Which page, from 1.",
            "in": "query",
            "name": "page",
            "schema": {
              "type": "string"
            },
            "x-ru": "Номер страницы, начиная с 1."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "seller": {
                    "steam_id": "76561198012345678",
                    "name": "frostbyte",
                    "avatar_url": "https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg"
                  },
                  "lots": [
                    {
                      "id": "019a4b9d-2e17-7a58-b1c6-0d3f6a9e4b12",
                      "price_cents": 3250,
                      "float": 0.2613,
                      "paint_seed": 412,
                      "image_url": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60noTyLwlcK3wiFO0POlPPNSI_-RHGavzOtyufRkASq2lkxx4W-HnNyqJC3FZwYoC5p0Q7FfthW6wdWxPu-371Pdit5HnyXgznQeHYY5wyA",
                      "stickers": [
                        {
                          "id": 1693,
                          "name": "Sticker | Crown (Foil)",
                          "slot": 1,
                          "wear": 0.08
                        }
                      ],
                      "max_discount": 10,
                      "seller": {
                        "steam_id": "76561198012345678",
                        "name": "frostbyte",
                        "avatar_url": "https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg"
                      },
                      "listed_at": "2026-11-01T07:41:17Z",
                      "item_slug": "ak-47-redline-field-tested",
                      "name": "AK-47 | Redline (Field-Tested)",
                      "rarity": "Classified",
                      "exterior": "FT"
                    }
                  ],
                  "total": 1,
                  "page_size": 30
                },
                "schema": {
                  "$ref": "#/components/schemas/StallPage"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Get a seller's stall",
        "tags": [
          "Market"
        ],
        "x-order": 10,
        "x-ru": {
          "description": "Всё, что продаёт один продавец. На странице 30 лотов. Закрытая витрина выглядит так же, как пустая. Витрина на паузе показывает продавца с paused и без лотов.",
          "summary": "Получить витрину продавца"
        }
      }
    },
    "/trades/open": {
      "get": {
        "description": "Your sales under way and those that ended in the last 14 days, with what you need on Steam: the item, the buyer and their trade link. A trade can be reversed late, so keep reporting on these.",
        "operationId": "list-open-trades",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "id": "019a4c1e-6f3a-7c21-9d40-5b2e8f1a7c03",
                    "number": "",
                    "status": "paid",
                    "asset_id": "54267934219",
                    "name": "AK-47 | Redline (Field-Tested)",
                    "buyer_steam_id": "76561198087654321",
                    "trade_url": "https://steamcommunity.com/tradeoffer/new/?partner=127388593\u0026token=kZ3xQ9aB",
                    "paid_at": "2026-11-02T09:41:17Z",
                    "actions": [
                      "send",
                      "cancel"
                    ]
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TradeOrder"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "List sales to follow",
        "tags": [
          "Steam trades"
        ],
        "x-order": 41,
        "x-ru": {
          "description": "Ваши продажи в работе и завершённые за последние 14 дней, со всем нужным для Steam: предмет, покупатель и его трейд-ссылка. Обмен можно откатить и поздно, поэтому продолжайте отчитываться о них.",
          "summary": "Получить продажи для обмена"
        }
      }
    },
    "/trades/reports": {
      "post": {
        "description": "Says what Steam shows about your offers and trades, in Steam's own numbers. A deal moves only on these reports, so send one every three minutes while you have sales to follow, even an empty one. A report can only speak about your own sales.",
        "operationId": "send-report",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "offers": [
                  {
                    "offer_id": "8412653097",
                    "state": 3,
                    "given_asset_ids": [
                      "54267934219"
                    ],
                    "other_steam_id": "76561198087654321",
                    "time_created": 1793612717
                  }
                ],
                "trades": [
                  {
                    "trade_id": "702419358761203845",
                    "status": 3,
                    "given_asset_ids": [
                      "54267934219"
                    ],
                    "other_steam_id": "76561198087654321",
                    "time_init": 1793613617
                  }
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/SellerReport"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Done"
          }
        },
        "summary": "Send a trade report",
        "tags": [
          "Steam trades"
        ],
        "x-order": 44,
        "x-ru": {
          "description": "Сообщает, что Steam показывает о ваших офферах и обменах, в числах самого Steam. Сделка движется только по этим отчётам, поэтому отправляйте их каждые три минуты, пока есть продажи, даже пустые. Отчёт говорит только о ваших продажах.",
          "summary": "Отправить отчёт об обменах"
        }
      }
    },
    "/trades/watch": {
      "get": {
        "description": "Whether your reports are reaching Rockvel. silent turns on after 10 minutes without one.",
        "operationId": "get-watch",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "reported_at": "2026-11-02T09:44:17Z",
                  "silent": false
                },
                "schema": {
                  "$ref": "#/components/schemas/Watch"
                }
              }
            },
            "description": "Done"
          }
        },
        "summary": "Check your reports",
        "tags": [
          "Steam trades"
        ],
        "x-order": 45,
        "x-ru": {
          "description": "Доходят ли ваши отчёты до Rockvel. silent включается после 10 минут без отчёта.",
          "summary": "Проверить отчёты"
        }
      }
    }
  },
  "security": [
    {
      "key": []
    }
  ],
  "servers": [
    {
      "url": "https://api.rockvel.store/v1"
    }
  ],
  "tags": [
    {
      "name": "Account",
      "x-ru": "Аккаунт"
    },
    {
      "name": "Inventory",
      "x-ru": "Инвентарь"
    },
    {
      "name": "Market",
      "x-ru": "Маркет"
    },
    {
      "name": "Stall and lots",
      "x-ru": "Витрина и лоты"
    },
    {
      "name": "Deals",
      "x-ru": "Сделки"
    },
    {
      "name": "Auto-buy",
      "x-ru": "Автопокупка"
    },
    {
      "name": "Bargains",
      "x-ru": "Торг"
    },
    {
      "name": "Steam trades",
      "x-ru": "Обмены в Steam"
    }
  ],
  "x-refusals": {
    "already_listed": {
      "description": "One of the items is already on sale or sold.",
      "status": 409,
      "x-ru": "Один из предметов уже выставлен или продан."
    },
    "already_signed": {
      "description": "The withdrawal is signed already and goes ahead.",
      "status": 409,
      "x-ru": "Вывод уже подписан и уходит."
    },
    "bad_address": {
      "description": "The address is not one of Tron's.",
      "status": 400,
      "x-ru": "Это не адрес Tron."
    },
    "bad_bargain": {
      "description": "The lot takes no bargains, the price isn't below the lot's and within its max_discount, or a counter isn't between the buyer's price and the lot's.",
      "status": 422,
      "x-ru": "Лот не принимает торг, цена не ниже цены лота или не в пределах его max_discount, или встречная цена не между ценой покупателя и ценой лота."
    },
    "bad_description": {
      "description": "The description is longer than 32 characters, has more than one line or space at its ends.",
      "status": 422,
      "x-ru": "Описание длиннее 32 символов, в нём несколько строк или пробелы по краям."
    },
    "bad_discount": {
      "description": "The discount is outside 0 to 50 percent.",
      "status": 422,
      "x-ru": "Скидка вне диапазона от 0 до 50 процентов."
    },
    "bad_image": {
      "description": "A message takes up to 3 screenshots, PNG or JPEG, of up to 8 MB each.",
      "status": 400,
      "x-ru": "К сообщению можно приложить до 3 скриншотов PNG или JPEG, каждый до 8 МБ."
    },
    "bad_lot": {
      "description": "The list is empty, a price is outside 3 to 100000000 cents, or a filter is outside its range.",
      "status": 422,
      "x-ru": "Список пуст, цена вне диапазона от 3 до 100000000 центов или фильтр вне своих границ."
    },
    "bad_ticket": {
      "description": "A ticket needs a topic and a message of up to 2000 characters.",
      "status": 400,
      "x-ru": "У обращения должна быть тема и сообщение до 2000 символов."
    },
    "bad_trade_url": {
      "description": "This isn't the trade link of this Steam account.",
      "status": 422,
      "x-ru": "Это не трейд-ссылка этого аккаунта Steam."
    },
    "banned": {
      "description": "This account can't start anything new on Rockvel.",
      "status": 403,
      "x-ru": "Этот аккаунт не может начинать на Rockvel ничего нового."
    },
    "buyer_cannot_pay": {
      "description": "The buyer no longer has the money for this price, so the bargain ended.",
      "status": 409,
      "x-ru": "У покупателя больше нет денег на эту цену, поэтому торг закончился."
    },
    "item_gone": {
      "description": "An item isn't in your inventory copy. Upload a fresh one and try again.",
      "status": 409,
      "x-ru": "Предмета нет в копии инвентаря. Загрузите свежую и попробуйте снова."
    },
    "item_unknown": {
      "description": "An item isn't in the catalog yet.",
      "status": 409,
      "x-ru": "Предмета ещё нет в каталоге."
    },
    "lot_gone": {
      "description": "The lot sold or was taken down.",
      "status": 409,
      "x-ru": "Лот продан или снят."
    },
    "no_such_auto_buy": {
      "description": "There is no such auto-buy waiting: it bought all it asked for, was called off, or isn't yours.",
      "status": 404,
      "x-ru": "Такой ждущей автопокупки нет: она купила всё, отменена или не ваша."
    },
    "no_such_bargain": {
      "description": "There is no such bargain waiting for your answer: it ended, it is the other side's turn, or it isn't yours.",
      "status": 404,
      "x-ru": "Такого торга, ждущего вашего ответа, нет: он закончился, сейчас очередь другой стороны или он не ваш."
    },
    "no_such_order": {
      "description": "There is no such deal.",
      "status": 404,
      "x-ru": "Такой сделки нет."
    },
    "no_such_ticket": {
      "description": "No such ticket of yours.",
      "status": 404,
      "x-ru": "Такого вашего обращения нет."
    },
    "no_such_withdrawal": {
      "description": "No such withdrawal of yours.",
      "status": 404,
      "x-ru": "Такого вашего вывода нет."
    },
    "no_trade_url": {
      "description": "Set your trade link first.",
      "status": 409,
      "x-ru": "Сначала укажите трейд-ссылку."
    },
    "none_match": {
      "description": "No lot matches the price and filters now.",
      "status": 409,
      "x-ru": "Сейчас ни один лот не подходит под цену и фильтры."
    },
    "not_enough_money": {
      "description": "The balance doesn't cover the price.",
      "status": 402,
      "x-ru": "На балансе не хватает денег."
    },
    "not_refundable": {
      "description": "Your deposits cannot give back this much, or a source would get less than the minimum.",
      "status": 409,
      "x-ru": "Столько депозиты не вернут, или источнику досталось бы меньше минимума."
    },
    "not_your_order": {
      "description": "This deal isn't yours, or this step belongs to the other side.",
      "status": 403,
      "x-ru": "Сделка не ваша, или этот шаг принадлежит другой стороне."
    },
    "one_buyer_per_offer": {
      "description": "The deals of one offer must all go to one buyer.",
      "status": 422,
      "x-ru": "Все сделки одного оффера должны идти одному покупателю."
    },
    "order_moved_on": {
      "description": "The deal moved on and this step no longer applies. Read it again.",
      "status": 409,
      "x-ru": "Сделка ушла дальше, и этот шаг уже невозможен. Прочитайте её заново."
    },
    "own_lot": {
      "description": "This is your own lot.",
      "status": 409,
      "x-ru": "Это ваш собственный лот."
    },
    "price_changed": {
      "description": "The seller changed the price. Read the lot and try again.",
      "status": 409,
      "x-ru": "Продавец сменил цену. Прочитайте лот и попробуйте снова."
    },
    "stall_suspended": {
      "description": "Rockvel has suspended your stall, and only Rockvel can lift it.",
      "status": 403,
      "x-ru": "Rockvel приостановил вашу витрину, и снять это может только Rockvel."
    },
    "ticket_closed": {
      "description": "The ticket is closed: open a new one.",
      "status": 409,
      "x-ru": "Обращение закрыто: откройте новое."
    },
    "too_early": {
      "description": "The seller still has time: wait for buyer_cancels_at.",
      "status": 409,
      "x-ru": "У продавца ещё есть время: дождитесь buyer_cancels_at."
    },
    "too_little": {
      "description": "Less than $1.00 goes out.",
      "status": 400,
      "x-ru": "Вывести можно не меньше $1.00."
    },
    "too_many_auto_buys": {
      "description": "You already have 100 auto-buys waiting. Call one off first.",
      "status": 409,
      "x-ru": "У вас уже ждут 100 автопокупок. Сначала отмените одну."
    },
    "too_many_bargains": {
      "description": "You already have 100 prices waiting for an answer. Take one back first.",
      "status": 409,
      "x-ru": "У вас уже ждут ответа 100 цен. Сначала отзовите одну."
    },
    "too_many_lots": {
      "description": "More than 100 items in one request.",
      "status": 422,
      "x-ru": "Больше 100 предметов в одном запросе."
    },
    "too_many_tickets": {
      "description": "You have as many open tickets as you can.",
      "status": 409,
      "x-ru": "У вас открыто столько обращений, сколько можно."
    },
    "unknown_coin": {
      "description": "Rockvel does not send this coin in this network.",
      "status": 400,
      "x-ru": "Эту монету в этой сети Rockvel не отправляет."
    },
    "wait_for_answer": {
      "description": "Wait for support to answer before you write more.",
      "status": 409,
      "x-ru": "Дождитесь ответа поддержки, прежде чем писать ещё."
    }
  },
  "x-tables": {
    "actions": [
      {
        "value": "send",
        "en": "Seller: make the trade offer on Steam, and record it.",
        "ru": "Продавец: создайте оффер в Steam и запишите его."
      },
      {
        "value": "cancel",
        "en": "Either side: call the deal off.",
        "ru": "Любая сторона: отменить сделку."
      },
      {
        "value": "close_offer",
        "en": "Seller: the buyer left the offer unanswered, so cancel it on Steam and report that.",
        "ru": "Продавец: покупатель не ответил на оффер, отмените его в Steam и сообщите об этом в отчёте."
      },
      {
        "value": "dispute",
        "en": "Buyer: report a problem during the hold.",
        "ru": "Покупатель: сообщить о проблеме во время холда."
      }
    ],
    "exteriors": [
      {
        "value": "FN",
        "en": "Factory New",
        "ru": "Прямо с завода"
      },
      {
        "value": "MW",
        "en": "Minimal Wear",
        "ru": "Немного поношенное"
      },
      {
        "value": "FT",
        "en": "Field-Tested",
        "ru": "После полевых испытаний"
      },
      {
        "value": "WW",
        "en": "Well-Worn",
        "ru": "Поношенное"
      },
      {
        "value": "BS",
        "en": "Battle-Scarred",
        "ru": "Закалённое в боях"
      }
    ],
    "http": [
      {
        "value": "200, 201",
        "en": "It worked. The body is the result.",
        "ru": "Получилось. В теле ответа результат."
      },
      {
        "value": "204",
        "en": "It worked, and there is nothing to answer.",
        "ru": "Получилось, а отвечать нечем."
      },
      {
        "value": "400",
        "en": "The body isn't valid JSON, a filter is wrong, or a required header is missing.",
        "ru": "Тело не является корректным JSON, неверный фильтр или нет обязательного заголовка."
      },
      {
        "value": "401",
        "en": "The key is missing or unknown.",
        "ru": "Ключа нет, или он неизвестен."
      },
      {
        "value": "402",
        "en": "The balance doesn't cover the purchase.",
        "ru": "На балансе не хватает денег на покупку."
      },
      {
        "value": "403",
        "en": "This account can't do this.",
        "ru": "Этому аккаунту это недоступно."
      },
      {
        "value": "404",
        "en": "There is no such thing, or no copy of your inventory yet.",
        "ru": "Такого нет, или копии инвентаря ещё нет."
      },
      {
        "value": "409",
        "en": "Something changed: the lot sold, the price is new, the deal moved on. Read it again.",
        "ru": "Что-то изменилось: лот продан, цена новая, сделка ушла дальше. Прочитайте заново."
      },
      {
        "value": "413",
        "en": "The upload is over the limit.",
        "ru": "Загрузка больше допустимого размера."
      },
      {
        "value": "422",
        "en": "A value in the request can't be used.",
        "ru": "Значение в запросе нельзя использовать."
      },
      {
        "value": "429",
        "en": "Too many requests. Wait for Retry-After.",
        "ru": "Слишком много запросов. Подождите Retry-After."
      },
      {
        "value": "502",
        "en": "A service behind the API is away. Try again in a moment.",
        "ru": "Сервис за API недоступен. Повторите чуть позже."
      }
    ],
    "offer_states": [
      {
        "value": "9",
        "en": "Waiting for Steam Guard: the offer is on record.",
        "ru": "Ждёт Steam Guard: оффер записан."
      },
      {
        "value": "2",
        "en": "Active: the buyer can accept, and the deal goes to sent.",
        "ru": "Активен: покупатель может принять, сделка переходит в sent."
      },
      {
        "value": "3",
        "en": "Accepted: the deal goes to protected.",
        "ru": "Принят: сделка переходит в protected."
      },
      {
        "value": "7",
        "en": "Declined: the buyer gets the money back.",
        "ru": "Отклонён: деньги возвращаются покупателю."
      },
      {
        "value": "6, 10",
        "en": "Cancelled, by you or by Steam Guard: the buyer gets the money back.",
        "ru": "Отменён вами или Steam Guard: деньги возвращаются покупателю."
      },
      {
        "value": "5",
        "en": "Expired: the buyer gets the money back.",
        "ru": "Истёк: деньги возвращаются покупателю."
      },
      {
        "value": "1, 4",
        "en": "Invalid or countered: the buyer gets the money back.",
        "ru": "Недействителен или встречный: деньги возвращаются покупателю."
      },
      {
        "value": "8",
        "en": "The item is gone: the buyer gets the money back.",
        "ru": "Предмета нет: деньги возвращаются покупателю."
      }
    ],
    "page_sizes": [
      {
        "value": "GET /market/items",
        "en": "60",
        "ru": "60"
      },
      {
        "value": "GET /market/items/{slug}/lots",
        "en": "30",
        "ru": "30"
      },
      {
        "value": "GET /stalls/{steam_id}",
        "en": "30",
        "ru": "30"
      },
      {
        "value": "GET /stall",
        "en": "60",
        "ru": "60"
      }
    ],
    "reasons": [
      {
        "value": "buyer_cancelled",
        "en": "The buyer called the deal off.",
        "ru": "Покупатель отменил сделку."
      },
      {
        "value": "seller_cancelled",
        "en": "The seller called the deal off.",
        "ru": "Продавец отменил сделку."
      },
      {
        "value": "seller_did_not_send",
        "en": "12 hours passed without an offer.",
        "ru": "За 12 часов оффера не появилось."
      },
      {
        "value": "offer_declined",
        "en": "The buyer declined the offer.",
        "ru": "Покупатель отклонил оффер."
      },
      {
        "value": "offer_cancelled",
        "en": "The offer was cancelled on Steam.",
        "ru": "Оффер отменён в Steam."
      },
      {
        "value": "offer_expired",
        "en": "The offer ran out of time.",
        "ru": "Срок оффера истёк."
      },
      {
        "value": "offer_void",
        "en": "The offer is no longer valid, or the buyer countered it.",
        "ru": "Оффер больше не действует, или покупатель ответил своим."
      },
      {
        "value": "item_gone",
        "en": "The item is no longer in the seller's inventory.",
        "ru": "Предмета больше нет в инвентаре продавца."
      },
      {
        "value": "trade_failed",
        "en": "Steam says the trade failed.",
        "ru": "Steam сообщил, что обмен не удался."
      },
      {
        "value": "buyer_dispute",
        "en": "The buyer opened a dispute.",
        "ru": "Покупатель открыл спор."
      },
      {
        "value": "seller_banned",
        "en": "The seller reversed another trade, so their other deals wait for a person.",
        "ru": "Продавец откатил другой обмен, поэтому остальные его сделки ждут решения человека."
      },
      {
        "value": "dispute_refund",
        "en": "A person decided for the buyer.",
        "ru": "Человек решил спор в пользу покупателя."
      },
      {
        "value": "steam_offer_state",
        "en": "Steam gave an offer state Rockvel doesn't know, so a person looks.",
        "ru": "Steam прислал неизвестное состояние оффера, поэтому смотрит человек."
      },
      {
        "value": "steam_trade_status",
        "en": "Steam gave a trade status Rockvel doesn't know, so a person looks.",
        "ru": "Steam прислал неизвестный статус обмена, поэтому смотрит человек."
      },
      {
        "value": "stuck",
        "en": "The deal couldn't move by itself, so a person looks.",
        "ru": "Сделка не смогла двинуться сама, поэтому смотрит человек."
      }
    ],
    "statuses": [
      {
        "value": "paid",
        "en": "The buyer's money is held and the seller has to send the item. Without an offer the seller can cancel at any moment, the buyer after 30 minutes, and after 12 hours the money goes back by itself. With an offer the deal waits for that offer, up to 15 days.",
        "ru": "Деньги покупателя удержаны, продавец должен отправить предмет. Без оффера продавец может отменить в любой момент, покупатель через 30 минут, а через 12 часов деньги вернутся сами. С оффером сделка ждёт его судьбу до 15 суток."
      },
      {
        "value": "sent",
        "en": "The offer is confirmed and the buyer can accept it. After 24 hours without an answer the seller gets close_offer.",
        "ru": "Оффер подтверждён, покупатель может его принять. Через 24 часа без ответа продавец получает close_offer."
      },
      {
        "value": "protected",
        "en": "The buyer accepted, and Steam can still reverse the trade, so the money waits 8 days. The buyer can open a dispute.",
        "ru": "Покупатель принял, но Steam ещё может откатить обмен, поэтому деньги ждут 8 суток. Покупатель может открыть спор."
      },
      {
        "value": "settled",
        "en": "The hold ended and the seller has the money, minus the fee.",
        "ru": "Холд закончился, продавец получил деньги за вычетом комиссии."
      },
      {
        "value": "cancelled",
        "en": "One of the two called the deal off before an offer existed. The buyer has the money back.",
        "ru": "Одна из сторон отменила сделку до появления оффера. Деньги вернулись покупателю."
      },
      {
        "value": "failed",
        "en": "The trade didn't happen. The buyer has the money back.",
        "ru": "Обмен не состоялся. Деньги вернулись покупателю."
      },
      {
        "value": "rolled_back",
        "en": "The seller reversed the trade. The buyer has the money back and the seller is banned for good.",
        "ru": "Продавец откатил обмен. Деньги вернулись покупателю, продавец заблокирован навсегда."
      },
      {
        "value": "disputed",
        "en": "A person has to look, and no money moves until then. Steam reports wait in the deal.",
        "ru": "Нужно решение человека, до него деньги не двигаются. Отчёты Steam ждут в сделке."
      }
    ],
    "trade_statuses": [
      {
        "value": "0, 1",
        "en": "Under way: nothing changes yet.",
        "ru": "В процессе: пока ничего не меняется."
      },
      {
        "value": "2, 3",
        "en": "Complete: the deal goes to protected.",
        "ru": "Завершён: сделка переходит в protected."
      },
      {
        "value": "4",
        "en": "Failed: the buyer gets the money back.",
        "ru": "Не удался: деньги возвращаются покупателю."
      },
      {
        "value": "12",
        "en": "Reversed: the buyer gets the money back and the seller is banned for good.",
        "ru": "Откачен: деньги возвращаются покупателю, продавец блокируется навсегда."
      }
    ]
  }
}
