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

GET https://pre-webhooks.imaginaenergia.com/tarifas

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
Nota: La estructura exacta puede variar según la configuración del API. Los campos mostrados son los más comunes.

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

  1. Consultar tarifas disponibles → GET /tarifas
  2. Presentar tarifas al usuario o sistema
  3. Seleccionar tarifa apropiada
  4. Usar id_tarifa en la contratación
Recomendación: No cachear las tarifas por períodos largos. Consultar el endpoint cuando sea necesario para obtener información actualizada.

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_id de la petición problemática
  • Horario: Lunes a Viernes, 9:00 - 18:00 CET