Code Monkey home page Code Monkey logo

tcm-m4's Introduction

Documentação da API

Tabela de Conteúdos

1. Visão Geral

Visão geral do projeto, um pouco das tecnologias usadas.

2. Diagrama ER

Voltar para o topo

Diagrama ER da API definindo bem as relações entre as tabelas do banco de dados.

3. Início Rápido

Voltar para o topo

3.1. Instalando Dependências

Clone o projeto em sua máquina e instale as dependências com o comando:

yarn

3.2. Variáveis de Ambiente

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.

3.3. Migrations

Execute as migrations com o comando:

yarn typeorm migration:run -d src/data-source.ts

4. Endpoints

Voltar para o topo

Índice

1. Client Or Personal

Voltar para os Endpoints

A criação do usuário é definida pelos campos abaixo, a diferença de um cliente para um personal é o campo adm.

Campo Tipo Descrição
id string Identificador único do usuário.
name string O nome do usuário.
email string O e-mail do usuário.
age string A idade do usuário.
password string A senha de acesso do usuário.
phone_number string O número de contato do usuário.
status boolean A condição para o usuário ativo ou inativo.
adm boolean Define se um usuário é um Client ou um Personal.
plan string O tipo de plano de academia.
checkin string Horário de entrada na academia
checkout string Horário de saída da academia
lock_number string É o número de armário da academia

Endpoints

Método Rota Descrição
POST /register Criação de um cliente ou personal.
POST /login Gera o token de autenticação.
GET /users Lista todos os usuários.
GET /clients/:id Lista um cliente usando seu ID como parâmetro

1.1. Criação de Client or Personal

/register

Exemplo de Request:

POST /register
Host: http://localhost:3000
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZlNTlkMmQ2LTg5MmUtNGE5OC1iNjJjLWJiM2RkZWVmYWM4MiIsImFkbSI6ZmFsc2UsImlhdCI6MTY1ODM1MTk2MiwiZXhwIjoxNjU4MzU1NTYyfQ._S5WW_T4kDMnVTLjESv2GqQgjO21pNBW9O2dxejWXFM
Content-type: application/json

Corpo da Requisição:

{
  "name": "Alex",
  "email": "[email protected]",
  "age": "28",
  "password": "1234",
  "phone_number": "9819839189",
  "adm": true,
  "plan": "Family",
  "checkin": "3 horas",
  "checkout": "2 horas",
  "lock_number": 2,
  "street": "Rua 007",
  "cep": "59695-000",
  "number": "25",
  "town": "Floripa",
  "state": "SC"
}

Exemplo de Response:

201 Created
{
  "id": "78592cd4-86f9-4a0d-80f6-616a0b8ef6f1",
  "name": "Alex",
  "email": "[email protected]",
  "age": "28",
  "status": true,
  "street": "Rua 007",
  "number": "25",
  "town": "Floripa",
  "state": "SC"
}

Possíveis Erros:

Código do Erro Descrição
409 Conflict Email already registered.

1.2. Autenticação

Voltar para o topo

/login

Exemplo de Request:

POST /login
Host: http://localhost:3000
Authorization: None
Content-type: application/json

Corpo da Requisição:

{
  "email": "[email protected]",
  "password": "1234"
}

Exemplo de Response:

201 Created
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZlNTlkMmQ2LTg5MmUtNGE5OC1iNjJjLWJiM2RkZWVmYWM4MiIsImFkbSI6ZmFsc2UsImlhdCI6MTY1ODM1NDM4MiwiZXhwIjoxNjU4MzU3OTgyfQ.ERXtzLfQ9KtDsMaqWrQczgonuYxGo9XT5a6bI0u2ZkU"
}

Possíveis Erros:

Código do Erro Descrição
403 Forbidden Wrong email/password.
404 Not Found Account not found.

1.3. Listando Usuários

/users

Exemplo de Request:

GET /users
Host: http://localhost:3000
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZlNTlkMmQ2LTg5MmUtNGE5OC1iNjJjLWJiM2RkZWVmYWM4MiIsImFkbSI6ZmFsc2UsImlhdCI6MTY1ODM1MTk2MiwiZXhwIjoxNjU4MzU1NTYyfQ._S5WW_T4kDMnVTLjESv2GqQgjO21pNBW9O2dxejWXFM
Content-type: application/json

Para listar todos os usuários, você deve estar logado e com permissão de administrador.

Corpo da Requisição:

Vazio

Exemplo de Response:

