{"info":{"_postman_id":"91a48fdc-54ec-4974-8b27-fc7b1bd2cfb6","name":"API do Abraco Amigo","description":"<html><head></head><body><p>Esta coleção abrange os principais endpoints de backend da plataforma <strong>Abraço Amigo,</strong> um sistema projetado para conectar voluntários a demandas sociais e locais.</p>\n<p>Ela está organizada em três módulos principais:</p>\n<ul>\n<li><strong>Usuários</strong> — Gerenciamento de usuários: cadastro, autenticação (login), detalhes do perfil, edição e exclusão.</li>\n<li><strong>Demandas</strong> — Gerenciamento de demandas: criação, listagem, atualização, alteração de status e exclusão de demandas sociais, bem como inscrição ou desistência de uma demanda.</li>\n<li><strong>Locais</strong> — Gerenciamento de locais: criação, listagem, edição e exclusão de locais associados a demandas.</li>\n</ul>\n<p>Todas as requisições são direcionadas a um servidor de desenvolvimento local (<code>http://localhost:3333</code>) e seguem as convenções RESTful.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"42446508","collectionId":"91a48fdc-54ec-4974-8b27-fc7b1bd2cfb6","publishedId":"2sBXqGpgDu","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-04-23T23:06:58.000Z"},"item":[{"name":"Usuarios","item":[{"name":"create a user","id":"e7c2103f-6c99-476b-bf8a-006a47fdd062","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"nome\": \"Tatyane Gonçalves\",\r\n    \"email\": \"tatyanegoncalves023@gmail.com\",\r\n    \"senha\": \"senha12345\",\r\n    \"tipoUsuario\": \"GESTOR\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/usuarios","description":"<p>Esta rota permite a criação de um novo usuário no sistema. Ela valida os dados enviados através do middleware de validação e, se tudo estiver correto, persiste o novo usuário no banco de dados. Geralmente, a senha é criptografada (hash) antes do salvamento por questões de segurança.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><p><strong>Requer Autenticação:</strong> Não (Público).</p>\n</li>\n<li><p><strong>Validação:</strong> <code>createUserSchema</code> (Garante que os dados seguem as regras de negócio, como e-mail único e força da senha).</p>\n</li>\n<li><p><strong>Acesso:</strong> Livre para qualquer visitante.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["usuarios"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e7c2103f-6c99-476b-bf8a-006a47fdd062"},{"name":"login usuário","id":"9ae4154f-4a8a-4f82-90e3-dc2c1c362bd0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\": \"tatyanegoncalves023@hotmail.com\",\r\n    \"senha\": \"senha12345\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/login","description":"<p>Esta rota valida as credenciais do usuário (e-mail e senha) e, em caso de sucesso, gera um <strong>Token JWT (JSON Web Token)</strong>. Este token deve ser armazenado pelo cliente (Frontend/Mobile) e enviado no Header de todas as requisições que exigem autenticação.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><strong>Requer Autenticação:</strong> Não (Público).</li>\n<li><strong>Validação:</strong> <code>authUserSchema</code> (Verifica se o e-mail é válido e se a senha foi preenchida).</li>\n<li><strong>Acesso:</strong> Qualquer usuário cadastrado.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["login"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"9ae4154f-4a8a-4f82-90e3-dc2c1c362bd0"},{"name":"logout usuário","id":"c733f62f-fead-4b4d-a693-c427f1a69f79","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGhvdG1haWwuY29tIiwiaWF0IjoxNzc3NDg1OTU0LCJleHAiOjE3Nzc3NDUxNTQsInN1YiI6IjMwNGEzN2JhLTBhYzQtNDdlNi1hNmUxLTdkNGU3MmY1MTlmZCJ9.ItO27pseNBKaSkYx3SAr7FXu_TsOLlroxBi-BkBd8R8","type":"text"}],"url":"http://localhost:3333/logout","description":"<p>Esta rota desloga o usuário e remove o token do banco de dados, em caso de sucesso.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><p><strong>Requer Autenticação:</strong> Sim.</p>\n</li>\n<li><p><strong>Acesso:</strong> Apenas via token do usuário.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["logout"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c733f62f-fead-4b4d-a693-c427f1a69f79"},{"name":"details user","id":"f2bf415d-a30b-426b-96e7-695dad11c7fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3Nzc0Njc4NTMsImV4cCI6MTc3NzU1NDI1Mywic3ViIjoiZWU3NDFjM2YtNmE1NC00MmQ4LTlhNWEtOGYxNjk0YTdlMjZlIn0.g8sZGK3mQKCrb1lgCFEXkXayWBtowQq_TKnZFoVyOb4","type":"text"}],"url":"http://localhost:3333/me","description":"<p>Esta rota é responsável por retornar os dados detalhados do usuário que está autenticado no momento. Ela utiliza o identificador contido no <strong>Token JWT</strong> para buscar as informações no banco de dados, garantindo que um usuário não acesse dados de terceiros.</p>\n","urlObject":{"protocol":"http","port":"3333","path":["me"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"f2bf415d-a30b-426b-96e7-695dad11c7fa"},{"name":"editar user","id":"66f4f73a-b424-44df-834d-d9c57ad6f828","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3Nzc0Njc4NTMsImV4cCI6MTc3NzU1NDI1Mywic3ViIjoiZWU3NDFjM2YtNmE1NC00MmQ4LTlhNWEtOGYxNjk0YTdlMjZlIn0.g8sZGK3mQKCrb1lgCFEXkXayWBtowQq_TKnZFoVyOb4","type":"text"}],"body":{"mode":"raw","raw":"{   \r\n    \"telefone\": \"3337371226\",\r\n    \"endereco\": \"Rua das Andradas, 25, Planalto, Araçuai - Minas Gerais\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/me","description":"<p>Esta rota permite que o usuário logado altere suas informações cadastrais. Por segurança, a identificação de qual usuário está sendo editado é feita através do <strong>Token JWT</strong> (extraído pelo middleware <code>isAuthenticated</code>), impedindo que um usuário altere os dados de outro.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><strong>Requer Autenticação:</strong> Sim (Middleware <code>isAuthenticated</code>).</li>\n<li><strong>Tipo de Autenticação:</strong> Bearer Token.</li>\n<li><strong>Acesso:</strong> Próprio usuário dono da conta.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["me"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"66f4f73a-b424-44df-834d-d9c57ad6f828"},{"name":"delete usuario","id":"a69fe380-8a64-45b7-bc15-f2914ba520e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYXVsLmNvbSIsImlhdCI6MTc3NzQ4NjE0OSwiZXhwIjoxNzc3NzQ1MzQ5LCJzdWIiOiJiZWI2Y2I5Yy0yZjUxLTQzZDYtYjlkOS03NTg0YmMxYzg5YjkifQ.1_rjJrl5OsOvwLaHzfvVhaFQQUP6BCsiICsMC4hbmdU","type":"text"}],"url":"http://localhost:3333/usuarios","description":"<p>Esta rota permite que o usuário autenticado encerre sua conta permanentemente. A identificação do registro a ser removido é feita de forma segura através do <strong>Token JWT</strong> presente no Header da requisição.</p>\n<p><strong>Atenção:</strong> Esta ação é irreversível e removerá todos os dados vinculados ao perfil do usuário no banco de dados.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><strong>Requer Autenticação:</strong> Sim (Middleware <code>isAuthenticated</code>).</li>\n<li><strong>Tipo de Autenticação:</strong> Bearer Token.</li>\n<li><strong>Acesso:</strong> Próprio usuário logado.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["usuarios"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"a69fe380-8a64-45b7-bc15-f2914ba520e4"}],"id":"d634e466-b769-4273-82b0-e57dbbdaaf8e","description":"<p>Esta pasta contém todos os endpoints relacionados ao gerenciamento de usuários, suportando operações CRUD completas, criar, recuperar (por lista ou por ID), atualizar, atualizar status e excluir demandas.</p>\n<p>Ela também abrange o fluxo de aplicação, permitindo que os usuários se candidatem a uma demanda (\"candidatura\") ou retirem sua candidatura (\"desistência\"). As operações protegidas exigem autenticação baseada em JWT e aplicam o Controle de Acesso Baseado em Funções (RBAC), restringindo certas ações a funções autorizadas, como \"GESTOR\".</p>\n","_postman_id":"d634e466-b769-4273-82b0-e57dbbdaaf8e"},{"name":"Locais","item":[{"name":"get locations","id":"b91afed2-49d4-4cc8-b557-550b9f86c61a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4OTU1MCwiZXhwIjoxNzc3NzQ4NzUwLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.t1rVuq7lDz6okYiOX1Es-raR43NIp-oJZuR7ShzK3u8","type":"text"}],"url":"http://localhost:3333/locais","description":"<p>Esta rota é responsável por retornar os dados detalhados do locais que está autenticado no momento.</p>\n","urlObject":{"protocol":"http","port":"3333","path":["locais"],"host":["localhost"],"query":[{"disabled":true,"key":"nome","value":"Marisol"}],"variable":[]}},"response":[],"_postman_id":"b91afed2-49d4-4cc8-b557-550b9f86c61a"},{"name":"create Locations","id":"8137ef89-4645-4580-abe2-4141bf79efad","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4Njk2MSwiZXhwIjoxNzc3NzQ2MTYxLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.7uUhzMez5wwlWKKCOEX7sCDDLIwIu0L_Z2Q75LTzhhw","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"nome\": \"Associação ABC\",\r\n  \"endereco\": \"ABC\",\r\n  \"telefone\": \"31669988831\",\r\n  \"email\": \"ABC@email.com\",\r\n  \"tipoLocal\": \"Coleta\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/locais","description":"<p>O sistema utiliza RBAC (Role-Based Access Control), garantindo que funções críticas como o cadastro de locais de acolhimento sejam exclusivas para perfis do tipo GESTOR, prevenindo a propagação de informações falsas por usuários comuns.</p>\n","urlObject":{"protocol":"http","port":"3333","path":["locais"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"8137ef89-4645-4580-abe2-4141bf79efad"},{"name":"edit location by token","id":"99dd37d6-867b-45f0-b1a8-e6d247ca0d88","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4Njk2MSwiZXhwIjoxNzc3NzQ2MTYxLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.7uUhzMez5wwlWKKCOEX7sCDDLIwIu0L_Z2Q75LTzhhw","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"id\": \"3fc50276-8606-4ff9-9c9b-3b30a0fe8e57\",\r\n    \"nome\": \"ONG Aprender\",\r\n    \"telefone\": \"14682316794\",\r\n    \"email\": \"ong-aprender@email.org\",\r\n    \"tipoLocal\": \"Abrigo\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/locais","description":"<p>Para garantir a integridade dos dados e a segurança da plataforma, a vinculação de um local a um gestor é feita de forma automática via token JWT. Isso impede a manipulação de IDs por usuários mal-intencionados e assegura que apenas o responsável autenticado responda pelas informações do ponto de apoio.</p>\n","urlObject":{"protocol":"http","port":"3333","path":["locais"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"99dd37d6-867b-45f0-b1a8-e6d247ca0d88"},{"name":"delete locations by id","id":"7fd8ee87-7348-4872-ae23-cb7cb85ef87d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4Njk2MSwiZXhwIjoxNzc3NzQ2MTYxLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.7uUhzMez5wwlWKKCOEX7sCDDLIwIu0L_Z2Q75LTzhhw","type":"text"}],"url":"http://localhost:3333/locais/a7a3f31e-00a7-4f38-858c-3fcbc485fc82","description":"<p>Para garantir a integridade dos dados e a segurança da plataforma, a vinculação de um local a um gestor é feita de forma automática via token JWT. Isso impede a manipulação de IDs por usuários mal-intencionados e assegura que apenas o responsável autenticado responda pelas informações do ponto de apoio.</p>\n","urlObject":{"protocol":"http","port":"3333","path":["locais","a7a3f31e-00a7-4f38-858c-3fcbc485fc82"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"7fd8ee87-7348-4872-ae23-cb7cb85ef87d"}],"id":"904f9ffa-eede-4aae-82f7-d357cb2b348b","description":"<p>Este módulo gerencia os pontos geográficos onde a ajuda voluntária acontece. Ele permite o mapeamento de centros de distribuição, abrigos ou bases de apoio.</p>\n<ul>\n<li><strong>Regra de Ouro:</strong> A visualização e criação básica são permitidas a usuários autenticados, mas alterações estruturais (edição e deleção) são restritas a usuários com perfil de <strong>Gestor</strong>.</li>\n</ul>\n","_postman_id":"904f9ffa-eede-4aae-82f7-d357cb2b348b"},{"name":"DEMANDS","item":[{"name":"get demands","id":"e0464be2-3371-4536-b48b-9dc9359c7d34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGhvdG1haWwuY29tIiwiaWF0IjoxNzc3NDg2NjAwLCJleHAiOjE3Nzc3NDU4MDAsInN1YiI6IjMwNGEzN2JhLTBhYzQtNDdlNi1hNmUxLTdkNGU3MmY1MTlmZCJ9.YHnc4Yl4zBkQSUHe3AxQG2TxXd3rNv1xxYZLR8vM3jQ","type":"text"}],"url":"http://localhost:3333/demandas?prioridade=BAIXO","description":"<p>Retorna as demandas disponíveis. Suporta filtros opcionais via Query Params (ex: por local, tipo de ajuda ou status).</p>\n<ul>\n<li><p><strong>Acesso:</strong> Autenticado.</p>\n</li>\n<li><p><strong>Exemplo de Query:</strong> <code>{{baseUrl}}/demandas?status=Aberta&amp;localId=123</code></p>\n</li>\n<li><p><strong>Resposta (200 OK):</strong> Lista de demandas com detalhes do local vinculado.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas"],"host":["localhost"],"query":[{"key":"prioridade","value":"BAIXO"},{"disabled":true,"key":"status","value":""},{"disabled":true,"key":"id","value":"d7a1400b-6e6c-41d7-b769-3ce402190e6b"}],"variable":[]}},"response":[],"_postman_id":"e0464be2-3371-4536-b48b-9dc9359c7d34"},{"name":"get demands by id","id":"4981451f-37f8-4448-a97b-5a8d7adffca9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQHRlc3QuY29tIiwiaWF0IjoxNzc2OTQ0ODc0LCJleHAiOjE3NzcyMDQwNzQsInN1YiI6IjZiZjIxNjI5LTk5MjMtNDNmMy05ODhiLWRlOWExMGU5OWZiYyJ9.bpkTu9wLxZ0uYckdd1crCgqW0VMRhE4Ot9UpC5_6Wlg","type":"text"}],"url":"http://localhost:3333/demandas/d7a1400b-6e6c-41d7-b769-3ce402190e6b","description":"<p>Busca informações detalhadas de uma vaga específica.</p>\n<ul>\n<li><p><strong>Acesso:</strong> Autenticado.</p>\n</li>\n<li><p><strong>Path Variable:</strong> <code>id</code> (UUID da demanda).</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","d7a1400b-6e6c-41d7-b769-3ce402190e6b"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"4981451f-37f8-4448-a97b-5a8d7adffca9"},{"name":"get tasks by email","id":"c7e6a3ca-4dd5-4afb-8291-496597742dbf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\": \"rosa@email.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas/aplicacoes","description":"<p><strong>GET</strong> <code>/demandas/aplicacoes</code></p>\n<p>Permite que um voluntário consulte todas as vagas em que se inscreveu usando apenas o seu e-mail.</p>\n<ul>\n<li><p><strong>Acesso:</strong> <strong>Público</strong>.</p>\n</li>\n<li><p><strong>body obrigatório</strong></p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","aplicacoes"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c7e6a3ca-4dd5-4afb-8291-496597742dbf"},{"name":"create demands","id":"6716d111-5a68-4557-9477-ed6bd3a0c7d1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3Nzc0OTQ4MjQsImV4cCI6MTc3NzU4MTIyNCwic3ViIjoiYTU5ZDM5NjYtOWM4ZS00OGYzLTk0NGEtZjM3MzdkZDE2MGM4In0.ooRWWd98x1tESejZ7dMZ8VCJUffGeJkXjkbR6nu0fxc","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"titulo\": \"Auxiliar de limpeza\",\r\n  \"descricao\": \"Precisamos de 15 voluntários para auxiliar no processo de limpeza\",\r\n  \"prioridade\": \"BAIXA\",\r\n  \"categoriaId\": \"9297f713-7b54-41f9-90ad-2dd38e0d3ed0\",\r\n  \"locationId\": \"b1378dab-4822-47d8-8484-74c7214e5baf\",\r\n  \"voluntariosNecessarios\": \"15\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas","description":"<p>Publica uma nova vaga de voluntariado no sistema.</p>\n<ul>\n<li><p><strong>Acesso:</strong> Autenticado + <strong>IsGestor</strong>.</p>\n</li>\n<li><p><strong>Body (JSON):</strong></p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"6716d111-5a68-4557-9477-ed6bd3a0c7d1"},{"name":"aplly by demand","id":"115d1a7c-65c3-43c8-843e-687d1a19266f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3Nzc0OTgwMzMsImV4cCI6MTc3NzU4NDQzMywic3ViIjoiYzE2M2E5ZWQtNGQzNi00ZjU5LTk1MTctOGNkYjFmZDBmNTY3In0.jRzR3YPa58FO2OGEW1uVwOMsL3rvuXidcfSU3VVyV_4","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"demandaId\": \"d2b57485-c4f4-4e49-a8d3-d55a6ef199f1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas/candidatura","description":"<p>Rota para o voluntário registrar interesse em uma vaga.</p>\n<ul>\n<li><p><strong>Acesso:</strong> <strong>Público</strong>.</p>\n</li>\n<li><p><strong>Body (JSON):</strong> Geralmente recebe dados do formulário como <code>nome</code>, <code>email</code> e <code>telefone</code>.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","candidatura"],"host":["localhost"],"query":[{"disabled":true,"key":"demandId","value":""}],"variable":[]}},"response":[],"_postman_id":"115d1a7c-65c3-43c8-843e-687d1a19266f"},{"name":"update demands","id":"f913bd86-90fa-4d68-a69d-59d52153101f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQHRlc3QuY29tIiwiaWF0IjoxNzc2OTQ0ODc0LCJleHAiOjE3NzcyMDQwNzQsInN1YiI6IjZiZjIxNjI5LTk5MjMtNDNmMy05ODhiLWRlOWExMGU5OWZiYyJ9.bpkTu9wLxZ0uYckdd1crCgqW0VMRhE4Ot9UpC5_6Wlg","type":"text"}],"body":{"mode":"raw","raw":"{\r\n   \"titulo\": \"Auxiliar de serviços gerais\",\r\n   \"descrição\": \"Precisamos de 8 auxiliares de serviços gerais para auxiliar no serviços da instituição.\",\r\n   \"voluntariosNecessarios\": 8,\r\n   \"prioridade\": \"MÉDIO\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas/5c844a0c-c91c-424a-aa42-0535003b6d53","description":"<p>Edita informações como título, descrição ou quantidade de vagas.</p>\n<ul>\n<li><strong>Acesso:</strong> Autenticado + <strong>IsGestor</strong>.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","5c844a0c-c91c-424a-aa42-0535003b6d53"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"f913bd86-90fa-4d68-a69d-59d52153101f"},{"name":"update demands status","id":"e9118cf6-bf3d-44c6-bb41-1cb30369e721","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQHRlc3QuY29tIiwiaWF0IjoxNzc2OTQ0ODc0LCJleHAiOjE3NzcyMDQwNzQsInN1YiI6IjZiZjIxNjI5LTk5MjMtNDNmMy05ODhiLWRlOWExMGU5OWZiYyJ9.bpkTu9wLxZ0uYckdd1crCgqW0VMRhE4Ot9UpC5_6Wlg","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"status\": \"EM ANDAMENTO\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas/status/4b6e723f-8331-41dc-9552-50b92ff54e75","description":"<p>Atualização rápida para mudar o estado da demanda (ex: de \"Aberta\" para \"Concluída\" ou \"Cancelada\").</p>\n<ul>\n<li><p><strong>Acesso:</strong> Autenticado + <strong>IsGestor</strong>.</p>\n</li>\n<li><p><strong>Body:</strong> <code>{\"status\": \"Concluída\"}</code></p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","status","4b6e723f-8331-41dc-9552-50b92ff54e75"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e9118cf6-bf3d-44c6-bb41-1cb30369e721"},{"name":"delete demands by id","id":"bcf4d794-13c2-47bd-9190-2e08cc985e70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ5OTcyNiwiZXhwIjoxNzc3NzU4OTI2LCJzdWIiOiJhNTlkMzk2Ni05YzhlLTQ4ZjMtOTQ0YS1mMzczN2RkMTYwYzgifQ.xAWudZX5oK946T-ty9rsdAk286MKYavb0GWV2vCeHEk","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"demandaId\": \"d2b57485-c4f4-4e49-a8d3-d55a6ef199f1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas/remocao","description":"<p>Remove a demanda e todas as candidaturas vinculadas a ela do sistema.</p>\n<ul>\n<li><strong>Acesso:</strong> Autenticado + <strong>IsGestor</strong>.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","remocao"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"bcf4d794-13c2-47bd-9190-2e08cc985e70"},{"name":"delete aplly","id":"43134375-e34a-4a02-9fbf-ff457ddf4712","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\": \"rosa@email.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/demandas/desistencia/a8dfbd80-2760-4ee9-ad26-df050d7f045f","description":"<p>Permite que um voluntário remova sua candidatura de uma vaga específica.</p>\n<ul>\n<li><p><strong>Acesso:</strong> <strong>Público</strong>.</p>\n</li>\n<li><p><strong>Dica:</strong> Geralmente requer que o e-mail seja passado no Body ou Query para validar a posse da candidatura.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["demandas","desistencia","a8dfbd80-2760-4ee9-ad26-df050d7f045f"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"43134375-e34a-4a02-9fbf-ff457ddf4712"}],"id":"7cdb0070-2e7e-4f5f-a674-64cdc8a572fa","description":"<p>Este módulo gerencia as vagas de voluntariado. Ele conecta a necessidade dos <strong>Locais</strong> com a disponibilidade dos <strong>Voluntários</strong>.</p>\n<ul>\n<li><strong>Fluxo Principal:</strong> Um Gestor cria uma demanda -&gt; Voluntários se candidatam -&gt; Gestor altera o status para \"Concluído\" quando a ajuda é prestada.</li>\n</ul>\n","_postman_id":"7cdb0070-2e7e-4f5f-a674-64cdc8a572fa"},{"name":"Categorias","item":[{"name":"get category","id":"c5060226-2dc1-44d9-815a-16c35f016dc6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4OTU1MCwiZXhwIjoxNzc3NzQ4NzUwLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.t1rVuq7lDz6okYiOX1Es-raR43NIp-oJZuR7ShzK3u8","type":"text"}],"url":"http://localhost:3333/categorias","description":"<p>Esta rota é responsável por as categorias. Ela utiliza o identificador contido no <strong>Token JWT</strong> para buscar as informações no banco de dados, garantindo que um usuário não acesse dados de terceiros.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><strong>Requer Autenticação:</strong> Sim (Middleware <code>isAuthenticated</code>).</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["categorias"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c5060226-2dc1-44d9-815a-16c35f016dc6"},{"name":"create a category","id":"541fa08a-d94a-4990-a9ee-a211885a34ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4OTU1MCwiZXhwIjoxNzc3NzQ4NzUwLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.t1rVuq7lDz6okYiOX1Es-raR43NIp-oJZuR7ShzK3u8","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"nome\": \"ABC\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/categorias","description":"<p>Esta rota permite a criação de uma nova conta de voluntário no sistema. Ela valida os dados enviados através do middleware de validação e, se tudo estiver correto, persiste o novo voluntário no banco de dados. Geralmente, a senha é criptografada (hash) antes do salvamento por questões de segurança.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><p><strong>Requer Autenticação:</strong> Sim (Middleware <code>isAuthenticated</code>).</p>\n</li>\n<li><p><strong>Validação:</strong> <code>createVolunteerSchema</code> (Garante que os dados seguem as regras de negócio, como e-mail único e força da senha).</p>\n</li>\n<li><p><strong>Acesso:</strong> Apenas GESTORES.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["categorias"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"541fa08a-d94a-4990-a9ee-a211885a34ba"},{"name":"update category","id":"6f7df4ef-7abc-4909-9920-4d628c562689","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQHRlc3QuY29tIiwiaWF0IjoxNzc3MTIyODgzLCJleHAiOjE3NzczODIwODMsInN1YiI6ImFhYmU0MjUyLTIyNTUtNDZmMi1iY2NkLTllYzhhZjc0NDg0OCJ9.od4uoAqiesdc-ZXJ60pe2P90ujck2DCcMMk9L-bPRC8","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"nome\": \"Saúde animal\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3333/categorias/","description":"<p>Esta rota permite que o usuário logado altere o nome da categoria. Por segurança, a identificação de qual usuário está sendo editado é feita através do <strong>Token JWT</strong> (extraído pelo middleware <code>isAuthenticated</code>), impedindo que um usuário como VOLUNTARIO altere as categorias.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><p><strong>Requer Autenticação:</strong> Sim (Middleware <code>isAuthenticated</code>).</p>\n</li>\n<li><p><strong>Validação:</strong> <code>updateVolunteerSchema</code> (Verifica se as informações fornecidas estão adequadas).</p>\n</li>\n<li><p><strong>Tipo de Autenticação:</strong> Bearer Token.</p>\n</li>\n<li><p><strong>Acesso:</strong> Via token do usuário que seja GESTOR.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["categorias",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"6f7df4ef-7abc-4909-9920-4d628c562689"},{"name":"delete category","id":"67212a6e-da5b-44a8-8f4e-3963ac700f3e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiVGF0eWFuZSBHb27Dp2FsdmVzIiwiZW1haWwiOiJ0YXR5YW5lZ29uY2FsdmVzMDIzQGdtYWlsLmNvbSIsImlhdCI6MTc3NzQ4OTU1MCwiZXhwIjoxNzc3NzQ4NzUwLCJzdWIiOiJlZTc0MWMzZi02YTU0LTQyZDgtOWE1YS04ZjE2OTRhN2UyNmUifQ.t1rVuq7lDz6okYiOX1Es-raR43NIp-oJZuR7ShzK3u8","type":"text"}],"url":"http://localhost:3333/categorias/adffc33f-118b-490a-9bd8-780426c940f0","description":"<p>Esta rota permite que o usuário autenticado deleta uma categoria pelo id. A identificação do registro a ser removido é feita de forma segura através do <strong>Token JWT</strong> presente no Header da requisição.</p>\n<p><strong>Atenção:</strong> Esta ação é irreversível e removerá todos os dados vinculados ao perfil do voluntário no banco de dados.</p>\n<h3 id=\"🔒-segurança-e-acesso\">🔒 Segurança e Acesso</h3>\n<ul>\n<li><p><strong>Requer Autenticação:</strong> Sim (Middleware <code>isAuthenticated</code>).</p>\n</li>\n<li><p><strong>Tipo de Autenticação:</strong> Bearer Token.</p>\n</li>\n<li><p><strong>Acesso:</strong> Próprio usuário logado.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3333","path":["categorias","adffc33f-118b-490a-9bd8-780426c940f0"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"67212a6e-da5b-44a8-8f4e-3963ac700f3e"}],"id":"daa3df35-2284-4701-b56d-2c0b6fa58186","description":"<p>Esta pasta contém todos os endpoints relacionados ao gerenciamento de categorias, suportando operações CRUD completas, criar, recuperar (por lista ou por ID), atualizar, e excluir categoria.</p>\n<p>As operações protegidas exigem autenticação baseada em JWT e aplicam o Controle de Acesso Baseado em Funções (RBAC), restringindo certas ações a funções autorizadas, como \"GESTOR\".</p>\n","_postman_id":"daa3df35-2284-4701-b56d-2c0b6fa58186"}]}