Commit a05d7fd31e8718daf0be388ed5ea2b83f1580989

Authored by andre.guimaraes
1 parent 55db20f5
Exists in master

Cria README.md e arquivos .apidoc

- Cria README.md para documentar o projeto no SPB
- Move documentação apidoc para arquivos .apidoc
- Adiciona mensagem de erro em serviço que ainda não foi implementado
README.md 0 → 100644
... ... @@ -0,0 +1,64 @@
  1 +# Templates-broker - API de manutenção e fornecimento de templates.
  2 +O Templates-broker é uma API para fornecimento de templates para geração de conteúdo dinâmico, podendo ser utilizado para gerar documentos, e-mails, relatórios, páginas e mais. A ideia é que a estrutura do template não faça parte da aplicação, podendo ser editada a qualquer momento e compartilhada com outras aplicações. O acesso ao template é feito através de uma chave de identificação e o preenchimento deverá ser feito pelo cliente.
  3 +
  4 +O broker não faz nenhum tipo de tratamento sobre o conteúdo do template e diversas engines podem ser utilizadas, mas inicialmente ele foi desenvolvido para ser utilizado com templates feitos em **[mustache](https://mustache.github.io/)**. O suporte a diversas linguagens faz com que o mustache seja uma ótima opção.
  5 +
  6 +Os templates são armazenados em banco e a cada atualização a versão anterior é adicionada ao histórico. Os templates podem ser alterados e recuperados sem que haja qualquer indisponibilidade das aplicações.
  7 +
  8 +## Requisitos
  9 +- Código-fonte do Broker pode ser baixado a partir do link https://softwarepublico.gov.br/gitlab/ans/templates-broker/tags](https://softwarepublico.gov.br/gitlab/ans/templates-broker/tags "Clique e acesse")
  10 +- [Apache Maven](https://maven.apache.org/) para baixar as dependências e compilar o pacote.
  11 +- Servidor [JBoss EAP 7.0.4](https://developers.redhat.com/products/eap/download/) ou [Wildfly 10](http://wildfly.org/downloads/).
  12 +- Banco relacional, o Broker foi desenvolvido usando Oracle 12g, mas com pouco esforço pode utilizar o MySQL.
  13 +- Conexão com a internet para que o Maven acesse os repositórios hospedeiros das dependências.
  14 +- Ferramenta [apiDoc](http://apidocjs.com/) para gerar a documentação da API.
  15 +
  16 +## Procedimentos para instalação
  17 +### Configurar as propriedades do datasource no JBoss.
  18 +O datasource `jdbc/templates` é declarado no arquivo `templates-ds.xml`, o funcionamento do datasource depende da declaração de algumas **System Properties** no JBoss.
  19 +
  20 +| Chave | Valor |
  21 +| ------------------------------------- | ----------------------------- |
  22 +| br.gov.ans.templates.db.connectionUrl | String de conexão com o banco |
  23 +| br.gov.ans.templates.db.password | Senha do usuário USUARIO_GETD |
  24 +
  25 +Abaixo um exemplo de declaração de propriedades feita no arquivo `standalone.xml`.
  26 +```xml
  27 +<!-- Geralmente no início do arquivo, após as extensions -->
  28 +<system-properties>
  29 + <!-- Outras propriedades ... -->
  30 + <property name="br.gov.ans.templates.db.connectionUrl" value="STRING_CONEXAO_BD_BROKER"/>
  31 + <property name="br.gov.ans.templates.db.password" value="SENHA_USUARIO_USUARIO_GETD"/>
  32 +</system-properties>
  33 +```
  34 +
  35 +### Criar security-domain no JBoss
  36 +É necessário que haja um security-domain registrado com o nome `ans-ws-auth`, o mesmo pode utilizar um banco de dados[^1] ou o LDAP. É importante destacar que o Broker trabalha com autorização baseada em papéis(RBAC[^2]) e que os usuários precisam ter seus papéis atribuídos.
  37 +[^1]: https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html/how_to_configure_identity_management/configuring_a_security_domain_to_use_a_database
  38 +[^2]: https://en.wikipedia.org/wiki/Role-based_access_control
  39 +
  40 +### Implantar pacote gerado pelo Maven
  41 +Após a realização de todos os passos anteriores, teremos o JBoss pronto para receber o pacote do Templates-Broker. O deploy pode ser feito de diversas maneiras e não é o foco desse manual.
  42 +
  43 +Para essa etapa é necessário ter o Maven instalado e configurado. Ao realizar o primeiro build devemos desabilitar os testes automatizados, os testes dependem de uma instância ativa e impedirão a geração do pacote.
  44 +
  45 +### Gerar documentação da API
  46 +Após a implantação é **fundamental** que a documentação da API seja disponibilizada para os clientes do Broker. A documentação do Broker foi escrita utilizando a ferramenta [apiDoc](http://apidocjs.com/) e os fontes estão no diretório `/src/main/resources/apidoc/`. Será preciso fazer a instalação do apiDoc[^3] e executar o comando abaixo na raiz do projeto.
  47 +[^3]: http://apidocjs.com/#install
  48 +
  49 +```console
  50 +apidoc -f ".*\\.apidoc$" -i src/main/resources/apidoc/ -o <CAMINHO_ONDE_DOCUMENTACAO_SERA_GERADA>
  51 +```
  52 +
  53 +A documentação gerada deve ser disponibilizada em um local onde possa ser facilmente acessada pelos clientes.
  54 +
  55 +## Autenticação e Autorização
  56 +A autenticação no Templates-Broker é feita através do HTTP Basic e a autorização é baseada em roles/papéis que são atribuídas ao usuário. Os sistemas que utilizarão o broker precisarão de um usuário, esse usuário deve ser previamente cadastrado em uma fonte de dados e receber a role correspondente às suas necessidades. Esses dados serão verificados pelo security-domain `ans-ws-auth` que foi configurado no JBoss.
  57 +
  58 +### Roles/Papéis ###
  59 +Existem duas roles de acesso ao Broker, uma com acesso administrativo e outra somente para consulta. As roles precisam ter o nome idêntico ao definido no Broker, caso haja divergência o acesso será negado pelo [JAAS](https://en.wikipedia.org/wiki/Java_Authentication_and_Authorization_Service).
  60 +
  61 +| Role | Descrição |
  62 +| --------------------- | ------------------------- |
  63 +| RO_ADMIN_TEMPLATE | Perfil de administração |
  64 +| RO_USUARIO_TEMPLATE | Perfil de consulta |
... ...
src/main/java/br/gov/ans/templates/rest/ColaboradorResource.java
1 1 package br.gov.ans.templates.rest;
2 2  
  3 +import javax.inject.Inject;
3 4 import javax.ws.rs.GET;
4 5 import javax.ws.rs.Path;
5 6 import javax.ws.rs.PathParam;
6 7 import javax.ws.rs.core.Response;
7 8  
  9 +import org.apache.commons.lang3.NotImplementedException;
  10 +
  11 +import br.gov.ans.utils.MessageUtils;
  12 +
8 13 @Path("colaboradores")
9 14 public class ColaboradorResource {
10 15  
  16 + @Inject
  17 + private MessageUtils messages;
  18 +
11 19 @GET
12 20 @Path("{colaborador}/templates")
13 21 public Response getTemplates(@PathParam("colaborador") String colaborador){
14   - return null;
  22 + throw new NotImplementedException(messages.getMessage("erro.servico.nao.implementado"));
15 23 }
16 24  
17 25 }
... ...
src/main/java/br/gov/ans/templates/rest/TemplateResource.java
... ... @@ -56,52 +56,7 @@ public class TemplateResource {
56 56  
57 57 @Inject
58 58 private MessageUtils messages;
59   -
60   - /**
61   - * @api {get} /templates Listar templates
62   - * @apiName listTemplates
63   - * @apiGroup Template
64   - * @apiVersion 1.0.0
65   - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
66   - *
67   - * @apiDescription Consulta os templates disponíveis.
68   - *
69   - * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates.
70   - * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos
71   - * @apiParam (Query Parameters) {String} [pag = 1] Número da página
72   - *
73   - * @apiExample Exemplo de requisição:
74   - * curl -i http://<host>/templates-broker/service/templates
75   - *
76   - * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados.
77   - * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template.
78   - * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
79   - * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template.
80   - * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template.
81   - * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template.
82   - * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template
83   - * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template.
84   - * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita.
85   - *
86   - * @apiSuccessExample {json} Success-Response:
87   - * HTTP/1.1 200 OK
88   - * {
89   - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
90   - * "dataCadastro": "2017-03-14T16:57:47.405-03:00",
91   - * "descricao": "Template de confirmação de cadastro.",
92   - * "exemplo": "{"fulano":"André Guimarães"}",
93   - * "nome": "confirmacao-cadastro",
94   - * "responsavel": "andre.guimaraes",
95   - * "restrito": false
96   - * }
97   - *
98   - * @apiErrorExample {json} Error-Response:
99   - * HTTP/1.1 500 Internal Server Error
100   - * {
101   - * "error":"Mensagem de erro."
102   - * "code":"código do erro"
103   - * }
104   - */
  59 +
105 60 @GET
106 61 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
107 62 public Response listTemplates(@QueryParam("filtro") String filtro, @QueryParam("pag") String pagina, @QueryParam("itens") String tamanhoPagina) throws BusinessException, ResourceNotFoundException{
... ... @@ -118,48 +73,6 @@ public class TemplateResource {
118 73 return Response.ok().entity(entity).header("total_registros", totalRegistros).build();
119 74 }
120 75  
121   - /**
122   - * @api {get} /templates/:template Consultar template
123   - * @apiName getTemplate
124   - * @apiGroup Template
125   - * @apiVersion 1.0.0
126   - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
127   - *
128   - * @apiDescription Consulta um template.
129   - *
130   - * @apiParam (Path Parameters) {String} template Identificador do template
131   - *
132   - * @apiExample Exemplo de requisição:
133   - * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro
134   - *
135   - * @apiSuccess (Sucesso - 200) {Template} template Objeto representando o template.
136   - * @apiSuccess (Sucesso - 200) {String} template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
137   - * @apiSuccess (Sucesso - 200) {String} template.dataCadastro Data de cadastro do template.
138   - * @apiSuccess (Sucesso - 200) {String} template.descricao Descrição do template.
139   - * @apiSuccess (Sucesso - 200) {String} template.exemplo Exemplo de request para preenchimento do template.
140   - * @apiSuccess (Sucesso - 200) {String} template.nome Identificador do template.
141   - * @apiSuccess (Sucesso - 200) {String} template.responsavel Analista responsável pelo template.
142   - * @apiSuccess (Sucesso - 200) {Boolean} template.restrito Flag identificando se a atualização deste template é restrita.
143   - *
144   - * @apiSuccessExample {json} Success-Response:
145   - * HTTP/1.1 200 OK
146   - * {
147   - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
148   - * "dataCadastro": "2017-03-14T16:57:47.405-03:00",
149   - * "descricao": "Template de confirmação de cadastro.",
150   - * "exemplo": "{"fulano":"André Guimarães"}",
151   - * "nome": "confirmacao-cadastro",
152   - * "responsavel": "andre.guimaraes",
153   - * "restrito": false,
154   - * }
155   - *
156   - * @apiErrorExample {json} Error-Response:
157   - * HTTP/1.1 500 Internal Server Error
158   - * {
159   - * "error":"Mensagem de erro."
160   - * "code":"código do erro"
161   - * }
162   - */
163 76 @GET
164 77 @Path("{template}")
165 78 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -172,34 +85,7 @@ public class TemplateResource {
172 85  
173 86 return template;
174 87 }
175   -
176   - /**
177   - * @api {get} /templates/:template/corpo Recuperar corpo
178   - * @apiName getCorpoTemplate
179   - * @apiGroup Template
180   - * @apiVersion 1.0.0
181   - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
182   - *
183   - * @apiDescription Recupera o corpo de um template para utilização.
184   - *
185   - * @apiParam (Path Parameters) {String} template Identificador do template
186   - *
187   - * @apiExample Exemplo de requisição:
188   - * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro
189   - *
190   - * @apiSuccess (Sucesso - 200) {String} corpo String com o corpo do template pronto para utilização.
191   - *
192   - * @apiSuccessExample {json} Success-Response:
193   - * HTTP/1.1 200 OK
194   - * Prezado {{fulano}}, seu cadastro foi realizado com sucesso.
195   - *
196   - * @apiErrorExample {json} Error-Response:
197   - * HTTP/1.1 500 Internal Server Error
198   - * {
199   - * "error":"Mensagem de erro."
200   - * "code":"código do erro"
201   - * }
202   - */
  88 +
203 89 @GET
204 90 @Path("{template}/corpo")
205 91 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -207,48 +93,6 @@ public class TemplateResource {
207 93 return new String(getTemplate(nomeTemplate).getCorpo());
208 94 }
209 95  
210   - /**
211   - * @api {post} /templates Adicionar template
212   - * @apiName createTemplate
213   - * @apiGroup Template
214   - * @apiVersion 1.0.0
215   - * @apiPermission RO_ADMIN_TEMPLATE
216   - *
217   - * @apiDescription Cria um novo template.
218   - *
219   - * @apiParam (Request Body) {Template} template Objeto de representação do template.
220   - * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
221   - * @apiParam (Request Body) {String} descricao Descrição do template.
222   - * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template.
223   - * @apiParam (Request Body) {String} nome Identificador do template.
224   - * @apiParam (Request Body) {String} responsavel Analista responsável pelo template.
225   - * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita.
226   - *
227   - * @apiExample Exemplo de requisição:
228   - * endpoint: [POST] http://<host>/templates-broker/service/templates/confirmacao-cadastro
229   - *
230   - * body:
231   - * {
232   - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
233   - * "descricao": "Template de confirmação de cadastro.",
234   - * "exemplo": "{"fulano":"André Guimarães"}",
235   - * "nome": "confirmacao-cadastro",
236   - * "responsavel": "andre.guimaraes",
237   - * "restrito": true,
238   - * }
239   - *
240   - * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado.
241   - *
242   - * @apiSuccessExample {json} Success-Response:
243   - * HTTP/1.1 201 Created
244   - *
245   - * @apiErrorExample {json} Error-Response:
246   - * HTTP/1.1 500 Internal Server Error
247   - * {
248   - * "error":"Mensagem de erro."
249   - * "code":"código do erro"
250   - * }
251   - */
252 96 @POST
253 97 @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
254 98 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -268,52 +112,7 @@ public class TemplateResource {
268 112  
269 113 return Response.created(getResourcePath(uriInfo, entity.getNome())).build();
270 114 }
271   -
272   - /**
273   - * @api {put} /templates/:template Atualizar template
274   - * @apiName editTemplate
275   - * @apiGroup Template
276   - * @apiVersion 1.0.0
277   - * @apiPermission RO_ADMIN_TEMPLATE
278   - *
279   - * @apiDescription Atualiza um template.
280   - *
281   - * @apiParam (Path Parameters) {String} template Identificador do template
282   - *
283   - * @apiParam (Request Body) {Template} template Objeto de representação do template.
284   - * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
285   - * @apiParam (Request Body) {String} descricao Descrição do template.
286   - * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template.
287   - * @apiParam (Request Body) {String} nome Identificador do template.
288   - * @apiParam (Request Body) {String} responsavel Analista responsável pelo template.
289   - * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita.
290   - *
291   - * @apiExample Exemplo de requisição:
292   - * endpoint: [PUT] http://<host>/templates-broker/service/templates/confirmacao-cadastro
293   - *
294   - * body:
295   - * {
296   - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
297   - * "descricao": "Template de confirmação de cadastro.",
298   - * "exemplo": "{"fulano":"André Guimarães"}",
299   - * "nome": "confirmacao-cadastro",
300   - * "responsavel": "andre.guimaraes",
301   - * "restrito": true,
302   - * }
303   - *
304   - *
305   - * @apiSuccess (Sucesso - 200) {header} Location Caminho para o recurso editado.
306   - *
307   - * @apiSuccessExample {json} Success-Response:
308   - * HTTP/1.1 200 OK
309   - *
310   - * @apiErrorExample {json} Error-Response:
311   - * HTTP/1.1 500 Internal Server Error
312   - * {
313   - * "error":"Mensagem de erro."
314   - * "code":"código do erro"
315   - * }
316   - */
  115 +
317 116 @PUT
318 117 @Path("{template}")
319 118 @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -341,31 +140,7 @@ public class TemplateResource {
341 140  
342 141 return Response.ok().contentLocation(getResourcePath(uriInfo, template.getNome())).build();
343 142 }
344   -
345   - /**
346   - * @api {delete} /templates/:template Excluir template
347   - * @apiName deleteTemplate
348   - * @apiGroup Template
349   - * @apiVersion 1.0.0
350   - * @apiPermission RO_ADMIN_TEMPLATE
351   - *
352   - * @apiDescription Exclui determinado template.
353   - *
354   - * @apiParam (Path Parameters) {String} template Identificador do template
355   - *
356   - * @apiExample Exemplo de requisição:
357   - * curl -X DELETE http://<host>/templates-broker/service/templates/confirmacao-cadastro
358   - *
359   - * @apiSuccessExample {json} Success-Response:
360   - * HTTP/1.1 200 OK
361   - *
362   - * @apiErrorExample {json} Error-Response:
363   - * HTTP/1.1 500 Internal Server Error
364   - * {
365   - * "error":"Mensagem de erro."
366   - * "code":"código do erro"
367   - * }
368   - */
  143 +
369 144 @DELETE
370 145 @Path("{template}")
371 146 @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -378,43 +153,7 @@ public class TemplateResource {
378 153  
379 154 return Response.ok().build();
380 155 }
381   -
382   - /**
383   - * @api {get} /templates/:template/colaboradores Listar colaboradores
384   - * @apiName getColaboradores
385   - * @apiGroup Colaborador
386   - * @apiVersion 1.0.0
387   - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
388   - *
389   - * @apiDescription Consulta os colaboradores do template.
390   - *
391   - * @apiParam (Path Parameters) {String} template Identificador do template
392   - *
393   - * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos
394   - * @apiParam (Query Parameters) {String} [pag = 1] Número da página
395   - *
396   - * @apiExample Exemplo de requisição:
397   - * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores
398   - *
399   - * @apiSuccess (Sucesso - 200) {List} resultado Lista com os colaboradores do template.
400   - * @apiSuccess (Sucesso - 200) {Colaborador} resultado.colaborador Objeto representando um colaborador.
401   - * @apiSuccess (Sucesso - 200) {String} resultado.colaborador.usuario Identificador do colaborador.
402   - * @apiSuccess (Sucesso - 200) {Boolean} resultado.colaborador.editor Flag que determina se o colaborador tem o poder para editar o template.
403   - *
404   - * @apiSuccessExample {json} Success-Response:
405   - * HTTP/1.1 200 OK
406   - * {
407   - * "editor": true,
408   - * "usuario": "andre.guimaraes",
409   - * }
410   - *
411   - * @apiErrorExample {json} Error-Response:
412   - * HTTP/1.1 500 Internal Server Error
413   - * {
414   - * "error":"Mensagem de erro."
415   - * "code":"código do erro"
416   - * }
417   - */
  156 +
418 157 @GET
419 158 @Path("{template}/colaboradores")
420 159 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -432,78 +171,13 @@ public class TemplateResource {
432 171 return Response.ok().entity(entity).header("total_registros", totalRegistros).build();
433 172 }
434 173  
435   - /**
436   - * @api {get} /templates/:template/colaboradores/:colaborador Consultar colaborador
437   - * @apiName getColaborador
438   - * @apiGroup Colaborador
439   - * @apiVersion 1.0.0
440   - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
441   - *
442   - * @apiDescription Consulta um colaborador.
443   - *
444   - * @apiParam (Path Parameters) {String} template Identificador do template
445   - * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador
446   - *
447   - * @apiExample Exemplo de requisição:
448   - * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes
449   - *
450   - * @apiSuccess (Sucesso - 200) {Colaborador} colaborador Objeto representando um colaborador.
451   - * @apiSuccess (Sucesso - 200) {String} colaborador.usuario Identificador do colaborador.
452   - * @apiSuccess (Sucesso - 200) {Boolean} colaborador.editor Flag que determina se o colaborador tem o poder para editar o template.
453   - *
454   - * @apiSuccessExample {json} Success-Response:
455   - * HTTP/1.1 200 OK
456   - * {
457   - * "editor": true,
458   - * "usuario": "andre.guimaraes"
459   - * }
460   - *
461   - * @apiErrorExample {json} Error-Response:
462   - * HTTP/1.1 500 Internal Server Error
463   - * {
464   - * "error":"Mensagem de erro."
465   - * "code":"código do erro"
466   - * }
467   - */
468 174 @GET
469 175 @Path("{template}/colaboradores/{colaborador}")
470 176 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
471 177 public Colaborador getColaborador(@PathParam("template") String template, @PathParam("colaborador") String colaborador) throws ResourceNotFoundException{
472 178 return daoColaborador.getColaborador(getTemplate(template).getId(), colaborador);
473 179 }
474   -
475   - /**
476   - * @api {post} /templates/:template/colaboradores Adicionar colaborador
477   - * @apiName addColaborador
478   - * @apiGroup Colaborador
479   - * @apiVersion 1.0.0
480   - * @apiPermission RO_ADMIN_TEMPLATE
481   - *
482   - * @apiDescription Adiciona um colaborador ao template.
483   - *
484   - * @apiParam (Path Parameters) {String} template Identificador do template
485   - *
486   - * @apiExample Exemplo de requisição:
487   - * endpoint: [POST] http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores
488   - *
489   - * body:
490   - * {
491   - * "usuario": "andre.guimaraes",
492   - * "editor": true
493   - * }
494   - *
495   - * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado.
496   - *
497   - * @apiSuccessExample {json} Success-Response:
498   - * HTTP/1.1 201 Created
499   - *
500   - * @apiErrorExample {json} Error-Response:
501   - * HTTP/1.1 500 Internal Server Error
502   - * {
503   - * "error":"Mensagem de erro."
504   - * "code":"código do erro"
505   - * }
506   - */
  180 +
507 181 @POST
508 182 @Path("{template}/colaboradores")
509 183 @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -517,32 +191,7 @@ public class TemplateResource {
517 191  
518 192 return Response.ok().contentLocation(getResourcePath(uriInfo, colaborador.getUsuario())).build();
519 193 }
520   -
521   - /**
522   - * @api {delete} /templates/:template/colaboradores/:colaborador Remover colaborador
523   - * @apiName removeColaborador
524   - * @apiGroup Colaborador
525   - * @apiVersion 1.0.0
526   - * @apiPermission RO_ADMIN_TEMPLATE
527   - *
528   - * @apiDescription Remove colaborador de um template.
529   - *
530   - * @apiParam (Path Parameters) {String} template Identificador do template
531   - * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador
532   - *
533   - * @apiExample Exemplo de requisição:
534   - * curl -X DELETE http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes
535   - *
536   - * @apiSuccessExample {json} Success-Response:
537   - * HTTP/1.1 200 OK
538   - *
539   - * @apiErrorExample {json} Error-Response:
540   - * HTTP/1.1 500 Internal Server Error
541   - * {
542   - * "error":"Mensagem de erro."
543   - * "code":"código do erro"
544   - * }
545   - */
  194 +
546 195 @DELETE
547 196 @Path("{template}/colaboradores/{colaborador}")
548 197 public Response removeColaborador(@PathParam("template") String template,@PathParam("colaborador") String nomeColaborador) throws ResourceNotFoundException{
... ... @@ -554,46 +203,7 @@ public class TemplateResource {
554 203  
555 204 return Response.ok().build();
556 205 }
557   -
558   - /**
559   - * @api {get} /templates/:template/versoes Listar versões
560   - * @apiName getVersoes
561   - * @apiGroup Template
562   - * @apiVersion 1.0.0
563   - * @apiPermission RO_ADMIN_TEMPLATE, RO_ADMIN_TEMPLATE
564   - *
565   - * @apiDescription Lista as versões de um template
566   - *
567   - * @apiParam (Path Parameters) {String} template Identificador do template
568   - *
569   - * @apiExample Exemplo de requisição:
570   - * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro/versoes
571   - *
572   - * @apiSuccess (Sucesso - 200) {List} resultado Lista com as versões do template.
573   - * @apiSuccess (Sucesso - 200) {Versao} resultado.versao Objeto representando uma versão do template.
574   - * @apiSuccess (Sucesso - 200) {String} resultado.versao.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
575   - * @apiSuccess (Sucesso - 200) {Date} resultado.versao.data Data da versão.
576   - * @apiSuccess (Sucesso - 200) {String} resultado.versao.descricao Descrição do template.
577   - * @apiSuccess (Sucesso - 200) {String} resultado.versao.exemplo Exemplo de request para preenchimento do template.
578   - * @apiSuccess (Sucesso - 200) {String} resultado.versao.responsavel Identificador do colaborador responsável.
579   - *
580   - * @apiSuccessExample {json} Success-Response:
581   - * HTTP/1.1 200 OK
582   - * {
583   - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
584   - * "data":"2017-03-14T16:57:47.405-03:00",
585   - * "descricao": "Template de confirmação de cadastro.",
586   - * "exemplo": "{"fulano":"André Guimarães"}",
587   - * "responsavel": "andre.guimaraes",
588   - * }
589   - *
590   - * @apiErrorExample {json} Error-Response:
591   - * HTTP/1.1 500 Internal Server Error
592   - * {
593   - * "error":"Mensagem de erro."
594   - * "code":"código do erro"
595   - * }
596   - */
  206 +
597 207 @GET
598 208 @Path("{template}/versoes/")
599 209 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -610,31 +220,6 @@ public class TemplateResource {
610 220 return Response.ok().entity(entity).build();
611 221 }
612 222  
613   -
614   - /**
615   - * @api {delete} /templates/excluidos/:template Recuperar template
616   - * @apiName undeleteTemplate
617   - * @apiGroup Template
618   - * @apiVersion 1.0.0
619   - * @apiPermission RO_ADMIN_TEMPLATE
620   - *
621   - * @apiDescription Recupera um template excluído.
622   - *
623   - * @apiParam (Path Parameters) {String} template Identificador do template
624   - *
625   - * @apiExample Exemplo de requisição:
626   - * curl -X DELETE http://<host>/templates-broker/service/templates/excluidos/admp-template-novo-usuario
627   - *
628   - * @apiSuccessExample {json} Success-Response:
629   - * HTTP/1.1 200 OK
630   - *
631   - * @apiErrorExample {json} Error-Response:
632   - * HTTP/1.1 500 Internal Server Error
633   - * {
634   - * "error":"Mensagem de erro."
635   - * "code":"código do erro"
636   - * }
637   - */
638 223 @DELETE
639 224 @Path("excluidos/{template}")
640 225 @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ... @@ -647,54 +232,7 @@ public class TemplateResource {
647 232  
648 233 return Response.ok().build();
649 234 }
650   -
651   - /**
652   - * @api {get} /templates Listar templates excluídos
653   - * @apiName listTemplatesExcluidos
654   - * @apiGroup Template
655   - * @apiVersion 1.0.0
656   - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
657   - *
658   - * @apiDescription Consulta os templates que foram excluídos.
659   - *
660   - * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates.
661   - * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos
662   - * @apiParam (Query Parameters) {String} [pag = 1] Número da página
663   - *
664   - * @apiExample Exemplo de requisição:
665   - * curl -i http://<host>/templates-broker/service/templates
666   - *
667   - * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados.
668   - * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template.
669   - * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
670   - * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template.
671   - * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de exclusao do template.
672   - * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template.
673   - * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template.
674   - * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template
675   - * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template.
676   - * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita.
677   - *
678   - * @apiSuccessExample {json} Success-Response:
679   - * HTTP/1.1 200 OK
680   - * {
681   - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
682   - * "dataCadastro": "2017-03-14T16:57:47.405-03:00",
683   - * "descricao": "Template de confirmação de cadastro.",
684   - * "exemplo": "{"fulano":"André Guimarães"}",
685   - * "nome": "confirmacao-cadastro",
686   - * "responsavel": "andre.guimaraes",
687   - * "restrito": false,
688   - * "dataExclusao":"2017-08-14T16:57:47.405-03:00"
689   - * }
690   - *
691   - * @apiErrorExample {json} Error-Response:
692   - * HTTP/1.1 500 Internal Server Error
693   - * {
694   - * "error":"Mensagem de erro."
695   - * "code":"código do erro"
696   - * }
697   - */
  235 +
698 236 @GET
699 237 @Path("excluidos")
700 238 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
... ...
src/main/resources/apidoc/template.apidoc 0 → 100644
... ... @@ -0,0 +1,473 @@
  1 + /**
  2 + * @api {get} /templates Listar templates
  3 + * @apiName listTemplates
  4 + * @apiGroup Template
  5 + * @apiVersion 1.0.0
  6 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
  7 + *
  8 + * @apiDescription Consulta os templates disponíveis.
  9 + *
  10 + * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates.
  11 + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos
  12 + * @apiParam (Query Parameters) {String} [pag = 1] Número da página
  13 + *
  14 + * @apiExample Exemplo de requisição:
  15 + * curl -i http://<host>/templates-broker/service/templates
  16 + *
  17 + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados.
  18 + * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template.
  19 + * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
  20 + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template.
  21 + * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template.
  22 + * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template.
  23 + * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template
  24 + * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template.
  25 + * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita.
  26 + *
  27 + * @apiSuccessExample {json} Success-Response:
  28 + * HTTP/1.1 200 OK
  29 + * {
  30 + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
  31 + * "dataCadastro": "2017-03-14T16:57:47.405-03:00",
  32 + * "descricao": "Template de confirmação de cadastro.",
  33 + * "exemplo": "{"fulano":"André Guimarães"}",
  34 + * "nome": "confirmacao-cadastro",
  35 + * "responsavel": "andre.guimaraes",
  36 + * "restrito": false
  37 + * }
  38 + *
  39 + * @apiErrorExample {json} Error-Response:
  40 + * HTTP/1.1 500 Internal Server Error
  41 + * {
  42 + * "error":"Mensagem de erro."
  43 + * "code":"código do erro"
  44 + * }
  45 + */
  46 +
  47 + /**
  48 + * @api {get} /templates/:template Consultar template
  49 + * @apiName getTemplate
  50 + * @apiGroup Template
  51 + * @apiVersion 1.0.0
  52 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
  53 + *
  54 + * @apiDescription Consulta um template.
  55 + *
  56 + * @apiParam (Path Parameters) {String} template Identificador do template
  57 + *
  58 + * @apiExample Exemplo de requisição:
  59 + * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro
  60 + *
  61 + * @apiSuccess (Sucesso - 200) {Template} template Objeto representando o template.
  62 + * @apiSuccess (Sucesso - 200) {String} template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
  63 + * @apiSuccess (Sucesso - 200) {String} template.dataCadastro Data de cadastro do template.
  64 + * @apiSuccess (Sucesso - 200) {String} template.descricao Descrição do template.
  65 + * @apiSuccess (Sucesso - 200) {String} template.exemplo Exemplo de request para preenchimento do template.
  66 + * @apiSuccess (Sucesso - 200) {String} template.nome Identificador do template.
  67 + * @apiSuccess (Sucesso - 200) {String} template.responsavel Analista responsável pelo template.
  68 + * @apiSuccess (Sucesso - 200) {Boolean} template.restrito Flag identificando se a atualização deste template é restrita.
  69 + *
  70 + * @apiSuccessExample {json} Success-Response:
  71 + * HTTP/1.1 200 OK
  72 + * {
  73 + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
  74 + * "dataCadastro": "2017-03-14T16:57:47.405-03:00",
  75 + * "descricao": "Template de confirmação de cadastro.",
  76 + * "exemplo": "{"fulano":"André Guimarães"}",
  77 + * "nome": "confirmacao-cadastro",
  78 + * "responsavel": "andre.guimaraes",
  79 + * "restrito": false,
  80 + * }
  81 + *
  82 + * @apiErrorExample {json} Error-Response:
  83 + * HTTP/1.1 500 Internal Server Error
  84 + * {
  85 + * "error":"Mensagem de erro."
  86 + * "code":"código do erro"
  87 + * }
  88 + */
  89 +
  90 + /**
  91 + * @api {get} /templates/:template/corpo Recuperar corpo
  92 + * @apiName getCorpoTemplate
  93 + * @apiGroup Template
  94 + * @apiVersion 1.0.0
  95 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
  96 + *
  97 + * @apiDescription Recupera o corpo de um template para utilização.
  98 + *
  99 + * @apiParam (Path Parameters) {String} template Identificador do template
  100 + *
  101 + * @apiExample Exemplo de requisição:
  102 + * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro
  103 + *
  104 + * @apiSuccess (Sucesso - 200) {String} corpo String com o corpo do template pronto para utilização.
  105 + *
  106 + * @apiSuccessExample {json} Success-Response:
  107 + * HTTP/1.1 200 OK
  108 + * Prezado {{fulano}}, seu cadastro foi realizado com sucesso.
  109 + *
  110 + * @apiErrorExample {json} Error-Response:
  111 + * HTTP/1.1 500 Internal Server Error
  112 + * {
  113 + * "error":"Mensagem de erro."
  114 + * "code":"código do erro"
  115 + * }
  116 + */
  117 +
  118 + /**
  119 + * @api {post} /templates Adicionar template
  120 + * @apiName createTemplate
  121 + * @apiGroup Template
  122 + * @apiVersion 1.0.0
  123 + * @apiPermission RO_ADMIN_TEMPLATE
  124 + *
  125 + * @apiDescription Cria um novo template.
  126 + *
  127 + * @apiParam (Request Body) {Template} template Objeto de representação do template.
  128 + * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
  129 + * @apiParam (Request Body) {String} descricao Descrição do template.
  130 + * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template.
  131 + * @apiParam (Request Body) {String} nome Identificador do template.
  132 + * @apiParam (Request Body) {String} responsavel Analista responsável pelo template.
  133 + * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita.
  134 + *
  135 + * @apiExample Exemplo de requisição:
  136 + * endpoint: [POST] http://<host>/templates-broker/service/templates/confirmacao-cadastro
  137 + *
  138 + * body:
  139 + * {
  140 + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
  141 + * "descricao": "Template de confirmação de cadastro.",
  142 + * "exemplo": "{"fulano":"André Guimarães"}",
  143 + * "nome": "confirmacao-cadastro",
  144 + * "responsavel": "andre.guimaraes",
  145 + * "restrito": true,
  146 + * }
  147 + *
  148 + * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado.
  149 + *
  150 + * @apiSuccessExample {json} Success-Response:
  151 + * HTTP/1.1 201 Created
  152 + *
  153 + * @apiErrorExample {json} Error-Response:
  154 + * HTTP/1.1 500 Internal Server Error
  155 + * {
  156 + * "error":"Mensagem de erro."
  157 + * "code":"código do erro"
  158 + * }
  159 + */
  160 +
  161 + /**
  162 + * @api {put} /templates/:template Atualizar template
  163 + * @apiName editTemplate
  164 + * @apiGroup Template
  165 + * @apiVersion 1.0.0
  166 + * @apiPermission RO_ADMIN_TEMPLATE
  167 + *
  168 + * @apiDescription Atualiza um template.
  169 + *
  170 + * @apiParam (Path Parameters) {String} template Identificador do template
  171 + *
  172 + * @apiParam (Request Body) {Template} template Objeto de representação do template.
  173 + * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
  174 + * @apiParam (Request Body) {String} descricao Descrição do template.
  175 + * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template.
  176 + * @apiParam (Request Body) {String} nome Identificador do template.
  177 + * @apiParam (Request Body) {String} responsavel Analista responsável pelo template.
  178 + * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita.
  179 + *
  180 + * @apiExample Exemplo de requisição:
  181 + * endpoint: [PUT] http://<host>/templates-broker/service/templates/confirmacao-cadastro
  182 + *
  183 + * body:
  184 + * {
  185 + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
  186 + * "descricao": "Template de confirmação de cadastro.",
  187 + * "exemplo": "{"fulano":"André Guimarães"}",
  188 + * "nome": "confirmacao-cadastro",
  189 + * "responsavel": "andre.guimaraes",
  190 + * "restrito": true,
  191 + * }
  192 + *
  193 + *
  194 + * @apiSuccess (Sucesso - 200) {header} Location Caminho para o recurso editado.
  195 + *
  196 + * @apiSuccessExample {json} Success-Response:
  197 + * HTTP/1.1 200 OK
  198 + *
  199 + * @apiErrorExample {json} Error-Response:
  200 + * HTTP/1.1 500 Internal Server Error
  201 + * {
  202 + * "error":"Mensagem de erro."
  203 + * "code":"código do erro"
  204 + * }
  205 + */
  206 +
  207 + /**
  208 + * @api {delete} /templates/:template Excluir template
  209 + * @apiName deleteTemplate
  210 + * @apiGroup Template
  211 + * @apiVersion 1.0.0
  212 + * @apiPermission RO_ADMIN_TEMPLATE
  213 + *
  214 + * @apiDescription Exclui determinado template.
  215 + *
  216 + * @apiParam (Path Parameters) {String} template Identificador do template
  217 + *
  218 + * @apiExample Exemplo de requisição:
  219 + * curl -X DELETE http://<host>/templates-broker/service/templates/confirmacao-cadastro
  220 + *
  221 + * @apiSuccessExample {json} Success-Response:
  222 + * HTTP/1.1 200 OK
  223 + *
  224 + * @apiErrorExample {json} Error-Response:
  225 + * HTTP/1.1 500 Internal Server Error
  226 + * {
  227 + * "error":"Mensagem de erro."
  228 + * "code":"código do erro"
  229 + * }
  230 + */
  231 +
  232 + /**
  233 + * @api {get} /templates/:template/colaboradores Listar colaboradores
  234 + * @apiName getColaboradores
  235 + * @apiGroup Colaborador
  236 + * @apiVersion 1.0.0
  237 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
  238 + *
  239 + * @apiDescription Consulta os colaboradores do template.
  240 + *
  241 + * @apiParam (Path Parameters) {String} template Identificador do template
  242 + *
  243 + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos
  244 + * @apiParam (Query Parameters) {String} [pag = 1] Número da página
  245 + *
  246 + * @apiExample Exemplo de requisição:
  247 + * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores
  248 + *
  249 + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os colaboradores do template.
  250 + * @apiSuccess (Sucesso - 200) {Colaborador} resultado.colaborador Objeto representando um colaborador.
  251 + * @apiSuccess (Sucesso - 200) {String} resultado.colaborador.usuario Identificador do colaborador.
  252 + * @apiSuccess (Sucesso - 200) {Boolean} resultado.colaborador.editor Flag que determina se o colaborador tem o poder para editar o template.
  253 + *
  254 + * @apiSuccessExample {json} Success-Response:
  255 + * HTTP/1.1 200 OK
  256 + * {
  257 + * "editor": true,
  258 + * "usuario": "andre.guimaraes",
  259 + * }
  260 + *
  261 + * @apiErrorExample {json} Error-Response:
  262 + * HTTP/1.1 500 Internal Server Error
  263 + * {
  264 + * "error":"Mensagem de erro."
  265 + * "code":"código do erro"
  266 + * }
  267 + */
  268 +
  269 + /**
  270 + * @api {get} /templates/:template/colaboradores/:colaborador Consultar colaborador
  271 + * @apiName getColaborador
  272 + * @apiGroup Colaborador
  273 + * @apiVersion 1.0.0
  274 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
  275 + *
  276 + * @apiDescription Consulta um colaborador.
  277 + *
  278 + * @apiParam (Path Parameters) {String} template Identificador do template
  279 + * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador
  280 + *
  281 + * @apiExample Exemplo de requisição:
  282 + * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes
  283 + *
  284 + * @apiSuccess (Sucesso - 200) {Colaborador} colaborador Objeto representando um colaborador.
  285 + * @apiSuccess (Sucesso - 200) {String} colaborador.usuario Identificador do colaborador.
  286 + * @apiSuccess (Sucesso - 200) {Boolean} colaborador.editor Flag que determina se o colaborador tem o poder para editar o template.
  287 + *
  288 + * @apiSuccessExample {json} Success-Response:
  289 + * HTTP/1.1 200 OK
  290 + * {
  291 + * "editor": true,
  292 + * "usuario": "andre.guimaraes"
  293 + * }
  294 + *
  295 + * @apiErrorExample {json} Error-Response:
  296 + * HTTP/1.1 500 Internal Server Error
  297 + * {
  298 + * "error":"Mensagem de erro."
  299 + * "code":"código do erro"
  300 + * }
  301 + */
  302 +
  303 + /**
  304 + * @api {post} /templates/:template/colaboradores Adicionar colaborador
  305 + * @apiName addColaborador
  306 + * @apiGroup Colaborador
  307 + * @apiVersion 1.0.0
  308 + * @apiPermission RO_ADMIN_TEMPLATE
  309 + *
  310 + * @apiDescription Adiciona um colaborador ao template.
  311 + *
  312 + * @apiParam (Path Parameters) {String} template Identificador do template
  313 + *
  314 + * @apiExample Exemplo de requisição:
  315 + * endpoint: [POST] http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores
  316 + *
  317 + * body:
  318 + * {
  319 + * "usuario": "andre.guimaraes",
  320 + * "editor": true
  321 + * }
  322 + *
  323 + * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado.
  324 + *
  325 + * @apiSuccessExample {json} Success-Response:
  326 + * HTTP/1.1 201 Created
  327 + *
  328 + * @apiErrorExample {json} Error-Response:
  329 + * HTTP/1.1 500 Internal Server Error
  330 + * {
  331 + * "error":"Mensagem de erro."
  332 + * "code":"código do erro"
  333 + * }
  334 + */
  335 +
  336 + /**
  337 + * @api {delete} /templates/:template/colaboradores/:colaborador Remover colaborador
  338 + * @apiName removeColaborador
  339 + * @apiGroup Colaborador
  340 + * @apiVersion 1.0.0
  341 + * @apiPermission RO_ADMIN_TEMPLATE
  342 + *
  343 + * @apiDescription Remove colaborador de um template.
  344 + *
  345 + * @apiParam (Path Parameters) {String} template Identificador do template
  346 + * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador
  347 + *
  348 + * @apiExample Exemplo de requisição:
  349 + * curl -X DELETE http://<host>/templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes
  350 + *
  351 + * @apiSuccessExample {json} Success-Response:
  352 + * HTTP/1.1 200 OK
  353 + *
  354 + * @apiErrorExample {json} Error-Response:
  355 + * HTTP/1.1 500 Internal Server Error
  356 + * {
  357 + * "error":"Mensagem de erro."
  358 + * "code":"código do erro"
  359 + * }
  360 + */
  361 +
  362 + /**
  363 + * @api {get} /templates/:template/versoes Listar versões
  364 + * @apiName getVersoes
  365 + * @apiGroup Template
  366 + * @apiVersion 1.0.0
  367 + * @apiPermission RO_ADMIN_TEMPLATE, RO_ADMIN_TEMPLATE
  368 + *
  369 + * @apiDescription Lista as versões de um template
  370 + *
  371 + * @apiParam (Path Parameters) {String} template Identificador do template
  372 + *
  373 + * @apiExample Exemplo de requisição:
  374 + * curl -i http://<host>/templates-broker/service/templates/confirmacao-cadastro/versoes
  375 + *
  376 + * @apiSuccess (Sucesso - 200) {List} resultado Lista com as versões do template.
  377 + * @apiSuccess (Sucesso - 200) {Versao} resultado.versao Objeto representando uma versão do template.
  378 + * @apiSuccess (Sucesso - 200) {String} resultado.versao.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
  379 + * @apiSuccess (Sucesso - 200) {Date} resultado.versao.data Data da versão.
  380 + * @apiSuccess (Sucesso - 200) {String} resultado.versao.descricao Descrição do template.
  381 + * @apiSuccess (Sucesso - 200) {String} resultado.versao.exemplo Exemplo de request para preenchimento do template.
  382 + * @apiSuccess (Sucesso - 200) {String} resultado.versao.responsavel Identificador do colaborador responsável.
  383 + *
  384 + * @apiSuccessExample {json} Success-Response:
  385 + * HTTP/1.1 200 OK
  386 + * {
  387 + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
  388 + * "data":"2017-03-14T16:57:47.405-03:00",
  389 + * "descricao": "Template de confirmação de cadastro.",
  390 + * "exemplo": "{"fulano":"André Guimarães"}",
  391 + * "responsavel": "andre.guimaraes",
  392 + * }
  393 + *
  394 + * @apiErrorExample {json} Error-Response:
  395 + * HTTP/1.1 500 Internal Server Error
  396 + * {
  397 + * "error":"Mensagem de erro."
  398 + * "code":"código do erro"
  399 + * }
  400 + */
  401 +
  402 + /**
  403 + * @api {delete} /templates/excluidos/:template Recuperar template
  404 + * @apiName undeleteTemplate
  405 + * @apiGroup Template
  406 + * @apiVersion 1.0.0
  407 + * @apiPermission RO_ADMIN_TEMPLATE
  408 + *
  409 + * @apiDescription Recupera um template excluído.
  410 + *
  411 + * @apiParam (Path Parameters) {String} template Identificador do template
  412 + *
  413 + * @apiExample Exemplo de requisição:
  414 + * curl -X DELETE http://<host>/templates-broker/service/templates/excluidos/admp-template-novo-usuario
  415 + *
  416 + * @apiSuccessExample {json} Success-Response:
  417 + * HTTP/1.1 200 OK
  418 + *
  419 + * @apiErrorExample {json} Error-Response:
  420 + * HTTP/1.1 500 Internal Server Error
  421 + * {
  422 + * "error":"Mensagem de erro."
  423 + * "code":"código do erro"
  424 + * }
  425 + */
  426 +
  427 + /**
  428 + * @api {get} /templates Listar templates excluídos
  429 + * @apiName listTemplatesExcluidos
  430 + * @apiGroup Template
  431 + * @apiVersion 1.0.0
  432 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE
  433 + *
  434 + * @apiDescription Consulta os templates que foram excluídos.
  435 + *
  436 + * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates.
  437 + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos
  438 + * @apiParam (Query Parameters) {String} [pag = 1] Número da página
  439 + *
  440 + * @apiExample Exemplo de requisição:
  441 + * curl -i http://<host>/templates-broker/service/templates
  442 + *
  443 + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados.
  444 + * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template.
  445 + * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados.
  446 + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template.
  447 + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de exclusao do template.
  448 + * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template.
  449 + * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template.
  450 + * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template
  451 + * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template.
  452 + * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita.
  453 + *
  454 + * @apiSuccessExample {json} Success-Response:
  455 + * HTTP/1.1 200 OK
  456 + * {
  457 + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.",
  458 + * "dataCadastro": "2017-03-14T16:57:47.405-03:00",
  459 + * "descricao": "Template de confirmação de cadastro.",
  460 + * "exemplo": "{"fulano":"André Guimarães"}",
  461 + * "nome": "confirmacao-cadastro",
  462 + * "responsavel": "andre.guimaraes",
  463 + * "restrito": false,
  464 + * "dataExclusao":"2017-08-14T16:57:47.405-03:00"
  465 + * }
  466 + *
  467 + * @apiErrorExample {json} Error-Response:
  468 + * HTTP/1.1 500 Internal Server Error
  469 + * {
  470 + * "error":"Mensagem de erro."
  471 + * "code":"código do erro"
  472 + * }
  473 + */
... ...
src/main/resources/messages.properties
1 1 erro.colaborador.nao.encontrado = O usuário {0} não é um colaborador deste template.
2 2 erro.interno = Ocorreu um erro interno no templates-broker, contacte os responsáveis.
  3 +erro.servico.nao.implementado = Serviço não implementado.
3 4 erro.template.existente = Já existe um template identificado com o nome {0}.
4 5 erro.template.nao.encontrado = Template {0} não encontrado.
5 6 erro.validar = Erro ao validar -
... ...