From a05d7fd31e8718daf0be388ed5ea2b83f1580989 Mon Sep 17 00:00:00 2001 From: andre.guimaraes Date: Fri, 19 Oct 2018 09:50:57 -0300 Subject: [PATCH] Cria README.md e arquivos .apidoc --- README.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/br/gov/ans/templates/rest/ColaboradorResource.java | 10 +++++++++- src/main/java/br/gov/ans/templates/rest/TemplateResource.java | 480 +++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/main/resources/apidoc/template.apidoc | 473 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/messages.properties | 1 + 5 files changed, 556 insertions(+), 472 deletions(-) create mode 100644 README.md create mode 100644 src/main/resources/apidoc/template.apidoc diff --git a/README.md b/README.md new file mode 100644 index 0000000..3d0e205 --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# Templates-broker - API de manutenção e fornecimento de templates. +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. + +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. + +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. + +## Requisitos +- 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") +- [Apache Maven](https://maven.apache.org/) para baixar as dependências e compilar o pacote. +- Servidor [JBoss EAP 7.0.4](https://developers.redhat.com/products/eap/download/) ou [Wildfly 10](http://wildfly.org/downloads/). +- Banco relacional, o Broker foi desenvolvido usando Oracle 12g, mas com pouco esforço pode utilizar o MySQL. +- Conexão com a internet para que o Maven acesse os repositórios hospedeiros das dependências. +- Ferramenta [apiDoc](http://apidocjs.com/) para gerar a documentação da API. + +## Procedimentos para instalação +### Configurar as propriedades do datasource no JBoss. +O datasource `jdbc/templates` é declarado no arquivo `templates-ds.xml`, o funcionamento do datasource depende da declaração de algumas **System Properties** no JBoss. + +| Chave | Valor | +| ------------------------------------- | ----------------------------- | +| br.gov.ans.templates.db.connectionUrl | String de conexão com o banco | +| br.gov.ans.templates.db.password | Senha do usuário USUARIO_GETD | + +Abaixo um exemplo de declaração de propriedades feita no arquivo `standalone.xml`. +```xml + + + + + + +``` + +### Criar security-domain no JBoss +É 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. +[^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 +[^2]: https://en.wikipedia.org/wiki/Role-based_access_control + +### Implantar pacote gerado pelo Maven +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. + +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. + +### Gerar documentação da API +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. +[^3]: http://apidocjs.com/#install + +```console +apidoc -f ".*\\.apidoc$" -i src/main/resources/apidoc/ -o +``` + +A documentação gerada deve ser disponibilizada em um local onde possa ser facilmente acessada pelos clientes. + +## Autenticação e Autorização +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. + +### Roles/Papéis ### +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). + +| Role | Descrição | +| --------------------- | ------------------------- | +| RO_ADMIN_TEMPLATE | Perfil de administração | +| RO_USUARIO_TEMPLATE | Perfil de consulta | diff --git a/src/main/java/br/gov/ans/templates/rest/ColaboradorResource.java b/src/main/java/br/gov/ans/templates/rest/ColaboradorResource.java index a4e27d4..c9c5648 100644 --- a/src/main/java/br/gov/ans/templates/rest/ColaboradorResource.java +++ b/src/main/java/br/gov/ans/templates/rest/ColaboradorResource.java @@ -1,17 +1,25 @@ package br.gov.ans.templates.rest; +import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; +import org.apache.commons.lang3.NotImplementedException; + +import br.gov.ans.utils.MessageUtils; + @Path("colaboradores") public class ColaboradorResource { + @Inject + private MessageUtils messages; + @GET @Path("{colaborador}/templates") public Response getTemplates(@PathParam("colaborador") String colaborador){ - return null; + throw new NotImplementedException(messages.getMessage("erro.servico.nao.implementado")); } } diff --git a/src/main/java/br/gov/ans/templates/rest/TemplateResource.java b/src/main/java/br/gov/ans/templates/rest/TemplateResource.java index 6ea83da..3ab4e94 100644 --- a/src/main/java/br/gov/ans/templates/rest/TemplateResource.java +++ b/src/main/java/br/gov/ans/templates/rest/TemplateResource.java @@ -56,52 +56,7 @@ public class TemplateResource { @Inject private MessageUtils messages; - - /** - * @api {get} /templates Listar templates - * @apiName listTemplates - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE - * - * @apiDescription Consulta os templates disponíveis. - * - * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates. - * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos - * @apiParam (Query Parameters) {String} [pag = 1] Número da página - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates - * - * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados. - * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. - * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template - * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. - * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", - * "dataCadastro": "2017-03-14T16:57:47.405-03:00", - * "descricao": "Template de confirmação de cadastro.", - * "exemplo": "{"fulano":"André Guimarães"}", - * "nome": "confirmacao-cadastro", - * "responsavel": "andre.guimaraes", - * "restrito": false - * } - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @GET @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 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 { return Response.ok().entity(entity).header("total_registros", totalRegistros).build(); } - /** - * @api {get} /templates/:template Consultar template - * @apiName getTemplate - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE - * - * @apiDescription Consulta um template. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates/confirmacao-cadastro - * - * @apiSuccess (Sucesso - 200) {Template} template Objeto representando o template. - * @apiSuccess (Sucesso - 200) {String} template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. - * @apiSuccess (Sucesso - 200) {String} template.dataCadastro Data de cadastro do template. - * @apiSuccess (Sucesso - 200) {String} template.descricao Descrição do template. - * @apiSuccess (Sucesso - 200) {String} template.exemplo Exemplo de request para preenchimento do template. - * @apiSuccess (Sucesso - 200) {String} template.nome Identificador do template. - * @apiSuccess (Sucesso - 200) {String} template.responsavel Analista responsável pelo template. - * @apiSuccess (Sucesso - 200) {Boolean} template.restrito Flag identificando se a atualização deste template é restrita. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", - * "dataCadastro": "2017-03-14T16:57:47.405-03:00", - * "descricao": "Template de confirmação de cadastro.", - * "exemplo": "{"fulano":"André Guimarães"}", - * "nome": "confirmacao-cadastro", - * "responsavel": "andre.guimaraes", - * "restrito": false, - * } - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ @GET @Path("{template}") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -172,34 +85,7 @@ public class TemplateResource { return template; } - - /** - * @api {get} /templates/:template/corpo Recuperar corpo - * @apiName getCorpoTemplate - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE - * - * @apiDescription Recupera o corpo de um template para utilização. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates/confirmacao-cadastro - * - * @apiSuccess (Sucesso - 200) {String} corpo String com o corpo do template pronto para utilização. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * Prezado {{fulano}}, seu cadastro foi realizado com sucesso. - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @GET @Path("{template}/corpo") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -207,48 +93,6 @@ public class TemplateResource { return new String(getTemplate(nomeTemplate).getCorpo()); } - /** - * @api {post} /templates Adicionar template - * @apiName createTemplate - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE - * - * @apiDescription Cria um novo template. - * - * @apiParam (Request Body) {Template} template Objeto de representação do template. - * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. - * @apiParam (Request Body) {String} descricao Descrição do template. - * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. - * @apiParam (Request Body) {String} nome Identificador do template. - * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. - * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita. - * - * @apiExample Exemplo de requisição: - * endpoint: [POST] http:///templates-broker/service/templates/confirmacao-cadastro - * - * body: - * { - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", - * "descricao": "Template de confirmação de cadastro.", - * "exemplo": "{"fulano":"André Guimarães"}", - * "nome": "confirmacao-cadastro", - * "responsavel": "andre.guimaraes", - * "restrito": true, - * } - * - * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ @POST @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -268,52 +112,7 @@ public class TemplateResource { return Response.created(getResourcePath(uriInfo, entity.getNome())).build(); } - - /** - * @api {put} /templates/:template Atualizar template - * @apiName editTemplate - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE - * - * @apiDescription Atualiza um template. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiParam (Request Body) {Template} template Objeto de representação do template. - * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. - * @apiParam (Request Body) {String} descricao Descrição do template. - * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. - * @apiParam (Request Body) {String} nome Identificador do template. - * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. - * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita. - * - * @apiExample Exemplo de requisição: - * endpoint: [PUT] http:///templates-broker/service/templates/confirmacao-cadastro - * - * body: - * { - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", - * "descricao": "Template de confirmação de cadastro.", - * "exemplo": "{"fulano":"André Guimarães"}", - * "nome": "confirmacao-cadastro", - * "responsavel": "andre.guimaraes", - * "restrito": true, - * } - * - * - * @apiSuccess (Sucesso - 200) {header} Location Caminho para o recurso editado. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @PUT @Path("{template}") @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -341,31 +140,7 @@ public class TemplateResource { return Response.ok().contentLocation(getResourcePath(uriInfo, template.getNome())).build(); } - - /** - * @api {delete} /templates/:template Excluir template - * @apiName deleteTemplate - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE - * - * @apiDescription Exclui determinado template. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiExample Exemplo de requisição: - * curl -X DELETE http:///templates-broker/service/templates/confirmacao-cadastro - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @DELETE @Path("{template}") @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -378,43 +153,7 @@ public class TemplateResource { return Response.ok().build(); } - - /** - * @api {get} /templates/:template/colaboradores Listar colaboradores - * @apiName getColaboradores - * @apiGroup Colaborador - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE - * - * @apiDescription Consulta os colaboradores do template. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos - * @apiParam (Query Parameters) {String} [pag = 1] Número da página - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores - * - * @apiSuccess (Sucesso - 200) {List} resultado Lista com os colaboradores do template. - * @apiSuccess (Sucesso - 200) {Colaborador} resultado.colaborador Objeto representando um colaborador. - * @apiSuccess (Sucesso - 200) {String} resultado.colaborador.usuario Identificador do colaborador. - * @apiSuccess (Sucesso - 200) {Boolean} resultado.colaborador.editor Flag que determina se o colaborador tem o poder para editar o template. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "editor": true, - * "usuario": "andre.guimaraes", - * } - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @GET @Path("{template}/colaboradores") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -432,78 +171,13 @@ public class TemplateResource { return Response.ok().entity(entity).header("total_registros", totalRegistros).build(); } - /** - * @api {get} /templates/:template/colaboradores/:colaborador Consultar colaborador - * @apiName getColaborador - * @apiGroup Colaborador - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE - * - * @apiDescription Consulta um colaborador. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes - * - * @apiSuccess (Sucesso - 200) {Colaborador} colaborador Objeto representando um colaborador. - * @apiSuccess (Sucesso - 200) {String} colaborador.usuario Identificador do colaborador. - * @apiSuccess (Sucesso - 200) {Boolean} colaborador.editor Flag que determina se o colaborador tem o poder para editar o template. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "editor": true, - * "usuario": "andre.guimaraes" - * } - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ @GET @Path("{template}/colaboradores/{colaborador}") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Colaborador getColaborador(@PathParam("template") String template, @PathParam("colaborador") String colaborador) throws ResourceNotFoundException{ return daoColaborador.getColaborador(getTemplate(template).getId(), colaborador); } - - /** - * @api {post} /templates/:template/colaboradores Adicionar colaborador - * @apiName addColaborador - * @apiGroup Colaborador - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE - * - * @apiDescription Adiciona um colaborador ao template. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiExample Exemplo de requisição: - * endpoint: [POST] http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores - * - * body: - * { - * "usuario": "andre.guimaraes", - * "editor": true - * } - * - * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @POST @Path("{template}/colaboradores") @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -517,32 +191,7 @@ public class TemplateResource { return Response.ok().contentLocation(getResourcePath(uriInfo, colaborador.getUsuario())).build(); } - - /** - * @api {delete} /templates/:template/colaboradores/:colaborador Remover colaborador - * @apiName removeColaborador - * @apiGroup Colaborador - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE - * - * @apiDescription Remove colaborador de um template. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador - * - * @apiExample Exemplo de requisição: - * curl -X DELETE http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @DELETE @Path("{template}/colaboradores/{colaborador}") public Response removeColaborador(@PathParam("template") String template,@PathParam("colaborador") String nomeColaborador) throws ResourceNotFoundException{ @@ -554,46 +203,7 @@ public class TemplateResource { return Response.ok().build(); } - - /** - * @api {get} /templates/:template/versoes Listar versões - * @apiName getVersoes - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_ADMIN_TEMPLATE - * - * @apiDescription Lista as versões de um template - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates/confirmacao-cadastro/versoes - * - * @apiSuccess (Sucesso - 200) {List} resultado Lista com as versões do template. - * @apiSuccess (Sucesso - 200) {Versao} resultado.versao Objeto representando uma versão do template. - * @apiSuccess (Sucesso - 200) {String} resultado.versao.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. - * @apiSuccess (Sucesso - 200) {Date} resultado.versao.data Data da versão. - * @apiSuccess (Sucesso - 200) {String} resultado.versao.descricao Descrição do template. - * @apiSuccess (Sucesso - 200) {String} resultado.versao.exemplo Exemplo de request para preenchimento do template. - * @apiSuccess (Sucesso - 200) {String} resultado.versao.responsavel Identificador do colaborador responsável. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", - * "data":"2017-03-14T16:57:47.405-03:00", - * "descricao": "Template de confirmação de cadastro.", - * "exemplo": "{"fulano":"André Guimarães"}", - * "responsavel": "andre.guimaraes", - * } - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @GET @Path("{template}/versoes/") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -610,31 +220,6 @@ public class TemplateResource { return Response.ok().entity(entity).build(); } - - /** - * @api {delete} /templates/excluidos/:template Recuperar template - * @apiName undeleteTemplate - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE - * - * @apiDescription Recupera um template excluído. - * - * @apiParam (Path Parameters) {String} template Identificador do template - * - * @apiExample Exemplo de requisição: - * curl -X DELETE http:///templates-broker/service/templates/excluidos/admp-template-novo-usuario - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ @DELETE @Path("excluidos/{template}") @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @@ -647,54 +232,7 @@ public class TemplateResource { return Response.ok().build(); } - - /** - * @api {get} /templates Listar templates excluídos - * @apiName listTemplatesExcluidos - * @apiGroup Template - * @apiVersion 1.0.0 - * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE - * - * @apiDescription Consulta os templates que foram excluídos. - * - * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates. - * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos - * @apiParam (Query Parameters) {String} [pag = 1] Número da página - * - * @apiExample Exemplo de requisição: - * curl -i http:///templates-broker/service/templates - * - * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados. - * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. - * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de exclusao do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. - * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template - * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. - * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", - * "dataCadastro": "2017-03-14T16:57:47.405-03:00", - * "descricao": "Template de confirmação de cadastro.", - * "exemplo": "{"fulano":"André Guimarães"}", - * "nome": "confirmacao-cadastro", - * "responsavel": "andre.guimaraes", - * "restrito": false, - * "dataExclusao":"2017-08-14T16:57:47.405-03:00" - * } - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 500 Internal Server Error - * { - * "error":"Mensagem de erro." - * "code":"código do erro" - * } - */ + @GET @Path("excluidos") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) diff --git a/src/main/resources/apidoc/template.apidoc b/src/main/resources/apidoc/template.apidoc new file mode 100644 index 0000000..c3f8571 --- /dev/null +++ b/src/main/resources/apidoc/template.apidoc @@ -0,0 +1,473 @@ + /** + * @api {get} /templates Listar templates + * @apiName listTemplates + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE + * + * @apiDescription Consulta os templates disponíveis. + * + * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates. + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos + * @apiParam (Query Parameters) {String} [pag = 1] Número da página + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates + * + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados. + * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template + * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. + * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * { + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", + * "dataCadastro": "2017-03-14T16:57:47.405-03:00", + * "descricao": "Template de confirmação de cadastro.", + * "exemplo": "{"fulano":"André Guimarães"}", + * "nome": "confirmacao-cadastro", + * "responsavel": "andre.guimaraes", + * "restrito": false + * } + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {get} /templates/:template Consultar template + * @apiName getTemplate + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE + * + * @apiDescription Consulta um template. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates/confirmacao-cadastro + * + * @apiSuccess (Sucesso - 200) {Template} template Objeto representando o template. + * @apiSuccess (Sucesso - 200) {String} template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. + * @apiSuccess (Sucesso - 200) {String} template.dataCadastro Data de cadastro do template. + * @apiSuccess (Sucesso - 200) {String} template.descricao Descrição do template. + * @apiSuccess (Sucesso - 200) {String} template.exemplo Exemplo de request para preenchimento do template. + * @apiSuccess (Sucesso - 200) {String} template.nome Identificador do template. + * @apiSuccess (Sucesso - 200) {String} template.responsavel Analista responsável pelo template. + * @apiSuccess (Sucesso - 200) {Boolean} template.restrito Flag identificando se a atualização deste template é restrita. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * { + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", + * "dataCadastro": "2017-03-14T16:57:47.405-03:00", + * "descricao": "Template de confirmação de cadastro.", + * "exemplo": "{"fulano":"André Guimarães"}", + * "nome": "confirmacao-cadastro", + * "responsavel": "andre.guimaraes", + * "restrito": false, + * } + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {get} /templates/:template/corpo Recuperar corpo + * @apiName getCorpoTemplate + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE + * + * @apiDescription Recupera o corpo de um template para utilização. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates/confirmacao-cadastro + * + * @apiSuccess (Sucesso - 200) {String} corpo String com o corpo do template pronto para utilização. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * Prezado {{fulano}}, seu cadastro foi realizado com sucesso. + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {post} /templates Adicionar template + * @apiName createTemplate + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE + * + * @apiDescription Cria um novo template. + * + * @apiParam (Request Body) {Template} template Objeto de representação do template. + * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. + * @apiParam (Request Body) {String} descricao Descrição do template. + * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. + * @apiParam (Request Body) {String} nome Identificador do template. + * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. + * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita. + * + * @apiExample Exemplo de requisição: + * endpoint: [POST] http:///templates-broker/service/templates/confirmacao-cadastro + * + * body: + * { + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", + * "descricao": "Template de confirmação de cadastro.", + * "exemplo": "{"fulano":"André Guimarães"}", + * "nome": "confirmacao-cadastro", + * "responsavel": "andre.guimaraes", + * "restrito": true, + * } + * + * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 201 Created + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {put} /templates/:template Atualizar template + * @apiName editTemplate + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE + * + * @apiDescription Atualiza um template. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiParam (Request Body) {Template} template Objeto de representação do template. + * @apiParam (Request Body) {String} corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. + * @apiParam (Request Body) {String} descricao Descrição do template. + * @apiParam (Request Body) {String} exemplo Exemplo de request para preenchimento do template. + * @apiParam (Request Body) {String} nome Identificador do template. + * @apiParam (Request Body) {String} responsavel Analista responsável pelo template. + * @apiParam (Request Body) {String} restrito Flag identificando se a atualização deste template é restrita. + * + * @apiExample Exemplo de requisição: + * endpoint: [PUT] http:///templates-broker/service/templates/confirmacao-cadastro + * + * body: + * { + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", + * "descricao": "Template de confirmação de cadastro.", + * "exemplo": "{"fulano":"André Guimarães"}", + * "nome": "confirmacao-cadastro", + * "responsavel": "andre.guimaraes", + * "restrito": true, + * } + * + * + * @apiSuccess (Sucesso - 200) {header} Location Caminho para o recurso editado. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {delete} /templates/:template Excluir template + * @apiName deleteTemplate + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE + * + * @apiDescription Exclui determinado template. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiExample Exemplo de requisição: + * curl -X DELETE http:///templates-broker/service/templates/confirmacao-cadastro + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {get} /templates/:template/colaboradores Listar colaboradores + * @apiName getColaboradores + * @apiGroup Colaborador + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE + * + * @apiDescription Consulta os colaboradores do template. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos + * @apiParam (Query Parameters) {String} [pag = 1] Número da página + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores + * + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os colaboradores do template. + * @apiSuccess (Sucesso - 200) {Colaborador} resultado.colaborador Objeto representando um colaborador. + * @apiSuccess (Sucesso - 200) {String} resultado.colaborador.usuario Identificador do colaborador. + * @apiSuccess (Sucesso - 200) {Boolean} resultado.colaborador.editor Flag que determina se o colaborador tem o poder para editar o template. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * { + * "editor": true, + * "usuario": "andre.guimaraes", + * } + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {get} /templates/:template/colaboradores/:colaborador Consultar colaborador + * @apiName getColaborador + * @apiGroup Colaborador + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE + * + * @apiDescription Consulta um colaborador. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes + * + * @apiSuccess (Sucesso - 200) {Colaborador} colaborador Objeto representando um colaborador. + * @apiSuccess (Sucesso - 200) {String} colaborador.usuario Identificador do colaborador. + * @apiSuccess (Sucesso - 200) {Boolean} colaborador.editor Flag que determina se o colaborador tem o poder para editar o template. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * { + * "editor": true, + * "usuario": "andre.guimaraes" + * } + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {post} /templates/:template/colaboradores Adicionar colaborador + * @apiName addColaborador + * @apiGroup Colaborador + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE + * + * @apiDescription Adiciona um colaborador ao template. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiExample Exemplo de requisição: + * endpoint: [POST] http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores + * + * body: + * { + * "usuario": "andre.guimaraes", + * "editor": true + * } + * + * @apiSuccess (Sucesso - 201) {header} Location Caminho para o recurso criado. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 201 Created + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {delete} /templates/:template/colaboradores/:colaborador Remover colaborador + * @apiName removeColaborador + * @apiGroup Colaborador + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE + * + * @apiDescription Remove colaborador de um template. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * @apiParam (Path Parameters) {String} colaborador Identificador do colaborador + * + * @apiExample Exemplo de requisição: + * curl -X DELETE http:///templates-broker/service/templates/confirmacao-cadastro/colaboradores/andre.guimaraes + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {get} /templates/:template/versoes Listar versões + * @apiName getVersoes + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_ADMIN_TEMPLATE + * + * @apiDescription Lista as versões de um template + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates/confirmacao-cadastro/versoes + * + * @apiSuccess (Sucesso - 200) {List} resultado Lista com as versões do template. + * @apiSuccess (Sucesso - 200) {Versao} resultado.versao Objeto representando uma versão do template. + * @apiSuccess (Sucesso - 200) {String} resultado.versao.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. + * @apiSuccess (Sucesso - 200) {Date} resultado.versao.data Data da versão. + * @apiSuccess (Sucesso - 200) {String} resultado.versao.descricao Descrição do template. + * @apiSuccess (Sucesso - 200) {String} resultado.versao.exemplo Exemplo de request para preenchimento do template. + * @apiSuccess (Sucesso - 200) {String} resultado.versao.responsavel Identificador do colaborador responsável. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * { + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", + * "data":"2017-03-14T16:57:47.405-03:00", + * "descricao": "Template de confirmação de cadastro.", + * "exemplo": "{"fulano":"André Guimarães"}", + * "responsavel": "andre.guimaraes", + * } + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {delete} /templates/excluidos/:template Recuperar template + * @apiName undeleteTemplate + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE + * + * @apiDescription Recupera um template excluído. + * + * @apiParam (Path Parameters) {String} template Identificador do template + * + * @apiExample Exemplo de requisição: + * curl -X DELETE http:///templates-broker/service/templates/excluidos/admp-template-novo-usuario + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ + + /** + * @api {get} /templates Listar templates excluídos + * @apiName listTemplatesExcluidos + * @apiGroup Template + * @apiVersion 1.0.0 + * @apiPermission RO_ADMIN_TEMPLATE, RO_USUARIO_TEMPLATE + * + * @apiDescription Consulta os templates que foram excluídos. + * + * @apiParam (Query Parameters) {String} [filtro] Valor utilizado para filtrar os templates. + * @apiParam (Query Parameters) {String} [itens = 20] Quantidade de templates que serão exibidos + * @apiParam (Query Parameters) {String} [pag = 1] Número da página + * + * @apiExample Exemplo de requisição: + * curl -i http:///templates-broker/service/templates + * + * @apiSuccess (Sucesso - 200) {List} resultado Lista com os templates encontrados. + * @apiSuccess (Sucesso - 200) {Template} resultado.template Objeto representando o template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.corpo Corpo do template, conteúdo que as aplicações usarão para preencher e exibir os dados. + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de cadastro do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.dataCadastro Data de exclusao do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.descricao Descrição do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.exemplo Exemplo de request para preenchimento do template. + * @apiSuccess (Sucesso - 200) {String} resultado.template.nome Identificador do template + * @apiSuccess (Sucesso - 200) {String} resultado.template.responsavel Analista responsável pelo template. + * @apiSuccess (Sucesso - 200) {Boolean} resultado.template.restrito Flag identificando se a atualização deste template é restrita. + * + * @apiSuccessExample {json} Success-Response: + * HTTP/1.1 200 OK + * { + * "corpo": "Prezado {{fulano}}, seu cadastro foi realizado com sucesso.", + * "dataCadastro": "2017-03-14T16:57:47.405-03:00", + * "descricao": "Template de confirmação de cadastro.", + * "exemplo": "{"fulano":"André Guimarães"}", + * "nome": "confirmacao-cadastro", + * "responsavel": "andre.guimaraes", + * "restrito": false, + * "dataExclusao":"2017-08-14T16:57:47.405-03:00" + * } + * + * @apiErrorExample {json} Error-Response: + * HTTP/1.1 500 Internal Server Error + * { + * "error":"Mensagem de erro." + * "code":"código do erro" + * } + */ diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 9727c10..b57f5ae 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -1,5 +1,6 @@ erro.colaborador.nao.encontrado = O usuário {0} não é um colaborador deste template. erro.interno = Ocorreu um erro interno no templates-broker, contacte os responsáveis. +erro.servico.nao.implementado = Serviço não implementado. erro.template.existente = Já existe um template identificado com o nome {0}. erro.template.nao.encontrado = Template {0} não encontrado. erro.validar = Erro ao validar - -- libgit2 0.21.2