Descripción
El endpoint GET /tarifas permite consultar el listado de tarifas disponibles para el canal autenticado. Es un endpoint de solo lectura que proporciona información actualizada sobre las tarifas configuradas.
✅ Características principales
- Consulta síncrona con respuesta inmediata
- No requiere parámetros en el body
- Soporta impersonación de canal
- Auditoría completa con request_id único
- Persistencia automática de todas las peticiones
Endpoint
Headers requeridos
| Header | Valor | Descripción |
|---|---|---|
Authorization |
Bearer <token> |
Token JWT obtenido del endpoint de autenticación |
Headers opcionales
| Header | Valor | Descripción |
|---|---|---|
X-Canal |
<uuid> |
UUID del permiso de impersonación para consultar otro canal |
Autenticación
Obtener token JWT
Primero debes obtener un token JWT autenticándote:
curl -X POST https://oezimzeqmtmncuipqgwd.supabase.co/functions/v1/initiateauthcommand \
-H "Content-Type: application/json" \
-d '{
"email": "tu_usuario@ejemplo.com",
"password": "tu_contraseña"
}'
Respuesta:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600
}
Ejemplos de uso
1. Consulta básica de tarifas
Obtener las tarifas del canal por defecto:
curl -X GET https://pre-webhooks.imaginaenergia.com/tarifas \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Respuesta (200 OK):
{
"request_id": 12345,
"tarifas": [
{
"id_tarifa": 10350,
"nombre": "Tarifa Base 2.0TD",
"tipo": "residencial",
"descripcion": "Tarifa básica para uso residencial",
"precio_energia_p1": 0.145,
"precio_energia_p2": 0.132,
"precio_energia_p3": 0.098,
"precio_potencia_p1": 0.105,
"precio_potencia_p2": 0.065,
"activa": true
},
{
"id_tarifa": 10351,
"nombre": "Tarifa Premium 2.0TD",
"tipo": "residencial",
"descripcion": "Tarifa premium con ventajas adicionales",
"precio_energia_p1": 0.138,
"precio_energia_p2": 0.125,
"precio_energia_p3": 0.092,
"precio_potencia_p1": 0.098,
"precio_potencia_p2": 0.058,
"activa": true
}
]
}
2. Consulta con impersonación de canal
Si tienes permisos de impersonación, puedes consultar tarifas de otros canales:
curl -X GET https://pre-webhooks.imaginaenergia.com/tarifas \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \ -H "X-Canal: 550e8400-e29b-41d4-a716-446655440000"
3. Ejemplo en Python
import requests
url = "https://pre-webhooks.imaginaenergia.com/tarifas"
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
headers = {
"Authorization": f"Bearer {token}"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
print(f"Request ID: {data['request_id']}")
print(f"Tarifas: {len(data['tarifas'])}")
for tarifa in data['tarifas']:
print(f"- {tarifa['nombre']} (ID: {tarifa['id_tarifa']})")
else:
print(f"Error: {response.status_code}")
print(response.json())
Estructura de la respuesta
Respuesta exitosa (200 OK)
| Campo | Tipo | Descripción |
|---|---|---|
request_id |
integer | Identificador único de la petición para seguimiento |
tarifas |
array | Array de objetos Tarifa disponibles |
Estructura de cada tarifa
| Campo | Tipo | Descripción |
|---|---|---|
id_tarifa |
integer | Identificador único (usar en contratos) |
nombre |
string | Nombre descriptivo de la tarifa |
tipo |
string | Tipo: residencial, empresa, etc. |
descripcion |
string | Descripción detallada |
precio_energia_p1 |
float | Precio energía P1 (€/kWh) |
precio_energia_p2 |
float | Precio energía P2 (€/kWh) |
precio_energia_p3 |
float | Precio energía P3 (€/kWh) |
precio_potencia_p1 |
float | Precio potencia P1 (€/kW/día) |
precio_potencia_p2 |
float | Precio potencia P2 (€/kW/día) |
activa |
boolean | Disponible para contratación |
Manejo de errores
Códigos de respuesta HTTP
| Código | Significado | Descripción |
|---|---|---|
| 200 | OK | Tarifas obtenidas exitosamente |
| 401 | Unauthorized | Token JWT inválido o expirado |
| 403 | Forbidden | Sin permisos para impersonar canal |
| 500 | Internal Server Error | Error interno del servidor |
| 504 | Gateway Timeout | Timeout al consultar tarifas |
Ejemplos de errores
Error 401 - Autenticación fallida
{
"error": "Authentication failed"
}
Solución: Verificar que el token JWT sea válido y no haya expirado.
Error 403 - Sin permisos
{
"error": "Forbidden: No tiene permisos para impersonar este canal",
"request_id": 12345
}
Solución: Verificar permisos de impersonación y UUID del header X-Canal.
Error 500 - Error de servidor
{
"error": "Error de servidor, por favor contacte con serviciosistemas@imaginaenergia.com",
"request_id": 12345
}
Solución: Contactar con soporte incluyendo el request_id.
Auditoría y seguimiento
Todas las peticiones al endpoint se registran automáticamente en la base de datos con:
- ID único de la petición (
request_id) - Usuario que realizó la petición (del token JWT)
- Canal consultado (directo o impersonado)
- Timestamp de la petición
- Resultado completo de la consulta
- Código de estado HTTP
Beneficios de la auditoría
- Trazabilidad completa de todas las consultas
- Análisis de uso por canal
- Resolución rápida de incidencias
- Cumplimiento de requisitos de auditoría
Integración con otros endpoints
El id_tarifa obtenido se utiliza en:
| Endpoint | Campo | Uso |
|---|---|---|
POST /contrato/residencial/c1 |
id_tarifa |
Contratos residenciales |
POST /contrato/empresa/c1 |
id_tarifa |
Contratos empresariales |
Flujo recomendado
- Consultar tarifas disponibles →
GET /tarifas - Presentar tarifas al usuario o sistema
- Seleccionar tarifa apropiada
- Usar
id_tarifaen la contratación
Preguntas frecuentes
¿Necesito enviar parámetros en el body?
No, es un endpoint GET que no requiere body. La información se obtiene del token JWT y opcionalmente del header X-Canal.
¿Las tarifas cambian frecuentemente?
Las tarifas son configuradas por el administrador. Se recomienda consultar el endpoint cuando sea necesario en lugar de cachear por períodos largos.
¿Qué hago con el request_id?
Es útil para seguimiento de auditoría, reportar incidencias a soporte y análisis de uso del API.
¿Puedo consultar tarifas de múltiples canales a la vez?
No, cada petición consulta un único canal. Para múltiples canales, realiza peticiones separadas con diferentes valores de X-Canal.
Soporte
Para consultas o incidencias:
- Email: serviciosistemas@imaginaenergia.com
- Incluir: El
request_idde la petición problemática - Horario: Lunes a Viernes, 9:00 - 18:00 CET