curl -X POST 'https://api.weir.ai/auth/login' \
-H 'Content-Type: application/json' \
-d '{
"username": "Jane Doe",
"password": "securePassword123"
}'
{
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refreshToken": "refresh_token_123456789",
"expiresIn": 3600,
"user": {
"id": "user_123456789",
"fullname": "Jane Doe",
"email": "jane@example.com",
"role": "Organization_Admin"
}
},
"message": "Login successful",
"status": "success"
}
Authenticate users with username and password to get access and refresh tokens
curl -X POST 'https://api.weir.ai/auth/login' \
-H 'Content-Type: application/json' \
-d '{
"username": "Jane Doe",
"password": "securePassword123"
}'
{
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refreshToken": "refresh_token_123456789",
"expiresIn": 3600,
"user": {
"id": "user_123456789",
"fullname": "Jane Doe",
"email": "jane@example.com",
"role": "Organization_Admin"
}
},
"message": "Login successful",
"status": "success"
}
curl -X POST 'https://api.weir.ai/auth/login' \
-H 'Content-Type: application/json' \
-d '{
"username": "Jane Doe",
"password": "securePassword123"
}'
{
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refreshToken": "refresh_token_123456789",
"expiresIn": 3600,
"user": {
"id": "user_123456789",
"fullname": "Jane Doe",
"email": "jane@example.com",
"role": "Organization_Admin"
}
},
"message": "Login successful",
"status": "success"
}
Show Authentication Data Properties
400 Bad Request
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": {
"username": "Username is required",
"password": "Password is required"
}
},
"status": "error"
}
401 Unauthorized
{
"error": {
"code": "INVALID_CREDENTIALS",
"message": "Invalid username or password",
"details": "The provided credentials are incorrect"
},
"status": "error"
}
429 Too Many Requests
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many login attempts",
"details": "Rate limit of 5 login requests per minute exceeded"
},
"status": "error"
}
const login = async (username, password) => {
try {
const response = await fetch('https://api.weir.ai/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ username, password })
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
// Store tokens securely
localStorage.setItem('accessToken', data.data.accessToken);
localStorage.setItem('refreshToken', data.data.refreshToken);
return data;
} catch (error) {
console.error('Login error:', error);
throw error;
}
};
// Usage
const loginData = await login('jane.doe@example.com', 'securePassword123');
console.log('User:', loginData.data.user);
Password Security
Token Security
Rate Limiting
Secure Token Storage
Implement Auto-Refresh
Handle Errors Gracefully
Was this page helpful?