Flujos Completos¶
Esta pagina documenta los flujos de trabajo mas comunes del Gateway, mostrando la secuencia completa de llamadas API necesarias para cada operacion.
Configuracion base¶
Base URL:
Headers requeridos en todas las llamadas:
| Header | Descripcion |
|---|---|
X-API-Key |
Clave de API proporcionada por el administrador |
X-User-ID |
UUID del usuario que realiza la operacion |
Flujo 1: Crear expediente con documento y firma¶
Flujo completo desde la creacion de un expediente hasta la firma del documento vinculado.
sequenceDiagram
participant C as Cliente
participant G as Gateway
participant B as Backend
C->>G: 1. GET /case-templates
G->>B: Obtener plantillas
B-->>G: Lista de plantillas
G-->>C: template_id
C->>G: 2. POST /cases/
G->>B: Crear expediente
B-->>G: Expediente creado
G-->>C: case_id
C->>G: 3. POST /documents/
G->>B: Crear documento borrador
B-->>G: Documento creado
G-->>C: document_id
C->>G: 4. PATCH /documents/{id}
G->>B: Guardar contenido + firmantes
B-->>G: Documento actualizado
G-->>C: 200 OK
C->>G: 5. POST /documents/{id}/start-signing
G->>B: Iniciar proceso de firma
B-->>G: Estado actualizado
G-->>C: 200 OK
C->>G: 6. POST /documents/{id}/sign
G->>B: Firmar documento
B-->>G: Firma aplicada
G-->>C: 200 OK
Paso 1: Obtener plantillas de expediente¶
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/system/case-templates" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"case_templates": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Expediente de Habilitacion",
"description": "Tramite de habilitacion comercial"
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "Expediente Administrativo",
"description": "Expediente administrativo general"
}
]
}
Paso 2: Crear expediente¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario" \
-H "Content-Type: application/json" \
-d '{
"case_template_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"reference": "Habilitacion comercial - Local Av. Rivadavia 1234"
}'
Respuesta (201):
{
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"case_number": "EXP-2026-000142",
"reference": "Habilitacion comercial - Local Av. Rivadavia 1234",
"status": "open",
"created_at": "2026-03-03T10:30:00Z"
}
Paso 3: Crear documento borrador¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario" \
-H "Content-Type: application/json" \
-d '{
"document_type_acronym": "INF",
"reference": "Informe tecnico de habilitacion",
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}'
Respuesta (201):
{
"document_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"document_number": "INF-2026-000089",
"document_type": "INF",
"reference": "Informe tecnico de habilitacion",
"state": "draft",
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"created_at": "2026-03-03T10:31:00Z"
}
Paso 4: Guardar contenido y firmantes¶
curl -X PATCH "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/d4e5f6a7-b8c9-0123-defa-234567890123" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario" \
-H "Content-Type: application/json" \
-d '{
"content": "<p>Se informa que el local ubicado en Av. Rivadavia 1234 cumple con los requisitos tecnicos para habilitacion comercial.</p>",
"signers": [
{
"user_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"order": 1
}
]
}'
Respuesta (200):
{
"document_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"state": "draft",
"content": "<p>Se informa que el local ubicado en Av. Rivadavia 1234 cumple con los requisitos tecnicos para habilitacion comercial.</p>",
"signers": [
{
"user_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"order": 1,
"signed": false
}
]
}
Paso 5: Iniciar firma¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/d4e5f6a7-b8c9-0123-defa-234567890123/start-signing" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"document_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"state": "sent_to_sign",
"message": "Documento enviado a firma"
}
Paso 6: Firmar documento¶
Cada firmante ejecuta esta llamada con su propio X-User-ID.
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/d4e5f6a7-b8c9-0123-defa-234567890123/sign" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: e5f6a7b8-c9d0-1234-efab-345678901234"
Respuesta (200):
{
"document_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"state": "signed",
"message": "Documento firmado exitosamente"
}
Flujo 2: Transferir expediente¶
Transferir un expediente de un sector a otro dentro del municipio.
sequenceDiagram
participant C as Cliente
participant G as Gateway
participant B as Backend
C->>G: 1. GET /cases/{id}/prepare-transfer
G->>B: Obtener sectores disponibles
B-->>G: Lista de sectores
G-->>C: Sectores destino
C->>G: 2. POST /cases/{id}/transfer
G->>B: Ejecutar transferencia
B-->>G: Transferencia completada
G-->>C: 200 OK
Paso 1: Obtener sectores disponibles¶
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012/prepare-transfer" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"available_sectors": [
{
"sector_id": "f6a7b8c9-d0e1-2345-fab0-456789012345",
"name": "Direccion de Obras Particulares",
"department": "Secretaria de Obras Publicas"
},
{
"sector_id": "a7b8c9d0-e1f2-3456-ab01-567890123456",
"name": "Direccion de Habilitaciones",
"department": "Secretaria de Gobierno"
}
]
}
Paso 2: Transferir expediente¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012/transfer" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario" \
-H "Content-Type: application/json" \
-d '{
"target_sector_id": "f6a7b8c9-d0e1-2345-fab0-456789012345",
"reason": "Requiere revision tecnica de obras particulares"
}'
Respuesta (200):
{
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"message": "Expediente transferido exitosamente",
"target_sector": "Direccion de Obras Particulares"
}
Flujo 3: Buscar y consultar¶
Buscar expedientes y consultar su informacion completa.
sequenceDiagram
participant C as Cliente
participant G as Gateway
participant B as Backend
C->>G: 1. GET /cases/search?search=habilitacion
G->>B: Buscar expedientes
B-->>G: Resultados
G-->>C: Lista de expedientes
C->>G: 2. GET /cases/{id}
G->>B: Obtener detalle
B-->>G: Expediente completo
G-->>C: Detalle del expediente
C->>G: 3. GET /cases/{id}/history
G->>B: Obtener historial
B-->>G: Movimientos
G-->>C: Historial completo
C->>G: 4. GET /cases/{id}/documents
G->>B: Obtener documentos
B-->>G: Lista de documentos
G-->>C: Documentos vinculados
Paso 1: Buscar expedientes¶
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/search?search=habilitacion" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"results": [
{
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"case_number": "EXP-2026-000142",
"reference": "Habilitacion comercial - Local Av. Rivadavia 1234",
"status": "open",
"current_sector": "Direccion de Habilitaciones",
"created_at": "2026-03-03T10:30:00Z"
}
],
"total": 1
}
Paso 2: Obtener detalle del expediente¶
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"case_number": "EXP-2026-000142",
"reference": "Habilitacion comercial - Local Av. Rivadavia 1234",
"status": "open",
"current_sector": "Direccion de Habilitaciones",
"assigned_to": {
"user_id": "uuid-del-usuario",
"name": "Juan Perez"
},
"created_at": "2026-03-03T10:30:00Z",
"updated_at": "2026-03-03T10:35:00Z"
}
Paso 3: Obtener historial¶
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012/history" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"history": [
{
"action": "created",
"timestamp": "2026-03-03T10:30:00Z",
"user": "Juan Perez",
"details": "Expediente creado"
},
{
"action": "document_added",
"timestamp": "2026-03-03T10:31:00Z",
"user": "Juan Perez",
"details": "Documento INF-2026-000089 vinculado"
}
]
}
Paso 4: Obtener documentos vinculados¶
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012/documents" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"documents": [
{
"document_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"document_number": "INF-2026-000089",
"document_type": "INF",
"reference": "Informe tecnico de habilitacion",
"state": "signed",
"created_at": "2026-03-03T10:31:00Z"
}
]
}
Flujo 4: Importar documento externo¶
Importar un PDF externo al sistema, opcionalmente reemplazarlo, y firmarlo.
sequenceDiagram
participant C as Cliente
participant G as Gateway
participant B as Backend
participant S as Storage (R2)
C->>G: 1. POST /documents/import (multipart)
G->>B: Crear documento importado
B->>S: Almacenar PDF
S-->>B: URL almacenada
B-->>G: Documento creado
G-->>C: document_id
Note over C,G: (Opcional) Reemplazar PDF
C->>G: 2. PUT /documents/{id}/imported-pdf
G->>B: Reemplazar archivo
B->>S: Actualizar PDF
S-->>B: URL actualizada
B-->>G: 200 OK
G-->>C: Documento actualizado
C->>G: 3. POST /documents/{id}/start-signing
G->>B: Iniciar firma
B-->>G: Estado actualizado
G-->>C: 200 OK
C->>G: 4. POST /documents/{id}/sign
G->>B: Firmar
B-->>G: Firma aplicada
G-->>C: 200 OK
Paso 1: Importar PDF¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/import" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario" \
-F "pdf_file=@/ruta/al/documento.pdf"
Respuesta (201):
{
"document_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"document_number": "IMP-2026-000015",
"state": "draft",
"source": "imported",
"created_at": "2026-03-03T11:00:00Z"
}
Paso 2: Reemplazar PDF (opcional)¶
Solo es posible mientras el documento esta en estado draft.
curl -X PUT "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/e5f6a7b8-c9d0-1234-efab-345678901234/imported-pdf" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario" \
-F "pdf_file=@/ruta/al/documento-corregido.pdf"
Respuesta (200):
{
"document_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"state": "draft",
"message": "PDF reemplazado exitosamente"
}
Paso 3: Iniciar firma¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/e5f6a7b8-c9d0-1234-efab-345678901234/start-signing" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-usuario"
Respuesta (200):
{
"document_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"state": "sent_to_sign",
"message": "Documento enviado a firma"
}
Paso 4: Firmar documento¶
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/e5f6a7b8-c9d0-1234-efab-345678901234/sign" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-firmante"
Respuesta (200):
{
"document_id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"state": "signed",
"message": "Documento firmado exitosamente"
}
Flujo 5: Proponer documento a expediente¶
Proponer un documento borrador existente para que sea vinculado a un expediente. El responsable del expediente debe aceptar la propuesta.
sequenceDiagram
participant A as Autor
participant G as Gateway
participant B as Backend
participant R as Responsable
A->>G: 1. POST /cases/{id}/documents/propose
G->>B: Proponer documento
B-->>G: Propuesta creada
G-->>A: proposed_id
Note over B,R: Notificacion al responsable
R->>G: 2. POST /cases/{id}/documents/accept-proposal
G->>B: Aceptar propuesta
B-->>G: Documento vinculado
G-->>R: 200 OK
Paso 1: Proponer documento borrador¶
El autor del documento propone vincularlo a un expediente.
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012/documents/propose" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-autor" \
-H "Content-Type: application/json" \
-d '{
"document_draft_id": "d4e5f6a7-b8c9-0123-defa-234567890123"
}'
Respuesta (200):
{
"proposed_id": "f6a7b8c9-d0e1-2345-fab0-456789012345",
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_draft_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"status": "pending",
"message": "Propuesta enviada al responsable del expediente"
}
Paso 2: Aceptar propuesta¶
El responsable del expediente acepta la propuesta y el documento queda vinculado.
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/c3d4e5f6-a7b8-9012-cdef-123456789012/documents/accept-proposal" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: uuid-del-responsable" \
-H "Content-Type: application/json" \
-d '{
"proposed_id": "f6a7b8c9-d0e1-2345-fab0-456789012345"
}'
Respuesta (200):
{
"case_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"message": "Propuesta aceptada, documento vinculado al expediente"
}
Rechazo de propuesta
Si el responsable no esta de acuerdo, puede rechazar la propuesta. El documento borrador permanece sin vincular y el autor puede modificarlo o proponerlo a otro expediente.