API REST (Desarrolladores)
Endpoints Dominios

Endpoints Dominios

Endpoints para gestionar los dominios web de la organizacion.

Todos los endpoints requieren autenticacion JWT. El tenant se determina automaticamente desde el token.

Listar dominios

GET /api/v1/domains

Query params:

ParamTipoDescripcion
legalEntityIdstringFiltrar por entidad legal
isActivebooleanFiltrar por estado activo/inactivo
pagenumberPagina (default: 1)
limitnumberRegistros por pagina (default: 20, max: 100)

Ejemplo:

curl -X GET "https://api.dpolab.com/api/v1/domains?isActive=true" \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "domains": [
      {
        "id": "dom_abc123",
        "url": "www.ejemplo.cl",
        "name": "Sitio corporativo",
        "legalEntityId": "ent_xyz789",
        "entityName": "Ejemplo SpA",
        "isActive": true,
        "isVerified": false,
        "environment": "PRODUCTION",
        "description": "Sitio web principal",
        "createdAt": "2026-03-01T10:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 3,
      "totalPages": 1
    }
  }
}

Crear dominio

POST /api/v1/domains

Body:

{
  "url": "www.ejemplo.cl",
  "name": "Sitio corporativo",
  "legalEntityId": "ent_xyz789",
  "description": "Sitio web principal de la empresa",
  "environment": "PRODUCTION"
}
CampoTipoRequeridoDescripcion
urlstringSiURL del dominio (3-255 caracteres)
namestringSiNombre descriptivo (1-200 caracteres)
legalEntityIdstringSiID de la entidad legal responsable
descriptionstringNoDescripcion adicional (max 1000)
environmentstringNoPRODUCTION, STAGING o DEVELOPMENT (default: PRODUCTION)

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "dom_new456"
  }
}

Obtener dominio

GET /api/v1/domains/:id

Retorna el dominio con sus avisos de consentimiento, actividades del RAT y politicas de privacidad asociadas.

curl -X GET https://api.dpolab.com/api/v1/domains/dom_abc123 \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "id": "dom_abc123",
    "url": "www.ejemplo.cl",
    "name": "Sitio corporativo",
    "legalEntityId": "ent_xyz789",
    "entityName": "Ejemplo SpA",
    "isVerified": false,
    "verifiedAt": null,
    "isActive": true,
    "description": "Sitio web principal",
    "environment": "PRODUCTION",
    "createdAt": "2026-03-01T10:00:00Z",
    "updatedAt": "2026-03-15T12:00:00Z",
    "notices": [],
    "activities": [],
    "policies": []
  }
}

Actualizar dominio

PATCH /api/v1/domains/:id

Acepta actualizacion parcial de los campos.

curl -X PATCH https://api.dpolab.com/api/v1/domains/dom_abc123 \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Sitio web principal", "description": "Actualizado" }'

Respuesta (200):

{
  "success": true,
  "data": {
    "id": "dom_abc123"
  }
}

Eliminar dominio

DELETE /api/v1/domains/:id

Elimina el dominio. Las referencias en tablas relacionadas (avisos, actividades) se desvinculan automaticamente.

curl -X DELETE https://api.dpolab.com/api/v1/domains/dom_abc123 \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true
}

Vincular actividad RAT

POST /api/v1/domains/:id/activities

Vincula una actividad de tratamiento al dominio con un rol especifico.

Body:

{
  "activityId": "act_abc123",
  "role": "COLLECTION"
}
CampoTipoRequeridoDescripcion
activityIdstringSiID de la actividad RAT
rolestringSiCOLLECTION, STORAGE, PROCESSING o TRANSFER

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "link_abc123"
  }
}

Desvincular actividad RAT

DELETE /api/v1/domains/:id/activities/:activityId
curl -X DELETE https://api.dpolab.com/api/v1/domains/dom_abc123/activities/act_abc123 \
  -H "Authorization: Bearer {token}"

Sincronizar actividades (bulk)

POST /api/v1/domains/:id/activities/bulk-sync

Reemplaza todas las asociaciones de actividades del dominio de una vez.

Body:

{
  "activities": [
    { "activityId": "act_001", "role": "COLLECTION" },
    { "activityId": "act_002", "role": "PROCESSING" }
  ]
}

Respuesta (200):

{
  "success": true
}

Ver tambien