200 OK
[
  {
    "id": "36489681-bd4b-47c5-ad11-eaaef2e80b6d",
    "name": "Alex",
    "email": "[email protected]",
    "age": "28",
    "password": "$2a$10$9PPZtwZf4kNoWaHVKuf0N.2QgU2HFfvtDDulrHsCGeuBUuK6T8KOi",
    "phone_number": "9819839189",
    "status": true,
    "adm": true,
    "plan": "Family",
    "checkin": "3 horas",
    "checkout": "2 horas",
    "lock_number": 2,
    "created_at": "2022-07-20T20:25:01.059Z",
    "updated_at": "2022-07-20T20:25:01.059Z",
    "avaliations": [],
    "journals": [],
    "addresses": [
      {
        "id": "92905f3b-5d5d-4400-a615-fbe0677f3cc6",
        "street": "Rua 007",
        "number": "25",
        "cep": "59695-000",
        "complement": null,
        "town": "Floripa",
        "state": "SC"
      }
    ]
  }
]

Possíveis Erros:

Código do Erro Descrição
401 Unathorized Invalid token.
403 Forbidden Needs admin permission to access.

1.4. Listando Usuários Especifico

/users/:id

Exemplo de Request:

GET /users/36489681-bd4b-47c5-ad11-eaaef2e80b6d
Host: http://localhost:3000
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZlNTlkMmQ2LTg5MmUtNGE5OC1iNjJjLWJiM2RkZWVmYWM4MiIsImFkbSI6ZmFsc2UsImlhdCI6MTY1ODM1MTk2MiwiZXhwIjoxNjU4MzU1NTYyfQ._S5WW_T4kDMnVTLjESv2GqQgjO21pNBW9O2dxejWXFM
Content-type: application/json

Exemplo de Response:

200 OK
[
  {
    "id": "36489681-bd4b-47c5-ad11-eaaef2e80b6d",
    "name": "Alex",
    "email": "[email protected]",
    "age": "28",
    "password": "$2a$10$9PPZtwZf4kNoWaHVKuf0N.2QgU2HFfvtDDulrHsCGeuBUuK6T8KOi",
    "phone_number": "9819839189",
    "status": true,
    "adm": true,
    "plan": "Family",
    "checkin": "3 horas",
    "checkout": "2 horas",
    "lock_number": 2,
    "created_at": "2022-07-20T20:25:01.059Z",
    "updated_at": "2022-07-20T20:25:01.059Z",
    "addresses": [
      {
        "id": "92905f3b-5d5d-4400-a615-fbe0677f3cc6",
        "street": "Rua 007",
        "number": "25",
        "cep": "59695-000",
        "complement": null,
        "town": "Floripa",
        "state": "SC"
      }
    ]
  }
]

Possíveis Erros:

Código do Erro Descrição
401 Unathorized Invalid token.
403 Forbidden Needs admin permission to access.

2. Avaliations

2.1. Criando Avaliação

/avaliations/:id

Exemplo de Request:

POST /avaliations/36489681-bd4b-47c5-ad11-eaaef2e80b6d
Host: http://localhost:3000
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZlNTlkMmQ2LTg5MmUtNGE5OC1iNjJjLWJiM2RkZWVmYWM4MiIsImFkbSI6ZmFsc2UsImlhdCI6MTY1ODM1MTk2MiwiZXhwIjoxNjU4MzU1NTYyfQ._S5WW_T4kDMnVTLjESv2GqQgjO21pNBW9O2dxejWXFM
Content-type: application/json

Corpo da Requisição:

{
  "wheight": 80,
  "height": 180,
  "neck": "35.6",
  "waist": 693,
  "bust": 36,
  "hip": 833,
  "arm_right": 333,
  "arm_left": 332,
  "leg_left": 500,
  "leg_right": 504,
  "cardio_freq": 80,
  "circumference": 90,
  "diameter": 45
}

Exemplo de Response:

201 CREATED
[
  {
    "message": "Avaliation created",
    "avaliation": {
      "wheight": 80,
      "height": 180,
      "neck": "35.6",
      "waist": 693,
      "bust": 36,
      "hip": 833,
      "arm_right": 333,
      "arm_left": 332,
      "leg_right": 504,
      "leg_left": 500,
      "cardio_freq": 80,
      "circumference": 90,
      "diameter": 45,
      "created_at": "2022-07-21T00:00:37.306Z",
      "updated_at": "2022-07-21T00:00:37.306Z",
      "data_client_personal": [
        {
          "id": "36489681-bd4b-47c5-ad11-eaaef2e80b6d",
          "name": "Alex",
          "email": "[email protected]",
          "age": "28",
          "password": "$2a$10$9PPZtwZf4kNoWaHVKuf0N.2QgU2HFfvtDDulrHsCGeuBUuK6T8KOi",
          "phone_number": "9819839189",
          "status": true,
          "adm": true,
          "plan": "Family",
          "checkin": "3 horas",
          "checkout": "2 horas",
          "lock_number": 2,
          "created_at": "2022-07-20T20:25:01.059Z",
          "updated_at": "2022-07-20T20:25:01.059Z",
          "addresses": [
            {
              "id": "92905f3b-5d5d-4400-a615-fbe0677f3cc6",
              "street": "Rua 007",
              "number": "25",
              "cep": "59695-000",
              "complement": null,
              "town": "Floripa",
              "state": "SC"
            }
          ]
        }
      ],
      "id": "11288fd9-5c1c-40b8-a6c9-66b95574f0fb"
    }
  }
]

