Skip to content

RafaelCarvalho89/profile-api

Repository files navigation

Descrição do Projeto.

Este documento fornece informações detalhadas sobre os endpoints da API, formatos de requisição e resposta, e como configurar e executar a aplicação.


Índice


1 Introdução

Esta API permite que os clientes gerenciem perfis de empresas, incluindo detalhes da empresa, endereços e categorias de perfil.

Ela fornece endpoints para criar novos perfis de empresas.


2 Pré-requisitos

  • Docker Compose
  • Node.js
  • Yarn

3 Configuração

1. Clone o repositório

git clone <url-do-repositório>
cd <diretório-do-repositório>

2. Instale as dependências

yarn install

3. Configure o Banco de Dados

Inicie o banco de dados MySQL usando o Docker Compose:

docker-compose up -d

4. Configure as variáveis de ambiente

Crie um arquivo .env no diretório raiz copiando o arquivo fornecido env.example:

cp env.example .env

Edite o arquivo .env e preencha os valores necessários.


4 Variáveis de Ambiente

A aplicação requer as seguintes variáveis de ambiente:

  • Configuração do Banco de Dados:
    • MYSQLDB_HOST: Nome do host do banco de dados MySQL (padrão: localhost ou nome do serviço Docker).
    • MYSQLDB_PORT: Número da porta do banco de dados MySQL (padrão: 3306).
    • MYSQLDB_DATABASE: Nome do banco de dados MySQL.
    • MYSQLDB_USER: Nome de usuário para o banco de dados MySQL.
    • MYSQLDB_PASSWORD: Senha para o banco de dados MySQL.
  • Configuração do Servidor da API:
    • API_HOST: Nome do host para o servidor da API (padrão: localhost).
    • API_PORT: Número da porta para o servidor da API (padrão: 4568).

Exemplo de arquivo .env:

MYSQLDB_HOST=localhost
MYSQLDB_PORT=3306
MYSQLDB_DATABASE=wefit_db
MYSQLDB_USER=root
MYSQLDB_PASSWORD=sua_senha
API_HOST=localhost
API_PORT=4568

5 Executando a Aplicação

Inicie o servidor da API:

yarn start

O servidor iniciará no host e na porta especificados no arquivo .env.


6 Endpoints da API

6.1 Obter pong

GET /api/v1/ping

Descrição:

Retorna a mensagem "pong" para verificar se o servidor da API está em execução.

Requisição

  • Método: GET
  • URL: /api/v1/ping

Resposta

  • Status: 200 OK
  • Corpo:
{
  "message": "pong"
}

6.2 Cadastrar Perfil de Empresa

Requisição

  • Método: POST
  • URL: /api/v1/profiles/companies/:profileCategory
  • Cabeçalhos:
    • Content-Type: application/json
  • Parâmetros do Corpo:
    Tipo Nome Descrição Schema
    URL param profileCategory
    required
    Tipo de perfil para cadastro.
    Obs.: "seller" ou "buyer".
    string
    Body cnpj
    required
    CNPJ da empresa. string
    Body responsibleCpf
    required
    CPF do responsável pelo CNPJ. string
    Body name
    required
    Nome da empresa. string
    Body phone
    required
    Telefone da empresa. string
    Body mobilePhone
    required
    Telefone celular da empresa. string
    Body email
    required
    E-mail da empresa. string
    Body postalCode
    required
    CEP da empresa. string
    Body street
    required
    Logradouro da empresa. string
    Body number
    required
    Número da empresa. string
    Body complement
    optional
    Complemento da empresa. string
    Body neighborhood
    required
    Bairro da empresa. string
    Body city
    required
    Cidade da empresa. string
    Body state
    required
    Estado da empresa. string
    Body termsAccepted
    required
    Se a empresa aceitou os termos de uso. boolean

Exemplo do Corpo da requisição

{
  "cnpj": "12345678901234",
  "responsibleCpf": "12345678901",
  "name": "Nome da Empresa",
  "phone": "1234567890",
  "mobilePhone": "0987654321",
  "email": "[email protected]",
  "postalCode": "12345678",
  "street": "Rua Principal",
  "number": "123",
  "complement": "Sala 456",
  "neighborhood": "Centro",
  "city": "Nome da Cidade",
  "state": "SP",
  "termsAccepted": true
}

Resposta

  • Sucesso:

    • Status: 201 Created
    • Corpo:
    {
      "data": {
        "id": "c51c2f04-ec6a-482f-83bf-480c31a8c2e8",
        "profileCategory": "seller",
        "company": {
          "id": "05a64fe0-f120-4759-bc14-d080eb9b857a",
          "cnpj": "12345678901234",
          "responsibleCpf": "12345678901",
          "name": "Nome da Empresa",
          "phone": "1234567890",
          "mobilePhone": "0987654321",
          "email": "[email protected]",
          "createdAt": "2024-10-20T00:00:00.000Z"
        },
        "address": {
          "id": "c1df9f25-d92f-48e6-9378-c1e63cc9df06",
          "postalCode": "12345678",
          "street": "Rua Principal",
          "number": "123",
          "complement": "Sala 456",
          "neighborhood": "Centro",
          "city": "Nome da Cidade",
          "state": "SP",
          "createdAt": "2024-10-20T00:00:00.000Z"
        },
        "termsAccepted": true,
        "createdAt": "2024-10-20T00:00:00.000Z"
      }

  • Erro de Requisição:

    • Status: 400 Bad Request
    • Corpo:
    {
      "data": null,
      "error": {
        "error": "INVALID_REQUIREMENTS",
        "message": "Requisitos inválidos para: cnpj. CNPJ deve ter 14 dígitos"
      }
    }

Possíveis erros:

  • INVALID_REQUIREMENTS (400 Bad Request): Um ou mais parâmetros de entrada são inválidos.
  • INTERNAL_SERVER_ERROR (500 Internal Server Error): Ocorreu um erro inesperado no servidor.

7 Tratamento de Erros

Erros são retornados em um formato consistente:

{
  "data": null,
  "error": {
    "error": "CÓDIGO_DO_ERRO",
    "message": "Mensagem detalhada do erro."
  }
}
  • error: Um código representando o tipo de erro (por exemplo, INVALID_REQUIREMENTS, INTERNAL_SERVER_ERROR).
  • message: Uma mensagem que descreve o erro.

8 Esquema do Banco de Dados

O banco de dados utilizado para armazenar os dados é o MySQL.

O esquema do banco de dados inclui as seguintes tabelas:

  • companies: Armazena detalhes da empresa.
  • company_addresses: Armazena informações de endereço vinculadas às empresas.
  • company_profiles: Armazena os perfis de empresas cadastradas como seller ou buyer.

9 Observações

  • Formato de Data: Todos os campos de data e hora estão no formato ISO 8601 e usam o horário UTC.
  • Campos de ID: Os campos id são UUIDs gerados pela aplicação.
  • Campos Numéricos: Campos como cnpj, cpf e postalCode são strings contendo apenas dígitos.
  • Sigla do Estado: O campo state deve ser exatamente 2 letras maiúsculas (por exemplo, SP, RJ).

10 Licença

Este projeto está licenciado sob a licença MIT.


Retornar ao Topo ^

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published