{
  "info": {
    "_postman_id": "b2c3d4e5-f6a7-8901-bcde-f1234567890a",
    "name": "Example Auth API",
    "description": "Collection with a pre-request script that logs in via pm.sendRequest and stores bearer_token.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Login",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"username\": \"{{username}}\",\n  \"password\": \"{{password}}\"\n}"
        },
        "url": {
          "raw": "{{base_url}}/login",
          "host": ["{{base_url}}"],
          "path": ["login"]
        },
        "description": "Exchange username/password for a token."
      },
      "response": []
    },
    {
      "name": "Get profile",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const username = pm.environment.get('username');",
              "const password = pm.environment.get('password');",
              "const baseUrl = pm.environment.get('base_url');",
              "",
              "pm.sendRequest({",
              "    url: baseUrl + '/login',",
              "    method: 'POST',",
              "    header: {",
              "        'Content-Type': 'application/json',",
              "        'Accept': 'application/json'",
              "    },",
              "    body: {",
              "        mode: 'raw',",
              "        raw: JSON.stringify({ username: username, password: password })",
              "    }",
              "}, function (err, res) {",
              "    if (err) {",
              "        console.error(err);",
              "        return;",
              "    }",
              "    const json = res.json();",
              "    pm.environment.set('bearer_token', json.token);",
              "});"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{bearer_token}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{base_url}}/me",
          "host": ["{{base_url}}"],
          "path": ["me"]
        },
        "description": "Authenticated profile. Pre-request fetches bearer_token via POST /login."
      },
      "response": []
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.example.com",
      "type": "string"
    }
  ]
}
