Referencia API
API Pública de Geodocs
API REST con autenticación por Token de Acceso Personal (PAT) para automatización de proyectos GIS.
API:https://api.geodocs.io
Geo-API:https://geo-api.geodocs.io
Autenticación
Todas las solicitudes requieren un Token de Acceso Personal (PAT) en el header Authorization. Cree tokens en Geodocs > Configuración > Tokens de API.
Formato del token:
gdx_<48 hex chars>Header de la solicitud:
Authorization: Bearer gdx_...Límite de solicitudes: 100 por minuto por token
Cada token tiene alcances que controlan a qué endpoints puede acceder.
# Autenticar con PAT
curl -H "Authorization: Bearer gdx_a1b2c3..." \
https://api.geodocs.io/api/public/v1/folders
Paginación
Todos los endpoints de listado soportan paginación con estos parámetros:
pageNúmero de página (predeterminado: 1)limitElementos por página (predeterminado: 50, máximo: 100)termTérmino de búsqueda/filtroSobre de respuesta
{
"content": [{ ... }],
"total": 142,
"page": 1,
"size": 50,
"pages": 3
}
"content": [{ ... }],
"total": 142,
"page": 1,
"size": 50,
"pages": 3
}
Endpoints
Folders
Alcance:
READ_FOLDERGET
/api/public/v1/foldersGET
/api/public/v1/folders/:keyAssignments
Alcance:
READ_ASSIGNMENTGET
/api/public/v1/assignmentsGET
/api/public/v1/assignments/:keyExpenses
Alcance:
READ_EXPENSEGET
/api/public/v1/expensesGET
/api/public/v1/expenses/:keyBudgets
Alcance:
READ_BUDGETGET
/api/public/v1/budgetsGET
/api/public/v1/budgets/:keyStatuses
Alcance: No se requiere alcance
GET
/api/public/v1/statusesWebhooks
Alcance:
MANAGE_WEBHOOKPOST
/api/public/v1/webhooks/endpointsDELETE
/api/public/v1/webhooks/endpoints/:keyLayers
geo-apiAlcance: No se requiere alcance
GET
/api/public/v1/layersGET
/api/public/v1/layers/:id/mvt/{z}/{x}/{y}Geometries
geo-apiAlcance: No se requiere alcance
POST
/api/public/v1/geometries/geojsonEventos de Webhook
Cuando está suscrito, Geodocs envía solicitudes HTTP POST a su endpoint con este payload:
Tipos de evento disponibles
folder.createdfolder.updatedfolder.deletedfolder.archivedassignment.createdassignment.updatedassignment.deletedexpense.createdexpense.updatedexpense.deletedbudget.createdbudget.updatedbudget.deletedPayload del evento
{
"id": "delivery-uuid",
"event": "folder.created",
"workspaceKey": "workspace-uuid",
"occurredAt": "2026-03-28T14:22:00Z",
"data": { "id": "entity-uuid", ... }
}
"id": "delivery-uuid",
"event": "folder.created",
"workspaceKey": "workspace-uuid",
"occurredAt": "2026-03-28T14:22:00Z",
"data": { "id": "entity-uuid", ... }
}
Verificación de firma
Cada entrega incluye un header X-Geodocs-Signature. Verifíquelo usando HMAC-SHA256:
// Node.js
const crypto = require('crypto');
const expected = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
const received = header
.replace('sha256=', '');
const valid = crypto
.timingSafeEqual(
Buffer.from(expected),
Buffer.from(received));
Manejo de Errores
Todos los endpoints devuelven códigos HTTP estándar:
200OK204No Content (DELETE)400Bad Request401Unauthorized403Forbidden (missing scope)404Not Found429Too Many Requests500Internal Server ErrorFormato de respuesta de error
{
"statusCode": 403,
"message": "Token missing required scope: READ_FOLDER",
"error": "Forbidden"
}
"statusCode": 403,
"message": "Token missing required scope: READ_FOLDER",
"error": "Forbidden"
}