Saltar al contenido principal

Autenticación

CallCov soporta dos métodos de autenticación: Claves API (recomendadas para servidor a servidor) y Tokens JWT (para aplicaciones basadas en usuarios).

Autenticación con Clave API

Las claves API son el método recomendado para integraciones backend. Son simples, seguras y no expiran.

Creando una Clave API

Crear Clave API
curl -X POST https://api.callcov.com/api/v1/api-keys/ \
-H "Authorization: Bearer TU_TOKEN_DE_ACCESO" \
-H "Content-Type: application/json" \
-d '{
"name": "Clave de Servidor de Producción"
}'

Usando una Clave API

Incluye tu clave API en el encabezado Authorization con el esquema Bearer:

Usando Clave API
curl -X GET https://api.callcov.com/api/v1/analysis/ \
-H "Authorization: Bearer sk_live_abc123..."

Formato de Clave API

  • Prefijo: sk_live_ para producción, sk_test_ para modo prueba
  • Almacenamiento: Guarda de manera segura en variables de entorno, nunca en código
  • Rotación: Rota las claves regularmente por seguridad
Buena Práctica

Guarda las claves API en variables de entorno:

export CALLCOV_API_KEY="sk_live_abc123..."

Autenticación con Token JWT

Los tokens JWT son ideales para aplicaciones de cara al usuario donde necesitas permisos específicos de usuario.

Flujo de Login

Paso 1: Iniciar Sesión
curl -X POST https://api.callcov.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "usuario@ejemplo.com",
"password": "ContraseñaSegura123!"
}'

Respuesta:

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_in": 1800
}

Usando Tokens JWT

Paso 2: Usar Token de Acceso
curl -X GET https://api.callcov.com/api/v1/users/me \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

Expiración de Tokens

  • Access Token: Expira en 30 minutos
  • Refresh Token: Expira en 7 días

Refrescando Tokens

Cuando tu token de acceso expire, usa el refresh token para obtener uno nuevo:

Refrescar Token de Acceso
curl -X POST https://api.callcov.com/api/v1/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}'

Mejores Prácticas de Seguridad

1. Usa Solo HTTPS

Todas las solicitudes API deben usar HTTPS. Las solicitudes HTTP serán rechazadas.

2. Protege tus Claves

# ✅ Bien: Variable de entorno
export CALLCOV_API_KEY="sk_live_abc123..."

# ❌ Mal: Hardcodeado en código
api_key = "sk_live_abc123..." # ¡Nunca hagas esto!

3. Rota Claves Regularmente

Crea nuevas claves API y revoca las antiguas cada 90 días.

4. Usa Diferentes Claves para Diferentes Entornos

# Desarrollo
sk_test_dev_abc123...

# Staging
sk_test_staging_def456...

# Producción
sk_live_prod_ghi789...

5. Implementa Lógica de Refresco de Token

No esperes errores 401. Refresca de manera proactiva:

Ejemplo Python: Auto-Refresco
import requests
from datetime import datetime, timedelta

class CallCovClient:
def __init__(self, email, password):
self.email = email
self.password = password
self.access_token = None
self.refresh_token = None
self.token_expires = None
self.login()

def login(self):
response = requests.post(
'https://api.callcov.com/api/v1/auth/login',
json={'email': self.email, 'password': self.password}
)
data = response.json()
self.access_token = data['access_token']
self.refresh_token = data['refresh_token']
self.token_expires = datetime.now() + timedelta(seconds=data['expires_in'])

def ensure_valid_token(self):
# Refrescar 5 minutos antes de expiración
if datetime.now() >= self.token_expires - timedelta(minutes=5):
self.refresh()

def refresh(self):
response = requests.post(
'https://api.callcov.com/api/v1/auth/refresh',
json={'refresh_token': self.refresh_token}
)
data = response.json()
self.access_token = data['access_token']
self.token_expires = datetime.now() + timedelta(seconds=data['expires_in'])

def make_request(self, method, endpoint, **kwargs):
self.ensure_valid_token()
headers = kwargs.get('headers', {})
headers['Authorization'] = f'Bearer {self.access_token}'
kwargs['headers'] = headers
return requests.request(method, f'https://api.callcov.com{endpoint}', **kwargs)

Revocando Acceso

Revocar Claves API

curl -X DELETE https://api.callcov.com/api/v1/api-keys/{key_id} \
-H "Authorization: Bearer TU_TOKEN_DE_ACCESO"

Cerrar Sesión (Invalidar Tokens)

Los tokens JWT no pueden ser revocados del lado del servidor pero expirarán automáticamente. Para cerrar sesión inmediatamente, elimina los tokens del lado del cliente.

Errores de Autenticación

Código de EstadoErrorSolución
401Token inválido o faltanteIncluye un encabezado Authorization válido
401Token expiradoRefresca tu token de acceso
403Permisos insuficientesVerifica los permisos de tu cuenta

Próximos Pasos