2.2. Listando Avaliação

/avaliations/list

Exemplo de Request:

GET /avaliations/list
Host: http://localhost:3000
Authorization:
Content-type: application/json

Corpo da Requisição:

Vazio

Exemplo de Response:

200 OK
[
	{
		"id": "11288fd9-5c1c-40b8-a6c9-66b95574f0fb",
		"wheight": 80,
		"height": 180,
		"neck": "35.6",
		"waist": 693,
		"bust": 36,
		"hip": 833,
		"arm_right": 333,
		"arm_left": 332,
		"leg_right": 504,
		"leg_left": 500,
		"cardio_freq": 80,
		"circumference": 90,
		"diameter": 45,
		"created_at": "2022-07-21T00:00:37.306Z",
		"updated_at": "2022-07-21T00:00:37.306Z",
		"data_client_personal": [
			{
				"id": "36489681-bd4b-47c5-ad11-eaaef2e80b6d",
				"name": "Alex",
				"email": "[email protected]",
				"age": "28",
				"password": "$2a$10$9PPZtwZf4kNoWaHVKuf0N.2QgU2HFfvtDDulrHsCGeuBUuK6T8KOi",
				"phone_number": "9819839189",
				"status": true,
				"adm": true,
				"plan": "Family",
				"checkin": "3 horas",
				"checkout": "2 horas",
				"lock_number": 2,
				"created_at": "2022-07-20T20:25:01.059Z",
				"updated_at": "2022-07-20T20:25:01.059Z",
				"addresses": [
					{
						"id": "92905f3b-5d5d-4400-a615-fbe0677f3cc6",
						"street": "Rua 007",
						"number": "25",
						"cep": "59695-000",
						"complement": null,
						"town": "Floripa",
						"state": "SC"
					}
				]
			}
		]
	},

2.3. Listando uma Avaliação Especifica

/avaliations/list/:id

GET /avaliations/list/{{ _['base-Url'] }}/avaliations/list/36489681-bd4b-47c5-ad11-eaaef2e80b6d
Host: http://localhost:3000
Authorization:
Content-type: application/json

Corpo da Requisição:

Vazio

Exemplo de Response:

200 OK
[
  {
    "id": "11288fd9-5c1c-40b8-a6c9-66b95574f0fb",
    "wheight": 80,
    "height": 180,
    "neck": "35.6",
    "waist": 693,
    "bust": 36,
    "hip": 833,
    "arm_right": 333,
    "arm_left": 332,
    "leg_right": 504,
    "leg_left": 500,
    "cardio_freq": 80,
    "circumference": 90,
    "diameter": 45,
    "created_at": "2022-07-21T00:00:37.306Z",
    "updated_at": "2022-07-21T00:00:37.306Z",
    "data_client_personal": [
      {
        "id": "36489681-bd4b-47c5-ad11-eaaef2e80b6d",
        "name": "Alex",
        "email": "[email protected]",
        "age": "28",
        "password": "$2a$10$9PPZtwZf4kNoWaHVKuf0N.2QgU2HFfvtDDulrHsCGeuBUuK6T8KOi",
        "phone_number": "9819839189",
        "status": true,
        "adm": true,
        "plan": "Family",
        "checkin": "3 horas",
        "checkout": "2 horas",
        "lock_number": 2,
        "created_at": "2022-07-20T20:25:01.059Z",
        "updated_at": "2022-07-20T20:25:01.059Z",
        "addresses": [
          {
            "id": "92905f3b-5d5d-4400-a615-fbe0677f3cc6",
            "street": "Rua 007",
            "number": "25",
            "cep": "59695-000",
            "complement": null,
            "town": "Floripa",
            "state": "SC"
          }
        ]
      }
    ]
  }
]

2.2. Atualizando Avaliação

/avaliations/:id

Exemplo de Request:

GET /avaliations/11288fd9-5c1c-40b8-a6c9-66b95574f0fb
Host: http://localhost:3000
Authorization:
Content-type: application/json

Corpo da Requisição:

{
  "height": 200
}

Exemplo de Response:

200 OK
{
  "message": "Avaliation Updated",
  "updated_avaliation": {
    "id": "11288fd9-5c1c-40b8-a6c9-66b95574f0fb",
    "wheight": 80,
    "height": 200,
    "neck": "35.6",
    "waist": 693,
    "bust": 36,
    "hip": 833,
    "arm_right": 333,
    "arm_left": 332,
    "leg_right": 504,
    "leg_left": 500,
    "cardio_freq": 80,
    "circumference": 90,
    "diameter": 45,
    "created_at": "2022-07-21T00:00:37.306Z",
    "updated_at": "2022-07-21T01:07:47.000Z"
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.