# Suportes de Intimações

Capitulo exclusivo para podermos manter os suportes de intimações 

# Alteração de perfis

### O que precisa ter no card:

- <span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Planilha com todos os perfis que serão necessário alterar.
- Especificar quais alterações deverão ser feitas

### Acessos necessários:

- <span style="text-indent: -18pt; color: rgb(68, 68, 68);">API configurada no .env do intimation-app</span>
- <span style="text-indent: -18pt;">Acesso ao intimation-app</span>

## Passo-a-Passo

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Copie todos os **IDs** (do mesmo tipo) informados na planilha

<span style="mso-no-proof: yes;">![A screenshot of a computer

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-d6tzjjfo.png)</span>

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**Acesse INTIMATION-APP/custom/maintenance/updateConfigsV2.ts**, e cole dentro da IDE de execução, na **array list\[\]**

<span style="mso-no-proof: yes;">![A screen shot of a computer

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-u96huop1.png)</span>

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Formate para se encaixar com o padrão de uma string

<span style="mso-no-proof: yes;">![A screen shot of a computer code

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-r3nbudtd.png)</span>

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Adicione o **ID do usuário e o caminho** onde será salvo a cópia local.

<span style="mso-no-proof: yes;">![A computer screen with text and symbols

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-fl8fbfoc.png)</span>

**<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">5.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**Agora, vá até **updates.push{}**

<span style="mso-no-proof: yes;">![A screenshot of a computer program

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-exfss2zx.png)</span>

Este será o ambiente que irá alterar valores que serão entregues ao **JSON**. Ative apenas aqueles que serão necessários para operação.  
Garanta que o campo **id** sempre esteja ativado, para que que comunique com o perfil.

### Alterações principais:

Caso, na informação entregue, informe a rotina, o campo utilizado será o filter. Você pode confirmar quais são os filtros possiveis dentro de DateFilters.ts

Weekdays é um array de números, que é chamado de 0 a 6, de domingo para sexta-feira. Isso garante que o filtro rode nos dias informados.

Enabled garante que o perfil está ativo.

Deadline informa o periodo máximo que o filtro pode rodar.

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">6.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Após garantir que todas as alterações foram adicionadas, execute o código com , garantindo que o campo for abaixo de apply the changes, esteja comentado. Isso vai garantir que você crie uma versão local e confirme se as informações estão corretas.

<span style="mso-no-proof: yes;">![A computer screen with green text

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-bqt62dj3.png)</span>

<span lang="EN-US" style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin; mso-ansi-language: EN-US;"><span style="mso-list: Ignore;">7.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Execute o código abaixo para executa-lo.   
<span class="IntenseQuoteChar"><span lang="EN-US" style="mso-ansi-language: EN-US;">yarn tsnd --transpile-only --exit-child --no-notify --unhandled-rejections=throw custom/maintenance/updateConfigsV2.ts</span></span>

<span lang="EN-US" style="mso-ansi-language: EN-US;"> </span>

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">8.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Após ter a confirmação de finalização, acesse a pasta local que salvou as cópias.

<span style="mso-no-proof: yes;">![A screen shot of a computer

AI-generated content may be incorrect.](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/embedded-image-rsxbhnjx.png)</span>

**Na pasta, encontrará:**

- Cópia do arquivo de mudanças (Json e planilha)
- Snapshot da versão anterior

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">9.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Confirme as mudanças em **Filtro, dias a executar** e se a **quantidade de usuário** é igual ao de usuários solicitados.

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">10.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Se todas as informações estiverem corretas, remova o comentário do **apply the changes** e execute o processo novamente. Dessa vez, as informações serão enviadas ao sistema.

<span style="mso-bidi-font-family: Aptos; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;">11.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Finalize a task informando ao solicitante da alteração. inclua os arquivos emitidos pelo script pra registro e backup

## Observações:

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Deixar o campo **list** vazio, implica que todos os perfis cadastrados naquele ID.

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Chamar sem ID, apenas implicará que não irá encontrar os usuários da lista.

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**JAMAIS** deve ser executado com apply changes não comentado, uma lista vazia com id vazio.

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Se houver mais de um tipo de perfil, realizar o procedimento individualmente para cada tipo.

# Reexecução de perfil

### O que precisa ter no card:

