Skip to main content
POST
/
api
/
v1
/
admin
/
refresh
curl -X POST "https://olive-gateway-a6ba.onrender.com/api/v1/admin/refresh" \
  -H "Content-Type: application/json" \
  -d '{
    "refresh_token": "rt_abc123xyz..."
  }'
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refresh_token": "new_refresh_token_string",
  "expires_at": 1704110400,
  "refresh_expires_at": 1704714400,
  "user": {
    "id": "123",
    "email": "admin@olive.sl",
    "first_name": "Admin",
    "last_name": "User",
    "role": "system_admin",
    "status": "active"
  }
}
Issue a new access token using a valid refresh token. Implements token rotation for security.

Request

refresh_token
string
required
Valid refresh token from login

Response

success
boolean
Whether the refresh succeeded
token
string
New JWT access token
refresh_token
string
New refresh token (old one is revoked)
expires_at
integer
Access token expiration timestamp
refresh_expires_at
integer
Refresh token expiration timestamp
user
object
User details object

Examples

curl -X POST "https://olive-gateway-a6ba.onrender.com/api/v1/admin/refresh" \
  -H "Content-Type: application/json" \
  -d '{
    "refresh_token": "rt_abc123xyz..."
  }'
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refresh_token": "new_refresh_token_string",
  "expires_at": 1704110400,
  "refresh_expires_at": 1704714400,
  "user": {
    "id": "123",
    "email": "admin@olive.sl",
    "first_name": "Admin",
    "last_name": "User",
    "role": "system_admin",
    "status": "active"
  }
}

Token Rotation

For security, a new refresh token is issued on every refresh:
  1. Old refresh token is revoked immediately
  2. New refresh token is stored
  3. Both new tokens are returned

Errors

StatusCodeDescription
400INVALID_REQUESTInvalid request format
401INVALID_TOKENInvalid or expired refresh token
500INTERNAL_ERRORServer error