/contact-book-api

Contact Book is an application that allows you to manage contacts. With this application, you can easily and conveniently add, view, edit, and delete contacts.

Primary LanguageTypeScript

Documentação - Contact Book API

Rodando Localmente

  1. Clone o repositório:

    git clone https://github.com/vinisooo/contact-book-api.git
  2. Navegue até o diretório do projeto:

    cd contact-book-api
  3. Instale as dependências do projeto utilizando o npm:

    npm install
  4. Inicie a API localmente:

    npm run dev
  5. Pronto! Agora a API deverá estar rodando localmente na porta 3001

    http://localhost:3001
  6. Acesse o front-end do projeto:

    Ver repositório
    Acessar front-end do projeto

Registro de Usuário

Endpoint: POST /users/register

Envio:

    {
      "name": "user",
      "email": "user@mail.com",
      "phone": "+55 00 000000000",
      "password": "password123"
    }
  

Resposta:

    {
      "id": 1,
      "name": "user",
      "email": "user@mail.com",
      "phone": "+55 00 000000000",
      "createdAt": "2023-05-30"
    }
  

Receber Usuário Logado

Endpoint: GET /users/logged/:id

Parâmetros:

  • id (número) - ID do usuário logado
  • Token (string) - Token de autenticação

Exemplo de resposta:

    {
      "id": 1,
      "name": "user",
      "email": "user@mail.com",
      "password": "$2a$10$toa3ha4.Hg6ZN0/ijYNkhelzHstHKC3Gn6i4fUwuOBbhYd1rEEu1m",
      "phone": "+55 00 000000000",
      "createdAt": "2023-05-27",
      "contacts": []
    }
  

Obter Usuários

Endpoint: GET /users

Resposta:

    [
      {
        "id": 2,
        "name": "user1",
        "email": "user2@gmail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-28"
      },
      {
        "id": 3,
        "name": "user2",
        "email": "user2@gmail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-28"
      }
    ]
  

Obter Usuário por ID

Endpoint: GET /users/:id

Parâmetros:

  • id (número) - ID do usuário

Exemplo de resposta:

    {
      "id": 1
      "name": "user",
      "email": "user@mail.com",
      "phone": "+55 00 000000000",
      "createdAt": "2023-05-24"
    }
  

Deletar Usuário por ID

Endpoint: DELETE /users/:id

Parâmetros:

  • id (número) - ID do usuário logado
  • Token (string) - Token de autenticação

Resposta: 204 No Content

Atualizar Usuário

Endpoint: PATCH /users/:id

Parâmetros:

  • id (número) - ID do usuário logado
  • Token (string) - Token de autenticação

Corpo da requisição:

    {
      "name": "updated User",
      "email": "uer@mail.com",
      "phone": "+55 00 0000000000"
    }
  

Exemplo de resposta:

    {
      "id": 7,
      "name": "updated User",
      "email": "user@mail.com",
      "phone": "+55 00 000000000",
      "createdAt": "2023-05-30"
    }
  

Obter Contatos do Usuário

Endpoint: GET /users/:id/contacts

Parâmetros:

  • id (número) - ID do usuário logado
  • Token (string) - Token de autenticação

Exemplo de resposta:

    [
      {
        "id": 2,
        "name": "contact1",
        "email": "contact1@mail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-30"
      },
      {
        "id": 3,
        "name": "contact2",
        "email": "contact2@mail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-30"
      }
    ]
  

Criar Contato

Endpoint: POST /contacts

Parâmetros:

  • Token (string) - Token de autenticação

Corpo da requisição:

    {
      "name": "contact",
      "phone": "+55 00 000000000",
      "email": "contact@mail.com"
    }
  

Exemplo de resposta:

    {
      "name": "contact",
      "email": "contact@mail.com",
      "phone": "+55 00 000000000",
      "user": {
        "id": 1,
        "name": "user",
        "email": "user@mail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-30"
      },
      "id": 2,
      "createdAt": "2023-05-30"
    }
  

Obter Contato Específico

Endpoint: GET /contacts/:id

Parâmetros:

  • id (número) - ID do contato
  • Token (string) - Token de autenticação do dono do contato

Exemplo de resposta:

    {
      "id": 3,
      "name": "contact",
      "email": "contact@mail.com",
      "phone": "+55 00 000000000",
      "createdAt": "2023-05-30",
      "user": {
        "id": 1,
        "name": "user",
        "email": "user@mail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-30"
      }
    }
  

Atualizar Contato Específico

Endpoint: PATCH /contacts/:id

Parâmetros:

  • id (número) - ID do contato
  • Token (string) - Token de autenticação do dono do contato

Corpo da requisição:

    {
      "name": "updated contact",
      "email": "updatedmail@mail.com",
      "phone": "+55 00 000000001"
    }
  

Exemplo de resposta:

    {
      "id": 3,
      "name": "updated contact",
      "email": "updatedmail@mail.com",
      "phone": "+55 00 000000001",
      "createdAt": "2023-05-30",
      "user": {
        "id": 1,
        "name": "user",
        "email": "user@mail.com",
        "phone": "+55 00 000000000",
        "createdAt": "2023-05-30"
      }
    }
  

Deletar Contato

Endpoint: DELETE /contacts/:id

Parâmetros:

  • id (número) - ID do contato
  • Token (string) - Token de autenticação do dono do contato

Resposta: 204 No Content