Essa API tem como função requisições e respostas para um sistema de agendamentos
- Agendamentos só podem ser feito entre as 9:00h e 16:00h.
- O tempo médio para terminar um agendamento é de 40 minutos.
- Agendamentos podem ser feitos a cada 10 minutos.
- Só é possível cancelar um agendamento feito até 6 horas antes tanto pelo usuário, como operador
- Existe um sistema de roles, onde existe o usuário e o operador.
- Só podem existir 3 agendamentos ativos ocorrendo ao mesmo momento, no caso de agendamento futuros, caso em um intervalo de 40 minutos seja feito 3 agendamentos, o quarto agendamento não estará disponível e isso é obtido como resposta da requisição.
-
/user/register
Deverá enviar um JSON da seguinte maneira:
{ "name": "Nome Desejado", "email": "email@extensãodoemail.com.br", "password": "senha123" }
Como resposta irá obter o seguinte JSON com a senha já criptografada:
{ "admin": false, "_id": "60a272be07d02d3820b4646a", "name": "Nome Desejado", "email": "email@extensãodoemail.com.br", "password": "$2a$10$zA11xRZ9gSVw4sH3NXzl4.Jx1/nCwMJA0I7nGs/u6ZwhVeBM3MZz2", "createdAt": "2021-05-17T13:42:22.494Z", "__v": 0 }
-
/user/login
Deverá enviar um JSON da seguinte maneira:
{ "email": "email@extensãodoemail.com.br", "password": "senha123" }
Em caso de sucesso receberá uma resposta que será o Token de autorização do usuário:
{ "authorizationToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGEyNzJiZTA3ZDAyZDM4MjBiNDY0NmEiLCJhZG1pbiI6ZmFsc2UsImlhdCI6MTYyMTI1OTE0MH0.RWKrh6ALvT2y9y1GApffrl6DPlSFkPjeHBryEqt5WMw" }
Todas as rotas agora vão precisar receber no header o token dessa maneira:
headers('authorization-token') = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGEyNzJiZTA3ZDAyZDM4MjBiNDY0NmEiLCJhZG1pbiI6ZmFsc2UsImlhdCI6MTYyMTI1OTE0MH0.RWKrh6ALvT2y9y1GApffrl6DPlSFkPjeHBryEqt5WMw"
Caso utilize o insomnia, utilize a imagem abaixo, não passe o token entre aspas:
-
/user/schedule
Deverá enviar um JSON da seguinte maneira (lembre-se de enviar o token do usuário):
{ "startDay": 16, "startHour": 15, "startMinute": 50 }
-
Os agendamentos só podem ser feitos de 10 em 10 minutos.
-
Só pode ser feito um agendamento no mesmo horário a não ser que seja feito por outro usuário.
-
Caso exista dentro de 40 minutos 3 agendamentos que vão ser realizados de forma simultânea, o quarto agendamento a tentar ser realizado não irá ser permitido.
Como resposta irá obter o seguinte JSON com a senha já criptografada:
{ "admin": false, "_id": "60a272be07d02d3820b4646a", "name": "Nome Desejado", "email": "email@extensãodoemail.com.br", "password": "$2a$10$zA11xRZ9gSVw4sH3NXzl4.Jx1/nCwMJA0I7nGs/u6ZwhVeBM3MZz2", "createdAt": "2021-05-17T13:42:22.494Z", "__v": 0 }
-
-
/user/viewSchedule
Deverá enviar via header o token do usuário que deseja ver suas tarefas:
headers('authorization-token') = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGEyNzJiZTA3ZDAyZDM4MjBiNDY0NmEiLCJhZG1pbiI6ZmFsc2UsImlhdCI6MTYyMTI1OTE0MH0.RWKrh6ALvT2y9y1GApffrl6DPlSFkPjeHBryEqt5WMw"
-
Os agendamentos só podem ser vistos por cada usuário, ou seja, um usuário não tem permissão para ver agendamento de outro.
Como resposta irá obter o seguinte JSON com as tarefas do usuário:
[{ "_id": "60a27add50c3592a4c09276c", "userId": "60a272be07d02d3820b4646a", "startDay": 16, "startHour": 15, "startMinute": 50, "__v": 0 }, { "_id": "60a27ae450c3592a4c09276d", "userId": "60a272be07d02d3820b4646a", "startDay": 16, "startHour": 15, "startMinute": 0, "__v": 0 }, { "_id": "60a27ae850c3592a4c09276e", "userId": "60a272be07d02d3820b4646a", "startDay": 16, "startHour": 15, "startMinute": 10, "__v": 0 }]
-
-
/user/cancel/schedule
Deverá enviar um JSON contendo o id da tarefa a ser deletada da seguinte forma (lembre-se de enviar o token do usuário):
{ "id": "60a026f6d1f40a0e00e0a8bd" }
- Só se pode cancelar um agendamento que existe.
- Os agendamentos só podem ser cancelados por aquele usuário que o criou, ou seja, não é permitido cancelar agendamento de outro usuário pela rota USER.
- O cancelamento só pode ser feito até 6 horas antes da tarefa se iniciar.
Como resposta irá obter o id da tarefa que foi cancelada com status 200:
60a026f6d1f40a0e00e0a8bd
Caso não tenha sucesso, irá receber respostas diferentes a depender do erro encontrado.
{
"email": "[email protected]",
"password": "admin123"
}
O registro foi feito diretamente no banco de dados por questões de segurança, abaixo seguem as rotas disponíveis:
-
/admin/login
Deverá enviar um JSON da seguinte maneira:
{ "email": "[email protected]", "password": "admin123" }
Em caso de sucesso receberá uma resposta que será o Token de autorização do usuário:
{ "authorizationToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGEyN2RhNzUwYzM1OTJhNGMwOTI3NmYiLCJhZG1pbiI6dHJ1ZSwiaWF0IjoxNjIxMjYxODEwfQ.KLct0pGR5OFEr1G9tffM2qTXNaWrgsJqH0KnOm1Is3w" }
Todas as rotas agora vão precisar receber no header o token dessa maneira:
headers('authorization-token') = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGEyNzJiZTA3ZDAyZDM4MjBiNDY0NmEiLCJhZG1pbiI6ZmFsc2UsImlhdCI6MTYyMTI1OTE0MH0.RWKrh6ALvT2y9y1GApffrl6DPlSFkPjeHBryEqt5WMw"
Caso utilize o insomnia, utilize a imagem abaixo, não passe o token entre aspas:
-
/admin/viewSchedule)
Deverá enviar via header o token do administrador/operador que deseja ver as tarefas que estão agendadas no sistema:
headers('authorization-token') = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MGEyNzJiZTA3ZDAyZDM4MjBiNDY0NmEiLCJhZG1pbiI6ZmFsc2UsImlhdCI6MTYyMTI1OTE0MH0.RWKrh6ALvT2y9y1GApffrl6DPlSFkPjeHBryEqt5WMw"
- O operador do sistema pode ver o agendamento de todos os usuários.
Como resposta irá obter o seguinte JSON com as tarefas de todos os usuários:
[{ "_id": "60a2781207d02d3820b4646b", "userId": "60a14e0ec263702c28789b23", "startDay": 16, "startHour": 15, "startMinute": 50, "__v": 0 }, { "_id": "60a27add50c3592a4c09276c", "userId": "60a272be07d02d3820b4646a", "startDay": 16, "startHour": 15, "startMinute": 50, "__v": 0 }]
-
/admin/cancel/schedule
Deverá enviar um JSON contendo o id da tarefa a ser deletada da seguinte forma (lembre-se de enviar o token do usuário):
{ "id": "60a14fc71d2de14ba07c095b" }
-
Só se pode cancelar um agendamento que existe.
-
Pela rota admin, o operador pode realizar o cancelamento de qualquer usuário, não há restrição.
-
O cancelamento só pode ser feito até 6 horas antes da tarefa se iniciar.
Como resposta irá obter o id da tarefa que foi cancelada com status 200:
60a14fc71d2de14ba07c095b
Caso não tenha sucesso, irá receber respostas diferentes a depender do erro encontrado.
-
-
admin/Complete/schedule
Deverá enviar um JSON contendo o id da tarefa a que deseja ser completada (lembre-se de enviar o token do usuário):
{ "id": "60a14fc71d2de14ba07c095b" }
- Só se pode completar uma tarefa que já foi iniciada.
Como resposta irá obter o id da tarefa que foi cancelada com status 200:
60a27add50c3592a4c09276c
Caso não tenha sucesso, irá receber respostas diferentes a depender do erro encontrado.
Clone o projeto e acesso a pasta dos arquivos
$ git clone https://github.com/lucasDechenier/api_schedule
Siga as etapas para instalação
# Instalando as dependências
$ npm install
# Iniciando o projeto
$ npm start