{
  "info": {
    "name": "P2P API",
    "description": "Эндпоинты P2P: объявления, ордера, сессии, сообщения. Авторизация через cookie `access_token` (JWT).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url", "value": "http://localhost:8080" },
    { "key": "access_token", "value": "" },
    { "key": "ad_id", "value": "1" },
    { "key": "order_id", "value": "1" }
  ],
  "auth": {
    "type": "noauth"
  },
  "item": [
    {
      "name": "Ads",
      "item": [
        {
          "name": "Create P2P Ad",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"sell\",\n  \"fiat_currency\": \"RUB\",\n  \"exchange_rate\": 100,\n  \"min_amount\": 10000,\n  \"max_amount\": 500000,\n  \"payment_methods\": [\"card\", \"bank_transfer\"],\n  \"payment_details\": {\n    \"card_number\": \"1234 5678 **** 9012\",\n    \"bank_name\": \"Sberbank\"\n  },\n  \"instructions\": \"Переведите на карту в течение 15 минут\"\n}"
            },
            "url": "{{base_url}}/api/v1/p2p/ads",
            "description": "Создать ордер. type: buy | sell. Суммы в копейках. Требует авторизации."
          }
        },
        {
          "name": "Get P2P Ads (list)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/p2p/ads?type=sell&fiat_currency=RUB&limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "p2p", "ads"],
              "query": [
                { "key": "type", "value": "sell", "description": "buy | sell" },
                { "key": "fiat_currency", "value": "RUB" },
                { "key": "amount", "value": "", "description": "Сумма в копейках (фильтр)" },
                { "key": "payment_method", "value": "", "description": "card, bank_transfer, ..." },
                { "key": "max_payment_duration", "value": "", "description": "Минуты: 15, 30, ..." },
                { "key": "sort_by", "value": "rating", "description": "rating | orders_count | best_price" },
                { "key": "author_nickname", "value": "" },
                { "key": "is_active", "value": "true" },
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            },
            "description": "Список объявлений с фильтрами и сортировкой."
          }
        },
        {
          "name": "Get My P2P Ads",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/ads/my",
            "description": "Объявления текущего пользователя. Требует авторизации."
          }
        },
        {
          "name": "Get P2P Ad by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": "{{base_url}}/api/v1/p2p/ads/{{ad_id}}",
            "description": "Одно объявление по ID."
          }
        },
        {
          "name": "Update P2P Ad",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"exchange_rate\": 100,\n  \"min_amount\": 5000,\n  \"max_amount\": 300000,\n  \"payment_methods\": [\"card\"],\n  \"payment_details\": {},\n  \"instructions\": \"Обновлённая инструкция\",\n  \"is_active\": true\n}"
            },
            "url": "{{base_url}}/api/v1/p2p/ads/{{ad_id}}",
            "description": "Обновить ордер. Все поля опциональны. Требует авторизации."
          }
        },
        {
          "name": "Delete P2P Ad",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/ads/{{ad_id}}",
            "description": "Деактивировать объявление. Требует авторизации."
          }
        }
      ]
    },
    {
      "name": "Orders",
      "item": [
        {
          "name": "Create P2P Order",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ad_id\": 1,\n  \"usdt_amount\": 50000,\n  \"payment_method\": \"card\",\n  \"payment_details\": {}\n}"
            },
            "url": "{{base_url}}/api/v1/p2p/orders",
            "description": "Создать сделку по объявлению. usdt_amount в копейках (RUB). Требует авторизации."
          }
        },
        {
          "name": "Get P2P Sessions",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/sessions",
            "description": "Список P2P-ордеров с последним сообщением (для чатов). Требует авторизации."
          }
        },
        {
          "name": "Get P2P Order by ID",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}",
            "description": "Одна сделка по ID. Только участник сделки. Требует авторизации."
          }
        },
        {
          "name": "Get My P2P Orders",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/p2p/orders/my?status=pending&limit=20&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "p2p", "orders", "my"],
              "query": [
                { "key": "status", "value": "pending", "description": "pending | paid | completed | cancelled" },
                { "key": "limit", "value": "20" },
                { "key": "offset", "value": "0" }
              ]
            },
            "description": "Сделки текущего пользователя. Требует авторизации."
          }
        },
        {
          "name": "Update Order Payment Details",
          "request": {
            "method": "PATCH",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"payment_details\": {\n    \"card_number\": \"1234 5678 **** 9012\"\n  }\n}"
            },
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}",
            "description": "Обновить реквизиты (только продавец, статус pending). Требует авторизации."
          }
        },
        {
          "name": "Confirm Buyer Paid",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/confirm-paid",
            "description": "Продавец подтверждает получение оплаты. Требует авторизации."
          }
        },
        {
          "name": "Confirm Seller Received",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/confirm-received",
            "description": "Покупатель подтверждает, что продавец получил деньги. Требует авторизации."
          }
        },
        {
          "name": "Cancel P2P Order",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/cancel",
            "description": "Отменить сделку. Требует авторизации."
          }
        }
      ]
    },
    {
      "name": "Messages",
      "item": [
        {
          "name": "Create P2P Message",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"message\": \"Перевёл на карту\"\n}"
            },
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/messages",
            "description": "Отправить сообщение в чат сделки. Требует авторизации."
          }
        },
        {
          "name": "Get P2P Messages",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": {
              "raw": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/messages?limit=50&offset=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "p2p", "orders", "{{order_id}}", "messages"],
              "query": [
                { "key": "limit", "value": "50" },
                { "key": "offset", "value": "0" }
              ]
            },
            "description": "Сообщения чата сделки. Требует авторизации."
          }
        }
      ]
    },
    {
      "name": "Other",
      "item": [
        {
          "name": "Rate P2P Order",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"rating\": 5\n}"
            },
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/rate",
            "description": "Оценка завершённой сделки 1–5. Требует авторизации."
          }
        },
        {
          "name": "Call Operator",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Cookie", "value": "access_token={{access_token}}", "disabled": false }
            ],
            "url": "{{base_url}}/api/v1/p2p/orders/{{order_id}}/call-operator",
            "description": "Вызвать оператора для помощи по сделке. Требует авторизации."
          }
        }
      ]
    }
  ]
}
