# Actualizar producto

`PUT /api/v1/billing/productos/{id}`

Actualiza datos de un producto existente.

> **Beta privada**: las escrituras vía API key están en beta privada
> (solicitar acceso: hola@simplo.cl); las API keys hoy operan en modo
> lectura.

- Autenticación: header `X-Api-Key: sk_simplo_...` (o `Authorization: Bearer <jwt>` para sesiones de la plataforma).
- operationId: `updateProducto` — contrato completo en https://docs.simplo.cl/openapi.yaml
- Versión HTML: https://docs.simplo.cl/api/operations/updateproducto/

## Parámetros

| Nombre | En | Tipo | Requerido | Descripción |
| --- | --- | --- | --- | --- |
| `id` | path | string (uuid) | sí | UUID del producto |

## Request body (application/json)

Schema: `UpdateProductoRequest`

| Campo | Tipo | Requerido | Descripción |
| --- | --- | --- | --- |
| `codigo` | string | no |  |
| `nombre` | string | no |  |
| `descripcion` | string | no |  |
| `precio_unitario` | integer (int64) | no |  |
| `unidad` | string | no |  |
| `es_exento` | boolean | no |  |
| `categoria` | string | no |  |

## Ejemplo (curl)

```sh
curl -X PUT "https://api.simplo.cl/api/v1/billing/productos/<id>" \
  -H "X-Api-Key: $SIMPLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "codigo": "texto",
    "nombre": "texto",
    "descripcion": "texto",
    "precio_unitario": 1
  }'
```

## Respuestas

### 200 — Producto actualizado

Schema: `ProductoResponse`

| Campo | Tipo | Requerido | Descripción |
| --- | --- | --- | --- |
| `id` | string (uuid) | no |  |
| `codigo` | string | no |  |
| `nombre` | string | no |  |
| `descripcion` | string | no |  |
| `precio_unitario` | integer (int64) | no |  |
| `unidad` | string | no |  |
| `es_exento` | boolean | no |  |
| `categoria` | string | no |  |
| `created_at` | string (date-time) | no |  |
| `updated_at` | string (date-time) | no |  |

### 401 — Token o API key inválido o ausente

Schema: `ErrorResponse`

### 404 — Recurso no encontrado

Schema: `ErrorResponse`
