Mapa de Datos
Endpoints para gestionar el mapa de datos de la organizacion: activos que procesan datos personales y los flujos de datos entre ellos.
Todos los endpoints requieren autenticacion JWT. El tenant se determina automaticamente desde el token.
Catalogo
Resumen del catalogo
GET /api/v1/data-map/catalogRetorna un resumen general del catalogo de datos: totales de activos, flujos y categorias de datos registradas.
curl -X GET https://api.dpolab.com/api/v1/data-map/catalog \
-H "Authorization: Bearer {token}"Activos
Listar activos
GET /api/v1/data-map/systemsQuery params:
| Param | Tipo | Descripcion |
|---|---|---|
type | string | Filtrar por tipo de activo |
contractStatus | string | Filtrar por estado del contrato |
page | number | Pagina (default: 1) |
limit | number | Registros por pagina (default: 20) |
Ejemplo:
curl -X GET "https://api.dpolab.com/api/v1/data-map/systems?type=saas&page=1&limit=10" \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"items": [
{
"id": "sys_crm01",
"name": "Salesforce CRM",
"type": "saas",
"description": "Activo de gestion de relacion con clientes",
"owner": "Equipo Comercial",
"hostingType": "cloud",
"hostingCountry": "US",
"vendor": "Salesforce Inc.",
"dataCategories": ["name", "email", "phone", "rut"],
"hasSensitiveData": false,
"securityMeasures": ["ENCRYPTION", "ACCESS_CONTROL", "LOGGING"],
"contractStatus": "active",
"contractExpiry": "2027-01-15",
"hasDpaClause": true,
"createdAt": "2026-01-05T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 12,
"totalPages": 2
}
}
}Crear activo
POST /api/v1/data-map/systemsBody:
{
"name": "Salesforce CRM",
"type": "saas",
"description": "Activo de gestion de relacion con clientes",
"owner": "Equipo Comercial",
"hostingType": "cloud",
"hostingCountry": "US",
"vendor": "Salesforce Inc.",
"dataCategories": ["name", "email", "phone", "rut"],
"hasSensitiveData": false,
"securityMeasures": ["ENCRYPTION", "ACCESS_CONTROL"],
"contractStatus": "active",
"contractExpiry": "2027-01-15",
"hasDpaClause": true
}Campos requeridos: name, type.
Valores predefinidos para securityMeasures: ENCRYPTION, ANONYMIZATION, PSEUDONYMIZATION, ACCESS_CONTROL, LOGGING, BACKUP, NETWORK_SECURITY, VULNERABILITY_MANAGEMENT. Tambien acepta valores personalizados como texto libre.
Respuesta (201):
{
"success": true,
"data": {
"id": "sys_new456",
"name": "Salesforce CRM",
"type": "saas",
"createdAt": "2026-03-09T10:00:00Z"
}
}Obtener detalle del activo
GET /api/v1/data-map/systems/:idcurl -X GET https://api.dpolab.com/api/v1/data-map/systems/sys_crm01 \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"id": "sys_crm01",
"name": "Salesforce CRM",
"type": "saas",
"description": "Activo de gestion de relacion con clientes",
"owner": "Equipo Comercial",
"hostingType": "cloud",
"hostingCountry": "US",
"vendor": "Salesforce Inc.",
"dataCategories": ["name", "email", "phone", "rut"],
"hasSensitiveData": false,
"securityMeasures": ["ENCRYPTION", "ACCESS_CONTROL", "LOGGING"],
"contractStatus": "active",
"contractExpiry": "2027-01-15",
"hasDpaClause": true,
"createdAt": "2026-01-05T10:00:00Z",
"updatedAt": "2026-02-20T14:30:00Z"
}
}Actualizar activo
PUT /api/v1/data-map/systems/:idAcepta los mismos campos que la creacion. Solo envia los campos que quieras actualizar.
curl -X PUT https://api.dpolab.com/api/v1/data-map/systems/sys_crm01 \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"securityMeasures": ["ENCRYPTION", "PSEUDONYMIZATION", "ACCESS_CONTROL"],
"contractStatus": "renewal_pending",
"hasDpaClause": true
}'Eliminar activo
DELETE /api/v1/data-map/systems/:idcurl -X DELETE https://api.dpolab.com/api/v1/data-map/systems/sys_crm01 \
-H "Authorization: Bearer {token}"Al eliminar un activo se eliminan tambien todos los flujos de datos asociados.
Flujos de Datos
Los flujos representan transferencias de datos personales entre activos.
Los flujos solo se pueden listar, crear y eliminar. No existe endpoint para obtener detalle individual ni para actualizar un flujo existente.
Listar flujos
GET /api/v1/data-map/flowsQuery params:
| Param | Tipo | Descripcion |
|---|---|---|
page | number | Pagina (default: 1) |
limit | number | Registros por pagina (default: 20) |
Ejemplo:
curl -X GET "https://api.dpolab.com/api/v1/data-map/flows?page=1&limit=10" \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"items": [
{
"id": "flow_001",
"sourceSystemId": "sys_crm01",
"targetSystemId": "sys_mail01",
"description": "Sincronizacion de contactos para email marketing",
"dataCategories": ["email", "name"],
"isInternational": true,
"safeguards": "Clausulas contractuales tipo",
"createdAt": "2026-01-10T09:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 5,
"totalPages": 1
}
}
}Crear flujo
POST /api/v1/data-map/flowsBody:
{
"sourceSystemId": "sys_crm01",
"targetSystemId": "sys_mail01",
"description": "Sincronizacion de contactos para email marketing",
"dataCategories": ["email", "name"],
"isInternational": true,
"safeguards": "Clausulas contractuales tipo"
}Campos requeridos: sourceSystemId, targetSystemId.
Respuesta (201):
{
"success": true,
"data": {
"id": "flow_new002",
"sourceSystemId": "sys_crm01",
"targetSystemId": "sys_mail01",
"createdAt": "2026-03-09T10:00:00Z"
}
}Si isInternational es true, se recomienda especificar safeguards para documentar el mecanismo de proteccion segun la Ley 21.719.
Eliminar flujo
DELETE /api/v1/data-map/flows/:idcurl -X DELETE https://api.dpolab.com/api/v1/data-map/flows/flow_001 \
-H "Authorization: Bearer {token}"Ver tambien
- Modulo Mapa de Datos — Guia funcional del inventario de activos y flujos de datos