Tecnologias usadas:
- NodeJS
- Express
- TypeScript
- PostgreSQL
- TypeORM
- bcrypt
- dotenv
- JsonWebToken
- UUID
- pg
- reflect-metadata
- Commitizen
- Jest
- UUID-validate
A URL base da aplicação: https://solid-control-api.herokuapp.com/
Diagrama ER da API definindo bem as relações entre as tabelas do banco de dados.
Clone o projeto em sua máquina e instale as dependências com o comando:
yarn
Em seguida, crie um arquivo .env, copiando o formato do arquivo .env.example:
cp .env.example .env
Configure suas variáveis de ambiente com suas credenciais do Postgres e uma nova database da sua escolha.
Execute as migrations com o comando:
yarn typeorm migration:run -d src/data-source.ts
Users é a tabela responsavel por armazenar os dados de todos os usuarios.
Name | Description | Type |
---|---|---|
name | Nome | string |
Email de cadastro | string | |
street | Rua / Avenida / Travessa ou Viela | string |
number | Numero | nuimber |
complement | Complemento | String |
state | Estado | string |
city | cidade | string |
zip_code | Codigo postal | string |
id | Identificador uuid | string |
POST /users/register
Para criarmos um novo usuario.
Corpo da requisição.
{
"name": "Rafhael Mallorga",
"email": "rafhaelmallorga@email.com",
"street": "Rua rua",
"number": 123,
"complement": "casa",
"state": "SP",
"city": "Sao Paulo",
"zip_code": "12345678",
"password": "123456"
}
Resposta da requisição.
Obs: O carrinho é criado automaticamente na criação do usuario.
{
"name": "Rafhael",
"email": "rafhael@teste.com",
"number": 1020,
"street": "São Lara",
"complement": "casa",
"state": "SP",
"zip_code": "13245788",
"city": "Itapira",
"cart": {
"id": "761e3d3a-ee9e-4b60-9eab-a8b108e88b9a",
"subtotal": 0
},
"id": "c6a96b4c-beaf-4304-aaa0-2f9c016eb213",
"isAdm": false,
"active": true,
"created_at": "2022-07-20T15:39:16.568Z",
"updated_at": "2022-07-20T15:39:16.568Z"
}
POST /users/login
Corpo da requisição para realiarmos o login.
{
"email": "rafhaelmallorga@email.com",
"password": "123456"
}
Resposta do login.
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImM2YTk2YjRjLWJlYWYtNDMwNC1hYWEwLTJmOWMwMTZlYjIxMyIsImVtYWlsIjoicmFmaGFlbEB0ZXN0ZS5jb20iLCJpc0FkbSI6dHJ1ZSwiaWF0IjoxNjU4MzIwOTA4LCJleHAiOjE2NTgzNjQxMDh9.6siaAt0VyoOwvkXR2k5-A4Ux_9jx3YPyHQUdHFh2MG4"
}
GET /users
Lista todos os usuarios cadastrados.
[
{
"id": "c6a96b4c-beaf-4304-aaa0-2f9c016eb213",
"name": "Rafhael",
"email": "rafhael@teste.com",
"isAdm": true,
"active": true,
"number": "1020",
"street": "São Lara",
"complement": "casa",
"created_at": "2022-07-20T15:39:16.568Z",
"updated_at": "2022-07-20T15:41:28.474Z",
"state": "SP",
"zip_code": "13245788",
"city": "Itapira",
"cart": {
"id": "761e3d3a-ee9e-4b60-9eab-a8b108e88b9a",
"subtotal": 0,
"products": []
}
}
]
GET /users/:user_id
Lê um usuario específico informando o seu id na url.
{
"id": "c6a96b4c-beaf-4304-aaa0-2f9c016eb213",
"name": "Rafhael",
"email": "rafhael@teste.com",
"isAdm": true,
"active": true,
"number": "1020",
"street": "São Lara",
"complement": "casa",
"created_at": "2022-07-20T15:39:16.568Z",
"updated_at": "2022-07-20T15:41:28.474Z",
"state": "SP",
"zip_code": "13245788",
"city": "Itapira",
"cart": {
"id": "761e3d3a-ee9e-4b60-9eab-a8b108e88b9a",
"subtotal": 0,
"products": []
}
}
PATCH /users
Permite atualizar os dados cadastrais do usuario. Não é necessário passar o id do usuario que será atualizado, pois isto é feito através do token.
Exemplo de corpo da requisicao.
{
"name": "Joao dos Santos"
}
DELETE /providers/:provider_id
Permite deletar o usuario. Não é necessário passar o id do usuario que será deletado, pois isto é feito através do token.
Cart é a tabela responsavel por armazenar os dados de todos os produtos no carrinho do usuario. Nao é necessario passar nada do corpo da requisição, bastando apenas enviar o id do produto na URL.
POST /cart/:product_id
Resposta da requisição.
{
"id": "761e3d3a-ee9e-4b60-9eab-a8b108e88b9a",
"subtotal": 3,
"products": [
{
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b",
"name": "Coca Cola 3 Litros",
"price": "3.00",
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
}
]
}
GET /cart
Lista todos os produtos no carrinho do usuario atraves do token.
{
"id": "761e3d3a-ee9e-4b60-9eab-a8b108e88b9a",
"subtotal": 3,
"products": [
{
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b",
"name": "Coca Cola 3 Litros",
"price": "3.00",
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
}
]
}
DELETE /cart/:product_id
Para remover um item do carrinho basta enviar o ID do produto na URL.
Ticket é a tabela responsavel por gerar o pedido do usuario com os itens cadastrados anteriormente no carrinho.
POST /ticket
Para criarmos um novo ticket basta realizar o post com o token do usuario que a API é a responsavel por localizar o carrinho e gerar o novo ticket.
Resposta da requisição.
{
"user": {
"id": "c6a96b4c-beaf-4304-aaa0-2f9c016eb213",
"name": "Rafhael dos Santos Mallorga",
"email": "rafhael@teste.com",
"password": "$2b$10$064vXthA.Ls1Y6K93X/10uvobpVP00MiRqlXTsZfDs7yIltyomdkm",
"isAdm": true,
"active": true,
"number": "1020",
"street": "São Lara",
"complement": "casa",
"created_at": "2022-07-20T15:39:16.568Z",
"updated_at": "2022-07-20T20:12:21.171Z",
"state": "SP",
"zip_code": "13245788",
"city": "Itapira",
"cart": {
"id": "761e3d3a-ee9e-4b60-9eab-a8b108e88b9a",
"subtotal": 3,
"products": [
{
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b",
"name": "Coca Cola 3 Litros",
"price": "3.00",
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
}
]
}
},
"products": [
{
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b",
"name": "Coca Cola 3 Litros",
"price": "3.00",
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
}
],
"total": 3,
"id": "4ea799b1-ea09-43f7-9f60-20857435622f"
}
GET /ticket
Lista todos os pedidos cadastrados do usuario.
[
{
"id": "4ea799b1-ea09-43f7-9f60-20857435622f",
"total": 3,
"products": [
{
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b",
"name": "Coca Cola 3 Litros",
"price": "3.00",
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
}
]
}
]
Todas as rotas do workflow do produto são acessadas apenas por administradores.
Provider é a tabela responsável por armazenar nossos fornecedores, o fornecedor é o primeiro cadastro obrigatório para o workflow do produto em nossa API, sem ele não será possível o relacionamento do Supply.
Name | Description | Type |
---|---|---|
fantasy_name | Nome fantasia | string |
name | Nome | string |
cnpj | Cadastro Nacional de Pessoa Juridica | string |
ie | Inscricao estadual | string |
street | Rua / Avenida / Travessa ou Viela | string |
number | Numero | nuimber |
complement | Complemento | String |
district | Bairro / Distrito | string |
city | cidade | string |
state | Estado | string |
country | Pais | string |
zip_code | Codigo postal | string |
id | Identificador uuid | string |
POST /providers
Corpo da requisição, sendo o “complement” opcional.
{
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement":"Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country":"Brasil",
"zip_code": "02758-090"
}
GET /providers
Lista todos os fornecedores cadastrados.
[
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
GET /providers/:provider_id
Lê um fornecedor específico informando o seu id na url.
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"[
{
"id": "2df65ff8-171e-4c62-ac3f-37930bf24c81",
"total_price": "400.00",
"status": "Finalizado",
"supplies": [
{
"id": "e00d84f8-73ee-4c5f-bcde-cd328d224722",
"name": "Coca-Cola 2l",
"buy_price": "1.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
},
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
],
"provider": {
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
}
]
PATCH /providers/:provider_id
Permite atualizar os dados cadastrais do fornecedor. Exemplo de corpo da requisicao.
{
"name": "Coca Cola Inc"
}
DELETE /providers/:provider_id
Permite deletar um fornecedor do nosso banco de dados passando seu id na url.provider
A tabela Supply é responsável por armazenar todos os nossos suprimentos / ingredientes. Ela possui uma relação com os fornecedores que possuem estes materiais para compra.
Name | Description | Type |
---|---|---|
name | Nome do suprimento / ingrediente | string |
buy_price | Preço de compra | number |
provider | Array das empresas que fornecem este item | array |
id | Identificador uuid | string |
POST /supply
Corpo da requisição para a criação do suprimento / ingrediente.
{
"name": "Coca-Cola 3l",
"buy_price": 2.5,
"provider_id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f"
}
Resposta da requisição.
{
"name": "Coca-Cola 3l",
"buy_price": 2.5,
"provider": [
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
],
"id": "2aca79a2-0d68-4890-9228-24c17fa4fea7"
}
GET /supply
Lista todos os ingredientes / suprimentos cadastrados em nosso banco de dados.
Corpo da resposta:
[
{
"id": "d7fc0b05-05e0-471f-a675-acb51df99bc2",
"name": "Coca-Cola 2l",
"buy_price": "1.50",
"provider": [
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
},
{
"id": "2aca79a2-0d68-4890-9228-24c17fa4fea7",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"provider": [
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
GET /supply/:supply_id
Lê um ingrediente / suprimento específico informando o seu id na url.
{
"id": "d7fc0b05-05e0-471f-a675-acb51df99bc2",
"name": "Coca-Cola 350ml",
"buy_price": "1.50",
"provider": [
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
PATCH /supply/:supply_id
Permite atualizar os dados cadastrais do suprimento / ingrediente. Corpo da requisicao.
{
"name": "Coca-Cola 2l"
}
DELETE /supply/:supply_id
Permite deletar um suprimento / ingrediente do nosso banco de dados passando o id na url.
A tabela Orders é a responsável por armazenar todos os nossos pedidos de compra de ingredientes ou suprimentos junto aos nossos fornecedores.
Name | Description | Type |
---|---|---|
supplies [ ] | Lista de itens da O.C.: {"id":"id do supply", "qtd": 100 } | Array de objetos |
provider_id | Id do fornecedor referente a O.C. | string |
status | Andamento da ordem de compra. | string |
POST /orders
Corpo da requisicao.
Obs.: Caso algum dos suprimentos / ingredientes ja exista em nosso estoque e o status da ordem for igual a "Finalizado" a quantidade total será atualizada.
{
"supplies": [
{"id": "d7fc0b05-05e0-471f-a675-acb51df99bc2", "qtd": 100},
{"id": "2aca79a2-0d68-4890-9228-24c17fa4fea7", "qtd": 100}
],
"provider_id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"status": "Finalizado"
}
Resposta da requisição.
{
"total_price": "400.00",
"status": "Finalizado",
"supplies": [
{
"id": "d7fc0b05-05e0-471f-a675-acb51df99bc2",
"name": "Coca-Cola 2l",
"buy_price": "1.50",
"qtd": 100,
"provider": [
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
},
{
"id": "2aca79a2-0d68-4890-9228-24c17fa4fea7",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": 100,
"provider": [
{
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
],
"provider": {
"id": "2a6a154c-a4c3-4248-bc6c-5d98e742f71f",
"fantasy_name": "Coca-Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
},
"id": "2d7abc79-e656-41a2-b4ad-8eb088ab465f"
}
GET /orders
Lista todas as ordens de compra.
Corpo da resposta:
[
{
"id": "2df65ff8-171e-4c62-ac3f-37930bf24c81",
"total_price": "400.00",
"status": "Finalizado",
"supplies": [
{
"id": "e00d84f8-73ee-4c5f-bcde-cd328d224722",
"name": "Coca-Cola 2l",
"buy_price": "1.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
},
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
],
"provider": {
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
}
]
GET /orders/:orders_id
Lê uma ordem específica informando o seu id na url.
{
"id": "2df65ff8-171e-4c62-ac3f-37930bf24c81",
"total_price": "400.00",
"status": "Finalizado",
"supplies": [
{
"id": "e00d84f8-73ee-4c5f-bcde-cd328d224722",
"name": "Coca-Cola 2l",
"buy_price": "1.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
},
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
],
"provider": {
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
}
PATCH /orders/:orders_id
Permite atualizar os dados da ordem de compra. Corpo da requisicao.
{
"status": "Finalizado"
}
DELETE /orders/:orders_id
Permite deletar uma ordem de compra do nosso banco de dados passando o id na url.
A tabela Orders é a responsável por armazenar todos os nossos pedidos de compra de ingredientes ou suprimentos junto aos nossos fornecedores.
Name | Description | Type |
---|---|---|
supply_id | ID do supply | string |
qtd | Quantidade | number |
POST /stock
Corpo da requisicao.
Obs.: Caso algum dos suprimentos / ingredientes ja exista em nosso estoque e o status da ordem for igual a "Finalizado" a quantidade total será atualizada.
{
"supply_id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"qtd": 200
}
Resposta da requisição.
{
"id": "26538565-be80-40fa-a10f-7daa9fd8edd5",
"qtd": 200,
"supply": {
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
}
GET /stock
Lista todos os itens cadastrados em estoque.
Corpo da resposta:
[
{
"id": "946b9b1b-4efe-46bf-ad9a-6d0acf8bbe23",
"qtd": 100,
"supply": {
"id": "e00d84f8-73ee-4c5f-bcde-cd328d224722",
"name": "Coca-Cola 2l",
"buy_price": "1.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
},
{
"id": "517d9c16-8b7b-46dc-9c81-ec6b005d9ee3",
"qtd": 100,
"supply": {
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
}
]
GET /stock/:stock_id
Lê um item do estoque informando o seu id na url.
{
"id": "517d9c16-8b7b-46dc-9c81-ec6b005d9ee3",
"qtd": 100,
"supply": {
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": null,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
}
PATCH /stock/:stock_id
Permite atualizar os dados do item em estoque. Corpo da requisicao.
{
"qtd": 200
}
DELETE /stock/:stock_id
Permite deletar um item do estoque do nosso banco de dados passando o id na url.
Products é a tabela responsavel por armazenar os dados de todos os produtos criados com a relação de supply.
Name | Description | Type |
---|---|---|
supplies | Array de objetos: {"id": "Id do supply", "qtd": 1} | Array |
name | Nome do produto | string |
price | Preço de venda | number |
img | URL da imagem | string |
POST /products
Para criarmos um novo peoduto.
Corpo da requisição.
{
"supplies": [
{"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb", "qtd": 1}
],
"name": "Coca Cola 3 Litros",
"price": 3,
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000"
}
Resposta da requisição.
{
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"qtd": 1,
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
],
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"name": "Coca Cola 3 Litros",
"price": 3,
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b"
}
GET /products
Lista todos os produtos cadastrados.
[
{
"id": "c3b47c1d-f48e-4f3d-be83-957f024ae86b",
"name": "Coca Cola 3 Litros",
"price": "3.00",
"img": "https://apoioentrega.vteximg.com.br/arquivos/ids/452238/88434.jpg?v=637105354224830000",
"supplies": [
{
"id": "9e516248-54a9-4c65-b75f-46b6e6e8f3cb",
"name": "Coca-Cola 3l",
"buy_price": "2.50",
"provider": [
{
"id": "2c18c9c3-f98a-435c-8a41-8a1479193869",
"fantasy_name": "Coca Cola",
"name": "Coca Cola Inc",
"cnpj": "12345678901234",
"ie": "123456789",
"street": "Rua do Bairro",
"number": 234,
"complement": "Industria",
"district": "Bairro da Cidade",
"city": "Cidade do Estado",
"state": "SP",
"country": "Brasil",
"zip_code": "02758-090"
}
]
}
]
}
]