{
  "info": {
    "name": "Django DDD - Users API",
    "description": "Register, login, and JWT-protected endpoints for the User/Profile domain.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url", "value": "http://127.0.0.1:8000" },
    { "key": "access_token", "value": "" },
    { "key": "refresh_token", "value": "" }
  ],
  "item": [
    {
      "name": "Register",
      "request": {
        "method": "POST",
        "header": [{ "key": "Content-Type", "value": "application/json" }],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"username\": \"maher\",\n  \"email\": \"maher@example.com\",\n  \"password\": \"SuperSecret123\",\n  \"bio\": \"VPN dev\",\n  \"phone_number\": \"+98123456\"\n}"
        },
        "url": { "raw": "{{base_url}}/api/users/register/", "host": ["{{base_url}}"], "path": ["api", "users", "register", ""] }
      }
    },
    {
      "name": "Login",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "const data = pm.response.json();",
              "if (data.access) { pm.collectionVariables.set('access_token', data.access); }",
              "if (data.refresh) { pm.collectionVariables.set('refresh_token', data.refresh); }"
            ],
            "type": "text/javascript"
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [{ "key": "Content-Type", "value": "application/json" }],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"username_or_email\": \"maher@example.com\",\n  \"password\": \"SuperSecret123\"\n}"
        },
        "url": { "raw": "{{base_url}}/api/users/login/", "host": ["{{base_url}}"], "path": ["api", "users", "login", ""] }
      }
    },
    {
      "name": "Get Current User (Me)",
      "request": {
        "method": "GET",
        "header": [{ "key": "Authorization", "value": "Bearer {{access_token}}" }],
        "url": { "raw": "{{base_url}}/api/users/me/", "host": ["{{base_url}}"], "path": ["api", "users", "me", ""] }
      }
    },
    {
      "name": "Refresh Token",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "const data = pm.response.json();",
              "if (data.access) { pm.collectionVariables.set('access_token', data.access); }"
            ],
            "type": "text/javascript"
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [{ "key": "Content-Type", "value": "application/json" }],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"refresh\": \"{{refresh_token}}\"\n}"
        },
        "url": { "raw": "{{base_url}}/api/users/token/refresh/", "host": ["{{base_url}}"], "path": ["api", "users", "token", "refresh", ""] }
      }
    }
  ]
}
