- Abre Postman
- Click en Import
- Selecciona el archivo:
PotAI_Postman_Collection.json - La colección se cargará con 7 carpetas (servicios)
La colección usa variables automáticas que se actualizan con los tests:
base_url: http://localhost:8080access_token: Token de autenticación (se actualiza automáticamente)session_token: Token de sesión (se actualiza automáticamente)user_id: ID del usuario (se actualiza automáticamente)plant_id: ID de la planta creada (se actualiza automáticamente)pot_id: ID del macetero (se actualiza automáticamente)species_id: ID de especie (se actualiza automáticamente)
Ejecuta todos los health checks para verificar que los servicios están corriendo:
✅ Auth Service → /auth/health
✅ Species Service → /species/health
✅ Pots Service → /pots/health
✅ Media Service → /media/health
✅ Plants Service → /plants/health
✅ IoT Service → /iot/health
✅ ML Service → /ml/health
1. Register User (carpeta 1. Auth Service)
- Registra un nuevo usuario
- Importante: Los tokens se guardan automáticamente en las variables
- Si el usuario ya existe, usa Login User en su lugar
POST /auth/register
{
"email": "test@potai.com",
"password": "Test123!",
"name": "Usuario Test"
}Variables actualizadas automáticamente:
- ✅
user_id - ✅
access_token - ✅
session_token
2. Get All Species (carpeta 2. Species Service)
- Lista las 8 especies disponibles
- Automáticamente guarda el ID de la primera especie
GET /species
Especies disponibles:
- Ajo (Allium sativum)
- Geranio (Pelargonium)
- Hierbabuena (Mentha spicata)
- Menta (Mentha)
- Orégano (Origanum vulgare)
- Orquídea (Orchidaceae)
- Rosa China (Hibiscus rosa-sinensis) ⭐ ID: 7
- Tomate Cherry (Solanum lycopersicum var. cerasiforme)
Variables actualizadas:
- ✅
species_id(primera especie de la lista)
Nota: Puedes cambiar manualmente el species_id en las variables de colección si quieres usar otra especie.
3. Get or Create Pot (carpeta 3. Pots Service)
- Crea o busca un macetero con el código ESP32
- Este código simula el identificador de tu placa ESP32
POST /pots/get-or-create
{
"label": "ESP32_TEST_001"
}Variables actualizadas:
- ✅
pot_id
4. Create Plant (with Image) (carpeta 5. Plants Service)
- Crea una planta asociada al macetero y especie
- Importante: Debes seleccionar una imagen en el campo
image
Antes de enviar:
- Ve al body → form-data
- En el campo
image, click en "Select Files" - Selecciona una imagen de planta de tu computadora (JPG, PNG)
- Verifica que
speciesIduse la variable{{species_id}}
POST /plants (multipart/form-data)
- name: "Mi Rosa China"
- potLabel: "ESP32_TEST_001"
- speciesId: {{species_id}}
- plantedAt: "2025-11-21"
- notes: "Planta de prueba"
- image: [ARCHIVO]
Variables actualizadas:
- ✅
plant_id
5. Send Sensor Data (ESP32 Simulation) (carpeta 6. IoT Service)
- Simula que el ESP32 envía datos de sensores
- Este endpoint es PÚBLICO (no requiere autenticación)
- Si la humedad es < 30%, el sistema regará automáticamente
POST /iot/sensor-data
{
"plantId": {{plant_id}},
"temperature": 25.5,
"humidity": 65.0,
"moisture": 28.0, // < 30% → Se activa riego automático
"light": 1200.0
}Respuesta esperada:
{
"success": true,
"conditionId": 1,
"watered": true,
"wateringLog": {
"id": 1,
"amountMl": 200,
"timestamp": "2025-11-21T..."
}
}6. Get Plant by ID (carpeta 5. Plants Service)
- Obtiene toda la información de la planta
- Incluye: datos básicos, pot, especie, condiciones ambientales, historial de riego
GET /plants/{{plant_id}}
Respuesta esperada:
{
"plant": {
"id": 1,
"name": "Mi Rosa China",
"imageUrl": "http://...",
"pot": {
"id": 1,
"label": "ESP32_TEST_001"
},
"species": {
"id": 7,
"commonName": "Rosa China",
"scientificName": "Hibiscus rosa-sinensis",
"waterRequirements": "...",
"lightRequirements": "...",
"humidityRequirements": "...",
"moistureRequirements": "..."
},
"environmentalConditions": [
{
"temperature": 25.5,
"humidity": 65.0,
"moisture": 28.0,
"light": 1200.0,
"timestamp": "..."
}
],
"wateringLogs": [
{
"id": 1,
"amountMl": 200,
"timestamp": "..."
}
]
}
}GET /iot/plants/{{plant_id}}/conditions?limit=10
GET /iot/plants/{{plant_id}}/watering-logs?limit=10
GET /iot/plants/{{plant_id}}/latest
PUT /plants/{{plant_id}}
{
"name": "Mi Rosa China Actualizada",
"notes": "Está creciendo bien"
}GET /plants?limit=10&offset=0
- Crear planta (Paso 5)
- Enviar datos con moisture < 30% (Paso 6)
- Verificar que
watered: trueen la respuesta - Consultar planta (Paso 7) y ver el registro en
wateringLogs
- Crear planta (Paso 5)
- Enviar datos con moisture > 30% (ej: 45.0)
- Verificar que
watered: falseen la respuesta - Consultar planta y ver que NO hay nuevo registro de riego
- Crear planta (Paso 5)
- Enviar 5 lecturas diferentes (Paso 6) con diferentes valores
- Consultar historial de condiciones
- Verificar que todas las lecturas se almacenaron
- Verifica que ejecutaste Register User o Login User
- Las variables
access_tokenysession_tokendeben tener valores - Ve a: Colección → Variables → Check values
- Asegúrate de que el ID de la planta/pot/especie existe
- Ejecuta primero los endpoints de creación
- Verifica las variables de colección
- Revisa que todos los campos requeridos estén presentes
nameypotLabelson obligatorios para crear plantasspeciesIddebe ser un número entero
- Verifica que el campo
imagetenga un archivo seleccionado - El archivo debe ser JPG, PNG o similar
- Máximo 10MB
- El endpoint
/iot/sensor-dataes PÚBLICO - No requiere headers de autenticación
- Solo necesita
plantIdválido
- 1: Ajo
- 2: Geranio
- 3: Hierbabuena
- 4: Menta
- 5: Orégano
- 6: Orquídea
- 7: Rosa China ⭐ (más común para pruebas)
- 8: Tomate Cherry
- Temperature: 0-50 °C
- Humidity: 0-100 %
- Moisture: 0-100 % (< 30% activa riego)
- Light: 0-2000 lux
Todos los endpoints (excepto health checks, species públicos y ESP32) requieren:
Authorization: Bearer {{access_token}}
x-session-token: {{session_token}}
x-user-id: {{user_id}}
Estos headers se agregan automáticamente si ejecutaste Register/Login primero.
- Health checks de todos los servicios
- Registro/Login de usuario
- Listar especies disponibles
- Crear/obtener macetero
- Crear planta con imagen
- Enviar datos de sensores (ESP32)
- Verificar riego automático
- Consultar planta completa
- Ver historial de condiciones
- Ver historial de riego
- Actualizar planta
- Listar todas las plantas
Si todo funciona correctamente:
- ✅ Usuario creado y autenticado
- ✅ Imagen de planta subida correctamente
- ✅ Planta creada con datos completos
- ✅ ESP32 puede enviar datos sin autenticación
- ✅ Sistema riega automáticamente cuando moisture < 30%
- ✅ Historial de condiciones y riego se almacena
- ✅ Planta muestra datos enriquecidos de todos los servicios
¡Listo para probar! 🚀
Empieza ejecutando los requests en orden desde la carpeta 1 hasta la 6.