Skip to main content

Endpoints del API Gateway

Endpoints Principales​

Health Check​

GET /health

Verifica el estado de salud del API Gateway y los servicios conectados.

{
"status": "healthy",
"timestamp": "2024-01-15T10:30:00Z",
"services": {
"image_processor": "healthy",
"ml_embeddings": "healthy",
"ml_classifier": "healthy",
"ocr_extractor": "healthy"
},
"uptime": 3600,
"memory": {
"used": "45.2 MB",
"total": "512 MB"
}
}

Procesamiento de Imágenes​

POST /process

Procesa una imagen a través del pipeline completo de 6 fases.

Request​

curl -X POST http://localhost:8000/process \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer <jwt-token>" \
-F "file=@imagen.jpg" \
-F "config={\"ficha_type\":\"auto\",\"language\":\"es\"}"

Response​

{
"success": true,
"processing_id": "proc_123456789",
"phases": {
"phase_1": {
"status": "completed",
"processing_time": 1.23,
"output": {
"corrected_image": "base64...",
"confidence": 0.95
}
},
"phase_2": {
"status": "completed",
"processing_time": 2.45,
"output": {
"embeddings": [...],
"cluster_id": 1
}
},
"phase_3": {
"status": "completed",
"processing_time": 0.87,
"output": {
"predicted_class": "ficha_residencia",
"confidence": 0.89
}
},
"phase_4": {
"status": "completed",
"processing_time": 3.12,
"output": {
"text": "Extracted text...",
"confidence": 0.92
}
},
"phase_5": {
"status": "completed",
"processing_time": 0.56,
"output": {
"structured_data": {...}
}
}
},
"total_processing_time": 8.23,
"final_result": {
"document_type": "ficha_residencia",
"extracted_data": {...},
"confidence_scores": {...}
}
}

Procesamiento por Fases​

Fase 1: Preprocesamiento​

POST /phase1/process

{
"file": "imagen_base64",
"options": {
"enhance": true,
"unwarp": true
}
}

Fase 2: Embeddings y Clustering​

POST /phase2/embed

{
"image": "imagen_procesada_base64"
}

POST /phase2/cluster

{
"embeddings": [[...], [...], [...]],
"max_k": 10
}

Fase 3-4: Clasificación​

POST /phase3/classify

{
"image": "imagen_base64",
"model": "efficientnet_b0"
}

POST /phase3/train

{
"dataset_path": "/path/to/training/data",
"model_config": {
"epochs": 50,
"batch_size": 32
}
}

Fase 5-6: Extracción (IDP) con OCR​

POST /phase4/ocr

{
"image": "imagen_base64",
"ficha_type": "residencia",
"language": "es"
}

POST /phase4/extract

{
"text": "texto_extraido",
"document_type": "ficha_residencia"
}

Endpoints de Administración​

Gestión de Modelos​

GET /admin/models

Lista todos los modelos disponibles.

POST /admin/models/reload

Recarga los modelos en memoria.

DELETE /admin/models/{model_id}

Elimina un modelo específico.

Estadísticas​

GET /admin/stats

{
"total_requests": 1523,
"successful_requests": 1498,
"failed_requests": 25,
"average_processing_time": 5.67,
"requests_by_phase": {
"phase_1": 1523,
"phase_2": 1498,
"phase_3": 1498,
"phase_4": 1498
},
"most_processed_types": [
{"type": "ficha_residencia", "count": 856},
{"type": "documento_identidad", "count": 642}
]
}

Configuración​

GET /admin/config

Obtiene la configuración actual.

PUT /admin/config

Actualiza la configuración del sistema.

{
"services": {
"image_processor": {
"timeout": 30000,
"max_retries": 3
}
},
"cache": {
"enabled": true,
"ttl": 3600
},
"rate_limiting": {
"enabled": true,
"max_requests": 100,
"window_ms": 900000
}
}

Códigos de Estado HTTP​

CódigoDescripciónUso
200OKOperación exitosa
201CreatedRecurso creado exitosamente
400Bad RequestRequest malformado
401UnauthorizedToken de autenticación requerido
403ForbiddenPermisos insuficientes
404Not FoundRecurso no encontrado
429Too Many RequestsRate limit excedido
500Internal Server ErrorError interno del servidor
502Bad GatewayServicio backend no disponible
503Service UnavailableServicio temporalmente no disponible

Headers Requeridos​

Autenticación​

Authorization: Bearer <jwt-token>

Content-Type​

Content-Type: application/json
Content-Type: multipart/form-data

Request ID​

X-Request-ID: unique-request-identifier

Parámetros de Query Comunes​

ParámetroTipoDescripciónEjemplo
limitintegerNúmero máximo de resultados?limit=50
offsetintegerNúmero de resultados a saltar?offset=100
formatstringFormato de respuesta?format=json
fieldsstringCampos específicos a incluir?fields=id,name,status
sortstringCampo por el cual ordenar?sort=created_at
orderstringDirección del ordenamiento?order=desc

Ejemplos de Uso​

Procesamiento Completo​

# 1. Subir y procesar imagen
curl -X POST http://localhost:8000/process \
-H "Authorization: Bearer $JWT_TOKEN" \
-F "file=@documento.jpg" \
-F "config={\"ficha_type\":\"auto\"}"

# 2. Verificar estado del procesamiento
curl -X GET http://localhost:8000/process/proc_123456789 \
-H "Authorization: Bearer $JWT_TOKEN"

# 3. Obtener resultados
curl -X GET http://localhost:8000/results/proc_123456789 \
-H "Authorization: Bearer $JWT_TOKEN"

Procesamiento por Fases​

# Solo clasificación
curl -X POST http://localhost:8000/phase3/classify \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"image": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"model": "efficientnet_b0"
}'

# Solo extracción de texto (OCR)
curl -X POST http://localhost:8000/phase4/ocr \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"image": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"ficha_type": "residencia",
"language": "es"
}'