# Atualizar serviços

> Como gravar o código do pedido do ERP num serviço e enviar o serviço para produção.

URL canônica: https://apis.cortecloud.com.br/docs/guias/integracao-erp/atualizar-servicos/

A sua integração faz duas operações sobre um [serviço](https://apis.cortecloud.com.br/docs/comecando/conceitos.md#servico): grava nele o código do pedido no ERP e o envia para produção.

## Associar o código do pedido do ERP {#associar-o-codigo-do-pedido-do-erp}

Rotas: [`PUT /services/{id}`](https://apis.cortecloud.com.br/docs/swagger#/Services/updateService) ou [`PATCH /services/{id}`](https://apis.cortecloud.com.br/docs/swagger#/Services/patchService). As duas fazem a mesma coisa.

Quando a central registra um serviço como pedido no ERP, grave o código desse pedido no `internal_code` do serviço. A partir daí, o serviço pode ser encontrado pelo código do ERP (filtro `internal_code` de `GET /services`) e deixa de aparecer na busca por serviços sem código (`internal_code=null`).

Passos:

1. Obtenha o `id` do serviço pela [listagem ou consulta](https://apis.cortecloud.com.br/docs/guias/integracao-erp/obter-servicos.md).
2. Registre o pedido no ERP e guarde o código gerado.
3. Chame a rota com o `id` na URL e o código no corpo:

   ```json
   { "internal_code": "PED-000123" }
   ```

`internal_code` é o único campo alterável e é obrigatório no corpo. Aceita texto ou número; envie `null` para apagá-lo.

A associação só é aceita com o serviço num dos [status expostos pela API](https://apis.cortecloud.com.br/docs/comecando/conceitos.md#status-do-servico): orçamento gerado (`4`), aguardando pagamento online (`25`), aprovado (`6`), enviado para produção (`7`) ou produzido (`9`).

Fora desses status, ou sem `internal_code` no corpo, a resposta é `500` com o motivo na mensagem. Repetir a chamada não resolve: corrija o corpo ou confira o status do serviço.

## Enviar para produção {#enviar-para-producao}

Rota: [`POST /services/{id}/production`](https://apis.cortecloud.com.br/docs/swagger#/Services/sendServiceToProduction).

Envia o serviço para a produção da central e registra como responsável o [vendedor](https://apis.cortecloud.com.br/docs/comecando/conceitos.md#quem-e-quem) com o e-mail informado. O efeito é o mesmo de o vendedor aprovar o serviço para produção no Cortecloud. Use esta rota com o serviço aprovado (`6`).

```json
{ "sellerEmail": "vendedor@example.com" }
```

- O e-mail precisa ser de um vendedor ativo na central da requisição; se não for, a resposta é `422`.
- A resposta `202` confirma que o envio foi aceito. O status muda logo depois: acompanhe por [`GET /services/{id}`](https://apis.cortecloud.com.br/docs/swagger#/Services/getService), ou por [webhook](https://apis.cortecloud.com.br/docs/guias/webhooks.md), até o serviço chegar a enviado para produção (`7`). Enquanto o envio é processado, `status.code` pode trazer um código intermediário que não está na [tabela de status](https://apis.cortecloud.com.br/docs/comecando/conceitos.md#status-do-servico).
- Se o Cortecloud recusar o envio, por exemplo por saldo insuficiente, a resposta é `502` com o motivo na mensagem.
