Documentos¶
20 endpoints para gestion de documentos.
Todos los endpoints usan la base URL https://gateway.tu-municipio.gdilatam.com/api/v1 y requieren los headers X-API-Key y X-User-ID salvo que se indique lo contrario.
Lectura¶
Buscar documentos¶
Busca documentos con filtros opcionales. Soporta paginacion.
Parametros query:
| Parametro | Tipo | Default | Descripcion |
|---|---|---|---|
page |
int | 1 |
Numero de pagina |
page_size |
int | 20 |
Resultados por pagina (max 100) |
search |
string | - | Busca por document_number |
status |
string | - | Filtrar por estado: pending, sent_to_sign, signed, rejected |
document_type |
string | - | Filtrar por acronimo del tipo: INF, DICT, etc. |
case_id |
string | - | Filtrar por expediente |
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/search?status=signed&document_type=INF&page=1&page_size=10" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"documents": [
{
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_number": "IF-2025-00012-SMG-ADGEN",
"document_type": "INF",
"reference": "Informe tecnico sobre habilitacion comercial",
"status": "signed",
"created_at": "2025-06-16T09:00:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 10
}
Documentos pendientes de firma¶
Devuelve los documentos que el usuario actual tiene pendientes de firma.
X-User-ID requerido
Este endpoint requiere X-User-ID obligatoriamente para identificar al firmante.
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/pending-signatures" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"documents": [
{
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"document_number": null,
"document_type": "DICT",
"reference": "Dictamen legal sobre habilitacion",
"status": "sent_to_sign",
"requested_at": "2025-06-20T14:00:00Z",
"requested_by": "Maria Garcia"
}
]
}
Detalle de documento¶
Devuelve la informacion completa de un documento.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
X-User-ID opcional
Se requiere X-User-ID para acceder a documentos que estan en proceso de firma. Para documentos en otros estados, es opcional.
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/c3d4e5f6-a7b8-9012-cdef-123456789012" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_number": "IF-2025-00012-SMG-ADGEN",
"document_type": {
"acronym": "INF",
"name": "Informe"
},
"reference": "Informe tecnico sobre habilitacion comercial",
"status": "signed",
"content": "<p>Contenido HTML del documento...</p>",
"created_by": {
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"full_name": "Juan Perez"
},
"signers": [
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"full_name": "Juan Perez",
"signed_at": "2025-06-17T10:30:00Z"
}
],
"created_at": "2025-06-16T09:00:00Z",
"signed_at": "2025-06-17T10:30:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
404 |
Documento no encontrado |
403 |
Sin permisos para ver el documento |
Contenido HTML¶
Devuelve el contenido HTML de un documento oficial firmado.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Solo documentos oficiales firmados
Este endpoint solo funciona para documentos que ya fueron firmados y tienen numero oficial. Los borradores no tienen contenido disponible por esta via.
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/c3d4e5f6-a7b8-9012-cdef-123456789012/content" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_number": "IF-2025-00012-SMG-ADGEN",
"content": "<html><body><h1>Informe Tecnico</h1><p>Se procede a informar...</p></body></html>"
}
Errores:
| Codigo | Descripcion |
|---|---|
404 |
Documento no encontrado |
400 |
El documento no es oficial o no esta firmado |
URL temporal de descarga¶
Genera una URL temporal firmada para descargar el PDF del documento. La URL expira en 10 minutos.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/c3d4e5f6-a7b8-9012-cdef-123456789012/url" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"official_number": "IF-2025-00012-SMG-ADGEN",
"pdf_url": "https://r2.gdilatam.com/municipio/documents/c3d4e5f6.pdf?X-Amz-Signature=abc123&X-Amz-Expires=600",
"expires_in": 600
}
Tiempo de expiracion
La URL es valida por 600 segundos (10 minutos). Despues de ese tiempo, se debe solicitar una nueva URL.
Errores:
| Codigo | Descripcion |
|---|---|
404 |
Documento no encontrado o sin PDF disponible |
Detalles de firma¶
Devuelve los detalles de firma de un documento (firmantes, fechas, estado de cada firma).
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/c3d4e5f6-a7b8-9012-cdef-123456789012/signature-details" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_number": "IF-2025-00012-SMG-ADGEN",
"signature_status": "fully_signed",
"signers": [
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"full_name": "Juan Perez",
"role": "director",
"status": "signed",
"signed_at": "2025-06-17T10:30:00Z"
}
]
}
Errores:
| Codigo | Descripcion |
|---|---|
404 |
Documento no encontrado |
Buscar documento oficial por numero¶
Busca un documento oficial por su numero exacto.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
doc_number |
string | Numero oficial del documento (ej: IF-2025-00012-SMG-ADGEN) |
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/search-official/IF-2025-00012-SMG-ADGEN" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"document_number": "IF-2025-00012-SMG-ADGEN",
"document_type": "INF",
"reference": "Informe tecnico sobre habilitacion comercial",
"status": "signed",
"created_at": "2025-06-16T09:00:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
404 |
No se encontro documento con ese numero |
Verificar permisos de firma¶
Verifica si un usuario tiene permisos para firmar documentos de un tipo determinado.
Parametros query:
| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
user_id |
UUID | Si | ID del usuario a verificar |
document_type_acronym |
string | Si | Acronimo del tipo de documento (ej: INF, DICT) |
Ejemplo:
curl -X GET "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/check-signer-permissions?user_id=550e8400-e29b-41d4-a716-446655440000&document_type_acronym=INF" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"document_type_acronym": "INF",
"can_sign": true,
"reason": "User has signer role for INF documents"
}
Operaciones¶
Crear documento borrador¶
Crea un nuevo documento en estado borrador.
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
document_type_acronym |
string | Si | Acronimo del tipo de documento (INF, DICT, etc.) |
reference |
string | Si | Descripcion o asunto del documento |
case_id |
UUID | No | Vincular directamente a un expediente |
recipients |
list | No | Lista de UUIDs de usuarios destinatarios |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"document_type_acronym": "INF",
"reference": "Informe de inspeccion ocular - Local comercial Av. San Martin 1234",
"case_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}'
Respuesta 201 Created:
{
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"document_type": "INF",
"reference": "Informe de inspeccion ocular - Local comercial Av. San Martin 1234",
"status": "draft",
"created_at": "2025-07-01T11:00:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
Tipo de documento invalido o campos requeridos faltantes |
404 |
Expediente no encontrado (si se paso case_id) |
Tipos de documentos
Para ver los tipos de documentos disponibles, usar GET /api/v1/system/document-types.
Importar PDF externo¶
Importa un archivo PDF externo como documento en el sistema.
Content-Type: multipart/form-data
Campos del formulario:
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
document_type_acronym |
string | Si | Acronimo del tipo de documento |
reference |
string | Si | Descripcion del documento |
pdf_file |
file | Si | Archivo PDF a importar |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/import" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-F "document_type_acronym=INF" \
-F "reference=Informe pericial externo - Perito Martinez" \
-F "pdf_file=@/ruta/al/archivo/informe-pericial.pdf"
Respuesta 201 Created:
{
"document_id": "a7b8c9d0-e1f2-3456-ghab-567890123456",
"document_type": "INF",
"reference": "Informe pericial externo - Perito Martinez",
"status": "draft",
"is_imported": true,
"created_at": "2025-07-01T12:00:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
Archivo no es PDF valido o campos requeridos faltantes |
422 |
Archivo excede el tamano maximo permitido |
Guardar cambios en borrador¶
Actualiza el contenido y/o metadatos de un documento en estado borrador.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
content |
string | No | Contenido HTML del documento |
reference |
string | No | Nueva referencia o asunto |
signers |
list | No | Lista de UUIDs de firmantes |
recipients |
list | No | Lista de UUIDs de destinatarios |
proposed_case_ids |
list | No | Lista de UUIDs de expedientes propuestos |
Ejemplo:
curl -X PATCH "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/f6a7b8c9-d0e1-2345-fgab-456789012345" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"content": "<p>Se informa que el local ubicado en Av. San Martin 1234 cumple con los requisitos de habilitacion vigentes.</p>",
"signers": ["550e8400-e29b-41d4-a716-446655440000"],
"recipients": ["660f9511-f3ac-52e5-b827-557766551111"]
}'
Respuesta 200 OK:
{
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"status": "draft",
"updated_at": "2025-07-01T13:00:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no esta en estado borrador |
403 |
Sin permisos para editar este documento |
404 |
Documento no encontrado |
Reemplazar PDF importado¶
Reemplaza el archivo PDF de un documento importado.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento importado |
Content-Type: multipart/form-data
Campos del formulario:
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
pdf_file |
file | Si | Nuevo archivo PDF |
Ejemplo:
curl -X PUT "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/a7b8c9d0-e1f2-3456-ghab-567890123456/imported-pdf" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-F "pdf_file=@/ruta/al/archivo/informe-pericial-v2.pdf"
Respuesta 200 OK:
{
"document_id": "a7b8c9d0-e1f2-3456-ghab-567890123456",
"message": "PDF replaced successfully",
"updated_at": "2025-07-01T14:00:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no es importado o no esta en estado borrador |
404 |
Documento no encontrado |
422 |
Archivo no es PDF valido |
Eliminar borrador¶
Elimina un documento que se encuentra en estado draft o rejected.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Solo borradores y rechazados
Solo se pueden eliminar documentos en estado draft o rejected. Los documentos firmados o en proceso de firma no pueden eliminarse.
Ejemplo:
curl -X DELETE "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/f6a7b8c9-d0e1-2345-fgab-456789012345" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no esta en estado draft o rejected |
403 |
Sin permisos para eliminar este documento |
404 |
Documento no encontrado |
Firma¶
Iniciar proceso de firma¶
Envia un documento borrador al circuito de firma. Cambia el estado del documento a sent_to_sign.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/f6a7b8c9-d0e1-2345-fgab-456789012345/start-signing" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"status": "sent_to_sign",
"message": "Document sent for signing"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no esta en estado borrador o no tiene firmantes asignados |
403 |
Sin permisos para enviar a firma |
404 |
Documento no encontrado |
Requisitos previos
Antes de iniciar la firma, asegurar que el documento tenga contenido y firmantes asignados. Usar PATCH /api/v1/documents/{document_id} para configurar los firmantes.
Firmar documento¶
Aplica la firma del usuario actual al documento. Si todos los firmantes requeridos firman, el documento pasa a estado signed y se genera el numero oficial.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/f6a7b8c9-d0e1-2345-fgab-456789012345/sign" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000"
Respuesta 200 OK:
{
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"status": "signed",
"document_number": "IF-2025-00042-SMG-ADGEN",
"signed_at": "2025-07-01T15:00:00Z"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no esta en estado sent_to_sign |
403 |
El usuario no es firmante de este documento |
404 |
Documento no encontrado |
Rechazar documento¶
Rechaza un documento que se encuentra en proceso de firma. El documento vuelve al estado rejected.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
document_id |
UUID | Identificador del documento |
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
reason |
string | Si | Motivo del rechazo |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/documents/f6a7b8c9-d0e1-2345-fgab-456789012345/reject" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"reason": "El informe no incluye los datos del relevamiento de campo"
}'
Respuesta 200 OK:
{
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"status": "rejected",
"rejected_by": "Juan Perez",
"reason": "El informe no incluye los datos del relevamiento de campo"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no esta en estado sent_to_sign o motivo vacio |
403 |
El usuario no es firmante de este documento |
404 |
Documento no encontrado |
Vincular a expediente¶
Vincular documento oficial¶
Vincula un documento oficial (firmado) a un expediente.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
case_id |
UUID | Identificador del expediente |
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
official_document_id |
UUID | Si | ID del documento oficial a vincular |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/a1b2c3d4-e5f6-7890-abcd-ef1234567890/documents/link" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"official_document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}'
Respuesta 200 OK:
{
"message": "Document linked to case successfully",
"case_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no es oficial o ya esta vinculado |
403 |
Sin permisos sobre el expediente |
404 |
Expediente o documento no encontrado |
Proponer borrador¶
Propone vincular un documento en estado borrador a un expediente. Requiere aceptacion por parte del responsable del expediente.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
case_id |
UUID | Identificador del expediente |
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
document_draft_id |
UUID | Si | ID del documento borrador a proponer |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/a1b2c3d4-e5f6-7890-abcd-ef1234567890/documents/propose" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"document_draft_id": "f6a7b8c9-d0e1-2345-fgab-456789012345"
}'
Respuesta 200 OK:
{
"message": "Document proposed to case",
"proposed_id": "b8c9d0e1-f2a3-4567-hgab-678901234567",
"case_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"document_id": "f6a7b8c9-d0e1-2345-fgab-456789012345",
"status": "pending_approval"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
El documento no esta en estado borrador |
403 |
Sin permisos para proponer documentos a este expediente |
404 |
Expediente o documento no encontrado |
Aceptar propuesta¶
Acepta una propuesta de vinculacion de documento a un expediente.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
case_id |
UUID | Identificador del expediente |
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
proposed_id |
UUID | Si | ID de la propuesta a aceptar |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/a1b2c3d4-e5f6-7890-abcd-ef1234567890/documents/accept-proposal" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"proposed_id": "b8c9d0e1-f2a3-4567-hgab-678901234567"
}'
Respuesta 200 OK:
{
"message": "Proposal accepted",
"proposed_id": "b8c9d0e1-f2a3-4567-hgab-678901234567",
"case_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
La propuesta ya fue procesada |
403 |
Sin permisos para aceptar propuestas en este expediente |
404 |
Expediente o propuesta no encontrada |
Rechazar propuesta¶
Rechaza una propuesta de vinculacion de documento.
Parametros path:
| Parametro | Tipo | Descripcion |
|---|---|---|
case_id |
UUID | Identificador del expediente |
Body (JSON):
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
proposed_id |
UUID | Si | ID de la propuesta a rechazar |
Ejemplo:
curl -X POST "https://gateway.tu-municipio.gdilatam.com/api/v1/cases/a1b2c3d4-e5f6-7890-abcd-ef1234567890/documents/reject-proposal" \
-H "X-API-Key: tu-api-key" \
-H "X-User-ID: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"proposed_id": "b8c9d0e1-f2a3-4567-hgab-678901234567"
}'
Respuesta 200 OK:
{
"message": "Proposal rejected",
"proposed_id": "b8c9d0e1-f2a3-4567-hgab-678901234567",
"case_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
Errores:
| Codigo | Descripcion |
|---|---|
400 |
La propuesta ya fue procesada |
403 |
Sin permisos para rechazar propuestas en este expediente |
404 |
Expediente o propuesta no encontrada |