API REST (Desarrolladores)
Mapa de Datos

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/catalog

Retorna 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/systems

Query params:

ParamTipoDescripcion
typestringFiltrar por tipo de activo
contractStatusstringFiltrar por estado del contrato
pagenumberPagina (default: 1)
limitnumberRegistros 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/systems

Body:

{
  "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/:id
curl -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/:id

Acepta 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/:id
curl -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/flows

Query params:

ParamTipoDescripcion
pagenumberPagina (default: 1)
limitnumberRegistros 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/flows

Body:

{
  "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/:id
curl -X DELETE https://api.dpolab.com/api/v1/data-map/flows/flow_001 \
  -H "Authorization: Bearer {token}"

Ver tambien