Iniciar Sesión
Obtén un Access Token para autenticar tus peticiones a la API de Lummy mediante autenticación Machine-to-Machine (M2M).
Endpoint
POST /auth/login
Este endpoint intercambia tus credenciales de cliente (Client ID y Client Secret) por un token de acceso (JWT) que deberás incluir en todas las peticiones subsecuentes.
Headers
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
Content-Type | string | Sí | application/json |
Body Parameters
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
clientId | string | Sí | Tu Client ID generado en Lummy. |
clientSecret | string | Sí | Tu Client Secret asociado al Client ID. |
Ejemplos de Código
- cURL
- Node.js (TypeScript)
- Python
- PHP (Guzzle)
curl -X POST https://sandbox-api.lummy.com/auth/login \
-H "Content-Type: application/json" \
-d '{
"clientId": "tu_client_id",
"clientSecret": "tu_client_secret"
}'
import axios, { AxiosError } from 'axios';
interface LoginResponse {
access_token: string;
expires_in: number;
token_type: string;
}
async function login(): Promise<string> {
const API_URL = 'https://sandbox-api.lummy.com/auth/login';
try {
const response = await axios.post<LoginResponse>(API_URL, {
clientId: 'tu_client_id',
clientSecret: 'tu_client_secret'
});
console.log('Login exitoso');
console.log('Token:', response.data.access_token);
return response.data.access_token;
} catch (error) {
if (axios.isAxiosError(error)) {
console.error('Error de login:', error.response?.data);
}
throw error;
}
}
npm install axios
import requests
def login():
url = "https://sandbox-api.lummy.com/auth/login"
payload = {
"clientId": "tu_client_id",
"clientSecret": "tu_client_secret"
}
try:
response = requests.post(url, json=payload)
response.raise_for_status()
data = response.json()
print("Login exitoso")
print(f"Token: {data['access_token']}")
return data['access_token']
except requests.exceptions.RequestException as e:
print(f"Error de login: {e}")
if e.response:
print(f"Detalle: {e.response.text}")
raise
pip install requests
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
$client = new Client();
try {
$response = $client->post('https://sandbox-api.lummy.com/auth/login', [
'json' => [
'clientId' => 'tu_client_id',
'clientSecret' => 'tu_client_secret'
]
]);
$data = json_decode($response->getBody(), true);
echo "Login exitoso\n";
echo "Token: " . $data['access_token'] . "\n";
} catch (RequestException $e) {
echo "Error de login: " . $e->getMessage() . "\n";
}
composer require guzzlehttp/guzzle
Respuestas
200 OK
Login exitoso.
{
"access_token": "eyJraWQiOiJ... (JWT truncado)",
"expires_in": 3600,
"token_type": "Bearer"
}
401 Unauthorized
Credenciales incorrectas.
{
"statusCode": 401,
"message": "Client ID o Client Secret incorrectos",
"error": "Unauthorized"
}
Uso del Token
Una vez que tengas el access_token, debes incluirlo en el header Authorization de todas tus peticiones protegidas:
Authorization: Bearer <tu_access_token>
El token tiene un tiempo de vida limitado (usualmente 1 hora). Deberás implementar una lógica para renovar el token (haciendo login nuevamente) cuando recibas un error 401 en otros endpoints o antes de que expire.
Para obtener tu Client ID y Client Secret, accede al Dashboard de Lummy: Dashboard → Configuración → API Credentials
Estas credenciales son únicas para tu integración y deben mantenerse seguras.