---
title: "Procedimiento laboral (Ley Karin)"
description: "El colegio como empleador: denuncias de acoso y violencia laboral con sus plazos, tramitación conjunta con convivencia y la entrega de antecedentes de 24 meses."
url: "https://docs.edugoverna.com/api-organizacion/karin"
---
# Procedimiento laboral (Ley Karin)

La **Ley 21.643** obliga a todo empleador a un protocolo de prevención y a un procedimiento de investigación con plazos en días hábiles: **día 0** recepción, **día 3** aviso a la Dirección del Trabajo (o derivación), **día 30** conclusión, **día 32** remisión del informe; la autoridad tiene 30 días hábiles para pronunciarse y, vencidos, las conclusiones se tienen por válidas. La Ley 21.809 agregó lo que casi nadie tiene: cuando un **estudiante o apoderado agrede a un trabajador**, el caso se tramita **conjuntamente** con el procedimiento de convivencia, y los antecedentes de los últimos **24 meses** deben entregarse a un organismo administrador «con resguardo de la información privada de las partes». {{ className: 'lead' }}

<Note>
  El módulo `karin` **no viene en ningún plan**: se contrata como complemento
  y se habilita por organización. Sin él, todas las rutas de esta página
  responden `403 MODULE_NOT_LICENSED`.
</Note>

Sólo `karin.cases.read` es asignable a una API key. Registrar hitos (`karin.cases.write`), aprobar el informe (`karin.report.approve`) y generar la entrega de antecedentes (`karin.export`) son exclusivos de sesión.

Las marcas de tiempo son **milisegundos epoch**. Los días hábiles son **administrativos**: descuentan los feriados chilenos.

---

## Procedimientos {{ tag: 'GET', label: '/api/karin/cases' }}

<Row>
  <Col>

    Requiere `karin.cases.read`. Cada procedimiento trae tres relojes (`noticeClock`, `investigationClock`, `remissionClock`) que se apagan al cumplirse el hito o al derivar, y `convivenciaCaseId` cuando es una tramitación conjunta.

    ### Régimen

    <Properties>
      <Property name="private_ct">Código del Trabajo; fiscaliza la Dirección del Trabajo. Corren los tres relojes.</Property>
      <Property name="public_statute">Estatutos administrativos (SLEP, municipal); fiscaliza la Contraloría. Los hitos se registran sin los plazos del reglamento privado.</Property>
    </Properties>

    ### Estados

    `received` → `safeguards_applied` → `dt_notified` | `derived` → `investigating` → `concluded` → `report_remitted` → `dt_pronounced` → `closed`. La remisión exige el informe aprobado por cuatro ojos (`karin_dt_report`). El cierre fija `retentionUntil` a 24 meses.

    ### Actuaciones, evidencia y vínculo

    | Método y ruta | Qué hace |
    | --- | --- |
    | `POST /karin/cases/:id/events` | Multipart `title`, `body`, `occurredAt`, `evidenceKind` y `file` opcional: una actuación con su adjunto, ligada en la cronología. |
    | `POST /karin/cases/:id/evidence` | Multipart `file`, `label`, `evidenceKind` (`acta_verbal`, `descargos`, `informe`, …). |
    | `GET /karin/cases/:id/evidence/:evidenceId` | Descarga el archivo (acceso auditado). |
    | `POST /karin/cases/:id/link` | `{ convivenciaCaseId }`: tramitación conjunta con un expediente ya abierto (art. 16 B inc. 8-9). `409 KARIN_JOINT_EXISTS` si el expediente ya tiene procedimiento. |

    Los eventos del detalle traen `createdByName`, `evidenceId` y `evidenceLabel` cuando el hito lleva archivo.

  </Col>
  <Col sticky>

    <CodeGroup title="Solicitud" tag="GET" label="/api/karin/cases">

    ```bash {{ title: 'cURL' }}
    curl "https://app.edugoverna.com/api/karin/cases" \
      -H "x-api-key: {tu_api_key}"
    ```

    </CodeGroup>

  </Col>
</Row>

---

## Entrega de antecedentes {{ tag: 'POST', label: '/api/karin/exports' }}

<Row>
  <Col>

    Exclusiva de sesión (`karin.export`). Genera la entrega de los procedimientos de un período, en XLSX o PDF, con el perfil de redacción `KARIN_REDACTION_V1`:

    <Properties>
      <Property name="se conserva">Código, conducta, régimen, autoridad, hitos con fechas y cumplimiento de plazo, resumen de resguardos, resultado.</Property>
      <Property name="se sustituye">Cada parte por «Parte A/B» con un código estable por caso; los menores como «menor».</Property>
      <Property name="se omite">Relatos, notas, contactos, adjuntos e identidad del canal de denuncias.</Property>
    </Properties>

    La entrega es evidencia: se guarda como artifact con su propia retención y una fila que registra a quién, qué período y con qué huella.

  </Col>
  <Col sticky>

    <CodeGroup title="Respuesta" tag="POST" label="/api/karin/exports">

    ```json
    {
      "export": {
        "id": "…",
        "requesterLabel": "Mutual de Seguridad",
        "format": "xlsx",
        "caseCount": 3,
        "redactionProfile": "KARIN_REDACTION_V1",
        "checksum": "…"
      },
      "caseCount": 3
    }
    ```

    </CodeGroup>

  </Col>
</Row>
