{
  "info": {
    "name": "Elirox Public API — MCP onboarding",
    "description": "Пошаговый флоу для подключения MCP к Claude:\n1. Регистрация (демо-счёт создаётся автоматически)\n2. Запрос списка счетов\n3. Выпуск публичного API-ключа\n\nBase URL: https://app.elxapi.com (production).\n\nПеременные коллекции:\n- baseUrl — адрес API\n- accessToken — пользовательский токен (заполняется автоматически после регистрации)\n- accountId — ID счёта (заполняется из шага «Список счетов»)\n- apiKey — публичный ключ для MCP (заполняется после выпуска ключа)",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "https://app.elxapi.com", "type": "string" },
    { "key": "accessToken", "value": "", "type": "string" },
    { "key": "accountId", "value": "", "type": "string" },
    { "key": "apiKey", "value": "", "type": "string" },
    { "key": "expiresAt", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "1. Registration (Auth Register)",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "if (pm.response.code === 200 || pm.response.code === 201) {",
              "  const data = pm.response.json();",
              "  if (data.token) {",
              "    pm.collectionVariables.set('accessToken', data.token);",
              "    console.log('accessToken saved');",
              "  }",
              "}",
              "pm.test('token received', () => pm.expect(pm.response.json()).to.have.property('token'));"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          { "key": "Content-Type", "value": "application/json" },
          { "key": "Accept", "value": "application/json" },
          { "key": "User-Agent", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36" },
          { "key": "Origin", "value": "https://app.elxapi.com" },
          { "key": "Referer", "value": "https://app.elxapi.com/" }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/auth/register",
          "host": [ "{{baseUrl}}" ],
          "path": [ "api", "v1", "auth", "register" ]
        },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"your-email@example.com\",\n  \"password\": \"YourStrongPassword123\"\n}"
        },
        "description": "Создаёт нового пользователя по email и паролю. После регистрации автоматически создаётся демо-счёт. Токен сохраняется в {{accessToken}} через вкладку Tests."
      }
    },
    {
      "name": "2. Login (Auth Login)",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "if (pm.response.code === 200 || pm.response.code === 201) {",
              "  const data = pm.response.json();",
              "  if (data.token) { pm.collectionVariables.set('accessToken', data.token); console.log('accessToken updated'); }",
              "}",
              "pm.test('token received', () => pm.expect(pm.response.json()).to.have.property('token'));"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          { "key": "Content-Type", "value": "application/json" },
          { "key": "Accept", "value": "application/json" },
          { "key": "User-Agent", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36" },
          { "key": "Origin", "value": "https://app.elxapi.com" },
          { "key": "Referer", "value": "https://app.elxapi.com/" }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/auth/login",
          "host": [ "{{baseUrl}}" ],
          "path": [ "api", "v1", "auth", "login" ]
        },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"your-email@example.com\",\n  \"password\": \"YourStrongPassword123\"\n}"
        },
        "description": "Вход по email и паролю (если access-token истёк — повторная регистрация не нужна). Используйте те же email/password, что при регистрации."
      }
    },
    {
      "name": "3. Get accounts",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const arr = pm.response.json();",
              "if (Array.isArray(arr) && arr.length > 0) {",
              "  const active = arr.find(a => a.status === 'active');",
              "  const chosen = active || arr[0];",
              "  pm.collectionVariables.set('accountId', chosen.id);",
              "  console.log('accountId =', chosen.id, '| status =', chosen.status);",
              "  if (!active) {",
              "    console.warn('No active account yet. Wait 10-30 sec and run again.');",
              "  }",
              "} else {",
              "  console.error('Accounts list empty. Demo account not created yet — wait and retry.');",
              "}",
              "pm.test('at least one account', () => pm.expect(pm.response.json().length).to.be.above(0));"
            ]
          }
        }
      ],
      "request": {
        "method": "GET",
        "header": [
          { "key": "x-access-token", "value": "{{accessToken}}" },
          { "key": "Accept", "value": "application/json" },
          { "key": "User-Agent", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36" },
          { "key": "Origin", "value": "https://app.elxapi.com" },
          { "key": "Referer", "value": "https://app.elxapi.com/" }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/accounts",
          "host": [ "{{baseUrl}}" ],
          "path": [ "api", "v1", "accounts" ]
        },
        "description": "Возвращает массив счетов пользователя. ID первого счёта автоматически сохраняется в {{accountId}}. Авторизация: заголовок x-access-token = {{accessToken}}."
      }
    },
    {
      "name": "4. Create API key",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const d = new Date();",
              "d.setMonth(d.getMonth() + 1);",
              "pm.collectionVariables.set('expiresAt', d.toISOString());",
              "console.log('expiresAt =', d.toISOString());"
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "if (pm.response.code === 200) {",
              "  const data = pm.response.json();",
              "  if (data.apiKey) { pm.collectionVariables.set('apiKey', data.apiKey); console.log('apiKey received and saved'); }",
              "} else {",
              "  console.error('Error ' + pm.response.code + ': ' + pm.response.text());",
              "  if (pm.response.code === 404) console.error('account_not_found: accountId empty or not ready. Repeat step 3.');",
              "  if (pm.response.code === 401) console.error('unauthorized: accessToken missing. Repeat step 1.');",
              "}",
              "pm.test('apiKey received', () => pm.expect(pm.response.json()).to.have.property('apiKey'));"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          { "key": "Content-Type", "value": "application/json" },
          { "key": "x-access-token", "value": "{{accessToken}}" },
          { "key": "Accept", "value": "application/json" },
          { "key": "User-Agent", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36" },
          { "key": "Origin", "value": "https://app.elxapi.com" },
          { "key": "Referer", "value": "https://app.elxapi.com/" }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/public-api/keys",
          "host": [ "{{baseUrl}}" ],
          "path": [ "api", "v1", "public-api", "keys" ]
        },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"accountId\": \"{{accountId}}\",\n  \"name\": \"MCP key\",\n  \"scopes\": [\n    \"account:read\",\n    \"bots:read\",\n    \"bots:write\",\n    \"limits:read\",\n    \"trading:read\",\n    \"trading:write\",\n    \"quotes:read\"\n  ],\n  \"expiresAt\": \"{{expiresAt}}\"\n}"
        },
        "description": "Выпускает публичный API-ключ, привязанный к accountId. apiKey показывается ОДИН РАЗ — сохраните его. Автоматически сохраняется в {{apiKey}} через вкладку Tests."
      }
    }
  ]
}
