A nossa API é projetada especificamente para gerenciamento logístico, permitindo aos usuários cadastrar suas informações e realizar todo o gerenciamento de suas compras e entregas. Com ela, os usuários podem facilmente acompanhar o status de suas entregas, agendar novas entregas e gerenciar seus pedidos de compra.
Tecnologias utilizadas no projeto:
URL base da aplicação: https://kenzie-log.onrender.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
Por enquanto, não foi implementada autenticação.
O objeto User é definido como:
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único do usuário |
name | string | O nome do usuário. |
string | O e-mail do usuário. | |
password | string | A senha de acesso do usuário |
isAdm | boolean | Define se um usuário é administrador ou não. |
isActive | boolean | Define se um usuário está ativo ou não. |
createdAt | Date | Data de criação do usuário. |
updatedAt | Date | Data de atualização do usuário. |
Address | Object | Informações do endereço do usuário. |
Método | Rota | Descrição |
---|---|---|
POST | /users | Criação de um usuário. |
GET | /users | Lista todos os usuários |
GET | /users/:user_id | Lista um usuário por ID |
PATCH | /users/:user_id | Edita Informações de um usuário por ID |
DELETE | /users/:user_id | Deleta um usuário por ID |
POST /users
Host: https://kenzielogapi.onrender.com
Authorization: None
Content-type: application/json
{
"name": "Marcio",
"email": "marcio@mail.com",
"isAdm": true,
"password": "123456",
"address": {
"district": "Rua Santa Ana",
"zipCode": "26054188",
"number": "21",
"city": "Rio de Janeiro",
"state": "RJ",
},
}
name: yup.string().required().max(72),
email: yup.string().email().required().max(256),
password: yup.string().required().max(65),
isAdm: yup.boolean().required(),
address: yup.object({
district: yup.string().required(),
zipCode: yup.string().required().max(8),
number: yup.string().notRequired(),
city: yup.string().required(),
state: yup.string().required().max(2),
}),
OBS.: Chaves não presentes no schema serão removidas.
201 Created
{
"id": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e",
"name": "Marcio",
"email": "marcio@mail.com",
"isAdm": true,
"isActive": true,
"createdAt": "16/01/2023"
"updatedAt": "16/01/2023"
"address": {
"id": "f0d55281-8ac8-4bc0-b5d0-78ab521e1f93"
"district": "Rua Santa Ana",
"zipCode": "26054188",
"number": "21",
"city": "Rio de Janeiro",
"state": "RJ",
},
}
Código do Erro | Descrição |
---|---|
409 Conflict | Email already registered. |
400 Bad Requiest | Missing fields. |
GET /users
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Vazio
200 OK
[
{
"id": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e",
"name": "Marcio",
"email": "marcio@mail.com",
"isAdm": true,
"isActive": true,
"createdAt": "16/01/2023",
"updatedAt": "16/01/2023",
"addressId": "f0d55281-8ac8-4bc0-b5d0-78ab521e1f93"
}
]
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
401 Unauthorized | Bad Request. |
GET /users/6baa58b7-1bdd-42aa-bb5c-4f89377e153e
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
user_id | string | Identificador único do usuário (User) |
Vazio
200 OK
{
"id": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e",
"name": "Marcio",
"email": "marcio@mail.com",
"isAdm": true,
"isActive": true,
"createdAt": "16/01/2023",
"updatedAt": "16/01/2023",
"addressId": "f0d55281-8ac8-4bc0-b5d0-78ab521e1f93"
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
404 Not found | User not found. |
PATCH /users/6baa58b7-1bdd-42aa-bb5c-4f89377e153e
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin / User
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
user_id | string | Identificador único do usuário (User) |
{
"email": "editingmail@mail.com"
}
200 OK
{
"id": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e",
"name": "Marcio",
"email": "editingmail@mail.com",
"isAdm": true,
"isActive": true,
"createdAt": "16/01/2023",
"updatedAt": "16/01/2023",
"addressId": "f0d55281-8ac8-4bc0-b5d0-78ab521e1f93"
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
403 Forbidden | Unauthorized. |
401 Unauthorized | User not found. |
DELETE /users/6baa58b7-1bdd-42aa-bb5c-4f89377e153e
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin / User
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
user_id | string | Identificador único do usuário (User) |
Vazio
204 No Content
Vazio
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
404 Not found | User not found. |
O objeto Request é definido como:
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único do usuário |
name | string | O nome do usuário. |
status | string | O e-mail do usuário. |
weight | number | A senha de acesso do usuário |
cubicMeters | number | Define se um usuário é administrador ou não. |
deadline | Date | Define se um usuário está ativo ou não. |
createdAt | Date | Data de criação do usuário. |
updatedAt | Date | Data de atualização do usuário. |
Método | Rota | Descrição |
---|---|---|
POST | /requests | Criação de um pedido. |
GET | /requests | Lista todos os pedidos. |
GET | /requests/user/:user_id | Lista todos os pedidos de um usuário por ID |
GET | /requests/:request_id | Lista um pedido por ID |
PATCH | /requests/:request_id | Edita um pedido por ID |
DELETE | /requests/:request_id | Deleta um pedido por ID |
POST /requests
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token
Content-type: application/json
{
"userId": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e",
"name": "Package Name",
"weight": 80,
"cubicMeters": 3,
"distance": 128
}
name: yup.string(),
status: yup.string(),
deadline: yup.string(),
weight: yup.number(),
cubicMeters: yup.number()
OBS.: Chaves não presentes no schema serão removidas.
201 Created
{
"id": "894c3b8e-4a32-4398-8c37-36c4d75f66c1",
"name": "Package Name",
"weight": 80,
"cubicMeters": 3,
"deadline": "27/02/2023"
"createdAt": "16/02/2023"
"updatedAt": "16/02/2023"
"user": {
"name": "Marcio",
"email": "marcio@mail.com",
"isAdm": true,
"password": "123456",
"address": {
"district": "Rua Santa Ana",
"zipCode": "26054188",
"number": "21",
"city": "Rio de Janeiro",
"state": "RJ",
},
}
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid token. |
409 Conflict | Request already exists. |
404 Not Found | User not exists. |
GET /requests
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Vazio
200 OK
[
{
"id": "894c3b8e-4a32-4398-8c37-36c4d75f66c1",
"name": "Package name",
"status": "pending",
"weight": 80,
"cubicMeters": 3,
"deadline": "27/02/2023",
"createdAt": "16/02/2023",
"updatedAt": "16/02/2023",
"userId": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e"
}
]
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
401 Unauthorized | Not authorized. |
GET /requests/894c3b8e-4a32-4398-8c37-36c4d75f66c1
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
request_id | string | Identificador único do pedido (Request) |
Vazio
200 OK
{
"id": "894c3b8e-4a32-4398-8c37-36c4d75f66c1",
"name": "Package name",
"status": "pending",
"weight": 80,
"cubicMeters": 3,
"deadline": "27/02/2023",
"createdAt": "16/02/2023",
"updatedAt": "16/02/2023",
"userId": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e"
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
404 Not found | Request not found. |
GET /requests/user/6baa58b7-1bdd-42aa-bb5c-4f89377e153e
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
user_id | string | Identificador único do usuário (User) |
Vazio
200 OK
[
{
"id": "894c3b8e-4a32-4398-8c37-36c4d75f66c1",
"name": "Package name",
"status": "pending",
"weight": 80,
"cubicMeters": 3,
"deadline": "27/02/2023",
"createdAt": "16/02/2023",
"updatedAt": "16/02/2023"
}
]
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token. |
403 Forbidden | Unauthorized. |
401 Unauthorized | User not found. |
PATCH /requests/894c3b8e-4a32-4398-8c37-36c4d75f66c1
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin / User
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
request_id | string | Identificador único do pedido (Request) |
{
"status": "delivered"
}
200 OK
{
"id": "894c3b8e-4a32-4398-8c37-36c4d75f66c1",
"name": "Package name",
"status": "delivered",
"weight": 80,
"cubicMeters": 3,
"deadline": "27/02/2023",
"createdAt": "16/02/2023",
"updatedAt": "16/02/2023",
"userId": "6baa58b7-1bdd-42aa-bb5c-4f89377e153e"
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Invalid bearer token / Not authorization. |
404 Not Found | Request not found. |
DELETE /requests/894c3b8e-4a32-4398-8c37-36c4d75f66c1
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin / User
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
request_id | string | Identificador único do pedido (Request) |
Vazio
204 No Content
Vazio
Código do Erro | Descrição |
---|---|
404 Not found | Request not found. |
400 Bad request | Request already delete. |
O objeto Login é definido como:
Campo | Tipo | Descrição |
---|---|---|
string | O e-mail do usuário. | |
password | string | A senha de acesso do usuário |
Método | Rota | Descrição |
---|---|---|
POST | /login | Login de um usuário. |
POST /login
Host: https://kenzielogapi.onrender.com
Authorization: None
Content-type: application/json
{
"email":"marcio@mail.com"
"password":"123456"
}
200 Ok
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
Código do Erro | Descrição |
---|---|
403 Forbidden | Wrong email/password. |
400 Bad Request | User not found. |
O objeto Company é definido como:
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único da unidade. |
name | string | O nome da unidade. |
openingTime | string | Horário de abertura da unidade. |
cnpj | string | Cnpj da unidade. |
isActive | boolean | Define se uma unidade está ativa ou não. |
createdAt | Date | Data de criação da unidade. |
updatedAt | Date | Data de atualização da unidade. |
address | Object | Informações do endereço da unidade. |
contacts | Object | Informações dos contatos da unidade. |
vehicles | Array | Informações do veículos registrados na unidade. |
Método | Rota | Descrição |
---|---|---|
POST | /company | Criação de uma unidade. |
GET | /company | Lista todos as unidades. |
GET | /company/:company_id | Lista uma unidade por ID |
PATCH | /company/:company_id | Edita Informações de uma unidade por ID |
DELETE | /company/:company_id | Desativa uma unidade por ID |
POST /company
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
{
"name": "Unidade carioca",
"openingTime": "09:00 às 18:00",
"cnpj": "42.607.321/0001-15",
"address": {
"district": "Rua Candelária",
"zipCode": "21754188",
"number": "500",
"city": "Rio de Janeiro",
"state": "RJ"
},
"contacts": {
"phoneNumber": "21983751995"
"email": "agenciacarioca@mail.com"
}
}
name: yup.string().required(),
openingTime: yup.string().required(),
cnpj: yup.string().required(),
address: yup
.object({
district: yup.string().required(),
zipCode: yup.string().max(8).required(),
number: yup.string().notRequired(),
city: yup.string().required(),
state: yup.string().max(2).required(),
})
.required(),
contacts: yup
.object({
phoneNumber: yup.string().required(),
email: yup.string().required(),
})
.required(),
OBS.: Chaves não presentes no schema serão removidas.
201 Created
{
"id": "3a2bb25f-d20e-495a-925a-245541e9b460",
"name": "Unidade carioca",
"openingTime": "09:00 às 18:00",
"cnpj": "42.607.321/0001-15",
"address": {
"id": "775b52a7-c728-4691-ab87-c06352dbc5b9",
"district": "Rua Candelária",
"zipCode": "21754188",
"number": "500",
"city": "Rio de Janeiro",
"state": "RJ"
},
"contacts": {
"id": "f56f163e-93f6-4f75-bf82-f02631029d60",
"phoneNumber": "21983751995",
"email": "agenciacarioca@mail.com"
},
"isActive": true,
"createdAt": "2023-01-18T17:52:34.166Z",
"updatedAt": "2023-01-18T17:52:34.166Z"
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
400 Bad Request | Missing fields. |
400 Bad Request | Cnpj/Address/Contact is already registered. |
GET /company
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Vazio
200 OK
[
{
"id": "3a2bb25f-d20e-495a-925a-245541e9b460",
"name": "Unidade carioca",
"isActive": true,
"openingTime": "09:00 às 18:00",
"cnpj": "42.607.321/0001-15",
"createdAt": "2023-01-18T17:52:34.166Z",
"updatedAt": "2023-01-18T17:52:34.166Z",
"address": {
"id": "775b52a7-c728-4691-ab87-c06352dbc5b9",
"district": "Rua Candelária",
"zipCode": "21754188",
"number": "500",
"city": "Rio de Janeiro",
"state": "RJ"
},
"contacts": {
"id": "f56f163e-93f6-4f75-bf82-f02631029d60",
"phoneNumber": "21983751995",
"email": "agenciacarioca@mail.com"
},
}
]
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
GET /users/3a2bb25f-d20e-495a-925a-245541e9b460
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
company_id | string | Identificador único da unidade (Company) |
Vazio
200 OK
{
"id": "3a2bb25f-d20e-495a-925a-245541e9b460",
"name": "Unidade carioca",
"isActive": true,
"openingTime": "09:00 às 18:00",
"cnpj": "42.607.321/0001-15",
"createdAt": "2023-01-18T17:52:34.166Z",
"updatedAt": "2023-01-18T17:52:34.166Z",
"address": {
"id": "775b52a7-c728-4691-ab87-c06352dbc5b9",
"district": "Rua Candelária",
"zipCode": "21754188",
"number": "500",
"city": "Rio de Janeiro",
"state": "RJ"
},
"contacts": {
"id": "f56f163e-93f6-4f75-bf82-f02631029d60",
"phoneNumber": "21983751995",
"email": "agenciacarioca@mail.com"
},
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
404 Not found | Company not found. |
PATCH /company/3a2bb25f-d20e-495a-925a-245541e9b460
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
company_id | string | Identificador único da unidade (Company) |
{
"openingTime": "11:00 às 15:00"
}
200 OK
{
"id": "41eb5a29-80b8-430b-b8aa-e4825a0664d4",
"openingTime": "11:00 às 15:00",
"updatedAt": "2023-01-18T17:52:34.166Z"
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
404 Not found | Company not found. |
400 Bad Request | Missing fields. |
DELETE /company/3a2bb25f-d20e-495a-925a-245541e9b460
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
company_id | string | Identificador único da unidade (Company) |
Vazio
204 No Content
Vazio
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
404 Not found | Company not found. |
O objeto Vehicles é definido como:
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único do veículo. |
name | string | O nome do veículo. |
sign | string | Placa do veículo. |
type | string | Tipo do veículo |
companyWorkPlace | Object | Informações da unidade em que o veículo pertence. |
Método | Rota | Descrição |
---|---|---|
POST | /vehicles/company/:company_id | Registro de uma veículo pertencente a uma unidade. |
GET | /vehicles/company/:company_id | Lista todos os veículos pertencentes a uma unidade. |
DELETE | /vehicles/:vehicle_id | Deleta o registro do veículo |
POST /vehicles/company/3a2bb25f-d20e-495a-925a-245541e9b460
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
company_id | string | Identificador único da unidade (Company) |
{
"name": "Fiat Strada 1.6",
"sign": "JDK-1832",
"type": "Utilitário"
}
name: yup.string().required(),
sign: yup.string().required(),
type: yup.string().required(),
OBS.: Chaves não presentes no schema serão removidas.
201 Created
{
"id": "d514ee4d-deef-4f26-bdf3-6e972c493c97",
"name": "Fiat Strada 1.6",
"sign": "JDK-1832",
"type": "Utilitário",
"companyWorkPlace": {
"id": "3a2bb25f-d20e-495a-925a-245541e9b460",
"name": "Unidade carioca",
"isActive": true,
"openingTime": "11:00 às 15:00",
"cnpj": "42.607.321/0001-15",
"createdAt": "2023-01-18T13:16:02.136Z",
"updatedAt": "2023-01-18T15:56:36.574Z"
}
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
400 Bad Request | Missing fields. |
409 Conflict | Company is deactivate. |
404 Not found | Company not found. |
GET /vehicles/company/3a2bb25f-d20e-495a-925a-245541e9b460
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
company_id | string | Identificador único da unidade (Company) |
Vazio
200 OK
{
"id": "3a2bb25f-d20e-495a-925a-245541e9b460",
"name": "Unidade carioca",
"isActive": true,
"openingTime": "11:00 às 15:00",
"cnpj": "42.607.321/0001-15",
"createdAt": "2023-01-18T13:16:02.136Z",
"updatedAt": "2023-01-18T15:56:36.574Z",
"vehicles": [
{
"id": "d514ee4d-deef-4f26-bdf3-6e972c493c97",
"name": "Fiat Strada 1.6",
"sign": "JDK-1832",
"type": "Utilitário"
}
]
}
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
409 Conflict | Company is deactivate. |
404 Not found | Company not found. |
DELETE /vehicles/d514ee4d-deef-4f26-bdf3-6e972c493c97
Host: https://kenzielogapi.onrender.com
Authorization: Bearer Token Admin
Content-type: application/json
Parâmetro | Tipo | Descrição |
---|---|---|
vehicle_id | string | Identificador único do veículo (Vehicles) |
Vazio
204 No Content
Vazio
Código do Erro | Descrição |
---|---|
401 Unauthorized | Is not admin. |
409 Conflict | Company is deactivate. |
404 Not found | Company not found. |