Skip to content

This is a simple helpdesk app that I'm developing for controlling issues

Notifications You must be signed in to change notification settings

joaomacedocb/simplehelpdesk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Helpdesk API

A Simple Helpdesk API é uma API RESTful para o gerenciamento de técnicos, clientes e chamados. Com ela, é possível realizar o cadastro, gerenciamento e consulta de técnicos e clientes, além de registrar e acompanhar chamados que relacionam essas entidades. A API foi projetada para ser eficiente e segura, utilizando autenticação baseada em tokens JWT e permitindo uma fácil integração com sistemas externos.

🚀 Tecnologias Utilizadas

  • Spring Boot
    Framework Java para criar aplicações standalone e web, com mínima configuração.

  • Spring Data JPA
    Abstração para persistência de dados, facilitando a integração com bancos de dados.

  • Spring Security
    Framework que provê segurança para a aplicação, com autenticação e controle de acesso.

  • OAuth2
    Utiliza OAuth2 e JWT para autenticação segura e autorização baseada em tokens.

  • MySQL
    Banco de dados relacional utilizado para armazenamento persistente.

  • H2 Database
    Banco de dados em memória usado para desenvolvimento e testes.

🔗 Endpoints Disponíveis

Aqui estão os principais endpoints da API:

  • Autenticação:
    POST /authenticate
    Endpoint responsável por autenticar os usuários. O formato da requisição é o seguinte:

    {
      "email": "[email protected]",
      "senha": "1234"
    }
    
    Retorna um token JWT que deverá ser utilizado nas demais requisições.
    

Técnicos:

  • GET /tecnicos - Lista todos os técnicos.
  • POST /tecnicos - Cria um novo técnico.
  • GET /tecnicos/{id} - Retorna um técnico específico.
  • PUT /tecnicos/{id} - Atualiza as informações de um técnico.
  • DELETE /tecnicos/{id} - Remove um técnico (se não houver relação com chamados).

Clientes:

  • GET /clientes - Lista todos os clientes.
  • POST /clientes - Cria um novo cliente.
  • GET /clientes/{id} - Retorna um cliente específico.
  • PUT /clientes/{id} - Atualiza as informações de um cliente.
  • DELETE /clientes/{id} - Remove um cliente (se não houver relação com chamados).

Chamados:

  • GET /chamados - Lista todos os chamados.

  • POST /chamados - Cria um novo chamado.

  • GET /chamados/{id} - Retorna um chamado específico.

  • PUT /chamados/{id} - Atualiza o status ou informações de um chamado.

    ⚠️ Nota: Chamados não podem ser excluídos após a criação.


🔒 Segurança

A única rota liberada sem autenticação é a /authenticate. Todas as outras rotas requerem o envio de um token JWT no cabeçalho da requisição:

Authorization: Bearer

Para a geração e validação do JWT, o sistema utiliza chaves RSA pública e privada que devem estar na pasta src/main/resources com os seguintes nomes:

  • app.key: Chave privada RSA usada para assinar os tokens.
  • app.pub: Chave pública RSA usada para verificar os tokens.

Siga este tutorial para geração de chaves RSA.


👥 Perfis de Usuário

A API possui três perfis de usuário:

  • CLIENTE: Acesso restrito a chamados e dados relacionados a si mesmo.
  • TÉCNICO: Acesso a dados de chamados e gerenciamento de clientes e chamados.
  • ADMIN: Acesso total ao sistema, incluindo gerenciamento de técnicos e clientes.

📋 Status e Prioridades dos Chamados

Os chamados criados na API podem ter os seguintes status:

  • ABERTO: Chamado recém-criado, aguardando resolução.
  • EM ANDAMENTO: Chamado em processo de resolução.
  • ENCERRADO: Chamado finalizado.

As prioridades de cada chamado podem ser definidas como:

  • BAIXA
  • MÉDIA
  • ALTA

About

This is a simple helpdesk app that I'm developing for controlling issues

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages