# Editar (/docs/developers/api-reference/employer-registrations/edit)

## Descripcion general [#descripcion-general]

Este endpoint permite actualizar parcialmente un registro patronal. Todos los campos del cuerpo son **opcionales**: si omites una clave, ese campo no se toca; si la envías como `null`, ese campo se limpia (cuando aplica). El identificador en la URL es el `employer_registration_number` del registro dentro de tu organización. Una solicitud exitosa devuelve `200` con la forma completa del registro actualizado.

Los registros eliminados se tratan como no encontrados (`404`).

**`legal_entity_number` no se acepta.** Los registros patronales están atados a una razón social por reglas del IMSS; re-asignarlos invalidaría las declaraciones SUA históricas. La razón social asignada al crear el registro es **inmutable** durante toda su vida.

**Audit trail de prima en PATCH.** Si cambia cualquiera de `risk_class`, `risk_premium` o `premium_effective_from` respecto al valor actual, el handler:

1. Cierra la fila abierta del historial poniendo `effective_to = <nuevo premium_effective_from>`.
2. Abre una nueva fila con `effective_from = <nuevo premium_effective_from>` y `effective_to = null`.

Ambas operaciones ocurren dentro de la misma transacción que la actualización de campos — el audit trail nunca queda fuera de sincronía con el estado actual del registro. Por eso `premium_effective_from` es **obligatorio** cada vez que envíes un cambio de `risk_class` o `risk_premium`.

## Endpoint [#endpoint]

`PATCH https://app.integranom.com/api/v1/employer-registrations/{employer_registration_number}`

**Path param:** `employer_registration_number` — entero positivo, el número del registro patronal dentro de la organización.

## Actualizacion minima [#actualizacion-minima]

***

Cambia un campo no relacionado con la prima (por ejemplo `label`) — no se toca el audit trail.

```json
{ "label": "RP CDMX (renombrado)" }
```

**cURL**

```bash
curl -X PATCH "https://app.integranom.com/api/v1/employer-registrations/5" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "label": "RP CDMX (renombrado)" }'
```

**Respuesta**

```json
{
"employer_registration_number": 5,
"legal_entity_number": 1,
"number": "Y6712345678",
"label": "RP CDMX (renombrado)",
"risk_class": 1,
"risk_premium": "0.005",
"premium_effective_from": "2026-01-01T00:00:00.000Z",
"is_active": true,
"created_at": "2026-05-25T10:00:00.000Z",
"updated_at": "2026-05-25T11:15:32.000Z"
}
```

## Aplicar una nueva prima [#aplicar-una-nueva-prima]

***

Para cambiar la clase de riesgo y/o la prima, envía los nuevos valores junto con `premium_effective_from`. La fila abierta del historial se cierra con `effective_to = "2026-02-01"` y se abre una nueva fila con `effective_from = "2026-02-01"`.

`premium_effective_from` es **requerido** siempre que cambies `risk_class` o `risk_premium`.

```json
{
  "risk_class": 2,
  "risk_premium": 0.0125,
  "premium_effective_from": "2026-02-01"
}
```

**cURL**

```bash
curl -X PATCH "https://app.integranom.com/api/v1/employer-registrations/5" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "risk_class": 2,
  "risk_premium": 0.0125,
  "premium_effective_from": "2026-02-01"
}'
```

**Respuesta**

```json
{
"employer_registration_number": 5,
"legal_entity_number": 1,
"number": "Y6712345678",
"label": "RP CDMX (renombrado)",
"risk_class": 2,
"risk_premium": "0.0125",
"premium_effective_from": "2026-02-01T00:00:00.000Z",
"is_active": true,
"created_at": "2026-05-25T10:00:00.000Z",
"updated_at": "2026-05-25T11:20:00.000Z"
}
```

## Marcar como inactivo [#marcar-como-inactivo]

***

`is_active` lo controla el usuario y es **independiente del borrado**: un registro puede estar inactivo y seguir apareciendo en `GET /api/v1/employer-registrations`. **Desactivarlo (`is_active: false`) se rechaza con `409`** si algún empleo (cualquier estatus) referencia este registro patronal — reasígnalos primero. Para retirarlo del listado, usa [DELETE](/docs/developers/api-reference/employer-registrations/delete).

```json
{ "is_active": false }
```

**cURL**

```bash
curl -X PATCH "https://app.integranom.com/api/v1/employer-registrations/5" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "is_active": false }'
```

**Respuesta**

```json
{
"employer_registration_number": 5,
"legal_entity_number": 1,
"number": "Y6712345678",
"label": "RP CDMX (renombrado)",
"risk_class": 2,
"risk_premium": "0.0125",
"premium_effective_from": "2026-02-01T00:00:00.000Z",
"is_active": false,
"created_at": "2026-05-25T10:00:00.000Z",
"updated_at": "2026-05-25T11:22:44.000Z"
}
```

## Campos del cuerpo [#campos-del-cuerpo]

| Campo                    | Tipo                | Notas                                                                                                                                                        |
| ------------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `number`                 | string              | Número IMSS. No se permite `null` (es columna requerida). Máx. 40 caracteres.                                                                                |
| `label`                  | string \| null      | `null` o `""` limpian la etiqueta.                                                                                                                           |
| `risk_class`             | integer 1–5         | Cambiar este campo dispara una nueva fila en el audit trail; requiere `premium_effective_from` en el mismo cuerpo.                                           |
| `risk_premium`           | number 0–1          | Hasta 7 decimales. Cambiar este campo dispara una nueva fila en el audit trail; requiere `premium_effective_from` en el mismo cuerpo.                        |
| `premium_effective_from` | string `YYYY-MM-DD` | Fecha en que entra en vigor el nuevo par `(risk_class, risk_premium)`. Requerida cuando cambias cualquiera de los dos.                                       |
| `is_active`              | boolean             | Flag activo controlado por el usuario. Independiente del borrado. Ponerlo en `false` se rechaza con `409` si algún empleo referencia este registro patronal. |

**No aceptado:** `legal_entity_number` — la razón social asignada al crear es inmutable.

## Forma de la respuesta [#forma-de-la-respuesta]

`200 OK` — misma forma que la respuesta de [crear](/docs/developers/api-reference/employer-registrations/create) en modo single.

## Errores [#errores]

| Status | Causa                                                                                                                                                                                                                                                                                                            |
| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | `employer_registration_number` inválido en la URL; falla de validación del cuerpo; fecha mal formada.                                                                                                                                                                                                            |
| `404`  | El registro patronal con ese `employer_registration_number` no existe (o fue eliminado) en esta organización.                                                                                                                                                                                                    |
| `409`  | Ya existe otro registro patronal con ese `number` para la misma razón social; o intento de desactivar (`is_active: false`) un registro referenciado por uno o más empleos (`{ "message": "This employer registration is still referenced by one or more employments. Reassign them before deactivating it." }`). |