> For the complete documentation index, see [llms.txt](https://desenvolvedores.skyhub.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://desenvolvedores.skyhub.com.br/multi-cd/criar-consultar-cd-via-api.md).

# 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
        }
    ]
}
```
