# Operações de Módulos

"**Operações"** são chamadas atômicas de APIs, atreladas a um módulo, que encapsulam a execução de uma função previamente configurada. Ou seja, as operações são as ações que poderão ser realizadas por seu módulo quando adicionadas, posteriormente, a um fluxo.

Exemplo: imagine que temos um módulo chamado “VendasY” e ele pode realizar as seguintes operações:

* Listar todas as vendas do dia
* Listar os 10 produtos mais vendidos
* Adicionar um produto e seu respectivo preço

Todos esses exemplos são configuráveis através das operações.

{% hint style="info" %}
Sem uma operação, não há como utilizar um módulo em seus fluxos.
{% endhint %}

***

#### Como adicionar uma operação <a href="#como-adicionar-uma-operacao" id="como-adicionar-uma-operacao"></a>

1. Clique em "**Nova operação"**.

<figure><img src="/files/6VO6TVPm2CKKSzUvzpAO" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
É necessário o preenchimento das informações na seção "[Configurações](/skyone-studio/modulos/configuracoes-and-operacoes.md)" para habilitar a criação de operações.&#x20;
{% endhint %}

2. Em seguida, será mostra a tela para o preenchimento dos dados da nova operação, sendo que ela é dividida em 4 etapas:

* [Informações Gerais](#informacoes-gerais)
* [Parâmetros](#parametros)
* [Requisição](#requisicao)
* [Estrutura de saída](#estrutura-de-saida)

Acompanhe passo a passo cada item:

#### **Informações Gerais** <a href="#informacoes-gerais" id="informacoes-gerais"></a>

1. Adicione o **nome** e a **descrição** da nova operação.
2. Em seguida, clique em "**Próximo Passo"**.

<figure><img src="/files/ewdRUhz90PcMdFTqeqay" alt=""><figcaption></figcaption></figure>

#### Parâmetros <a href="#parametros" id="parametros"></a>

Nesta etapa você irá configurar o parâmetro que será utilizado no módulo, sempre de acordo com o tipo (Banco de Dados, E-mail, REST, etc). Para isso:

1. Clique em "**Adicionar parâmetro"**. Em seguida será mostrado o seguinte modal:

<figure><img src="/files/zxdzfhxgiYmljDQvp2hL" alt=""><figcaption></figcaption></figure>

Sendo que os campos:

1. **Nome**: escolha um nome que melhor descreva a função do parâmetro;
2. **Descrição**: descreva a função do parâmetro;
3. **Tipo**: selecione aqui o tipo de dados aceito pelo parâmetro:
   * **Texto**: qualquer combinação de caracteres alfanuméricos. Exemplos: "qualquertexto", "123"
   * **Número:** qualquer número. Exemplos: 123, 321, etc.
   * **Booleano:** true/false (verdadeiro/falso)
   * **Objeto:** objeto JSON. Exemplo: { “name” : “John” }
   * **Array:**  array JSON. Exemplos: \[ “A”, “B” ], \[ “1”, “2” ]
4. **Campo obrigatório**: torna o parâmetro **obrigatório** quando marcada, fazendo com que ele sempre seja passado no JSON de entrada.
5. **Dado sensível**: quando selecionado, este campo denota que o valor do parâmetro não será publicado caso o módulo seja compartilhado.
6. **Exemplo**: adicione um exemplo de acordo com o tipo de dado especificado no campo "**Tipo"** e considerando o **tipo de conectividade do módulo** (Banco de dados, Email, etc) . Por exemplo:
   1. **Banco de Dados:** utilize exemplos usando os comandos SQL válidos (SELECT, UPDATE, DELETE, etc).&#x20;
   2. **REST**: use as operações GET, POST, PUT, DELETE e PATCH.
7. Para finalizar, clique em "**Salvar informações".**

Você pode clicar em "**Novo parâmetro"** para adicionar um novo item, ou escolher o botão "**Próximo passo"** para dar sequência nas configurações ([Requisição](#requisicao)).

{% hint style="info" %}
Não há limite no número de parâmetros que podem ser criados, mas recomendamos que a nomenclatura e descrição sejam feitas de forma estruturada, para facilitar a identificação e uso.
{% endhint %}

#### Requisição <a href="#requisicao" id="requisicao"></a>

Nesta aba, você poderá escrever uma requisição usando os parâmetros criados anteriormente. Para facilitar, organizamos as orientações por tipo de conectividade. Clique na opção adequada:

<details>

<summary>Banco de Dados</summary>

Em módulos do tipo **Banco de Dados**, a área de requisição contém o campo "**Query**" e os **parâmetros disponíveis**, que podem ser arrastados para dentro do campo "Query". Se preferir, é possível adicionar outros parâmetros diretamente na Query.&#x20;

<figure><img src="/files/RqxQTTPfpfvfDQLLcUr0" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "**Próximo Passo"** ([Estrutura de Saída](#estrutura-de-saida)).

</details>

<details>

<summary>Email</summary>

Em módulos do tipo **Email**, a área de requisição contém os seguintes campos:

* **Parâmetros disponíveis**: lista dos parâmetros criados previamente;
* **Destinatário**: arraste o parâmetro correspondente para este campo;
* **Assunto**: arraste o parâmetro correspondente para este campo;
* **Body**: além do parâmetro criado previamente, este campo requer um código HTML, como o exemplo abaixo:&#x20;
* **Habilitar anexo:** permite incluir um ou mais anexos

<figure><img src="/files/3qqnIkS22Qn25HaM9TLZ" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "**Próximo Passo"** ([Estrutura de Saída](#estrutura-de-saida)).

</details>

<details>

<summary>REST</summary>

Em módulos do tipo **REST**, a área de requisição contém os seguintes campos:

* **Parâmetros disponíveis**: lista dos parâmetros criados previamente;
* **Método**: selecione o método HTTP a ser utilizado na requisição. As opções disponíveis são:
  * **GET**: Usado para recuperar dados.
  * **POST**: Enviar dados ou criar novos recursos.
  * **PUT**: Atualizar recursos de forma completa.
  * **DELETE**: Excluir recursos.
  * **PATCH**: Atualizar recursos parcialmente.
* **URL** (não obrigatório)**:** escolha o formato da URL que será utilizada na requisição:
  * **PATH**: Caminho relativo, utilizado quando a URL base já está definida em outro local.
  * **FULL URL**: Endereço completo, útil para requisições fora do domínio
* **Endpoint:** digite ou cole o caminho que será chamado para realizar a requisição.&#x20;
* **Body:** caso o método escolhido aceite um body (como POST, PUT ou PATCH), insira os dados que serão enviados. O corpo da requisição pode estar em formatos como JSON, XML, ou outros conforme a API.
* **Header:** defina os cabeçalhos HTTP que devem ser incluídos na requisição, como Content-Type, Authorization, ou outros conforme a necessidade do serviço que está sendo integrado.
* **Query**: insira os parâmetros de consulta (query parameters) que serão anexados à URL. Esses parâmetros geralmente são usados para filtrar, ordenar ou paginar os dados na requisição.

<figure><img src="/files/C3GBFJHzkIGX9v00GriY" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "**Próximo Passo"** ([Estrutura de Saída](#estrutura-de-saida)).

</details>

<details>

<summary>SOAP</summary>

Em módulos do tipo **SOAP**, a área de requisição contém os seguintes campos:

* **Parâmetros disponíveis**: lista dos parâmetros criados previamente;
* **Body**: o corpo da requisição SOAP deve seguir o padrão XML. No body, é necessário incluir os parâmetros que correspondem à operação solicitada ao serviço SOAP.&#x20;
* **Header**: os headers podem incluir informações de autenticação, como tokens, ou dados de controle da transação.

<figure><img src="/files/IFMu9mOi04jaJmBCCKnN" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "**Próximo Passo"** ([Estrutura de Saída](#estrutura-de-saida)).

</details>

<details>

<summary>Arquivo</summary>

Em módulos do tipo **Arquivo**, a área de requisição contém os seguintes campos:

* **Parâmetros disponíveis**: lista dos parâmetros criados previamente;
* **Tipo de operação**: as opções disponíveis são:
  * **Mover um arquivo:** ao escolher esta opção, a tela mostra os seguintes campos:
    * **Caminho**: especifique o caminho do diretório onde o arqui está atualmente
    * **Nome**: insira o nome do arquivo que será movido.
    * **Caminho para**: informe o novo caminho para onde o arquivo será movido.
  * **Apagar um arquivo**: ao escolher esta opção, a tela mostra os seguintes campos:
    * **Caminho**: especifique o caminho do diretório onde o arquivo a ser apagado está localizado.
    * **Nome:** insira o nome do arquivo que será apagado.
  * **Salvar arquivo:** ao escolher esta opção, a tela mostra os seguintes campos:
    * **Caminho**: informe o caminho do diretório onde o arquivo será salvo.
    * **Nome**: insira o nome do arquivo que será salvo
    * **Conteúdo**: especifique o conteúdo que será salvo no arquivo.
    * **Acrescentar o conteúdo se houver um arquivo com o mesmo nome:** marque esta opção se desejar acrescentar o novo conteúdo ao arquivo existente, em vez de sobrescrevê-lo.
  * **Ler um arquivo**: ao escolher esta opção, a tela mostra os seguintes campos:
    * **Caminho**: especifique o caminho do diretório onde o arquivo está localizado.
    * **Nome**: insira o nome do arquivo que será lido.
    * **Formato de conteúdo de arquivo**: selecione o formato do conteúdo do arquivo (binário ou texto).
  * **Listar arquivos**: ao escolher esta opção, a tela mostra os seguintes campos:
    * **Caminho**: especifique o caminho do diretório cujos arquivos serão listados.

<figure><img src="/files/Rtny3TWJCyhMnxJpW2XX" alt=""><figcaption></figcaption></figure>

* **Criar diretório**: ao escolher esta opção, a tela mostra os seguintes campos:
  * **Caminho**: especifique o caminho onde o diretório será criado.
  * **Diretório**: insira o nome do diretório.

<mark style="background-color:blue;">Importante: Para garantir o funcionamento desta operação, verifique se o seu Agente está atualizado.</mark>&#x20;

Em seguida, clique em "**Próximo Passo"** ([Estrutura de Saída](#estrutura-de-saida)).

</details>

<details>

<summary>RFC</summary>

Em módulos do tipo **RFC**, a área de requisição contém os seguintes campos:

* **Parâmetros disponíveis**: lista dos parâmetros criados previamente;
* **Nome da função:** especifique o nome da função que será executada no sistema SAP.
* **Parâmetro**: insira os parâmetros necessários para a execução da função escolhida.

<figure><img src="/files/tkB4agJLMoch6NC9HAqf" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "**Próximo Passo"** ([Estrutura de Saída](#estrutura-de-saida)).

</details>

{% hint style="info" %}
Acesse a [documentação do MongoDB](/skyone-studio/modulos/configuracoes-and-operacoes/operacoes-de-modulos/operacao-mongodb.md) para saber mais das operações.
{% endhint %}

#### Estrutura de Saída <a href="#estrutura-de-saida" id="estrutura-de-saida"></a>

Nesta etapa, você testará a operação com as informações fornecidas. Para facilitar, organizamos as orientações por tipo de conectividade. Clique na opção adequada:

<details>

<summary>Banco de Dados</summary>

Para concluir as configurações do módulo do tipo **Banco de Dados**, a tela de "**Estrutura de Saída**" é dividida em dois blocos: **Entrada** e **Saída**.

<figure><img src="/files/ijjekNZrXw5KhaBw3IBS" alt=""><figcaption></figcaption></figure>

* **Entrada:** Contém os parâmetros configurados na aba [**Parâmetros**](#parametros). Você pode fazer ajustes aqui, mas eles serão usados apenas para teste e não serão salvos.
* **Saída:** Antes do teste, nenhuma informação é exibida. Após o teste, o resultado é mostrado aqui.

Para testar a operação, clique em "**Testar**". Se o resultado estiver correto, clique em "**Finalizar**" para concluir a criação da operação.

</details>

<details>

<summary>Email</summary>

Para concluir as configurações do módulo do tipo **Email**, a tela de "**Estrutura de Saída**" é dividida em dois blocos: **Entrada** e **Saída**.

<figure><img src="/files/jCeC3HxoDK0loPY5KbE3" alt=""><figcaption></figcaption></figure>

* **Entrada:** Contém os parâmetros configurados na aba [**Parâmetros**](#parametros). Você pode fazer ajustes aqui, mas eles serão usados apenas para teste e não serão salvos.
* **Saída:** Antes do teste, nenhuma informação é exibida. Após o teste, o resultado é mostrado aqui.

Para testar a operação, clique em "**Testar**". Se o resultado estiver correto, clique em "**Finalizar**" para concluir a criação da operação.

</details>

<details>

<summary>REST</summary>

Para concluir as configurações do módulo do tipo **REST**, a tela de "**Estrutura de Saída**" é dividida em dois blocos: **Entrada** e **Saída**.

<figure><img src="/files/6AHY2quPig7AOlyaim53" alt=""><figcaption></figcaption></figure>

* **Entrada:** Contém os parâmetros configurados na aba [**Parâmetros**](#parametros). Você pode fazer ajustes aqui, mas eles serão usados apenas para teste e não serão salvos.
* **Saída:** Antes do teste, nenhuma informação é exibida. Após o teste, o resultado é mostrado aqui.

Para testar a operação, clique em "**Testar**". Se o resultado estiver correto, clique em "**Finalizar**" para concluir a criação da operação.

</details>

<details>

<summary>SOAP</summary>

Para concluir as configurações do módulo do tipo **SOAP**, a tela de "**Estrutura de Saída**" é dividida em dois blocos: **Entrada** e **Saída**.

<figure><img src="/files/H3xs2oAA3WHVbc5RtnqA" alt=""><figcaption></figcaption></figure>

* **Entrada:** Contém os parâmetros configurados na aba [**Parâmetros**](#parametros). Você pode fazer ajustes aqui, mas eles serão usados apenas para teste e não serão salvos.
* **Saída:** Antes do teste, nenhuma informação é exibida. Após o teste, o resultado é mostrado aqui.

Para testar a operação, clique em "**Testar**". Se o resultado estiver correto, clique em "**Finalizar**" para concluir a criação da operação.

</details>

<details>

<summary>Arquivo</summary>

Para concluir as configurações do módulo do tipo **Arquivo**, a tela de "**Estrutura de Saída**" é dividida em dois blocos: **Entrada** e **Saída**.

<figure><img src="/files/l0q85jClK9pL0pjx32eM" alt=""><figcaption></figcaption></figure>

* **Entrada:** Contém os parâmetros configurados na aba [**Parâmetros**](#parametros). Você pode fazer ajustes aqui, mas eles serão usados apenas para teste e não serão salvos.
* **Saída:** Antes do teste, nenhuma informação é exibida. Após o teste, o resultado é mostrado aqui.

Para testar a operação, clique em "**Testar**". Se o resultado estiver correto, clique em "**Finalizar**" para concluir a criação da operação.

</details>

<details>

<summary>RFC</summary>

Para concluir as configurações do módulo do tipo **RFC**, a tela de "**Estrutura de Saída**" é dividida em dois blocos: **Entrada** e **Saída**.

<figure><img src="/files/vJmLyKXM5gbFJxK5ar01" alt=""><figcaption></figcaption></figure>

* **Entrada:** Contém os parâmetros configurados na aba [**Parâmetros**](#parametros). Você pode fazer ajustes aqui, mas eles serão usados apenas para teste e não serão salvos.
* **Saída:** Antes do teste, nenhuma informação é exibida. Após o teste, o resultado é mostrado aqui.

Para testar a operação, clique em "**Testar**". Se o resultado estiver correto, clique em "**Finalizar**" para concluir a criação da operação.

</details>

Leia também: [Gestão das operações (editar e excluir operações).](/skyone-studio/modulos/configuracoes-and-operacoes/operacoes-de-modulos/gestao-das-operacoes.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.skyone.cloud/skyone-studio/modulos/configuracoes-and-operacoes/operacoes-de-modulos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
