# Editar (/docs/developers/api-reference/branches/edit)

## Descripcion general [#descripcion-general]

Este endpoint permite actualizar parcialmente una sucursal. Todos los campos del cuerpo son **opcionales** y la semántica de presencia importa:

* **Omitido** → el campo no se toca.
* **`null`** → el campo se limpia (o se desvincula, para `parent_branch_code`).
* **`""`** (string vacío) → se trata como `null`.

El identificador en la URL es el `branch_number` de la sucursal dentro de tu organización. Una solicitud exitosa devuelve `200` con la forma completa de la sucursal actualizada.

No se exige un permiso granular para este endpoint todavía: basta con que la API key sea válida y esté vinculada a la organización. Las sucursales eliminadas se tratan como no encontradas (`404`).

## Endpoint [#endpoint]

`PATCH https://app.integranom.com/api/v1/branches/{branch_number}`

**Path param:** `branch_number` — entero positivo, el número de sucursal dentro de la organización.

## Actualizacion minima [#actualizacion-minima]

***

Envía solo los campos que quieras cambiar. El resto de la sucursal queda intacto.

```json
{ "name": "Sucursal Norte (renombrada)" }
```

**cURL**

```bash
curl -X PATCH "https://app.integranom.com/api/v1/branches/7" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Sucursal Norte (renombrada)" }'
```

**Respuesta**

```json
{
"id": "5d3a...",
"branch_number": 7,
"parent_id": "1a2b...",
"path": "/1a2b.../5d3a.../",
"depth": 1,
"name": "Sucursal Norte (renombrada)",
"code": "NTE",
"description": null,
"is_active": true,
"sort_order": 0,
"created_at": "2026-05-24T12:34:56.000Z",
"updated_at": "2026-05-24T13:00:00.000Z"
}
```

## Reparentar bajo otra sucursal [#reparentar-bajo-otra-sucursal]

***

Para mover una sucursal bajo otro padre, envía `parent_branch_code` con el código del nuevo padre. La API verifica que no se forme un ciclo (la sucursal no puede moverse bajo sí misma ni bajo un descendiente) y recalcula `path` y `depth` para la sucursal y **todos sus descendientes** dentro de la misma transacción.

```json
{ "parent_branch_code": "GDL" }
```

**cURL**

```bash
curl -X PATCH "https://app.integranom.com/api/v1/branches/7" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "parent_branch_code": "GDL" }'
```

**Respuesta**

```json
{
"id": "5d3a...",
"branch_number": 7,
"parent_id": "c9d8...",
"path": "/c9d8.../5d3a.../",
"depth": 1,
"name": "Sucursal Norte",
"code": "NTE",
"description": null,
"is_active": true,
"sort_order": 0,
"created_at": "2026-05-24T12:34:56.000Z",
"updated_at": "2026-05-24T13:05:00.000Z"
}
```

## Convertir en raiz [#convertir-en-raiz]

***

Para desanclar una sucursal y convertirla en raíz del árbol, envía `parent_branch_code: null`. La sucursal queda con `parent_id: null` y `depth: 0`, y los `path`/`depth` de sus descendientes se recalculan en la misma transacción.

```json
{ "parent_branch_code": null }
```

**cURL**

```bash
curl -X PATCH "https://app.integranom.com/api/v1/branches/7" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "parent_branch_code": null }'
```

**Respuesta**

```json
{
"id": "5d3a...",
"branch_number": 7,
"parent_id": null,
"path": "/5d3a.../",
"depth": 0,
"name": "Sucursal Norte",
"code": "NTE",
"description": null,
"is_active": true,
"sort_order": 0,
"created_at": "2026-05-24T12:34:56.000Z",
"updated_at": "2026-05-24T13:10:00.000Z"
}
```

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

| Campo                | Tipo           | Notas                                                                                                                                                                                                                           |
| -------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`               | string         | No vacío tras recortar.                                                                                                                                                                                                         |
| `code`               | string \| null | `null` o `""` limpian el código. Se almacena en mayúsculas; debe ser único por organización.                                                                                                                                    |
| `description`        | string \| null | `null` o `""` limpian la descripción.                                                                                                                                                                                           |
| `parent_branch_code` | string \| null | Código (en mayúsculas) del nuevo padre. `null` convierte la sucursal en raíz. El nuevo padre debe existir y no puede ser la propia sucursal ni un descendiente (sino `400` con `CYCLE_DETECTED`).                               |
| `is_active`          | boolean        | Flag activo controlado por el usuario. Independiente del borrado — una sucursal puede estar inactiva y seguir apareciendo en `GET`. Al ponerlo en `false`, se **desvincula la sucursal de cada empleo** (`branch_code → null`). |
| `sort_order`         | integer ≥ 0    |                                                                                                                                                                                                                                 |

### Reparenting [#reparenting]

Si `parent_branch_code` cambia:

* Primero corre una **verificación de ciclos**: el nuevo padre no puede ser la propia sucursal ni un descendiente suyo.
* Se actualizan `path` y `depth` de la sucursal, y se recalculan `path`/`depth` para **todos los descendientes** del subárbol en la misma transacción.

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

`200 OK` — la sucursal actualizada:

```json
{
  "id": "5d3a...",
  "branch_number": 7,
  "parent_id": "1a2b...",
  "path": "/1a2b.../5d3a.../",
  "depth": 1,
  "name": "Sucursal Norte (renombrada)",
  "code": "NORTE",
  "description": null,
  "is_active": false,
  "sort_order": 10,
  "created_at": "2026-05-24T12:34:56.000Z",
  "updated_at": "2026-05-24T13:00:00.000Z"
}
```

## Errores [#errores]

| Status | Causa                                                                                                                                                                                  |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | `branch_number` inválido en la URL; falla de validación del cuerpo; `parent_branch_code` no encontrado; intento de poner el padre en sí mismo o en un descendiente (`CYCLE_DETECTED`). |
| `404`  | La sucursal con ese `branch_number` no existe (o fue eliminada) en esta organización.                                                                                                  |
| `409`  | El `code` enviado ya está en uso por otra sucursal de la organización.                                                                                                                 |