A API tem um total de 13 endpoints, sendo em volta principalmente do usuário (dev) - podendo cadastrar seu tarefas em diferentes categorias a serem realizadas.
A url base da API é https://kenzie-academy-brasil-developers-m5-5gcq.onrender.com/
[warning] Como a API está rodando em um servidor de graça pode ser que ela demore um pouco a responder na primeira requisição feita.
- Node Version: v20.9.0^.
- Npm Version: v10.1.0^.
- Instalação de dependências:
npm i
|npm install
. - Variáveis de ambiente: Duplicar e renomear o arquivo
.env.example
para.env.develop
e sobreescrever as informações do arquivo.env.develop
com as suas credênciais. - Migrações: Execute as migrações com o comando:
npm run migrate:dev
. - Rodar a aplicação: Comando para iniciar a aplicação:
npm run dev
.
POST /users - FORMATO DA REQUISIÇÃO
{
"name": "John Doe",
"email": "[email protected]",
"password": "12345678"
}
Caso dê tudo certo, a resposta será assim:
POST /users - FORMATO DA RESPOSTA - STATUS 201
{
"id": 1,
"name": "John Doe",
"email": "[email protected]"
}
Possíveis erros:
POST /users - E-mail já cadastrado - STATUS 409
{ "message": "This email is already registered" }
POST /users - Quando o corpo não é compatível com o padrão - STATUS 400
POST /users/login - FORMATO DA REQUISIÇÃO
{
"email": "[email protected]",
"password": "12345678"
}
Caso dê tudo certo, a resposta será assim:
POST /users - FORMATO DA RESPOSTA - STATUS 200
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNzAxMjcwMjk2LCJleHAiOjE3MDEzMTM0OTZ9.Ebru139GF02sx9EFR0PouLrErYyYIcFJgLa6vIfsktA",
"user": {
"id": 1,
"name": "John Doe",
"email": "[email protected]"
}
}
Possíveis erros:
POST /users/login - Usuário não existe - STATUS 404
{ "messsage": "User not exists" }
POST /users/login - E-mail e senha não correspondem - STATUS 401
{ "messsage": "Email and password doesn't match" }
POST /users/login - Quando o corpo não é compatível com o padrão - STATUS 400
Rotas que necessitam de autorização deve ser informado no cabeçalho da requisição o campo "Authorization", dessa forma:
Authorization: Bearer {token}
GET /users/profile
Caso dê tudo certo, a resposta será assim:
GET /users/profile - FORMATO DA RESPOSTA - STATUS 200
{
"id": 1,
"name": "John Doe",
"email": "[email protected]"
}
Possíveis erros:
GET /users/profile - O token é obrigatório - STATUS 401
{"message": "jwt must be provided"}
POST /tasks - FORMATO DA REQUISIÇÃO
{
"title": "Lorem ipsum",
"content": "Lorem ipsum",
}
Caso dê tudo certo, a resposta será assim:
POST /tasks - FORMATO DA RESPOSTA - STATUS 201
{
"id": 1,
"title": "Lorem ipsum",
"content": "Lorem ipsum",
"finished": false,
"userId": 1,
"categoryId": null
}
Possíveis erros:
POST /tasks - Categoria não encontrada. - STATUS 404
{"message": "Category not found"}
POST /tasks - Quando o corpo não é compatível com o padrão - STATUS 400
GET /tasks
Caso dê tudo certo, a resposta será assim:
GET /tasks - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": 1,
"title": "Lorem ipsum",
"content": "Lorem ipsum",
"finished": true,
"category": {
"id": 1,
"name": "Estudo",
}
}
]
Nessa rota também pode ser passado um parâmetro como filtro das tasks, dessa maneira:
GET /tasks?category=name_category
Caso dê tudo certo, a resposta será assim:
GET /tasks?category=estudo - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": 1,
"title": "Lorem ipsum",
"content": "Lorem ipsum",
"finished": true,
"category": {
"id": 1,
"name": "Estudo",
}
},
{
"id": 2,
"title": "Lorem ipsum 2",
"content": "Lorem ipsum 2",
"finished": true,
"category": {
"id": 1,
"name": "Estudo",
}
}
]
Possíveis erros:
GET /tasks?category=name_category - Categoria não encontrada. - STATUS 404
{"message": "Category not found"}
GET /tasks/:id
Caso dê tudo certo, a resposta será assim:
GET /tasks/1 - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": 1,
"title": "Lorem ipsum",
"content": "Lorem ipsum",
"finished": true,
"category": {
"id": 1,
"name": "Estudo",
}
}
]
Possíveis erros:
GET /tasks/:id - Tarefa não encontrada. - STATUS 404
{"message": "Task not found"}
PATCH /tasks/:id - FORMATO DA REQUISIÇÃO
{"content": "Lorem ipsum novo"}
Caso dê tudo certo, a resposta será assim:
PATCH /tasks/:id - FORMATO DA RESPOSTA - STATUS 200
{
"id": 1,
"title": "Lorem ipsum",
"content": "Lorem ipsum novo",
"finished": true,
"userId": 1,
"categoryId": 1
}
Possíveis erros:
PATCH /tasks/:id - Tarefa não encontrada. - STATUS 404
{"message": "Task not found"}
PATCH /tasks/:id - Categoria não encontrada. - STATUS 404
{"message": "Category not found"}
PATCH /tasks/:id - Quando o corpo não é compatível com o padrão - STATUS 400
DELETE /tasks/:id - FORMATO DA REQUISIÇÃO
Caso dê tudo certo, a resposta será assim:
DELETE /tasks/:id - Está rota não tem um corpo de resposta - STATUS 204
Não é necessário um corpo da requisição.
Possíveis erros:
DELETE /tasks/:id - Tarefa não encontrada. - STATUS 404
{"message": "Task not found"}
POST /categories - FORMATO DA REQUISIÇÃO
{
"name": "Estudo"
}
Caso dê tudo certo, a resposta será assim:
POST /categories - FORMATO DA RESPOSTA - STATUS 201
{
"id": 1,
"name": "Estudo"
}
Possíveis erros:
POST /categories - Quando o corpo não é compatível com o padrão - STATUS 400
GET /categories - FORMATO DA REQUISIÇÃO
Caso dê tudo certo, a resposta será assim:
GET /categories - FORMATO DA RESPOSTA - STATUS 201
[
{
"id": 1,
"name": "Estudo"
},
{
"id": 2,
"name": "Trabalho"
},
]
GET /categories/:id
Caso dê tudo certo, a resposta será assim:
GET /categories/1 - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": 1,
"name": "Example"
}
]
Possíveis erros:
GET /categories/:id - Categoria não encontrada. - STATUS 404
{"message": "Category not found"}
DELETE /categories/:id - FORMATO DA REQUISIÇÃO
Caso dê tudo certo, a resposta será assim:
DELETE /categories/:id - Está rota não tem um corpo de resposta - STATUS 204
Não é necessário um corpo da requisição.
Possíveis erros:
DELETE /categories/:id - Tarefa não encontrada. - STATUS 404
{"message": "Category not found"}
Token expirado. - STATUS 401
{
"message": "jwt expired"
}
Token invalido. - STATUS 401
{
"message": "jwt must be provided"
}