Endpoints verificados
Todos los endpoints de la API probados de extremo a extremo con tres identidades: administrador (Bearer), usuario normal (Bearer) y clave de API (esquema Token). Cada fila indica el metodo, la ruta, la autorizacion que exige y el resultado observado.
Autenticacion
- Bearer (JWT): cabecera Authorization: Bearer <jwt>. Se obtiene con /login + /token. Dura 180 dias.
- Clave de API: cabecera Authorization: Token <uuid>. La crea el propio usuario con su Bearer en /usuario/bearerToken.
- La cabecera Authorization se lee sin distinguir mayusculas (RFC 7230), asi que funciona por HTTP/1.1 y HTTP/2.
Control de acceso
- Admin (clase 1): ve y opera sobre todas las plantas y usuarios.
- Usuario (clase 2): solo sus plantas asociadas. Pedir una planta ajena devuelve 403, exista o no (no se confirma su existencia).
- El mismo control aplica tanto por Bearer como por clave de API.
Tabla de endpoints
| Metodo | Ruta | Autorizacion | Notas |
|---|---|---|---|
| POST | /login | usuario+apikey | Envia un codigo por email. |
| POST | /token | usuario+apikey | Valida el codigo y devuelve el JWT. |
| GET | /usuario | Bearer/Token | Datos del usuario autenticado. |
| GET | /usuario/bearerToken | Bearer | Crea/devuelve la clave de API del usuario. |
| GET | /usuarios | admin | Lista paginada. Usuario normal: 403. |
| POST | /usuarios | admin | Alta atomica: si Zoho no acepta, no se crea. |
| PUT | /usuarios/{id} | admin | Sincroniza con Zoho antes de tocar local. |
| DELETE | /usuarios/{id} | admin | Baja logica atomica con Zoho. |
| POST | /usuarios/relacionar | admin | Asocia una planta a un usuario. |
| DELETE | /usuarios/relacionar | admin | Quita la asociacion. |
| GET | /proveedores | Bearer/Token | Lista de proveedores disponibles. |
| GET | /clases | Bearer/Token | Clases de usuario. |
| GET | /logs | admin | Registro de la aplicacion. |
| POST | /clima | Bearer/Token | Cuerpo JSON: {name} o {lat,long}. |
| GET | /plants | Bearer/Token | Agregado (admin) o solo las suyas (usuario). |
| GET | /plants?proveedor={p} | admin | Plantas de un proveedor. |
| GET | /plants/details/{id} | propietario | Detalle. Planta ajena: 403. |
| GET | /plant/power/realtime/{id} | propietario | Tiempo real. Planta ajena: 403. |
| GET | /plant/inventario/{id} | propietario | Equipos de la planta. |
| GET | /plant/overview/{id} | propietario | Solo SolarEdge; el resto 404. |
| GET | /plant/benefits/{id} | propietario | SolarEdge y Sungrow; el resto 404. |
| GET | /plant/alert?proveedor={p} | propietario* | GoodWe va por todo el parque: solo admin. |
| GET | /plants/graficas | propietario | Historicos por planta. |
| GET | /plants/energy/{ids} | propietario | SolarEdge: varias plantas. |
| GET | /plant/grafica/bateria/{id} | propietario | SolarEdge. |
| GET | /plant/grafica/comparacion/{id} | propietario | SolarEdge. |
* propietario = admin, o usuario con esa planta asociada.
Que ofrece cada proveedor
No todos los proveedores exponen todos los datos. Lo que un proveedor no ofrece responde 404 (no es un fallo, lo declara su adaptador).
| Proveedor | plants | details | realtime | graficas | inventario | alertas | benefits | overview |
|---|---|---|---|---|---|---|---|---|
| GoodWe | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — |
| SolarEdge | ✓ | ✓ | ✓ | ✓ | ✓ | — | ✓ | ✓ |
| VictronEnergy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
| Sungrow | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Sigenergy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
Verificado el 20/07/2026: ~70 comprobaciones de endpoints y 90 de las suites de integracion, en verde. Ver testing/integracion/.