Dashboard

Autenticacion

La API de SalonBookIt utiliza dos metodos de autenticacion: API Keys para identificar tu negocio y JWT para autenticar clientes.

Resumen

Publico

API Key

Identifica tu negocio en cada peticion. Requerida para todos los endpoints.

  • Se obtiene desde el Dashboard
  • Se envia en el header X-API-Key
  • Prefijo hh_live_ para produccion
Autenticado

JWT Token

Autentica a un cliente especifico. Requerido para endpoints privados.

  • Se obtiene via /api/v1/auth/login/
  • Se envia en el header Authorization
  • Expira en 24 horas

API Keys

Tu API Key identifica tu negocio y debe incluirse en todas las peticiones a la API.

Obtener tu API Key

  1. Inicia sesion en tu Dashboard
  2. Ve a Configuracion → Integraciones
  3. Haz clic en Generar Nueva API Key
  4. Asigna un nombre descriptivo (ej: "Widget Web", "App Movil")
  5. Copia y guarda la API Key de forma segura

Usar la API Key

Incluye tu API Key en el header X-API-Key de cada peticion:

cURL
curl -X GET "https://app.salonbookit.com/api/v1/negocio/" \
  -H "X-API-Key: hh_live_abc123def456..."
const response = await fetch('https://app.salonbookit.com/api/v1/servicios/', {
    headers: {
        'X-API-Key': 'hh_live_abc123def456...'
    }
});
const data = await response.json();
import requests

response = requests.get(
    'https://app.salonbookit.com/api/v1/servicios/',
    headers={'X-API-Key': 'hh_live_abc123def456...'}
)
data = response.json()
$ch = curl_init('https://app.salonbookit.com/api/v1/servicios/');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: hh_live_abc123def456...'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);

Tipos de API Key

Prefijo Entorno Uso
hh_live_ Produccion Datos reales, transacciones reales
hh_test_ Pruebas Datos de prueba, sin cargos reales
Seguridad de API Keys

Nunca incluyas tu API Key en codigo del lado del cliente que sea visible publicamente. Para el widget, usamos una API Key con permisos limitados que solo permite operaciones de lectura y creacion de reservas.

Autenticacion JWT

Los endpoints que requieren autenticacion de cliente utilizan tokens JWT. Estos endpoints incluyen:

  • Ver reservas del cliente
  • Ver/modificar perfil del cliente
  • Consultar puntos de fidelidad
  • Ver historial de pedidos

Obtener un token JWT

POST /api/v1/auth/login/

Request

cURL
curl -X POST "https://app.salonbookit.com/api/v1/auth/login/" \
  -H "X-API-Key: hh_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "cliente@ejemplo.com",
    "password": "contraseƱa123"
  }'

Response (200 OK)

JSON
{
  "success": true,
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "cliente": {
      "id": 123,
      "nombre": "Juan Garcia",
      "email": "cliente@ejemplo.com",
      "telefono": "+34612345678"
    },
    "expires_in": 86400
  }
}

Usar el token JWT

Incluye el token en el header Authorization con el prefijo Bearer:

cURL
curl -X GET "https://app.salonbookit.com/api/v1/cliente/reservas/" \
  -H "X-API-Key: hh_live_abc123..." \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

Renovar el token

Los tokens expiran en 24 horas. Usa el endpoint de refresh para obtener uno nuevo:

POST /api/v1/auth/refresh/
cURL
curl -X POST "https://app.salonbookit.com/api/v1/auth/refresh/" \
  -H "X-API-Key: hh_live_abc123..." \
  -H "Authorization: Bearer TOKEN_ACTUAL"

Rate Limiting

La API tiene limites de peticiones para garantizar un servicio estable:

Limite Ventana Descripcion
120 requests 1 minuto Limite general por API Key
20 intentos 15 minutos Login (por IP)
10 intentos 1 hora Registro (por IP)

Headers de Rate Limit

Cada respuesta incluye headers informativos:

Headers
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 115
X-RateLimit-Reset: 1704067200
Header Descripcion
X-RateLimit-Limit Numero maximo de requests permitidos
X-RateLimit-Remaining Requests restantes en la ventana actual
X-RateLimit-Reset Timestamp Unix cuando se reinicia el contador

Error 429: Too Many Requests

Si excedes el limite, recibiras un error 429:

JSON
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Has excedido el limite de requests. Intenta de nuevo en 45 segundos."
  }
}

Errores de autenticacion

Codigo HTTP Status Descripcion
MISSING_API_KEY 401 No se incluyo el header X-API-Key
INVALID_API_KEY 401 API Key no valida o no encontrada
API_KEY_DISABLED 403 La API Key ha sido desactivada
API_KEY_EXPIRED 403 La API Key ha expirado
INVALID_TOKEN 401 JWT Token invalido o malformado
TOKEN_EXPIRED 401 JWT Token expirado
INVALID_CREDENTIALS 401 Email o contraseƱa incorrectos