# Criar e Consultar CD

Neste guia estão descritas as ações referentes ao Multi CD que dependem da rota *rehub* (ver seção [Solicitar Credenciais](/multi-cd/solicitar-credenciais.md)). Para as requisições descritas nesta seção serão utilizados os headers disponibilizados a seguir:&#x20;

#### Request headers:

| Key                  | Value                                                                                      |
| -------------------- | ------------------------------------------------------------------------------------------ |
| Accept               | application/json                                                                           |
| Content-Type         | application/json                                                                           |
| X-Accountmanager-Key | token\_account único de cada Plataforma/ERP                                                |
| Authorization        | Bearer \<token JWT disponibilizado na [guia anterior](/multi-cd/solicitar-credenciais.md)> |

## POST - Criando uma warehouse (CD)

A criação de um CD será realizada através de um POST para o endpoint a seguir, utilizando os headers para a rota rehub descritos acima:

```
https://api.skyhub.com.br/rehub/stores
```

#### **Request body:**

```
{
    "store": {
        "code": "{store_code}", // Código/ID do CD
        "name": "Nome do CD",
        "open_hours": "Horário de funcionamento",
        "phone": "1154664644",
        "address": {
            "street": "Rua/Avenida",
            "number": "Número",
            "detail": "Complemento",
            "neighborhood": "Bairro",
            "city": "Cidade",
            "region": "Estado",
            "post_code": CEP, // Int
            "reference": "Referência"
        },
        "email": "emai@exemplo.com",
        "latitude": -23.584195,
        "longitude": -46.635511,
        "max_delivery_distance": 2, // Distância máxima de entrega em km (de 0 a 2)
        "schedules": { // Detalhes sobre o horário de funcionamento (definidos por dias da semana)
            "monday": {
                "start": "09:00",
                "end": "18:00"
            },
            "tuesday": {
                "start": "09:00",
                "end": "18:00"
            },
            "wednesday": {
                "start": "09:00",
                "end": "18:00"
            },
            "thursday": {
                "start": "09:00",
                "end": "18:00"
            },
            "friday": {
                "start": "09:00",
                "end": "18:00"
            },
            "saturday": {
                "start": null,
                "end": null
            },
            "sunday": {
                "start": null,
                "end": null
            }
        },
        "properties": [ // Propriedades do CD
            ""
        ]
    }
}
```

#### Atributos da requisição:

É possível definir as características do CD através do *array properties*. Abaixo temos os possíveis valores a serem adicionados, caso façam parte das propriedades da warehouse:

<table><thead><tr><th width="206">Atributo</th><th>Descrição</th></tr></thead><tbody><tr><td>EXPEDITION</td><td>Incluir caso seja possível realizar a expedição de um pedido através do CD</td></tr><tr><td>EXPRESS_DELIVERY</td><td>Incluir caso o CD faça entrega expressa</td></tr></tbody></table>

#### **Example request:**

<pre><code>curl --location --request POST 'https://api.skyhub.com.br/rehub/stores' \
--header 'Accept: application/json' \
<strong>--header 'Content-Type: application/json' \
</strong>--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g' \
--data-raw '{
    "store": {
        "code": "loja1",
        "name": "Loja Teste 1",
        "open_hours": "Seg-Sex: 09:00 às 20:30, Sáb: 09:00 às 18:00",
        "phone": "(11) 95955-9988",
        "address": {
            "street": "Avenida Paulista",
            "number": "12345",
            "detail": "5º andar",
            "neighborhood": "Bela Vista",
            "city": "São Paulo",
            "region": "SP",
            "post_code": 90000000,
            "reference": "Ao lado do museu"
        },
        "email": "email_da_loja@lojateste.com",
        "latitude": -23.584195,
        "longitude": -46.635511,
        "max_delivery_distance": 2,
        "schedules": { 
            "monday": {
                "start": "09:00",
                "end": "20:30"
            },
            "tuesday": {
                "start": "09:00",
                "end": "20:30"
            },
            "wednesday": {
                "start": "09:00",
                "end": "20:30"
            },
            "thursday": {
                "start": "09:00",
                "end": "20:30"
            },
            "friday": {
                "start": "09:00",
                "end": "20:30"
            },
            "saturday": {
                "start": "09:00",
                "end": "18:00"
            },
            "sunday": {
                "start": null,
                "end": null
            }
        },
        "properties": [
            "EXPEDITION",
            "EXPRESS_DELIVERY"
        ]
    }
}'
</code></pre>

