{"id":27039679,"url":"https://github.com/filipemt/helpdesk_api","last_synced_at":"2025-04-09T18:24:21.969Z","repository":{"id":286156486,"uuid":"959897702","full_name":"Filipemt/Helpdesk_Api","owner":"Filipemt","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-04T17:07:42.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T17:30:45.549Z","etag":null,"topics":["api-rest","docker","java","postgres","spring","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Filipemt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-03T14:26:18.000Z","updated_at":"2025-04-04T17:07:46.000Z","dependencies_parsed_at":"2025-04-04T17:41:08.801Z","dependency_job_id":null,"html_url":"https://github.com/Filipemt/Helpdesk_Api","commit_stats":null,"previous_names":["filipemt/helpdesk_api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2FHelpdesk_Api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2FHelpdesk_Api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2FHelpdesk_Api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2FHelpdesk_Api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Filipemt","download_url":"https://codeload.github.com/Filipemt/Helpdesk_Api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247280285,"owners_count":20912971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","docker","java","postgres","spring","springboot"],"created_at":"2025-04-05T03:17:57.095Z","updated_at":"2025-04-09T18:24:21.964Z","avatar_url":"https://github.com/Filipemt.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📘 Deskhelp API - Sistema de Helpdesk de Chamados de TI\n\n## 📖 Visão Geral\n\nO sistema de Helpdesk de Chamados de TI é uma API RESTful que permite:\n\n- **Usuários** registrarem problemas técnicos\n- **Técnicos** consultarem e resolverem esses chamados\n- **Auditoria** completa do histórico de alterações dos chamados\n\n---\n\n## 🧱 Arquitetura\n\n- `Controller`: Camada responsável por lidar com requisições HTTP\n- `Service`: Contém a lógica de negócio\n- `Repository`: Comunicação com o banco de dados\n- `Model`: Contém as entidades, enums e DTOs\n- `Exceptions`: Lida com erros e validações personalizadas\n- `Validator`: Regras de negócio específicas\n\n---\n\n## 📂 Estrutura das Entidades\n\n### 👤 Usuário\n\n```json\n{\n  \"id\": \"UUID\",\n  \"nome\": \"String\",\n  \"email\": \"String\",\n  \"departamento\": \"String\",\n  \"cargo\": \"String\"\n}\n```\n\n### 🔧 Técnico\n\n```json\n{\n  \"id\": \"UUID\",\n  \"nome\": \"String\",\n  \"email\": \"String\",\n  \"especializacao\": \"String\"\n}\n```\n\n### 📌 Chamado\n\n```json\n{\n  \"id\": \"UUID\",\n  \"titulo\": \"String\",\n  \"descricao\": \"String\",\n  \"status\": \"Enum: ABERTO | EM_ANDAMENTO | CONCLUIDO\",\n  \"prioridade\": \"Enum: BAIXA | MEDIA | ALTA\",\n  \"dataCriacao\": \"DateTime\",\n  \"dataAtualizacao\": \"DateTime\",\n  \"dataFechamento\": \"DateTime (opcional)\",\n  \"usuarioId\": \"UUID\",\n  \"tecnicoId\": \"UUID (opcional)\"\n}\n```\n\n### 📊 Auditoria\n\n```json\n{\n  \"id\": \"UUID\",\n  \"chamadoId\": \"UUID\",\n  \"tituloChamado\": \"String\",\n  \"descricaoEvento\": \"String\",\n  \"status\": \"Enum: ABERTO | EM_ANDAMENTO | CONCLUIDO\",\n  \"dataEvento\": \"DateTime\",\n  \"usuarioId\": \"UUID\",\n  \"nomeUsuario\": \"String\",\n  \"tecnicoId\": \"UUID (opcional)\",\n  \"nomeTecnico\": \"String (opcional)\"\n}\n```\n\n---\n\n## 🔗 Endpoints\n\n### 👤 Usuários\n\n#### ✅ Criar usuário\n`POST /usuarios`\n\n#### 🔍 Buscar todos\n`GET /usuarios`\n\n#### 🔍 Buscar por ID\n`GET /usuarios/{id}`\n\n#### 🗑️ Deletar usuário\n`DELETE /usuarios/{id}`\n\n---\n\n### 🔧 Técnicos\n\n#### ✅ Criar técnico\n`POST /tecnicos`\n\n#### 🔍 Buscar todos / Filtrar por especialização\n`GET /tecnicos?especializacao={valor}`\n\n#### 🔍 Buscar por ID\n`GET /tecnicos/{id}`\n\n#### ✏️ Atualizar técnico\n`PUT /tecnicos/{id}`\n\n#### 🗑️ Deletar técnico\n`DELETE /tecnicos/{id}`\n\n---\n\n### 📌 Chamados\n\n#### ✅ Criar chamado\n`POST /chamados`\n\n#### 🔍 Buscar todos\n`GET /chamados`\n\n#### 🔍 Buscar por ID\n`GET /chamados/{id}`\n\n#### ✏️ Atualizar parcialmente (PATCH)\n`PATCH /chamados/{id}`\n\n#### 🔁 Atualizar totalmente (PUT)\n`PUT /chamados/{id}`\n\n#### 🗑️ Deletar chamado\n`DELETE /chamados/{id}`\n\n---\n\n### 📊 Auditoria\n\n#### 🔍 Buscar histórico completo\n`GET /auditoria`\n\n**Descrição:** Lista todos os eventos de alteração relacionados aos chamados, com detalhes de quem fez, o que foi alterado, e quando.\n\n**Exemplo de resposta:**\n\n```json\n[\n  {\n    \"id\": \"a1b2c3d4-e5f6-7890-abcd-1234567890ab\",\n    \"chamadoId\": \"9f2b8c3e-3f27-4217-9cf1-9bde6a07e8a2\",\n    \"tituloChamado\": \"Computador não liga mais\",\n    \"descricaoEvento\": \"Status alterado de ABERTO para EM_ANDAMENTO\",\n    \"status\": \"EM_ANDAMENTO\",\n    \"dataEvento\": \"2025-04-03T15:42:00\",\n    \"usuarioId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"nomeUsuario\": \"João Silva\",\n    \"tecnicoId\": \"c1a22e2d-8e34-4c87-b80c-290a5d74c3f7\",\n    \"nomeTecnico\": \"Carlos Lima\"\n  }\n]\n```\n\n---\n\n## 📦 Retornos Padrão\n\n- `GET`: Retorna JSON com os dados solicitados\n- `POST`, `PUT`, `PATCH`, `DELETE`: Retornam apenas status HTTP apropriado (`201`, `204`, `400`, `404`, etc.)\n\n---\n\n## 🧪 Testes com Postman\n\nVocê pode utilizar o Postman para testar todos os endpoints da API. Requisições de criação e atualização aceitam `JSON`, enquanto as de consulta retornam informações detalhadas em `JSON` padronizado.\n\n---\n\n## 📌 Observações Finais\n\n- As entidades são identificadas por UUID\n- Auditoria é registrada automaticamente ao criar, atualizar ou alterar status de um chamado\n- Todas as validações de negócio são feitas via classe `Validator` com exceções personalizadas\n\n---\n\n## 👨‍💻 Autor\n\nDesenvolvido por Filipe (Deskhelp API) — Projeto pessoal com fins de aprendizado e boas práticas em APIs REST com Spring Boot.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipemt%2Fhelpdesk_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilipemt%2Fhelpdesk_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipemt%2Fhelpdesk_api/lists"}