- ID/Usuário
- E-mail
- Nome da empresa

Exemplo: Renata Gomes Advogados | rg@renatagomesadvogados.com.br | ID/Usuário: 2628/2996

### Acessos necessários:

- Acesso ao **oystr-app-1**

## Passo-a-Passo

1. Acesse o ambiente **oystr-app-1** com seu usuário  
      
    [![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/scaled-1680-/qMMimage.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/qMMimage.png)
2. realize uma primeira chamada **echo**, para identificar se todas as informações estão corretas:  
    <p class="callout info">deadline=HH:DD; list=(coloque o userID); for i in "${list\[@\]}"; do echo $i; http GET :5001/dashboard/automation Authorization:0 X-Oystr-AccountId:1 clientId==$i | jq 'map(select(.status == "Erro ao listar" or .status == "Erro ao executar") | {id:.id}) | .\[\] | .id' -r | xargs -d '\\n' -I+++ echo http --ignore-stdin --body PUT :5001/automation/+++ Authorization:0 X-Oystr-AccountId:1 deadlineExemption=$deadline; done</p>

Altere os seguintes campos:

<p class="callout warning">deadline= Horário limite (exemplo: 14:00)   
list=ID do cliente (exemplo: 2628)</p>

<p class="callout warning">È ideal que o horário seja o suficiente para que seja realizado todos os processos, e alinhado com o time de suporte se for passar das 18 horas.</p>

3\. O retorno deverá ser equivalente a imagem abaixo:

[![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/scaled-1680-/XTAimage.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/XTAimage.png)

O comando cria um preview da alteração, adicionando o novo deadline e alterando o bool **final** para **false**

4\. Após confirmar que as informações retornadas estão corretas, remova o segundo echo do código e execute ele.   
Exemplo após remoção:

<p class="callout info">deadline=HH:DD; list=(coloque o userID); for i in "${list\[@\]}"; do echo $i; http GET :5001/dashboard/automation Authorization:0 X-Oystr-AccountId:1 clientId==$i | jq 'map(select(.status == "Erro ao listar" or .status == "Erro ao executar") | {id:.id}) | .\[\] | .id' -r | xargs -d '\\n' -I+++ http --ignore-stdin --body PUT :5001/automation/+++ Authorization:0 X-Oystr-AccountId:1 deadlineExemption=$deadline; done</p>

5\. Ao executar o código, será retornado em json, informando as alterações realizadas. Confirme novamente que as informações estão iguais e informe ao cliente, sobre a alteração.

#### Listar perfis especificos para trabalhar com exceção.

Para trabalhar com exceção, utiize o seguinte codigo abaixo:

<p class="callout info">deadline=HH:mm  
list=(ID\_CLIENTE)  
for i in "${list\[@\]}"; do  
 echo $i  
 automations="$(http GET :5001/dashboard/automation Authorization:0 X-Oystr-AccountId:1 clientId==$i)"  
 errors="$(echo "$automations" | jq -r 'map(select(.status == "Erro ao listar" or .status == "Erro ao executar"))')"  
 idName="$(echo "$errors" | jq -r 'map({ id: .id, name: .profile.name })')"  
 echo "$idName" | jq -r 'map("http --ignore-stdin --body PUT :5001/automation/" + .id + " Authorization:0 X-Oystr-AccountId:1 deadlineExemption='"$deadline"' # " + .name) | .\[\]'  
done</p>

Com as informações retornadas, exclua as exceções, para garantir que apenas seja executado o código que precisar.

# Intimações: Validação de log

### O que precisa ter no card:

- Id do usuário.

### Acessos necessários:

- Servidor: **oystr-app-1**

### Passo-a-Passo

### <span style="text-decoration: underline;">App oficial:</span>

1\. Acesse o diretório de logs:

<p class="callout info">cd /opt/oystr/intimation/backend/logs</p>

2\. Liste as versões disponíveis do log e identifique a mais recente:

<p class="callout info">ls</p>

[![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/scaled-1680-/eD4image.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/eD4image.png)

3\. Busque pelo ID desejado na última versão do log:

[![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/scaled-1680-/SbSimage.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-09/SbSimage.png)

<p class="callout info">grep (id) v2.61.8.txt</p>

4\. Analise o retorno:  
O comando exibirá todos os registros em que o código apareceu no sistema.  
-Utilize essas informações para prosseguir com a investigação conforme solicitado pelo cliente.

5\. Para finalizar

- Tire um print dos registros relevantes.
- Envie como evidência para **registro** e **encerramento do caso**.

### <span style="text-decoration: underline;">Serviços secundários:</span>

### Acessos necessários:

- Servidor: **oystr-app-3**

#### <span style="text-decoration: underline;">Caminhos:</span>

<p class="callout success">**connector-l1/logs -&gt; integrador legal one connector-projuris/logs -&gt; connector projuris (novo)   
webservice/logs -&gt; webservice (integração cpj e é usado pelo integrador legal one tbm)**</p>

1. Acesse o diretório de logs, utilizando o caminho adequado acima.
2. Liste as versões disponíveis do log e identifique a mais recente.
3. Busque pelo ID desejado na última versão do log.
4. Analise o retorno:  
    O comando exibirá todos os registros em que o código apareceu no sistema.  
    -Utilize essas informações para prosseguir com a investigação conforme solicitado pelo cliente.
5. 5\. Para finalizar
    
    
    - Tire um print dos registros relevantes.
    - Envie como evidência para **registro** e **encerramento do caso**.

# Intimações: Destravar execução

<div id="bkmrk-" style="clear: left;"></div>### O que precisa ter no card:

- ID/Usuário
- E-mail
- Nome da empresa
- id da execução

### Acessos necessários:

- Acesso ao servidor Oystr-app-1

## Passo-a-Passo

1. Incorpore o usuário que será necessário realizar a correção.
2. Localize a execução travada e copie seu id.
3. Aborte o processo e aguarde 5 minutos até sua liberação completa.
4. Através do console, acesse **Oystr-app-1**
5. Utilize o código abaixo para criar uma nova automação do mesmo cliente e perfil, porém já em estágio de execução.  
      
    <p class="callout info">deadline=HORARIO AQUI   
      
    list=(  
    ID DA EXECUÇÂO AQUI  
    )  
      
    for i in "${list\[@\]}"; do  
     result="$(http --body GET :5001/automation Authorization:1 X-Oystr-AccountId:1 execution==$i)"  
     if \[\[ ! "$result" \]\]; then  
     echo "!!!!!!!!!!!!!!!!!!!!!!!!!! PROBLEMA $i !!!!!!!!!!!!!!!!!!!!!!!!!!"  
     continue;  
     fi  
     clientId="$(echo "$result" | jq -r '.\[0\].clientId')"  
     profileId="$(echo "$result" | jq -r '.\[0\].profileId')"  
     everythingFrom="$(echo "$result" | jq -r '.\[0\].id')"  
     if \[\[ ! "$clientId" || ! "$profileId" || ! "$everythingFrom" \]\]; then  
     echo "!!!!!!!!!!!!!!!!!!!!!!!!!! PROBLEMA $i !!!!!!!!!!!!!!!!!!!!!!!!!!"  
     continue;  
     fi  
     http --body POST :5001/automation Authorization:1 X-Oystr-AccountId:1 deadlineExemption=$deadline clientId=$clientId profileId=$profileId everythingFrom=$everythingFrom  
    done  
    </p>
    
    <p class="callout danger">Garanta que o deadline e o list possuam as informações indicadas</p>
6. Caso o retorno seja "Rejeitado". Valide se o processo foi abortado e aguarde mais alguns minutos até sua finalização.  
    [![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/scaled-1680-/2M7image.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/2M7image.png)
7. Após, o retorno será da seguinte forma, indicando que foi recriado:  
      
    [![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/scaled-1680-/tKwimage.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/tKwimage.png)

# Intimação: Interromper reexecução de perfil

### O que precisa ter no card:

- ID/Usuário
- E-mail
- Nome da empresa

Exemplo: Renata Gomes Advogados | rg@renatagomesadvogados.com.br | ID/Usuário: 2628/2996

### Acessos necessários:

- Acesso ao **oystr-app-1**

## Passo-a-Passo

1. Acesse o ambiente **oystr-app-1**
2. Utilize o código abaixo para identificar os perfis **Erro ao** **listar.** Altere o **ID\_CLIENTE** para o correto antes da execução.  
      
    <p class="callout info">select 'bot' as "type", "status", count(\*) from "AutomationStatus" where "createdAt"::date = current\_date and "clientId" = 'ID\_CLIENTE' and "final" = false group by "status" union select 'djen' as "type", "status", count(\*) from "DJENAutomation" where "createdAt"::date = current\_date and "clientId" = 'CLIENTE' and "final" = false group by "status";</p>
3. Seu retorno será no seguinte formato abaixo:
    
    <p class="callout info">type | status | count   
    ------+----------------+-------   
    bot | Erro ao listar | 5 (1 row)</p>
4. Realize o processo abaixo utilizando o transaction por segurança. Altere o ID\_CLIENTE antes da execução.
    
    <p class="callout info">update "AutomationStatus" set "final" = true where "id" in (select "id" from "AutomationStatus" where "clientId" = 'ID\_CLIENTE' and "createdAt"::date = current\_date and "final" = true);  
    </p>
5. Se todas as informações estiverem corretas, finalize a transaction, confirmando se as alterações foram realizadas corretamente.

# Intimação: excluir processos sensíveis

### O que precisa ter no card:

- ID/Usuário
- E-mail
- Nome da empresa
- Quais processos devem ser removidos

### Acessos necessários:

- Acesso ao banco de dados de Intimação

## Passo-a-Passo

1. Acesse o Oystr-app-1 depois use o código abaixo para acessar o banco de dados:

<p class="callout info">docker exec --interactive --tty --user postgres intimation-database psql --dbname=postgresql://postgres@localhost:5432/intimation</p>

2\. Dentro do servidor, inicie o processo garantindo que existem processos sensíveis ativos utilizando as seguintes verificações abaixo.

<p class="callout info">select count(\*) from "SensibleProcess" where "clientId" = 'ID DO USUARIO';</p>

<p class="callout info">select count(\*) from "SensibleProcess" where "clientId" = 'ID DO USUARIO' and "deletedAt" is null;</p>

<p class="callout info">select count(\*) from "SensibleProcess" where "clientId" = 'ID DO USUARIO' and "enabled" = true;  
</p>

<p class="callout warning">todos os valores devem ser iguais</p>

3\. Após, utilize o código abaixo para atualizar o deletedAt, o que implica na exclusão dos processos sensíveis.

<p class="callout info">update "SensibleProcess" set "deletedAt" = now() where "ClientId" = 'ID DO USUARIO';</p>

<p class="callout danger">Obs: Certifique-se de realizar o codigo usando o método transaction, por segurança.</p>

4\. Após estes passos, já terá excluído todos os processos sensíveis.

# Intimação: Gerar relatório em banco de dados

### O que precisa ter no card:

- ID/Usuário
- E-mail
- Nome da empresa

A solicitação irá ser diferente conforme a necessidade do cliente. Nesse procedimento, mostraremos como identificá-las.

### Acessos necessários:

- Acesso ao banco de dados de Intimação
- Acesso ao Oystr-app-1

## Passo-a-Passo

1. Com o ambiente Oystr-app-1 configurado, você encontrará o banco de dados Prisma no caminho relativo: **"src/data/prisma/schema.prisma"**, lá, encontrará todos os dados que conseguirá chamar via SQL.[![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/scaled-1680-/M0Qimage.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/M0Qimage.png)

2\. Para executar qualquer informação no banco de dados, você deve acessar o container docker através do código abaixo, já dentro do **Oystr-app-1**:

<p class="callout info">docker exec --interactive --tty --user postgres intimation-database psql --dbname=postgresql://postgres@localhost:5432/intimation</p>

<p class="callout warning">Qualquer alteração no banco de dados é perigosa, se feita incorretamente. Por isso, é aconselhável o uso de transaction</p>

3\. Abaixo, um exemplo de criação de csv com informações quantitativas de intimação com base no advogado que atendeu ela:

<p class="callout info">copy (  
 select "profileId" as "id\_perfil",  
 "P"."name" as "nome\_perfil",  
 sum(coalesce("resultCount", 0)) as "total"  
 from "AutomationStatus" as "A"  
 inner join "Profile" as "P" on "A"."profileId" = "P"."id"  
 where "A"."clientId" = '65' and "A"."createdAt"::date &gt;= '2025-04-01'   
 group by   
 "profileId",  
 "P"."name"  
) to '/var/lib/postgresql/data/NOME\_DO\_ARQUIVO.csv' with (format csv, header);</p>

O campo "**to '/var/lib/postgresql/data/NOME\_DO\_ARQUIVO.csv' with (format csv, header);**" é responsavel pela criação do csv.

4\. Após ter gerado, você deve movê-lo para pasta raiz do seu usuário no servidor, usando o código abaixo:

<p class="callout info">sudo mv /opt/oystr/intimation/database/NOME\_DO\_ARQUIVO.csv ~ </p>

5\. Feito isso, basta transferir o arquivo de volta a sua maquina, enquanto ja desconectado do servidor.

<p class="callout info">scp seu.nome@oystr-app-1:/home/seu.nome/reportX.csv . </p>

# Intimações: Validar e abortar execuções travadas

<p class="callout warning">Esse processo é rotineiro, e deve ser verificado para garantir que não haja intimações travadas de um dia para o outro.</p>

### Acessos necessários:

- Acesso ao servidor Oystr-app-1 e Oystr-app-4

## Passo-a-Passo

1. Acesse o Oystr-app-1
2. Execute o comando abaixo para acessar o banco de dados de intimação.

<p class="callout info">docker exec --interactive --tty --user postgres intimation-database psql --dbname=postgresql://postgres@localhost:5432/intimation</p>

3\. Dentro do banco de dados, utilize a busca abaixo para identificar se existem casos de execuções travadas em um periodo a mais de 24 horas.

<p class="callout info">select "A"."clientId", "P"."name", "A"."createdAt", "A"."status", "A"."execution", "P"."deadline", "A"."final", "P"."filter" from "AutomationStatus" as "A" join "Profile" as "P" on "A"."profileId" = "P"."id" where "P"."deletedAt" is null and "A"."deletedAt" is null and "A"."final" = false and "A"."createdAt" &lt; now() - interval '24' hour order by "A"."clientId", "P"."name";  
</p>

4\. Se houver, acesse o **Oystr-app-4** e utilize o código abaixo para aborta-las. troque o ID\_EXEC pelo real ID de execução antes de enviar o código.

<p class="callout info">for i in ID\_EXEC\_1 ID\_EXEC\_2... ID\_EXEC\_N; do echo $i; http --timeout=300 PUT oystr4:9001/execution/$i/abort; done</p>

<p class="callout danger">Se no retorno do select tiver perfis com rotina diferente de everything e yesterdayAndBefore é bom chamar atenção do CS no Suporte N2, pois existe a possibilidade de perder intimações </p>

5\. Feito isso. Reporte ao grupo do discord Suporte N2, informando quais casos foram abortados.

# Intimação: Liberação Modulo de Auditoria

### Acessos necessários:

- Servidor Oystr-app-1

### Passo a passo

1\. Acesse o **Oystr-app-1**

2\. Verifique funcionalidades ativas de um cliente:

<p class="callout warning">Substitua `ID_CLIENTE` pelo ID real do cliente que deseja verificar.</p>

<p class="callout info">http GET :5001/features Authorization:0 X-Oystr-AccountId:1 clientId==ID\_CLIENTE</p>

<p class="callout info">Esse endpoint retorna o status das funcionalidades:  
**auditEnabled** → Auditoria  
**cpjReportEnabled** → XML unificado  
**webserviceEnabled** → Integração CPJ</p>

3\. Identifique funcionalidades que estão desativadas:

- Se alguma das três estiver `false`, será necessário ativar.
- Tome nota do `ID_FEATURES` correspondente ao retorno do endpoint.

4\. Ative funcionalidades desativadas:  
Substitua `ID_FEATURES` pelo valor real retornado pelo GET e ajuste `true` ou `false` conforme necessário.

<p class="callout info">http PUT :5001/features/ID\_FEATURES Authorization:0 X-Oystr-AccountId:1 auditEnabled:=true cpjReportEnabled:=true webserviceEnabled:=true</p>

***Apenas ative o que for necessário. Por exemplo, se o cliente só precisa de auditoria e XML unificado, ajuste:***

<p class="callout info">auditEnabled:=true cpjReportEnabled:=true webserviceEnabled:=false</p>

5\. Validação final:

- Refaça o GET para confirmar que todas as funcionalidades desejadas estão ativas.

<p class="callout info">http GET :5001/features Authorization:0 X-Oystr-AccountId:1 clientId==ID\_CLIENTE</p>

6\. Reportar:

- Informe no grupo do Discord Suporte N2 quais funcionalidades foram ativadas para cada cliente.
- Caso alguma funcionalidade não possa ser ativada, comunicar o responsável pelo suporte ou o time de liberação no connector com o Adelon.

# Intimação: Reenviar intimação

### O que precisa ter no card:

- ID/Usuário
- E-mail
- Nome da empresa

### Acessos necessários:

- Acesso ao banco de dados de Intimação
- Acesso ao Oystr-app-1

## Passo-a-Passo

1. Acesse o banco de dados Oystr-app-1
2. Use o código abaixo para acessar o banco de dados:

<p class="callout info">docker exec --interactive --tty --user postgres intimation-database psql --dbname=postgresql://postgres@localhost:5432/intimation</p>

3\. Utilize o código abaixo para gerar uma planilha com todas as intimações ativas do dia.

<p class="callout info">copy (  
 select  
 "C"."id" as "id\_conta",  
 "C"."name" as "nome\_conta",  
 "P"."name" as "nome\_perfil",  
 "P"."bot" as "id\_robo\_perfil",  
 "A"."execution" as "id\_execucao\_automacao",  
 "A"."resultCount" as "qtd\_sucessos\_automacao",  
 "W"."id" as "id\_webhook",  
 "W"."status" as "status\_webhook",  
 "W"."tries" as "qtd\_tentativas\_webhook",  
 "W"."responseCode" as "codigo\_retorno\_webhook",  
 "W"."lastAttempt" as "ultima\_tentativa\_envio\_webhook (+3h)",  
 "W"."downloadedAt" as "ultimo\_download\_arquivo (+3h)",  
 "W"."response" as "body\_retorno\_webhook"  
 from  
 "WebhookStatus" as "W" inner join  
 "AutomationStatus" as "A" on "A"."id" = "W"."automationStatusId" inner join  
 "Client" as "C" on "C"."id" = "W"."clientId" inner join  
 "Profile" as "P" on "A"."profileId" = "P"."id"  
 where  
 "A"."createdAt"::date = current\_date and  
 "A"."clientId" in ('ID\_CLIENTE1', 'ID\_CLIENTE2')  
 union  
 select  
 "C"."id" as "id\_conta",  
 "C"."name" as "nome\_conta",  
 "P"."name" as "nome\_perfil",  
 'djen-intimacao' as "id\_robo\_perfil",  
 "A"."fakeExecutionId" as "id\_execucao\_automacao",  
 "A"."resultCount" as "qtd\_sucessos\_automacao",  
 "W"."id" as "id\_webhook",  
 "W"."status" as "status\_webhook",  
 "W"."tries" as "qtd\_tentativas\_webhook",  
 "W"."responseCode" as "codigo\_retorno\_webhook",  
 "W"."lastAttempt" as "ultima\_tentativa\_envio\_webhook (+3h)",  
 "W"."downloadedAt" as "ultimo\_download\_arquivo (+3h)",  
 "W"."response" as "body\_retorno\_webhook"  
 from  
 "WebhookStatus" as "W" inner join  
 "DJENAutomation" as "A" on "A"."id" = "W"."djenAutomationId" inner join  
 "Client" as "C" on "C"."id" = "W"."clientId" inner join  
 "DJENProfile" as "P" on "A"."djenProfileId" = "P"."id"  
 where  
 "A"."createdAt"::date = current\_date and  
 "A"."clientId" in (select "clientId" from "Settings" where "webhookUrl" like '%twtinfo%')  
 order by  
 "nome\_conta" asc,  
 "id\_execucao\_automacao" asc  
) to '/var/lib/postgresql/data/NOME\_DO\_ARQUIVO.csv' with (format csv, header);</p>

4\. Saia do banco de dados após, com EXIT.

5\. Utilize o código abaixo para para mover o arquivo para pasta raiz.

<p class="callout info">sudo mv /opt/oystr/intimation/database/NOME\_DO\_ARQUIVO.csv ~ </p>

6\. Após, corte ela e envie para sua pasta local com:

<p class="callout info">scp nome.user@139.144.46.66:/home/nome.user/NOME\_DO\_ARQUIVO.csv . </p>

7\. O resultado será similar a:

[![image.png](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/scaled-1680-/am9image.png)](https://wiki.oystr.com.br/uploads/images/gallery/2025-10/am9image.png)

8\. Pegue o **id\_webhook** e utilize para reenviar a intimação, das seguintes formas:

<p class="callout info">**ID UNICO:**  
http PUT :5001/webhook/ID\_WEBHOOK Authorization:0 X-Oystr-AccountId:1</p>

<p class="callout info">**VARIOS ID's:**  
IDS=(  
ID\_WEBHOOK1  
ID\_WEBHOOK2  
...  
)  
  
for id in "${IDS\[@\]}"; do  
 echo "Carregando $id..."  
 http PUT :5001/webhook/$id Authorization:0 X-Oystr-AccountId:1  
done</p>

# Error: relatório final vazio ao gerar relatório xml

#### O que precisa ter no card:

- ID/Usuário.

#### Acessos necessários:

-Acesso para personificar usuário

#### Razão do erro:

-O usuário aplicou um filtro específico (ex: "apenas intimações capturadas hoje") que, no momento da geração do relatório, **não retornou nenhum resultado de sucesso**.

-As execuções selecionadas para o relatório ocorreram, mas **TODAS as tentativas de captura falharam**.

#### Observações:

-O relatório só é preenchido com **sucessos**. Se houve 100% de erros (erros ao listar, falha na execução, etc.), o resultado final para o XML também é zero.

-Se o campo **"intimações no dia"** (Intimações Listadas que passaram no filtro) estiver zerado, significa que *nenhum dado elegível* foi encontrado para processamento, resultando em um relatório vazio.

#### Conclusão:

O sistema não encontrou nenhum item para incluir no XML, resultando no erro de relatório vazio por não haver dados de intimação para adicionar ao relatório.

<p class="callout danger">Caso nenhuma das razões se encaixe com o erro, ou seja, existem intimações a serem consumidas para o relatório, o erro terá sido outro e deverá ser analisado de forma diferente ao processo informado.</p>

# Intimações: Gerar arquivo scheduler-custom

## Objetivo:

Este script percorre vários bots do Oystr, acessa o endpoint scheduler-custom.html de cada um usando cookies de sessão e salva todas as respostas em um único arquivo de texto.

## Passo-a-Passo:

1. Dentro do seu projeto, execute o código abaixo, ajustando o valor **$KEY** para sua respectiva chave de acesso:

```bash
# https://console4.oystr.com.br/api/v1/resource/projudi-intimacao/v1.0/tipos.json

cookie="Cookie: oystr-vu=; oystr-ls=true; chatWidgetWindowStateA2CA24909D3B4588935ABA2F915BEAB5=false; oystr-vi=$KEY; dogma-client-user="
bots=(
  "creta-intimacao"
  "ecint-trf1-intimacao"
  "eproc-intimacao"
  "pje-trt-intimation"
  "pje-tj-intimation"
  "pje-trf5-intimacoes-pautas"
  "pje-trf5-intimacoes-rpv"
  "projudi-intimacao"
  "tj-rj-intimacao"
  "tucujuris-tj-ap-intimacao"
  "pdpj-domicilio-eletronico"
  "ecac-caixa-postal"
  "stj-intimacao"
  "pje-seeu-intimacao"
  "bbjur-intimacao"
)

rm "scheduler-custom.txt"
for bot in "${bots[@]}"; do
  echo "$bot..."
  echo "$bot" >> "scheduler-custom.txt"
  http --verify=no https://console4.oystr.com.br/api/v1/resource/"$bot"/v1.0/scheduler-custom.html Cookie:"$cookie" >> "scheduler-custom.txt"
  echo "" >> "scheduler-custom.txt"
done
```

<div id="bkmrk-" style="color: #cccccc; background-color: #1f1f1f; font-family: 'Droid Sans Mono', 'monospace', monospace; font-weight: normal; font-size: 14px; line-height: 19px; white-space: pre;"></div><p class="callout info">Caso não possua o arquivo anteriormente, pode comentar a linha **rm "scheduler-custom.txt"**</p>