#### Response esperado:

{% hint style="success" %}
201 \[Success] - Created
{% endhint %}

## POST - Definindo o status da warehouse (CD)

Após criar um CD será preciso informar ao marketplace se ele está **ativo** (*active*) ou **inativo** (*inactive*). Para a definição do status da warehouse (CD) é necessário utilizar o método POST, contendo os [headers](#request-headers) da rota rehub, para o endpoint a seguir:

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

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

{% hint style="warning" %}
Ao ser inativado, o CD não será mais disponibilizado para as vendas da loja até que haja uma ativação.
{% endhint %}

#### Request body:

```
{
    "statuses": [
        {
            "platform": "B2W",
            "status": "active" // active = ativa o CD / inactive = inativa o CD
        }
    ]
}
```

**Example Request**

```
curl --location --request POST 'https://api.skyhub.com.br/rehub/stores/loja1/statuses' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g' \
--data '{
    "statuses": [
        {
            "platform": "B2W",
            "status": "active"
        }
    ]
}'
```

#### Response esperado:

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

## GET - Consultando as warehouses (CDs)

É possível realizar a consulta dos CDs criados via API através de uma requisição contendo o método GET, utilizando os [headers](#request-headers) descritos no início deste guia, para o endpoint:

```
https://api.skyhub.com.br/rehub/stores
```

#### Example request:

```
curl --location --request GET 'https://api.skyhub.com.br/rehub/stores' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g'
```

#### Response esperado:

{% hint style="success" %}
200 \[Success] - OK: O retorno seguirá o modelo visualizado a seguir, contendo uma listagem de todas as warehouses criadas via API:
{% endhint %}

```
{
  "stores": [
    {
      "code": "loja1",
      "name": "Loja Teste 1",
      "email": "email_da_loja@lojateste.com",
      "open_hours": "Seg-Sex: 09:00 às 20:30, Sáb: 09:00 às 18:00",
      "phone": "(11) 95955-9988",
      "latitude": -23.584195,
      "longitude": -46.635511,
      "max_delivery_distance": 2,
      "address": {
        "street": "Avenida Paulista",
        "number": "12345",
        "detail": "5º andar",
        "neighborhood": "Bela Vista",
        "city": "São Paulo",
        "region": "SP",
        "post_code": "90000000",
        "reference": "Ao lado do museu"
      },
      "statuses": [
        {
          "platform": "B2W",
          "status": "active",
          "remote_code": "loja1"
        }
      ],
      "schedules": {
        "monday": {
          "start": "09:00",
          "end": "20:30"
        },
        "tuesday": {
          "start": "09:00",
          "end": "20:30"
        },
        "wednesday": {
          "start": "09:00",
          "end": "20:30"
        },
        "thursday": {
          "start": "09:00",
          "end": "20:30"
        },
        "friday": {
          "start": "09:00",
          "end": "20:30"
        },
        "saturday": {
          "start": "09:00",
          "end": "18:00"
        },
        "sunday": {
          "start": null,
          "end": null
        }
      },
      "properties": [
        "EXPEDITION",
        "EXPRESS_DELIVERY"
      ]
    },
    {
      "code": "loja2",
      "name": "Loja Teste 2",
      "email": "email_da_loja2@lojateste.com",
      "open_hours": "Seg-Sex: 09:00 às 20:30",
      "phone": "11959559999",
      "latitude": -23.584195,
      "longitude": -46.635511,
      "max_delivery_distance": 2,
      "address": {
        "street": "Avenida Paulista",
        "number": "12345",
        "detail": "10º andar",
        "neighborhood": "Bela Vista",
        "city": "Sao Paulo",
        "region": "SP",
        "post_code": "90000000",
        "reference": ""
      },
      "statuses": [],
      "schedules": {
        "monday": {
          "start": "09:00",
          "end": "20:30"
        },
        "tuesday": {
          "start": "09:00",
          "end": "20:30"
        },
        "wednesday": {
          "start": "09:00",
          "end": "20:30"
        },
        "thursday": {
          "start": "09:00",
          "end": "20:30"
        },
        "friday": {
          "start": "09:00",
          "end": "20:30"
        },
        "saturday": {
          "start": null,
          "end": null
        },
        "sunday": {
          "start": null,
          "end": null
        }
      },
      "properties": [
        "EXPEDITION"
      ]
    }
  ],
  "total": 2,
  "next": null
}
```

### Consultando uma warehouse específica

A consulta de warehouses cridas via API também permite a listagem de dados sobre um CD específico.&#x20;

Para a consulta de um CD específico será utilizado o endpoint `/rehub/stores` acrescido do código da warehouse, conforme visualizado a seguir:

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

#### **Example request:**

```
curl --location --request GET 'https://api.skyhub.com.br/rehub/stores/loja1' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g'
```

#### Response esperado:

{% hint style="success" %}
200 \[Success] - OK: O retorno seguirá o modelo visualizado a seguir, trazendo os detalhes do CD consultado:
{% endhint %}

```
{
    "code": "loja1",
    "name": "Loja Teste 1",
    "email": "email_da_loja@lojateste.com",
    "open_hours": "Seg-Sex: 09:00 às 20:30, Sáb: 09:00 às 18:00",
    "phone": "(11) 95955-9988",
    "latitude": -23.584195,
    "longitude": -46.635511,
    "max_delivery_distance": 2.0,
    "address": {
        "street": "Avenida Paulista",
        "number": "12345",
        "detail": "5º andar",
        "neighborhood": "Bela Vista",
        "city": "São Paulo",
        "region": "SP",
        "post_code": "90000000",
        "reference": "Ao lado do museu"
    },
    "statuses": [
        {
            "platform": "B2W",
            "status": "active",
            "remote_code": "loja1"
        }
    ],
    "schedules": {
        "monday": {
            "start": "09:00",
            "end": "20:30"
        },
        "tuesday": {
            "start": "09:00",
            "end": "20:30"
        },
        "wednesday": {
            "start": "09:00",
            "end": "20:30"
        },
        "thursday": {
            "start": "09:00",
            "end": "20:30"
        },
        "friday": {
            "start": "09:00",
            "end": "20:30"
        },
        "saturday": {
            "start": "09:00",
            "end": "18:00"
        },
        "sunday": {
            "start": null,
            "end": null
        }
    },
    "properties": [
        "EXPEDITION",
        "EXPRESS_DELIVERY"
    ]
}
```

## PUT - Atualizando uma warehouse (CD)

Uma vez criado o CD é possível realizar alterações em sua estrutura ao executar o método PUT, utilizando os [headers](#request-headers) padronizados para a rota rehub - para o seguinte endpoint:

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

#### Request body:

```
{
    "store": {
        "code": "{store_cedo}",
        "name": "Nome do CD",
        "open_hours": "Horário de Funcionamento",
        "address": {
            "street": "Rua/Avenida",
            "number": "Número"
        },
        "store_status": [
            {
                "platform": "B2W",
                "status": "active",
                "remote_code": "{store_cedo}"
            }
        ]
    }
}
```

{% hint style="danger" %}
**Conforme representado no body acima, não é possível remover todos os campos que constituem o objeto&#x20;*****`address`*****&#x20;ao realizar a atualização de um CD.**&#x20;

Ao enviar para a API o objeto *address* vazio, a requisição retornará status <mark style="color:red;">400</mark>.
{% endhint %}

#### **Example request:**

```
curl --location --request PUT 'https://api.skyhub.com.br/rehub/stores/loja1' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g' \
--data '{
    "store": {
        "code": "loja1",
        "name": "Loja Teste 1 - Atualizada",
        "open_hours": "Seg-Sex: 10:00 às 22:00, Sáb: 10:00 às 17:00, Dom: 10:00 às 14:00",
        "address": {
            "street": "Avenida Paulista",
            "number": "12345"
        },
        "schedules": {
            "monday": {
                "start": "10:00",
                "end": "22:00"
            },
            "tuesday": {
                "start": "10:00",
                "end": "22:00"
            },
            "wednesday": {
                "start": "10:00",
                "end": "22:00"
            },
            "thursday": {
                "start": "10:00",
                "end": "22:00"
            },
            "friday": {
                "start": "10:00",
                "end": "22:00:00"
            },
            "saturday": {
                "start": "10:00",
                "end": "17:00"
            },
            "sunday": {
                "start": "10:00",
                "end": "14:00"
            }
        },
        "store_status": [
            {
                "platform": "B2W",
                "status": "active",
                "remote_code": "lojaL1"
            }
        ]
    }
}'
```

#### Response esperado:

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

## Excluindo uma warehouse (CD)

{% hint style="danger" %}
**Não é possível excluir um CD via API.**

Após realizar a criação de uma warehouse (CD) só é possível seguir com a sua [**inativação**](#post-definindo-o-status-da-warehouse-cd), não sendo possível realizar a sua exclusão.
{% endhint %}

<img src="/files/yaV8ZXMyjqLp3x556rR8" alt="" class="gitbook-drawing">

##

## GET - Consultando estoque

Ao se tratar do Multi CD, outra ação a ser realizada através da rota *rehub* é a consulta de estoque.

### **Consultar estoque por produto**

Para o Multi CD, é possível realizar a consulta do estoque para determinado SKU.&#x20;

Para realizar essa consulta basta efetuar uma requisição contendo o método GET, utilizando os [headers](#request-headers) descritos no início deste guia, para o endpoint:

<pre><code><strong>https://api.skyhub.com.br/rehub/products/{SKU}/store_stocks
</strong></code></pre>

#### Example request:

```
curl --location --request GET 'https://api.skyhub.com.br/rehub/products/2023001/store_stocks' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g'
```

#### Response esperado:

{% hint style="success" %}
200 \[Success] - OK: O retorno trará o estoque de todas as warehouses (CDs) para o SKU referenciado no endpoint:
{% endhint %}

```
{
    "store_stocks": [
        {
            "store_code": "loja1",
            "sku_code": "2023001",
            "qty": 30,
            "cross_docking": 0
        },
        {
            "store_code": "loja2",
            "sku_code": "2023001",
            "qty": 5,
            "cross_docking": 0
        }
    ]
}
```

### **Consultar estoque do produto por warehouse (CD)**

Além da consulta geral de estoque por SKU - que traz o estoque de todas as warehouses para o produto selecionado - também é possível filtrar o produto e o CD a serem visualizados.

Para realizar essa consulta basta efetuar uma requisição contendo o método GET, utilizando os [headers](#request-headers) descritos no início deste guia, para o endpoint:

```
https://api.skyhub.com.br/rehub/products/{SKU}/store_stocks?store_code={store_code}
```

{% hint style="info" %}
O **código do CD** será definido a partir da aplicação do parâmetro **`store_code`** na consulta.
{% endhint %}

#### &#x20;Example request:

```
curl --location --request GET 'https://api.skyhub.com.br/rehub/products/2023001/store_stocks?store_code=loja1' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........Ckc0PW1g'
```

#### Response esperado:

{% hint style="success" %}
200 \[Success] - OK: O retorno trará o estoque do SKU referenciado no endpoint para a warehouse (CD) definida como parâmetro:
{% endhint %}

```
{
    "store_stocks": [
        {
            "store_code": "loja1",
            "sku_code": "2023001",
            "qty": 30,
            "cross_docking": 0
        }
    ]
}
```


---

# 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/criar-consultar-cd-via-api.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.
