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.
- 1.Introdução
- 2.Pré-requisitos
- 3.Configuração
- 4.Variáveis de Ambiente
- 5.Executando a Aplicação
- 6.Endpoints da API
- 7.Tratamento de Erros
- 8.Esquema do Banco de Dados
- 9.Observações
- 10.Licença
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.
- Docker Compose
- Node.js
- Yarn
1. Clone o repositório
git clone <url-do-repositório>
cd <diretório-do-repositório>2. Instale as dependências
yarn install3. Configure o Banco de Dados
Inicie o banco de dados MySQL usando o Docker Compose:
docker-compose up -d4. Configure as variáveis de ambiente
Crie um arquivo .env no diretório raiz copiando o arquivo fornecido env.example:
cp env.example .envEdite o arquivo .env e preencha os valores necessários.
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=4568Inicie o servidor da API:
yarn startO servidor iniciará no host e na porta especificados no arquivo .env.
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"
}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
requiredTipo de perfil para cadastro.
Obs.:"seller"ou"buyer".string Body cnpj
requiredCNPJ da empresa. string Body responsibleCpf
requiredCPF do responsável pelo CNPJ. string Body name
requiredNome da empresa. string Body phone
requiredTelefone da empresa. string Body mobilePhone
requiredTelefone celular da empresa. string Body email
requiredE-mail da empresa. string Body postalCode
requiredCEP da empresa. string Body street
requiredLogradouro da empresa. string Body number
requiredNúmero da empresa. string Body complement
optionalComplemento da empresa. string Body neighborhood
requiredBairro da empresa. string Body city
requiredCidade da empresa. string Body state
requiredEstado da empresa. string Body termsAccepted
requiredSe a empresa aceitou os termos de uso. boolean
{
"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" } - Status:
-
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" } } - Status:
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.
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.
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 comoselleroubuyer.
- 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
idsão UUIDs gerados pela aplicação. - Campos Numéricos: Campos como
cnpj,cpfepostalCodesão strings contendo apenas dígitos. - Sigla do Estado: O campo
statedeve ser exatamente 2 letras maiúsculas (por exemplo,SP,RJ).
Este projeto está licenciado sob a licença MIT.