# API DESAFIO 05 URL base: https://api-desafiom05.herokuapp.com ## Cadastro de usuário ### POST /users #### Campos necessários: - Nome do usuário (obrigatório) - Email (obrigatório) - Senha (obrigatório) ``` json //Exempo de requisição: { "nome": "Pedro Alves", "email": "pedro@email.com", "senha": "12345" } ``` ``` json //Exemplo de resposta: HTTP status 200 { "message": "Usuário cadastrado com sucesso!" } ``` #### Tratamento de erros: - Campos obrigatórios em branco - Caso o email já exista no sistema - Senha menor que 5 digitos - Email de formato inválido ``` json //Exemplo de resposta: HTTP status 400 { "message": "O email informado já existe." } //HTTP status 400 { "message": "senha deve ser pelo menos 5 caracteres" } ``` ## Login de usuário ### POST /login #### Campos necessários: - Email (obrigatório) - Senha (obrigatório) ``` json //Exemplo de requisição: { "email": "pedro@email.com", "senha": "12345" } ``` ``` json //Exemplo de resposta: HTTP status 200 { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwibm9tZSI6IlF1w6l6aWEgQmFsb25lY2tlciIsImlhdCI6MTYzNzg2OTkxMCwiZXhwIjoxNjM3ODc3MTEwfQ.gX-BEVwZf0vip1SqsHet3gLvJhhGQpmyqLWWgumNxlU", { "email": "pedro@email.com", "nome": "Pedro Alves" } } ``` #### Tratamento de erros: - Campos obrigatórios em branco - E-mail não existe no cadastro - Senha incorreta - Senha menor que 5 digitos ``` json //Exemplo de resposta: HTTP status 400 { "message": "E-mail e/ou senha incorretos." } //HTTP status 400 { "message": "email é um campo obrigatório" } ``` ### Obs: Todas as rotas abaixo precisam de autenticação. ## Edição de um usuário ### PUT /users #### Campos necessários: - Nome de usuário (obrigatório) - Email (obrigatório) - Senha - CPF - Telefone ``` json //Exemplo de requisição: { "nome": "Quezia", "email": "quezia@gmail.com", "senha": "" "cpf": "06999988802" "telefone": "99999999" } ``` ``` json //Exemplo de resposta: HTTP status 200 { "message": "Usuário atualizado com sucesso." } ``` #### Obs: Campos não obrigatórios que não forem enviados no corpo da requisição, ou forem enviados em branco, não sofrerão nenhuma modificação. #### Tratamento de erros: - Campos obrigatórios em branco - E-mail informado for diferente do usuário logado e já existir cadastrado para outro usuário ``` json //Exemplo de resposta: HTTP status 400 { "message": "nome é um campo obrigatório" } //HTTP status 400 { "message": "O email informado já existe." } ``` ## Cadastro de um cliente ### POST /clients #### Campos necessários: - Nome do cliente (obrigatório) - Email (obrigatório) - Cpf (obrigatório) - Telefone (obrigatório) - Cep - Logradouro - Complemento - Bairro - Cidade - Estado ``` json //Exemplo de requisição: { "nome": "Maria", "email": "maria@email.com" "cpf": "03355522212", "telefone": "999999999", "cep": "65022822", "logradouro": "Rua 10", "complemento": "Quadra 10", "bairro": "Planalto II", "cidade": "São Luís", "estado": "Maranhão" } ``` ``` json //Exemplo de resposta: HTTP status 200 { "message": "Cliente cadastrado com sucesso." } ``` #### Tratamento de erros: - Campos obrigatórios em branco - Caso já exista cliente cadastrado com o mesmo email - Caso já exista cliente cadastrado com o mesmo cpf ``` json //Exemplo de resposta: HTTP status 400 { "message": "Email já cadastrado" } //HTTP status 400 { "message": "cpf é um campo obrigatório" } ``` ## Edição de um cliente ### PUT /clients/:id #### Campos necessários: - Nome do cliente (obrigatório) - Email (obrigatório) - Cpf (obrigatório) - Telefone (obrigatório) - Cep - Logradouro - Complemento - Bairro - Cidade - Estado ``` //Exemplo de requisição: { "nome": "Marcio", "telefone": "99999999", "cpf": "123412222", "email": "marcio@gmail.coom", "logradouro": "Rua 3", "complemento": "Quadra 200" } ``` ``` //Exemplo de resposta //HTTP status 200 { "message": "Cliente atualizado com sucesso." } ``` #### Tratamento de erros: - Campos obrigatórios em branco - Já existir cliente cadastrado com o mesmo cpf ou email ``` //Exemplo de resposta HTTP status 400 { "message": "Já existe cliente cadastrado com o email informado." } //HTTP 400 { "message": "Nome é um campo obrigatório". } ``` ## Detalhamento de cliente ### GET /clients/:id - Sem conteúdo no corpo da requisição - Autenticação necessária ``` //Exemplo de resposta: HTTP 200 [ { "id": 2, "usuario_id": 13, "nome": "Marcio", "email": "marcio@gmail.coom", "cpf": "123412222", "telefone": "14725", "status": null, "cep": null, "logradouro": "Rua 3", "complemento": "Quadra 200", "bairro": null, "cidade": null, "estado": null } ] ``` #### Tratamento de erros: - Usuario não autenticado - Cliente nao existe. ## Listagem de Clientes ### GET /clients - Sem conteúdo no corpo da requisição - Autenticação necessária ``` //Exemplo de resposta: HTTP status 200 [ { "id": 1, "usuario_id": 13, "nome": "Lilian", "email": "lilian@gmail.coom", "cpf": "1234", "telefone": "14725", "status": null, "cep": null, "logradouro": "Rua 3", "complemento": "Quadra 200", "bairro": null, "cidade": null, "estado": null }, { "id": 2, "usuario_id": 13, "nome": "Marcio", "email": "marcio@gmail.coom", "cpf": "123412222", "telefone": "14725", "status": null, "cep": null, "logradouro": "Rua 3", "complemento": "Quadra 200", "bairro": null, "cidade": null, "estado": null } ] ``` #### Tratamento de erros: - Usuário não autenticado ## Cadastro de cobrança ### POST /charges #### Campos necessários: **Todos os campos abaixo são obrigatórios** - Nome do Cliente - Id do Cliente - Id do usuário (id do usuário logado) - Data do vencimento - Valor - Descrição - Status ``` //Exemplo de requisição { "cliente_nome": "Marcio", "cliente_id": 2, "usuario_id": 13, "data_vencimento": "02-12-2021", "status": "Pendente", "descricao": "Produto mensal", "valor": 25000 } ``` ``` //Exemplo de resposta HTTP status 200 { "message": "Cobrança cadastrada com sucesso." } ``` #### Tratamento de erros: - Campos obrigatórios em branco - Usuário não autenticado ``` //Exemplo de resposta HTTP status 400 { "message": "O campo usuario_id é obrigatório" } ``` ## Listagem de cobranças ### GET /charges - Sem conteúdo no corpo da requisição - Autenticação necessária ``` //Exemplo de resposta: [ { "id": 1, "cliente_nome": "Lilian", "data_vencimento": "2021-02-12T03:00:00.000Z", "descricao": "Produto mensal", "valor": 5000, "cliente_id": 1, "usuario_id": 13, "status": "Pendente" }, { "id": 3, "cliente_nome": "Marcio", "data_vencimento": "2021-02-12T03:00:00.000Z", "descricao": "Produto mensal", "valor": 25000, "cliente_id": 2, "usuario_id": 13, "status": "Paga" } ] ``` #### Tratamento de erros: - Usuário não autenticado ## Listar cobranças de um cliente ### GET /charges/:client_id - Sem conteúdo no corpo da requisição - Autenticação necessária ``` //Exemplo de resposta: HTTP status 200 [ { "id": 1, "cliente_nome": "Lilian", "data_vencimento": "2021-02-12T03:00:00.000Z", "descricao": "Produto mensal", "valor": 5000, "cliente_id": 1, "usuario_id": 13, "status": "Pendente" }, { "id": 2, "cliente_nome": "Lilian", "data_vencimento": "2021-02-12T03:00:00.000Z", "descricao": "Produto mensal", "valor": 25000, "cliente_id": 1, "usuario_id": 13, "status": "Paga" } ] ``` #### Tratamento de erros: - Usuário não autenticado - Cliente não existe ## Detalhar uma cobrança ### GET /charge/:id - Sem conteúdo no corpo da requisição - Autenticação necessária ``` //Exemplo de resposta: HTTP status 200 { "id": 4, "cliente_nome": "Marcio", "data_vencimento": "2021-02-12T03:00:00.000Z", "descricao": "Produto mensal", "valor": 25000, "cliente_id": 2, "usuario_id": 13, "status": "Vencida" } ``` ## Editar uma cobrança ### PUT /charge/:id #### Campos necessários: **Todos os campos abaixo são obrigatórios** - Nome do Cliente - id do cliente - id do usuário - Data do vencimento - Valor - Descrição - Status ``` //Exemplo de requisição: { "cliente_nome": "Marcio", "cliente_id": 2, "usuario_id": 5, "data_vencimento": "10-06-2021", "status": "Paga", "descricao": "Produto mensal", "valor": 13000 } ``` #### Tratamento de erros: - Campos obrigatórios em branco - Usuário não autenticado ## Excluir uma cobrança DELETE /charge/:id - Sem conteúdo no corpo da requisição - Autenticação necessária ``` //Exemplo de resposta: HTTP status 200 { "message": "Cobrança excluída com sucesso." } ``` #### Tratamento de erros: - Tentativa de excluir uma cobrança paga - Usuário não autenticado ``` //Exemplo de resposta: HTTP status 400 { "message": "Cobranças pagas não podem ser excluídas." } ```