Documentação de todas as rotas da API. Contêm protocolo HTTP, endereço da rota, explicação do que é feito, o que recebe e o que retorna.
- GET
user/
: retorna todos os usuários registrados.
[
{
"id": 1,
"first_name": "master",
"last_name": "root",
"email": "root@gmail.com",
"role": "master"
}
]
- GET
user/:id
: retorna o usuário que tem esse id.
{
"id": 1,
"first_name": "master",
"last_name": "root",
"email": "root@gmail.com",
"role": "master"
}
- GET
user/search
: retorna o usuário que tem esse id. Atributos disponíveis na query:email: O email do usuário a ser achado.
{
"id": 1,
"first_name": "master",
"last_name": "root",
"email": "root@gmail.com",
"role": "master",
"created_at": "2020-06-02T16:59:42.000Z",
"deleted_at": null
}
- POST
user/
: cria um novo registro na tabela de users.
Existem dois tipos de requisições possiveis aqui, uma incluí o atributo 'role' mas é necessário um token de usuário de nivel master no header na requisição, e a outra é sem o atributo role.
requisição sem role:
{
"first_name": "usuário",
"last_name": "teste",
"email": "usuário@test.com",
"password": "123456"
}
requisição com role:
{
"first_name": "usuário",
"last_name": "teste",
"email": "usuário@test.com",
"password": "123456",
"role": "master"
}
retorna:
{
"role": "citizen",
"id": 3,
"first_name": "usuário",
"last_name": "teste",
"email": "usuário@test.com",
"updated_at": "2020-05-23T17:55:36.608Z",
"created_at": "2020-05-23T17:55:36.608Z"
}
- PUT
user/:id
: edita o seu próprio usuário.
requisição:
{
"first_name": "nome",
"last_name": "sobrenome",
"email": "email@email.com",
"oldPassword": "111111",
"password": "123456"
}
retorna:
{
"id": 2,
"first_name": "nome",
"last_name": "sobrenome",
"email": "email@email.com",
"role": "citizen",
"created_at": "2020-05-07T21:19:14.000Z",
"updated_at": "2020-05-18T17:02:12.868Z"
}
- POST
auth/
: Insere as credenciais e loga no sistema. Retorna um Token JWT, esse Token é usado para acessar as rotas autenticadas.
requisição:
{
"email": "aa@aa.com",
"password": "123456",
"city": "Cabo Frio"
}
retorna:
{
"user": {
"id": 7,
"first_name": "a",
"last_name": "last_name",
"email": "aa@aa.com",
"role": "citizen"
},
"city": "Cabo Frio",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Mywicm9sZSI6ImNpdGl6ZW4iLCJjaXR5IjoiQ2FibyBGcmlvIiwiaWF0IjoxNTg4NjIzMTQyLCJleHAiOjE1OTEyMTUxNDJ9.71BpTNmY3YYSaV94h09MbywNPGXbqDy2eAQXV4GvrzE"
}
- POST
manifestation/:id/avaliation
: registra uma avaliação para a manifestação.
requisição
{
"rate": 5,
"description": "Gostei",
"reopen": true
}
retorna
{
"id": 1,
"rate": 5,
"reopen": true,
"description": "Gostei",
"manifestations_id": 2,
"updated_at": "2020-05-27T17:57:41.919Z",
"created_at": "2020-05-27T17:57:41.919Z"
}
- GET
prefecture/
: retorna os dados das prefeituras registradas.
[
{
"id": 1,
"location": "Centro",
"name": "Cabo Frio",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:51.000Z",
"ombudsmen_id": 1,
"ombudsman": {
"id": 1,
"location": "Centro",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:38.000Z"
}
}
]
- GET
prefecture/:id
: retorna os dados de uma prefeitura em específico.
Também é possível pesquisar pelo nome da cidade, exemplo: prefecture/Cabo Frio
{
"id": 1,
"location": "Centro",
"name": "Cabo Frio",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:51.000Z",
"ombudsmen_id": 1,
"ombudsman": {
"id": 1,
"location": "Centro",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:38.000Z"
}
}
- POST
prefecture/
: registra uma nova prefeitura.
requisição
{
"location": "Local",
"telephone": "31231231",
"email": "arraial@prefeitura.com",
"site": "www..com.br",
"attendance": "24/7",
"name": "Arraial"
}
retorna
{
"id": 2,
"name": "Arraial",
"location": "Local",
"telephone": "31231231",
"email": "temer@vampirão.com",
"site": "www.google.com.br",
"attendance": "24/7",
"updated_at": "2020-05-22T19:01:00.703Z",
"created_at": "2020-05-22T19:01:00.703Z"
}
- PUT
prefecture/:id
: atualiza os dados de uma prefeitura em específico.
requisição
{
"site": "www.google.com",
"email": "prefeitura@prefeitura.com",
"attendance": "24 horas por dia, todos os dias",
"location": "Centro",
"telephone": "(22)1010-1010"
}
retorna
{
"id": 1,
"location": "Centro",
"name": "Cabo Frio",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:51.525Z",
"ombudsmen_id": 1
}
- GET
ombudsman/
: retorna os dados das ouvidorias registradas.
[
{
"id": 1,
"location": "Centro",
"telephone": "(22) 1111-1111",
"email": "prefeitura@ouvidoria.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
]
- GET
ombudsman/:id
: retorna os dados de uma ouvidoria em específico.
{
"id": 1,
"location": "Centro",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:38.000Z"
}
- POST
ombudsman/
: registra uma nova ouvidoria.
requisição
{
"site": "www.google.com",
"email": "prefeitura@prefeitura.com",
"attendance": "24 horas por dia, todos os dias",
"location": "Centro",
"telephone": "(22)1010-1010"
}
retorna
{
"id": 2,
"location": "Centro",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"updated_at": "2020-05-22T19:47:27.479Z",
"created_at": "2020-05-22T19:47:27.479Z"
}
- PUT
ombudsman/:id
: atualiza os dados de uma ouvidoria em específico.
requisição
{
"site": "www.google.com",
"email": "prefeitura@prefeitura.com",
"attendance": "24 horas por dia, todos os dias",
"location": "Centro",
"telephone": "(22)1010-1010"
}
retorna
{
"id": 1,
"location": "Centro",
"telephone": "(22)1010-1010",
"email": "prefeitura@prefeitura.com",
"site": "www.google.com",
"attendance": "24 horas por dia, todos os dias",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:55:38.624Z"
}
- GET
manifestation/
: retorna todos os registros da tabela manifestations. O resultado é limitado em 10 manifestações.
Essa rota pode receber em sua query parâmetros opcionais.
- page: valor default é
1
, define a página a ser pesquisar. - isRead: filtra pelo estado de leitura, se foi lido ou não.
- text: define um título específico a ser pesquisado.
- options: define um array de categorias e tipos de manifestações a serem pesquisados.
- cancelled: valor pode ser
true
, permite retornar manifestações canceladas. - ownerId: busca por manifestações de um único usuário.
retorna:
{
"count": 1,
"rows": [
{
"id": 1,
"protocol": "k9x0pa19",
"title": "Na rua da restinga tem um problema",
"description": "Um cachorro mordeu uma idosa aqui na rua de trás",
"read": 1,
"location": "Rua da Restinga, Bairro Foguete",
"latitude": "-22.9246355",
"longitude": "-42.0406559",
"created_at": "2020-05-07T17:01:26.000Z",
"updated_at": "2020-05-08T16:53:55.000Z",
"deleted_at": null,
"ombudsmen_id": 1,
"categories": [
{
"id": 2,
"title": "Segurança"
},
],
"type": {
"id": 2,
"title": "elogio"
},
"user": {
"id": 1,
"first_name": "master",
"last_name": "root",
"email": "root@gmail.com",
"role": "master"
},
"secretary": {
"id": 1,
"title": "Secretaria de Testes",
"email": "saude.gov@gov.com",
"accountable": "José",
"prefectures_id": 1
},
"files": [],
"status_history": [
{
"id": 1,
"description": "A manifestação foi cadastrada",
"created_at": "2020-05-07T17:01:26.000Z",
"updated_at": "2020-05-07T17:01:26.000Z",
"status": {
"id": 2,
"title": "cadastrada"
}
}
]
},
],
"last_page": 1
}
- GET
manifestation/:id
: retorna a manifestação que tem esse numero de protocolo, exemplo:5ak9yhccya
.
retorna:
{
"id": 112,
"protocol": "5ak9yhccya",
"title": "reclamação de um cidadão",
"description": "Um cachorro mordeu uma idosa aqui na rua de trás",
"read": 0,
"location": "Rua da Restinga, Foguete",
"latitude": "-22.9242299",
"longitude": "-42.0406379",
"created_at": "2020-05-08T17:35:03.000Z",
"updated_at": "2020-05-08T17:35:03.000Z",
"deleted_at": null,
"ombudsmen_id": 1,
"files": [],
"type": {
"id": 1,
"title": "sugestão"
},
"user": {
"id": 2,
"first_name": "a",
"last_name": "a",
"email": "a@gmail.com",
"role": "citizen"
},
"secretary": null,
"status_history": [
{
"id": 63,
"description": "A manifestação foi cadastrada",
"created_at": "2020-05-08T17:35:03.000Z",
"updated_at": "2020-05-08T17:35:03.000Z",
"status": {
"id": 2,
"title": "cadastrada"
}
}
],
"categories": [
{
"id": 1,
"title": "Saneamento"
}
]
},
- POST
manifestation/
: cria um novo registro na tabela de manifestations.
requisição:
{
"title": "MASTER PROBLEM",
"description": "Um cachorro mordeu uma idosa aqui na rua de trás",
"categories_id": [
1
],
"type_id": 1,
"latitude": -22.9242299,
"longitude": -42.0406379
}
retorna:
{
"id": 121,
"title": "reclamação de um cidadão",
"description": "Um cachorro mordeu uma idosa aqui na rua de trás",
"latitude": -22.9242299,
"longitude": -42.0406379,
"location": "Rua da Restinga, Foguete",
"types_id": 1,
"users_id": 2,
"ombudsmen_id": 1,
"updated_at": "2020-05-08T17:35:48.953Z",
"created_at": "2020-05-08T17:35:48.953Z",
"protocol": "k9yhdcd6ea5"
}
- PUT
manifestation/:id
: atualiza um registro de acordo com o id passado no parametro da rota na tabela de manifestations.
requisição:
{
"title": "Na rua da restinga tem um problema",
"location": "Rua da Restinga, Bairro Foguete",
"type_id": 2
}
retorna:
{
"id": 1,
"protocol": "k9x0pa19",
"title": "Na rua da restinga tem um problema",
"description": "Um cachorro mordeu uma idosa aqui na rua de trás",
"read": 1,
"location": "Rua da Restinga, Bairro Foguete",
"latitude": -22.9246355,
"longitude": -42.0406559,
"created_at": "2020-05-07T17:01:26.000Z",
"updated_at": "2020-05-08T17:50:00.152Z",
"secretariats_id": 1,
"users_id": 1,
"types_id": 2,
"ombudsmen_id": 1
}
- DELETE
/manifestation/:id
: Cancela uma manifestação.
retorna:
vazio
- PATCH
manifestation/:id/read
: Marca a manifestação como lida. Requisição sem corpo. Resposta sem corpo.
- GET
/files/manifestation/:id
: retorna todos os arquivos associados à manifestação buscada.
retorna:
[
{
"id": 1,
"name": "imagem.png",
"name_in_server": "file-1591130825083.png",
"extension": ".png",
"created_at": "2020-06-02T20:47:10.000Z",
"updated_at": "2020-06-02T20:47:10.000Z",
"manifestations_id": 1,
"manifestations_status_id": null,
"users_id": 1
}
]
- GET
/files/status/:id
: retorna todos os arquivos associados ao Status de Manifestação buscada.
retorna:
[
{
"id": 1,
"name": "imagem.png",
"name_in_server": "file-1591360996262.png",
"extension": ".png",
"created_at": "2020-06-05T12:43:16.000Z",
"updated_at": "2020-06-05T12:43:16.000Z",
"manifestations_id": null,
"manifestations_status_id": 1,
"users_id": 1
}
]
- POST
/files/manifestation/:id
: faz upload de um arquivo para o server, o arquivo é vinculado a uma manifestação e tem seus dados salvos na tabela files, o arquivo em si é salvo na Googlo Cloud.
O corpo para envio dessa requisição se da através de um multipart form-data na seguinte estrutura:
key | value |
---|---|
file | documento.pdf |
Para que o envio ocorra com sucesso, o token de autenticação deve ser do AUTOR da manifestação, ou de algum usuário com role ADMIN ou MASTER
retorna:
[
{
"id": 2,
"extension": ".png",
"name": "imagem.png",
"name_in_server": "file-1588623519621.png",
"created_at": "2020-05-04T20:18:40.515Z",
"updated_at": "2020-05-04T20:18:40.542Z",
"users_id": 1
}
]
- POST
/files/status/:id
: faz upload de um arquivo para o server, o arquivo é vinculado a um status de manifestação e tem seus dados salvos na tabela files, o arquivo em si é salvo na Googlo Cloud.
O corpo para envio dessa requisição se da através de um multipart form-data na seguinte estrutura:
key | value |
---|---|
file | documento.pdf |
Para que o envio ocorra com sucesso, o token de autenticação deve ser de algum usuário com role ADMIN ou MASTER
retorna:
[
{
"id": 1,
"extension": ".png",
"name": "imagem.png",
"name_in_server": "file-1591360996262.png",
"manifestations_status_id": 1,
"users_id": 1,
"created_at": "2020-06-05T12:43:16.953Z",
"updated_at": "2020-06-05T12:43:16.953Z"
}
]
- GET
/files/:file_id
: Mostra o arquivo em específico.
Necessário ter o token do dono do arquivo ou então ser um admin ou master.
retorna:
O arquivo
- DELETE
/files/:file_id
: Exclui o arquivo no Google Cloud e remove o arquivo da manifestação.
Necessário ter o token do dono do arquivo ou então ser um admin ou master.
retorna:
{
"id": 1,
"name": "imagem.png",
"name_in_server": "file-1588622029185.png",
"extension": ".png",
"created_at": "2020-05-04T19:53:50.000Z",
"updated_at": "2020-05-04T19:53:50.000Z",
"manifestations_id": 3,
"users_id": 1
}
- GET
category/
: retorna todas as categorias.
[
{
"id": 1,
"title": "Segurança",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T19:31:14.000Z"
}
]
- GET
category/:id
: retorna a categoria que tem esse id.
{
"id": 1,
"title": "Saneamento",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
- POST
category
: cria um novo registro na tabela de categories.
requisição:
{
"title": "Saneamento"
}
retorna:
{
"id": 6,
"title": "Saneamento"
}
- PUT
category/:id
: atualiza um registro de acordo com o id passado no parametro da rota na tabela de categories.
requisição:
{
"title": "Segurança"
}
retorna:
{
"id": 1,
"title": "Segurança"
}
- DELETE
type/:id
: deleta um registro de acordo com o id passado no parametro da rota na tabela de categories.
retorna:
{
"id": 1,
"title": "Segurança",
"created_at": "2019-10-31T17:03:19.000Z",
"updated_at": "2019-10-31T18:29:13.000Z"
}
- GET
role/
: retorna todas as Roles.
[
{
"id": 1,
"title": "citizen"
},
{
"id": 2,
"title": "admin"
},
{
"id": 3,
"title": "master"
}
]
- GET
role/:id
: retorna a Role que tem esse id.
{
"id": 1,
"title": "citizen"
}
- GET
type/
: retorna todos os tipos possíveis de manifestações.
[
{
"id": 1,
"title": "sugestão",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 2,
"title": "elogio",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 3,
"title": "solicitação",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 4,
"title": "reclamação",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 5,
"title": "denúncia",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
]
- GET
type/:id
: retorna o Type que tem esse id.
{
"id": 1,
"title": "sugestão",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
- GET
status/
: retorna todos os registros na tabela de status.
[
{
"id": 1,
"title": "arquivada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 2,
"title": "cadastrada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 3,
"title": "prorrogada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 4,
"title": "resposta intermediária",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 5,
"title": "complementada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 6,
"title": "encerrada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 7,
"title": "encaminhada para outra ouvidoria",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
},
{
"id": 8,
"title": "encaminhada para orgão externo",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
]
- GET
status/:id
: retorna o Status que tem esse id.
{
"id": 2,
"title": "cadastrada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
- GET
manifestation/:idOrProtocol/status
: retorna todos os status de uma manifestação.
[
{
"id": 1,
"description": "descrição atualizada",
"created_at": "2020-05-04T19:03:47.000Z",
"updated_at": "2020-05-04T19:08:18.000Z",
"manifestations_id": 3,
"status_id": 2,
"status": {
"id": 2,
"title": "cadastrada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
}
]
- GET
manifestation/status/:id
: retorna um status específico de uma manifestação.
{
"id": 1,
"description": "descrição atualizada",
"created_at": "2020-05-04T19:03:47.000Z",
"updated_at": "2020-05-04T19:08:18.000Z",
"manifestations_id": 3,
"status_id": 2,
"status": {
"id": 2,
"title": "cadastrada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
}
- POST
/manifestation/:manifestationId/status
: cria um novo status para a manifestação.
requisição:
{
"description": "descrição, motivo para a mudança do status",
"status_id": 1,
}
retorna:
{
"id": 5,
"description": "descrição, motivo para a mudança do status",
"manifestations_id": 3,
"status_id": 3,
"updated_at": "2020-05-04T20:31:26.972Z",
"created_at": "2020-05-04T20:31:26.972Z"
}
- PUT
manifestation/status/:id
: atualiza um status específico de uma manifestação.
requisição:
{
"description": "descrição atualizada"
}
retorna:
{
"id": 1,
"description": "descrição atualizada",
"created_at": "2020-05-04T19:03:47.000Z",
"updated_at": "2020-05-04T19:08:18.000Z",
"manifestations_id": 3,
"status_id": 2,
"status": {
"id": 2,
"title": "cadastrada",
"created_at": "2020-05-04T16:55:37.000Z",
"updated_at": "2020-05-04T16:55:37.000Z"
}
}
- GET
secretary/
: retorna todos as secretarias.
[
{
"id": 2,
"title": "Secretaria de Testes",
"email": "saude.gov@gov.com",
"accountable": "José",
"prefectures_id": 1,
}
]
- GET
secretary/:id
: retorna a secretaria que tem esse id.
{
"id": 2,
"title": "Secretaria de Testes",
"email": "saude.gov@gov.com",
"accountable": "José",
"prefectures_id": 1,
}
- POST
secretary/
: cria uma nova secretaria.
requisição:
{
"title": "Secretaria de Testes",
"email": "saude.gov@gov.com",
"accountable": "José",
"city": "Cabo Frio"
}
retorna:
{
"id": 3,
"title": "Secretaria de Testes",
"email": "saude.gov@gov.com",
"accountable": "José",
"prefectures_id": 1,
"updated_at": "2020-05-04T20:35:12.568Z",
"created_at": "2020-05-04T20:35:12.568Z"
}
- PUT
secretary/:id
: atualiza uma secreataria.
requisição:
{
"title": "Secretaria da Fazenda",
"email": "fazenda.gov@gov.com"
}
retorna:
{
"id": 2,
"title": "Secretaria da Fazenda",
"email": "fazenda.gov@gov.com",
"accountable": "José",
"prefectures_id": 1,
"created_at": "2020-05-04T19:27:46.000Z",
"updated_at": "2020-05-04T20:33:36.000Z"
}
- DELETE
secretary/:id
: deleta uma secretaria.
retorna:
{
"id": 1,
"title": "Secretaria da Fazenda",
"email": "fazenda.gov@gov.com",
"accountable": "José",
"prefectures_id": 1,
"created_at": "2019-10-31T21:30:47.000Z",
"updated_at": "2019-10-31T23:55:51.000Z"
}
- POST
email/
: envia um email.
requisição:
{
"title": "Título teste",
"text": "textão",
"email": "seu@gmail.com"
}
retorna:
{
"message": "Email: Título teste. enviado com sucesso"
}
- GET
admins/
: retorna todos os adminstradores.
retorna:
[
{
"id": 1,
"first_name": "master",
"last_name": "root",
"email": "root@gmail.com",
"role": "master"
}
]
- PATCH
admins/:id
: muda o status de um usuário para admin ou para cidadão.
requisição:
{
"admin": false,
}
retorna:
204