Different methods of API that use similar Services I have three methods in API running similar code snippets. For this reuse the code inserted a switch-case according to the API method.  It's good practice that? I mean, this isn't a high coupling and low cohesion? There is another better way?

API

@ApiOperation(value = "Gerar permalinks de todos os arquivos com validação", response = Permalink.class)
    @RequestMapping(value = "{validacaoId}/permalink/all", method = RequestMethod.POST)
    public Permalink gerarPermalinkComValidacao(@PathVariable("validacaoId") String validacaoId) {
        return permalinkService.createPermalink(validacaoId, "Permalink com validação");
    }

    @ApiOperation(value = "Gerar permalinks de todos os arquivos NOKS com validação", response = Permalink.class)
    @RequestMapping(value = "{validacaoId}/permalink/noks", method = RequestMethod.POST)
    public Permalink gerarPermalinkNoks(@PathVariable("validacaoId") String validacaoId) {
        return permalinkService.createPermalink(validacaoId, "Permalink NOKS com validação");
    }

    @ApiOperation(value = "Gerar permalinks de todos os arquivos sem validação", response = Permalink.class)
    @RequestMapping(value = "{validacaoId}/permalink", method = RequestMethod.POST)
    public Permalink gerarPermalinkSemValidacao(@PathVariable("validacaoId") String validacaoId) {
        return permalinkService.createPermalink(validacaoId, "Permalink sem validação");
    }


Service

public Permalink createPermalink(String validacaoId, String tipo) {
        Validacao validacao = validacaoDAO.findById(validacaoId);
        Permalink permalink = new Permalink().setId(Util.getMd5Time(validacaoId));
        if (validacao == null) {
            throw new NotFoundException("Erro ao gerar permalink: ID da validação inválido.");
        }
        permalinkDAO.createPermalinkDirectory(validacao.getId());
        BasicDBList pecas;
        switch (tipo) {
            case "Permalink com validação":
                pecas = getAllFilesWithValidation(validacao.getId(), permalink.getId());
                break;
            case "Permalink NOKS com validação":
                pecas = noksWithValidation(validacao.getId());
                break;
            case "Permalink sem validação":
                pecas = getAllFiles(validacao.getId(), permalink.getId());
                break;
            default:
                throw new IllegalArgumentException("Tipo de permalink inválido.");
        }
        if (!pecas.isEmpty()) {
            permalink.setEmail(validacao.getEmail())
                    .setLogo(permalinkDAO.getLogo(validacao.getInstancia()).getString("logo", ""))
                    .setDataCriacao(DateTime.nowISODate())
                    .setTipo(tipo)
                    .setValidacaoId(validacao.getId())
                    .setInstancia(validacao.getInstancia())
                    .setPecas(pecas);
            permalinkDAO.create(permalink);
            return permalink;
        }
        throw new InternalServerErrorException("Erro ao obter peças para permalink.");
    }
Use English for your variable names, request routes, and Exception messages. Imagine a remote developer joins your company (very common these days), they wouldn't be able to understand the stack traces.
validate your parameters before creating unnecessary objects 

Validacao validacao = validacaoDAO.findById(validacaoId);
if (validacao == null) {
    throw new NotFoundException("Validacao cannot be null");
}
Permalink permalink = new Permalink().setId(Util.getMd5Time(validacaoId));

The switch statement however is fine.