API REST (Desarrolladores)
Organizacion

Endpoints Organizacion

Endpoints para gestionar la estructura organizacional: workspaces, entidades legales y departamentos.

Todos los endpoints requieren autenticacion. Crear/editar/eliminar requiere rol OWNER o ADMIN.

Workspaces

Listar workspaces

GET /api/v1/org/workspaces

Respuesta (200):

{
  "success": true,
  "data": {
    "workspaces": [
      {
        "id": "ws_abc123",
        "name": "Chile",
        "description": "Operaciones en Chile"
      }
    ]
  }
}

Crear workspace

POST /api/v1/org/workspaces

Body:

{
  "name": "Chile",
  "description": "Operaciones en Chile"
}

Entidades Legales

Listar entidades

GET /api/v1/org/entities?workspaceId={id}

Query params:

ParamTipoDescripcion
workspaceIdstringFiltrar por workspace (opcional)

Respuesta (200):

{
  "success": true,
  "data": {
    "entities": [
      {
        "id": "ent_abc123",
        "workspaceId": "ws_abc123",
        "name": "Renovables del Sur S.A.",
        "taxId": "76.543.210-K",
        "legalRepName": "Juan Perez",
        "legalRepEmail": "[email protected]",
        "dpoUserId": null,
        "dpoName": "Maria Lopez",
        "dpoEmail": "[email protected]",
        "postalAddress": "Av. Providencia 1234, Santiago",
        "arcoPublicEmail": "[email protected]",
        "isActive": true,
        "createdAt": "2026-01-15T00:00:00.000Z",
        "updatedAt": "2026-03-20T00:00:00.000Z"
      }
    ]
  }
}

Crear entidad

POST /api/v1/org/entities

Body:

{
  "workspaceId": "ws_abc123",
  "name": "Renovables del Sur S.A.",
  "taxId": "76.543.210-K",
  "legalRepName": "Juan Perez",
  "legalRepEmail": "[email protected]",
  "dpoName": "Maria Lopez",
  "dpoEmail": "[email protected]",
  "postalAddress": "Av. Providencia 1234, Santiago",
  "arcoPublicEmail": "[email protected]"
}
CampoTipoObligatorioDescripcion
workspaceIdstringSiID del workspace
namestringSiRazon social (2-200 chars)
taxIdstringNoRUT (max 12 chars)
legalRepNamestringNoNombre del representante legal
legalRepEmailstringNoEmail del representante legal
dpoNamestringNoNombre del DPO
dpoEmailstringNoEmail del DPO
postalAddressstringNoDireccion postal (max 500 chars)
arcoPublicEmailstringNoEmail publico para solicitudes ARCO

Actualizar entidad

PATCH /api/v1/org/entities/{id}

Body: Mismos campos que crear, todos opcionales. Solo se actualizan los campos enviados.

{
  "dpoName": "Maria Lopez",
  "dpoEmail": "[email protected]",
  "arcoPublicEmail": "[email protected]"
}

Eliminar entidad (soft delete)

DELETE /api/v1/org/entities/{id}

Marca la entidad como inactiva. No elimina datos vinculados.

Asignar DPO

PATCH /api/v1/org/entities/{id}/dpo

Body:

{
  "userId": "usr_abc123"
}

Asigna un usuario registrado como DPO de la entidad.


Departamentos

Listar departamentos

GET /api/v1/org/entities/{entityId}/departments

Retorna un arbol jerarquico de departamentos.

Respuesta (200):

{
  "success": true,
  "data": {
    "departments": [
      {
        "id": "dept_abc",
        "name": "Recursos Humanos",
        "description": "Area de personas",
        "depth": 0,
        "parentId": null,
        "userCount": 5,
        "children": [
          {
            "id": "dept_def",
            "name": "Reclutamiento",
            "depth": 1,
            "parentId": "dept_abc",
            "userCount": 2,
            "children": []
          }
        ]
      }
    ]
  }
}

Crear departamento

POST /api/v1/org/departments

Body:

{
  "legalEntityId": "ent_abc123",
  "name": "Recursos Humanos",
  "description": "Area de personas",
  "parentDepartmentId": null
}
CampoTipoObligatorioDescripcion
legalEntityIdstringSiID de la entidad legal
namestringSiNombre del departamento
descriptionstringNoDescripcion
parentDepartmentIdstringNoID del departamento padre (para sub-areas)

Eliminar departamento

DELETE /api/v1/org/departments/{id}

Archiva el departamento. Los sub-departamentos quedan huerfanos.