> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.erp.olist.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualizar Estoque do Produto

> Serviço destinado a atualizar o estoque de um produto.

## Endpoint

```
POST https://api.tiny.com.br/api2/produto.atualizar.estoque.php
```

## Parâmetros

| Parâmetro | Tipo   | Ocorrência  | Descrição                                 |
| --------- | ------ | ----------- | ----------------------------------------- |
| token     | string | obrigatório | Chave gerada para identificar sua empresa |
| estoque   | object | obrigatório | Dados do estoque conforme layout          |
| formato   | string | obrigatório | Formato do retorno (json)                 |

### Estrutura do parâmetro "estoque"

| Campo                 | Tipo     | Tamanho | Ocorrência  | Descrição                                       |
| --------------------- | -------- | ------- | ----------- | ----------------------------------------------- |
| estoque               | object   | -       | obrigatório | Elemento para representar lançamento de estoque |
| estoque.idProduto     | int      | -       | obrigatório | Identificação do produto na Olist               |
| estoque.tipo          | string   | 1       | opcional    | Tipo de lançamento. Padrão 'B'                  |
| estoque.data          | datetime | 19      | opcional    | Data do lançamento. Padrão é a data atual       |
| estoque.quantidade    | decimal  | -       | obrigatório | Quantidade do lançamento                        |
| estoque.precoUnitario | decimal  | -       | opcional    | Preço unitário do lançamento                    |
| estoque.observacoes   | string   | 100     | opcional    | Observações do lançamento                       |
| estoque.deposito      | string   | 100     | opcional    | Nome do depósito. Usa padrão se não enviado     |

> Campo `tipo` aceita: 'E' = entrada (acrescenta ao estoque atual), 'S' = saída (diminui do estoque atual), 'B' = balanço (substitui o estoque atual).

> Campo `data` formato: Y-m-d H:i:s (ex: 2017-03-05 16:08:54).

> Valores decimais utilizam "." (ponto) como separador (ex: 5.25).

## Retorno

| Campo                                        | Tipo    | Tamanho | Ocorrência  | Descrição                                  |
| -------------------------------------------- | ------- | ------- | ----------- | ------------------------------------------ |
| retorno                                      | object  | -       | obrigatório | Elemento raiz do retorno                   |
| retorno.status\_processamento                | int     | -       | obrigatório | Conforme tabela de Status de Processamento |
| retorno.status                               | string  | -       | obrigatório | "OK" ou "Erro"                             |
| retorno.codigo\_erro                         | int     | -       | obrigatório | Conforme tabela de Códigos de Erro         |
| retorno.erros\[]                             | list    | -       | condicional | Lista dos erros encontrados                |
| retorno.erros\[].erro                        | string  | -       | condicional | Descrição do erro                          |
| retorno.registros\[]                         | list    | -       | condicional | Lista de resultados                        |
| retorno.registros\[].registro                | object  | -       | condicional | Elemento de lançamento de estoque          |
| retorno.registros\[].registro.sequencia      | int     | -       | condicional | Número sequencial do lançamento            |
| retorno.registros\[].registro.status         | string  | -       | condicional | "OK" ou "Erro"                             |
| retorno.registros\[].registro.codigo\_erro   | int     | -       | condicional | Código de erro                             |
| retorno.registros\[].registro.erros\[]       | list    | -       | condicional | Lista de erros                             |
| retorno.registros\[].registro.erros\[].erro  | string  | -       | condicional | Descrição do erro                          |
| retorno.registros\[].registro.id             | int     | -       | obrigatório | Identificação do lançamento de estoque     |
| retorno.registros\[].registro.saldoEstoque   | decimal | -       | obrigatório | Saldo em estoque após lançamento           |
| retorno.registros\[].registro.saldoReservado | decimal | -       | condicional | Saldo reservado em estoque                 |
| retorno.registros\[].registro.registroCriado | boolean | -       | obrigatório | Indica se novo registro foi criado         |

> Campo `saldoReservado` retornado apenas se extensão "Reserva de Estoques" está habilitada.

> Em atualizações de balanço onde quantidade equals saldo atual, nenhum novo registro é criado; id retorna 0.

## Exemplo de chamada

```php theme={null}
$url = 'https://api.tiny.com.br/api2/produto.atualizar.estoque.php';
$token = 'coloque aqui a sua chave da api';
$estoque = '<estoque>...</estoque>';
$data = "token=$token&estoque=$estoque&formato=JSON";

enviarREST($url, $data);
```

### Exemplo de entrada (JSON)

```json theme={null}
{
  "estoque": {
    "idProduto": "12345888",
    "tipo": "E",
    "data": "2017-03-27 13:03:00",
    "quantidade": "7",
    "precoUnitario": "25.78",
    "observacoes": "observação do lançamento",
    "deposito": "deposito central"
  }
}
```

## Exemplos de retorno

### Sucesso

```json theme={null}
{
  "retorno": {
    "status_processamento": 3,
    "status": "OK",
    "registros": {
      "registro": {
        "sequencia": "1",
        "status": "OK",
        "id": "123123123",
        "saldoEstoque": "3.00",
        "saldoReservado": "1.00"
      }
    }
  }
}
```

### Erro - Token inválido

```json theme={null}
{
  "retorno": {
    "status_processamento": 1,
    "status": "Erro",
    "codigo_erro": 2,
    "erros": [
      {
        "erro": "token invalido"
      }
    ]
  }
}
```

### Erro - Validação

```json theme={null}
{
  "retorno": {
    "status_processamento": 2,
    "status": "Erro",
    "registros": [
      {
        "registro": {
          "sequencia": "1",
          "status": "Erro",
          "codigo_erro": "32",
          "erros": [
            {
              "erro": "Campo idProduto inválido."
            }
          ]
        }
      }
    ]
  }
}
```
