# Criação e Atualização de Estoque

{% hint style="danger" %}
**O fluxo descrito a seguir&#x20;**<mark style="color:red;">**não deve ser realizado para o CD padrão**</mark>**, cujo ID será igual a "98",&#x20;**<mark style="color:red;">**caso os produtos cadastrados em conta possuam estoque inserido diretamente em suas estruturas**</mark>**.**

O CD de ID 98, padrão de todas as contas, sempre será atualizado com o estoque presente na **estrutura do produto**, isto é, tanto o estoque quanto o *crossdocking* desse CD padrão levarão em consideração os atributos dos produtos atualizados pelo endpoint [/products](https://desenvolvedores.skyhub.com.br/integracao-produtos/atualizacao-produto/produto-simples), se for um produto simples, ou [/variations](https://desenvolvedores.skyhub.com.br/integracao-produtos/atualizacao-produto/produto-variavel), caso seja um produto com variações.

Caso um SKU receba estoque pelo fluxo descrito abaixo **E** através da estrutura vista em `/products` e/ou `/variations`, o valor **presente na estrutura será indexado ao marketplace**, sobrepondo a quantidade encaminhada pelo `/stores`.&#x20;

Para que não ocorram vendas indevidas e divergências de estoque, é necessário utilizar apenas uma forma de criação/atualização deste atributo.&#x20;
{% endhint %}

Diferente das chamadas para criação, atualização e consulta da warehouse (CD) que requerem a utilização do Bearer Token, a manipulação de estoque dos CDs utiliza os headers padronizados na API e visualizados a seguir:

#### Request headers:

| Key                  | Value                                       |
| -------------------- | ------------------------------------------- |
| X-User-Email         | email\_de\_usuario                          |
| X-Api-Key            | token\_de\_integracao de sua conta SkyHub   |
| X-Accountmanager-Key | token\_account único de cada Plataforma/ERP |
| Accept               | application/json                            |
| Content-Type         | application/json                            |

## **POST - Criando o estoque**

Após a criação do CD é necessário também criar o estoque dos produtos vinculados a ele.

O processo de criação de estoque se dá através de um POST, preenchendo os [headers](#request-headers) padronizados, para o endpoint abaixo:&#x20;

```
https://api.skyhub.com.br/stores/{store_code}/skus
```

{% hint style="info" %}
O campo `store_code` deverá ser substituído pelo **código do CD**, definido em sua criação.
{% endhint %}

#### **Request body:**

```
{
    "sku": {
        "code": "{SKU}",
        "qty": 0,
        "cross_docking": 0
    }
}
```

#### **Example request:**

```
curl --location --request POST 'https://api.skyhub.com.br/stores/loja1/skus' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
    "sku": {
        "code": "2023001",
        "qty": 17,
        "cross_docking": 0
    }
}'
```

#### Response esperado:

{% hint style="success" %}
204 \[Success] - No content
{% endhint %}

## **PUT - Atualizando o estoque**

Após vincular o estoque de um item a um CD, as atualizações desse estoque devem ser realizadas através do método PUT, preenchendo os [headers](#request-headers) padronizados, para o endpoint abaixo:&#x20;

```
https://api.skyhub.com.br/stores/{store_code}/skus/{SKU}
```

#### **Request body:**

```
{
    "store_id": "{store_code}",
    "sku_code": "{SKU}",
    "sku": {
        "qty": 10,
        "cross_docking": 0
    }
}
```

#### **Example request:**

```
curl --location --request PUT 'https://api.skyhub.com.br/stores/loja1/skus/2023001' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
    "store_id": "loja1",
    "sku_code": "2023001",
    "sku": {
        "qty": 10,
        "cross_docking": 0
    }
}'
```

#### Response esperado:

{% hint style="success" %}
204 \[Success] - No content
{% endhint %}

## POST - Criando/atualizando estoque em lote

Uma vez que a loja pode conter muitos produtos e CDs, torna-se inviável criar ou atualizar o estoque dos itens individualmente. Neste caso, é possível realizar estas ações (de criação e atualização) em lote (*batch*).

{% hint style="info" %}
A criação/atualização de estoque em lote permite a alteração de **500 SKUs** por requisição.&#x20;
{% endhint %}

Para a criação/atualização de estoque em *batch* basta utilizar o método POST, preenchendo os [headers](#request-headers) padronizados, para o endpoint abaixo:

```
https://api.skyhub.com.br/stores/{store_code}/batch
```

#### **Request body:**

```
{
    "skus": [
        {
            "code": "{SKU}",
            "qty": 1,
            "cross_docking": 0
        },
        {
            "code": "{SKU}",
            "qty": 1,
            "cross_docking": 0
        }
    ]
}
```

#### **Example request:**

```
curl --location --request POST 'https://api.skyhub.com.br/stores/loja1/batch' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
    "skus": [
        {
            "code": "2023001",
            "qty": 1,
            "cross_docking": 0
        },
        {
            "code": "2023600",
            "qty": 1,
            "cross_docking": 0
        },
        {
            "code": "2023200",
            "qty": "I",
            "cross_docking": 5
        }
    ]
}'
```

{% hint style="warning" %}
Na requisição acima, para o SKU **2023200** propositalmente foi adicionada uma **string** para o campo "***qty***". O erro foi cometido para exemplificação do response visualizado logo abaixo.
{% endhint %}

#### Response esperado:

{% hint style="success" %}
207 \[Success] - Multi Status: O retorno trará um resumo do resultado das ações realizadas:&#x20;
{% endhint %}

```
{
    "data": [
        {
            "code": "2023001",
            "status": 200
        },
        {
            "code": "2023600",
            "error": "Não foi possível encontrar Sku: 2023600",
            "status": 404
        },
        {
            "code": "2023200",
            "errors": [
                {
                    "attribute": "qty",
                    "error_message": "não é válido"
                }
            ],
            "status": 422
        }
    ],
    "metadata": {
        "failures": 2,
        "success": 1,
        "total": 3
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://desenvolvedores.skyhub.com.br/multi-cd/estoque-multi-origem.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
