info:
  name: Refresh Access Token
  type: http
  seq: 4

http:
  method: POST
  url: "{{base_url}}/api/auth/refresh"
  headers:
    - name: ""
      value: application/json
  body:
    type: json
    data: |-
      {
        "refresh_token": "{{refresh_token}}"
      }
  auth: inherit

runtime:
  scripts:
    - type: after-response
      code: |-
        function onResponse(res) {
          try {
            const responseBody = res.getBody();
            const token = responseBody.access_token;
            const refreshToken = responseBody.refresh_token;

            if (token) {
              bru.setEnvVar("token", token, { persist: true });
              console.log("Access token saved:", token);
            }

            if (refreshToken) {
              bru.setEnvVar("refresh_token", refreshToken, { persist: true });
              console.log("Refresh token saved:", refreshToken);
            }

            if (!token && !refreshToken) {
              console.log("No tokens found in response.");
            }
          } catch (error) {
            console.error("Error in post-response script:", error.message);
          }
        }
        onResponse(res);

settings:
  encodeUrl: true
  timeout: 0
  followRedirects: true
  maxRedirects: 5

docs: |-
  ## Refresh Access Token

    Refreshes an access token using a valid refresh token. Returns a new access token with 1-hour expiration.

    **Method:** POST

    **Endpoint:** /api/auth/refresh

    **Authentication:** Not required (refresh token is in request body)

    **Request Body:**
    - `refresh_token` (string): Valid refresh token UUID

    **Response:**
    - `access_token` (string): New JWT access token (1 hour expiration)
    - `token_type` (string): Token type (usually "Bearer")
    - `expires_in` (number): Token lifetime in seconds (3600)

    **Status Codes:**
    - 200: Success - new access token generated
    - 401: Unauthorized - invalid or expired refresh token

    **Example Response (Success):**
    ```json
    {
      "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "token_type": "Bearer",
      "expires_in": 3600
