- Express Js
- Bcrypt
- Cors
- Dotenv
- express-async-errors
- jsonwebtoken
- pg
- reflect-metadata
- TypeORM
- uuid
- TypeScript
- Postgres
post: /user
- Request:
{
"fullName": "user",
"email": "user@email.com",
"password": "1234",
"isAdm": false
}
- Response (200):
{
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$IOySkCgixUWrsGRCMHamjelmAL6bE3e5MR73mXgRdNcODcaI2AVHO",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T20:09:16.934Z"
}
- Response em caso de email repetido (403):
{
"message": "Email já cadastrado"
}
patch: /user
- Request com qualquer campo entre eles fullName, email, password:
{
"fullName": "user"
}
- Response (200):
{
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$IOySkCgixUWrsGRCMHamjelmAL6bE3e5MR73mXgRdNcODcaI2AVHO",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:41:45.972Z"
}
- Response ao tentar editar o campo isAdm ou qualquer campo não existente sendo usuário comum (401):
{
"message": "Um ou mais campos informados são inválidos"
}
get: user/profile
- Response (200):
{
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z",
"clients": []
}
get: user/:id
- Response caso o user comum esteja acessando o próprio id ou seja Adm (200):
{
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z",
"clients": []
}
- Response caso o id não seja encontrado no banco (404):
{
"message": "Usuário não encontrado"
}
- Response caso o id não seja do user comum (401):
{
"message": "Usuário não autorizado (notadm)"
}
get: user/all
- Response caso o user comum esteja acessando (401):
{
"message": "Usuário não autorizado"
}
- Response caso o Adm esteja acessando (200):
[
{
"id": "c16abb4a-73dd-482f-8fd4-53abf28d6c19",
"fullName": "User Comum",
"email": "comum@email.com",
"password": "$2b$15$xqtx9Bqk6azAMOuGl6GzieBrD.yd17xicKonuRejKwtX3u5hJ2Bu.",
"isAdm": false,
"created_at": "2023-04-03T01:30:22.591Z",
"updated_at": "2023-04-03T01:30:22.591Z"
},
{
"id": "0f932378-4cfb-4499-8848-f96a536683f3",
"fullName": "ADM",
"email": "ADM@email.com",
"password": "$2b$15$XqzjTVhkKflWKoKjFRLhW.974qHty.uMcjB1A0KrkL2x60Vxj6cuG",
"isAdm": true,
"created_at": "2023-04-03T02:42:36.724Z",
"updated_at": "2023-04-10T20:11:46.812Z"
},
]
get: /user/clients
- Response (200):
[
{
"id": "8583ea9c-1008-498c-97dc-0344267d8a26",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-03T04:33:39.438Z",
"updated_at": "2023-04-03T04:33:39.438Z",
"contacts": [
{
"id": "9e9b585b-3235-4e63-9253-1cef8b92c570",
"fullName": "Mãe do cliente 1",
"email": "maedocliente1@gmail.com",
"phone": "92929292",
"created_at": "2023-04-10T06:50:40.096Z",
"updated_at": "2023-04-10T06:50:40.096Z",
"client": {
"id": "8583ea9c-1008-498c-97dc-0344267d8a26",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-03T04:33:39.438Z",
"updated_at": "2023-04-03T04:33:39.438Z"
}
}
],
"user": {
"id": "0f932378-4cfb-4499-8848-f96a536683f3",
"fullName": "ADM",
"email": "ADM@email.com",
"password": "$2b$15$XqzjTVhkKflWKoKjFRLhW.974qHty.uMcjB1A0KrkL2x60Vxj6cuG",
"isAdm": true,
"created_at": "2023-04-03T02:42:36.724Z",
"updated_at": "2023-04-10T20:11:46.812Z"
}
}
]
get: /user/:id/clients
- Response de acesso por um user comum de um id que não é o seu (401):
{
"message": "Usuário não autorizado (notadm)"
}
- Response caso o user comum esteja acessando pelo seu proprio id ou um Adm por um id qualquer (200):
[
{
"id": "8583ea9c-1008-498c-97dc-0344267d8a26",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-03T04:33:39.438Z",
"updated_at": "2023-04-03T04:33:39.438Z",
"user": {
"id": "0f932378-4cfb-4499-8848-f96a536683f3",
"fullName": "ADM",
"email": "ADM@email.com",
"password": "$2b$15$XqzjTVhkKflWKoKjFRLhW.974qHty.uMcjB1A0KrkL2x60Vxj6cuG",
"isAdm": true,
"created_at": "2023-04-03T02:42:36.724Z",
"updated_at": "2023-04-10T20:11:46.812Z"
}
}
]
delete: /user/:id
- Caso o user esteja passando um id nao existene (404):
{
"message": "Usuário não encontrado"
}
- Caso o user comum queria deletar por um id que não seja o seu (401):
{
"message": "Usuário não autorizado (notadm)"
}
- Caso delete seu proprio id (201): Sem retorno.
post: /session
- Request:
{
"email": "user@email.com",
"password": "1234"
}
- Response (200):
{
"token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE1OGJkMzM0LWU3ZGUtNDcwYy1iNjVlLWNmZDExM2E3OTk0ZSIsImlzQWRtIjpmYWxzZSwiaWF0IjoxNjgxMTU3NTI1LCJleHAiOjE2ODEyNDM5MjUsInN1YiI6ImE1OGJkMzM0LWU3ZGUtNDcwYy1iNjVlLWNmZDExM2E3OTk0ZSJ9.ll4HHGgNutL25gaPgIbagvpycdxeLIb-J-KInqBOnZM"
}
- Response com email ou senha errados (401):
{
"message": "Email ou senha inválidos"
}
post: /client
- Request de criação de cliente:
{
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292"
}
- Response de criação (200):
{
"id": "8583ea9c-1008-498c-97dc-0344267d8a26",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"user": {
"id": "0f932378-4cfb-4499-8848-f96a536683f3",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oNcqRv6yPHKOhYsSwygSS.YrcGQlPrww282MQRlnXZ.FVKG5vffG2",
"isAdm": false,
"created_at": "2023-04-03T02:42:36.724Z",
"updated_at": "2023-04-03T04:24:20.087Z"
},
"created_at": "2023-04-03T04:33:39.438Z",
"updated_at": "2023-04-03T04:33:39.438Z"
}
- Response de criação sem os campos autorizados (401):
{
"message": "Um ou mais campos informados são inválidos"
}
- Response ao tentar cadastrar um nome já existente:
{
"message": "Nome já cadastrado"
}
patch: /client/:id
- Request de edição com qualquer dos campos sendo fullName, email e phone.
- Response de cliente editado (200):
asdasd
- Response de campos não autorizados:
{
"message": "Um ou mais campos informados são inválidos"
}
- Response de id de cliente não encontrado (404):
{
"message": "Cliente não encontrado"
}
- Response ao tentar editar um cliente que não pertence ao usuário comum (401):
{
"message": "Usuário não autorizado (notadm)"
}
- Response ao tentar um nome que não seja o mesmo do cliente (400):
{
"message": "Nome já cadastrado"
}
get: /client
- Quando um usuário comum tenta acessar (401):
{
"message": "Usuário não autorizado"
}
- Quando um usuário Adm acessa (200):
[
{
"id": "5758bcbb-4609-4c3d-9ac7-f10d3fc371e9",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-11T02:11:00.495Z",
"updated_at": "2023-04-11T02:11:00.495Z",
"user": {
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z"
}
}
]
get: /client/:id
- Usuário comum solicitando um cliente que pertence a ele ou sendo ADM (200):
{
"id": "c3dec224-3fba-4464-b9b4-8b414a1989a0",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-11T02:10:08.786Z",
"updated_at": "2023-04-11T02:10:08.786Z",
"user": {
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z"
},
"contacts": []
}
- Solicitar cliente de id inexistente (404):
{
"message": "Cliente não encontrado"
}
get: /client/:id/contacts
- Se um user requisitar contatos de um cliente existente que pertence a ele (200):
[
{
"id": "978dcf5c-383d-422f-962f-1bfb0bf0c35d",
"fullName": "Mãe do cliente 1",
"email": "maedocliente1@gmail.com",
"phone": "92929292",
"created_at": "2023-04-11T03:15:53.939Z",
"updated_at": "2023-04-11T03:15:53.939Z",
"client": {
"id": "5758bcbb-4609-4c3d-9ac7-f10d3fc371e9",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-11T02:11:00.495Z",
"updated_at": "2023-04-11T02:11:00.495Z"
}
}
]
- Se solicitar por um id inexistente (404):
{
"message": "Cliente não encontrado"
}
- Se solicitar um cliente que não pertence a ele (401):
{
"message": "Usuário não autorizado"
}
delete: /client
- Deletar um cliente que não pertence ao usuário logado (401):
{
"message": "Usuário não autorizado"
}
- Deletar um id inexistente (404):
{
"message": "Cliente não encontrado"
}
- Deletar um cliente existente (201): sem response.
post: /contact/:idClient
- Request de criação de contatos:
{
"fullName": "Mãe do cliente 1",
"email": "maedocliente1@gmail.com",
"phone": "92929292"
}
- Response de criação (200):
{
"id": "978dcf5c-383d-422f-962f-1bfb0bf0c35d",
"fullName": "Mãe do cliente 1",
"email": "maedocliente1@gmail.com",
"phone": "92929292",
"client": {
"id": "5758bcbb-4609-4c3d-9ac7-f10d3fc371e9",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-11T02:11:00.495Z",
"updated_at": "2023-04-11T02:11:00.495Z",
"user": {
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z"
}
},
"created_at": "2023-04-11T03:15:53.939Z",
"updated_at": "2023-04-11T03:15:53.939Z"
}
- Quando adiciona um id de cliente inexistente (404):
{
"message": "Cliente não encontrado"
}
patch: /contact/:idClient
- Request de atualização deve ter entre os campos fullName, email e phone.
- Response de cliente atualizado (200):
{
"id": "978dcf5c-383d-422f-962f-1bfb0bf0c35d",
"fullName": "Mãe",
"email": "maedocliente1@gmail.com",
"phone": "92929292",
"created_at": "2023-04-11T03:15:53.939Z",
"updated_at": "2023-04-11T03:30:05.952Z",
"client": {
"id": "5758bcbb-4609-4c3d-9ac7-f10d3fc371e9",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-11T02:11:00.495Z",
"updated_at": "2023-04-11T02:11:00.495Z",
"user": {
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z"
}
}
}
- Response de campo não autorizado (401):
{
"message": "Um ou mais campos informados são inválidos"
}
- Response de cliente inexistente (404):
{
"message": "Contato não encontrado"
}
get: /contact
- Caso um usuário comum tente acessar (401):
{
"message": "Usuário não autorizado"
}
- Somente Adm pode ter acesso a rota.
get: /contact/:idContact
- Requisição de contato (200):
{
"id": "978dcf5c-383d-422f-962f-1bfb0bf0c35d",
"fullName": "Mãe",
"email": "maedocliente1@gmail.com",
"phone": "92929292",
"created_at": "2023-04-11T03:15:53.939Z",
"updated_at": "2023-04-11T03:30:05.952Z",
"client": {
"id": "5758bcbb-4609-4c3d-9ac7-f10d3fc371e9",
"fullName": "Cliente 1",
"email": "cliente1@email.com",
"phone": "92929292",
"created_at": "2023-04-11T02:11:00.495Z",
"updated_at": "2023-04-11T02:11:00.495Z",
"user": {
"id": "a58bd334-e7de-470c-b65e-cfd113a7994e",
"fullName": "user",
"email": "user@email.com",
"password": "$2b$15$oPEK/RZhG8ZV0pn3FWuMn.oL2xSQSCXESj43/4UOQ6DU1oKyYHgre",
"isAdm": false,
"created_at": "2023-04-10T20:09:16.934Z",
"updated_at": "2023-04-10T21:48:36.626Z"
}
}
}