--- title: "Solicitando acesso aos Web Services do SEI" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Solicitando acesso aos Web Services do SEI} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = FALSE) ``` Antes de conseguir qualquer resposta do `rsei`, é preciso que o **órgão gestor da sua instalação do SEI** (em geral a área de TI, autarquia de tecnologia ou empresa de informática do governo) habilite o consumo dos Web Services para o seu sistema. Esta vignette descreve **o que pedir** e **quais dados enviar**, com base no fluxo típico de solicitação. Os valores aqui são **fictícios e genéricos** — substitua-os pelos do seu ambiente. > **Por que isso é necessário.** Os Web Services do SEI são fechados por > padrão. O acesso é liberado por *sistema* (uma sigla cadastrada) e restrito > aos endereços de rede previamente autorizados. Sem esse cadastro e a > liberação de IP, todas as chamadas falham — independentemente do `rsei`. ## Visão geral do fluxo 1. **Abrir o pedido** com a área gestora do SEI (normalmente via chamado). 2. **Enviar os dados de cadastro** do sistema (lista abaixo). 3. A área **cadastra o sistema** e solicita a **liberação dos IPs** no firewall (costuma ser um chamado separado, em outra equipe). 4. **Testar no ambiente de treinamento/homologação** primeiro. 5. Após validar, **solicitar a réplica da configuração em produção**. Cada instalação do SEI é independente: a sigla, a chave, os endpoints e os métodos liberados valem **apenas** para aquele ambiente. ## Dados a enviar no pedido A área gestora normalmente pede os seguintes itens. Um modelo de mensagem: ``` Prezados, solicitamos a habilitacao do consumo dos Web Services do SEI para o nosso sistema, nos ambientes de treinamento e producao: 1) Cadastro do Sistema (sigla do "servico") Sigla sugerida: MEU_SISTEMA 2) IP(s) do servidor de integracao (IP de saida do orgao) - - (sao os enderecos que precisam ser liberados no firewall) 3) Unidades que serao cadastradas - Todas (ou liste as unidades especificas) 4) Tipos de operacao (metodos a liberar) — ver lista abaixo 5) Tipos de processo - Todos (ou liste os tipos especificos) 6) Tipos de documento - Todos (ou deixar em branco) Faremos os testes primeiro em treinamento e, apos validacao, solicitaremos a migracao para producao. ``` ### 1. Sigla do sistema (`SiglaSistema`) Um identificador curto do seu sistema, definido por você e cadastrado pela área gestora (ex.: `MEU_SISTEMA`). É o primeiro parâmetro de toda chamada. ### 2. IPs de saída (liberação de firewall) > **Atenção (privacidade/LGPD).** Informe **endereços de rede do servidor**, > não dados pessoais. Evite enviar nomes de usuários, logins de VPN ou > qualquer identificador de pessoa física no pedido — eles não são necessários > para a liberação e ampliam desnecessariamente o tratamento de dados > pessoais. A liberação é por **IP de saída** do host que fará as chamadas. Se o seu ambiente sai por um IP dinâmico ou por VPN, alinhe com a equipe de rede uma faixa fixa ou um IP dedicado. ### 3. Tipos de operação (métodos) Liste os métodos que pretende usar. Peça apenas o necessário (princípio da minimização). Exemplos comuns: ``` consultarProcedimento consultarProcedimentoIndividual consultarDocumento listarAndamentos listarUsuarios listarUnidades gerarProcedimento # operacoes de escrita — peca so se for usar incluirDocumento lancarAndamento enviarProcesso definirMarcador ``` Nem todo método existe em toda instalação: dependendo da configuração do servidor, alguns (p. ex. certas listagens) podem **não estar disponíveis**. Confirme com a área gestora quais foram efetivamente habilitados. ## A `IdentificacaoServico` (chave de acesso) Além da sigla, cada chamada exige uma `IdentificacaoServico` — a **chave de acesso** do serviço, gerada/definida no cadastro do sistema pela área gestora. Trate-a como segredo: - **não** a escreva diretamente no código nem a versione no Git; - prefira variável de ambiente (`RSEI_IDENTIFICACAO_SERVICO`) ou o keyring (`store_sei_credentials()`). > O manual do SEI menciona um modo legado baseado em "Endereço" que será > descontinuado. Prefira já solicitar a **Chave de Acesso** para evitar > retrabalho. ## Endpoints (treinamento e produção) Peça à área gestora a URL do Web Service de cada ambiente. O formato costuma ser: ``` https:///sei/ws/SeiWS.php # SEI principal https:///sip/ws/... # SIP (permissoes) ``` Use **treinamento/homologação** para validar tudo — sobretudo as operações de escrita — antes de tocar em produção. ## Configurando o `rsei` com o que foi liberado Com a sigla, a chave e a URL em mãos: ```{r} library(rsei) # Guarde a sigla e a chave fora do código (keyring); faça isso uma vez por máquina. store_sei_credentials( service_name = "SEI_WS", username = "MEU_SISTEMA", # sigla do sistema (SiglaSistema) password = "SUA_CHAVE_DE_ACESSO" # chave de acesso (IdentificacaoServico) ) # Recupere as credenciais guardadas quando precisar montar a configuração. creds <- get_sei_credentials("SEI_WS") cfg <- sei_config( sei_url = "https://sei.exemplo.gov.br/sei/ws/SeiWS.php", sigla_sistema = creds$username, identificacao_servico = creds$password ) # Teste rápido: uma listagem leve confirma sigla + chave + liberação de IP. listar_unidades(cfg) ``` Se a chamada retornar dados, o trio **sigla + chave + IP liberado** está correto. Erros comuns: - *SOAP Fault* de autenticação → sigla ou chave incorretas; - *timeout* / conexão recusada → IP ainda não liberado no firewall, ou você está chamando de um host diferente do autorizado; - método "não encontrado" → operação não habilitada naquela instalação. ## Boas práticas de privacidade e segurança (LGPD) Os processos e documentos do SEI frequentemente contêm **dados pessoais** e até **dados sensíveis**. Ao automatizar consultas com o `rsei`: - **Minimize**: solicite e consulte apenas os métodos e processos necessários à sua finalidade. - **Não exponha segredos**: chaves de acesso e credenciais nunca devem ir para o código-fonte, logs ou repositórios. Use keyring ou variáveis de ambiente. - **Cuidado ao salvar respostas**: os `tibble` retornados podem conter nomes, e-mails e teores de documentos. Trate-os como dados pessoais — controle acesso, evite cópias desnecessárias e não os publique. - **Anonimização em exemplos**: ao compartilhar código, relatórios ou abrir *issues*, use protocolos e identificadores **fictícios** (como nesta vignette), nunca dados reais. - **Respeite o nível de acesso**: o campo `NivelAcessoGlobal` (`público`/`restrito`/`sigiloso`) indica a classificação do processo no SEI. Não use o Web Service para contornar restrições de acesso. Documente a **base legal** e a finalidade do tratamento junto à área de privacidade/encarregado (DPO) do seu órgão antes de colocar a integração em produção.