Atualiza parcialmente um produto ou serviço.
**Autenticação:** Bearer Token da API WBudget. O acesso aos dados respeita as permissões do usuário.
Requer permissão de edição do cadastro de produtos. Campos omitidos são preservados, inclusive a unidade ao alterar type. Envie pelo menos um campo documentado. Zero e false são valores válidos. Null remove category, description, tag, sku e pn; em metadata, null preserva o objeto. Name, type, unit, active e campos numéricos não aceitam null. Esta operação altera o cadastro do produto; para editar uma linha de proposta, use PUT /budgets/:id/items/:itemId.
### Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `id` | integer | Sim | ID do produto ou serviço. |
### Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `name` | string | Não | Nome, entre 1 e 150 caracteres. |
| `type` | string | Não | product ou service. Padrão product. |
| `category` | integer ou null | Não | ID de categoria existente. Null remove a categoria; omitido na criação usa o padrão da conta. |
| `value` | number | Não | Preço unitário entre 0 e 99999999.9999. Padrão 0. |
| `qty` | number | Não | Quantidade entre 0 e 99999999.9999. Padrão 1; arredondada conforme a unidade. |
| `unit` | string | Não | Unidade cadastrada (até 8 caracteres). Na criação: un para produto e hour para serviço. |
| `description` | string ou null | Não | Descrição do produto ou serviço. |
| `active` | boolean ou integer | Não | true/false ou 1/0. Padrão true. Itens inativos deixam de aparecer em GET /items. |
| `cost` | number | Não | Custo não negativo, máximo 99999999.9999. Padrão 0; a consulta respeita as permissões do usuário. |
| `tax` | number | Não | Tributo não negativo, máximo 999999.999999. Padrão 0, conforme configuração comercial da conta. |
| `sku` | string ou null | Não | Código SKU único, até 45 caracteres. Null ou texto vazio remove o código. |
| `pn` | string ou null | Não | Código do fabricante único, até 45 caracteres. Null ou texto vazio remove o código. |
| `tag` | string ou null | Não | Etiquetas do item. |
| `metadata` | object ou null | Não | Campos personalizados. Chaves enviadas são mescladas; uma chave com null é removida. O objeto omitido ou null preserva os valores atuais. |
### Exemplo de JSON enviado
```json
{
"value": 175,
"active": false,
"metadata": {
"referencia": "ERP-501",
"observacao": null
}
}
```
### Resposta
HTTP **200**. Os exemplos usam dados fictícios e mostram os campos principais; outros campos podem acompanhar a resposta. Campos sem valor podem ser nulos.
Campos principais de `data`:
| Campo | Tipo | Descrição |
|---|---|---|
| `id` | integer | ID do produto ou serviço. |
| `name` | string | Nome, entre 1 e 150 caracteres. |
| `type` | string | product ou service. Padrão product. |
| `category` | integer ou null | ID de categoria existente. Null remove a categoria; omitido na criação usa o padrão da conta. |
| `value` | number | Preço unitário entre 0 e 99999999.9999. Padrão 0. |
| `qty` | number | Quantidade entre 0 e 99999999.9999. Padrão 1; arredondada conforme a unidade. |
| `unit` | string | Unidade cadastrada (até 8 caracteres). Na criação: un para produto e hour para serviço. |
| `description` | string ou null | Descrição do produto ou serviço. |
| `active` | boolean ou integer | true/false ou 1/0. Padrão true. Itens inativos deixam de aparecer em GET /items. |
| `cost` | number | Custo não negativo, máximo 99999999.9999. Padrão 0; a consulta respeita as permissões do usuário. |
| `tax` | number | Tributo não negativo, máximo 999999.999999. Padrão 0, conforme configuração comercial da conta. |
| `sku` | string ou null | Código SKU único, até 45 caracteres. Null ou texto vazio remove o código. |
| `pn` | string ou null | Código do fabricante único, até 45 caracteres. Null ou texto vazio remove o código. |
| `tag` | string ou null | Etiquetas do item. |
| `metadata` | object ou null | Campos personalizados. Chaves enviadas são mescladas; uma chave com null é removida. O objeto omitido ou null preserva os valores atuais. |
| `category_name` | string ou null | Nome da categoria. |
| `create_date` | string | Data de criação. |
```json
{
"data": {
"id": 501,
"name": "Consultoria",
"type": "service",
"category": null,
"category_name": null,
"value": 175,
"qty": 1,
"unit": "hour",
"description": "Consultoria por hora",
"active": false,
"cost": 0,
"tax": 0,
"sku": "SERV-501",
"pn": null,
"tag": "consultoria",
"metadata": {
"referencia": "ERP-501"
},
"create_date": "2026-09-06T10:00:00-03:00"
}
}
```
### Erros específicos
| HTTP | Código | Situação |
|---|---|---|
| 404 | `ITEM_NOT_FOUND` | Item not found. |
| 422 | `VALIDATION_FAILED` | Invalid field: name. |
| 409 | `ITEM_ALREADY_EXISTS` | SKU or part number already exists. |
| 400 | `NOTHING_TO_UPDATE` | No supported fields to update. |
Consulte a introdução da collection para o formato de erros e a configuração das variáveis.
Authentication
AuthorizationBearer
Bearer authentication of the form Bearer <token>, where token is your auth token.
Path parameters
idstringRequired
ID do produto ou serviço.
Request
This endpoint expects an object.
Errors
422Unprocessable Entity Error