# Regras de Parametrização

### Parametrização no Skyone Studio <a href="#parametrizacao-no-integra.sky" id="parametrizacao-no-integra.sky"></a>

A maior parte das chamadas utilizadas em módulos de conectores são parametrizadas. Dessa forma você consegue utilizar valores obtidos em módulos anteriores de um fluxo como parâmetros de execução para os módulos subsequentes. A parametrização e substituição dos valores seguem algumas regras.

***

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

Quando especificamos um módulo, definimos os parâmetros externos que eles receberão. Durante a construção de um fluxo definimos como esses parâmetros serão preenchidos através da utilização de valores que já estão disponíveis até a execução do módulo.

Ao construir um módulo, definimos os parâmetros que deverão ser preenchidos por valores que serão fornecidos em tempo de execução para a sua correta execução. Por exemplo, podemos definir um parâmetro de identificador de cidade para um módulo REST que necessite desse valor na chamada da URL. Fazemos isso colocando um marcador de parâmetro na posição da URL que deve recebê-lo. No exemplo abaixo, "**Size"** é um parâmetro. Ao clicá-lo, é possível visualizar detalhes sobre o parâmetro.

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

Em tempo de execução de um fluxo, o Skyone Studio substitui esse marcador pelo dado especificado na construção do fluxo. Esse dado deverá estar disponível no plano de dados de execução do fluxo. Esse plano de dados é composto por todos os dados previamente obtidos nos módulos anteriores além das variáveis que são definidas em tempo de configuração. <br>

Quando construímos um fluxo, definimos quais dados serão utilizados para cada parâmetro necessário em cada módulo.

<figure><img src="/files/DMW59HREUq1UBRCtLThv" alt=""><figcaption><p><strong>Na construção do fluxo associamos dados aos parâmetros dos módulos</strong></p></figcaption></figure>

No exemplo anterior, podemos definir que o valor de **CityId** num determinado fluxo será fornecido dentro do **body** do **webhook** que inicializa o fluxo. Quando estamos configurando esse módulo em um fluxo precisamos determinar quais dados serão mapeados para quais parâmetros.&#x20;

Observe que esse módulo possui dois parâmetros a serem configurados: **User-Key** e **CityId**. Eles aparecem à direita sob "**Configuração de Parâmetros"**. Você pode especificar um parâmetro de forma estática, como demostrado em **User-Key**. Para isso, basta entrar com o valor desejado no parâmetro.

Entretanto é mais comum utilizarmos valores dinâmicos que são determinados em cada execução do fluxo, assim como está ilustrado para o parâmetro **CityId**. Nesse exemplo ele será sempre preenchido em tempo de execução pelo valor **city\_id** que vem no **body** do *webhook* que inicializa o fluxo. Observe que à esquerda da tela de configuração vemos as variáveis (Parâmetros de Fluxo ou *Flow Parameters)* além de todos os módulos já executados e os dados recebidos em cada módulo. Neste caso vemos o Gatilho Webhook e temos acesso ao conteúdo do seu **body**, onde está a propriedade **city\_id** que contém o valor desejado.

A medida que o fluxo é executado, o plano de dados vai recebendo todos os dados que os módulos obtêm. Eles se tornam imediatamente disponíveis para serem consumidos pelos parâmetros dos módulos subsequentes.

<figure><img src="/files/rc1DitA9EFDgioWV0LMW" alt=""><figcaption><p><strong>Parâmetros ao longo da execução de um fluxo</strong></p></figcaption></figure>

Observe que iniciamos um fluxo apenas com as variáveis (Parâmetros de Fluxo), que são valores determinados pelo operador em tempo de configuração. Além disso, o próprio evento externo pode trazer informação, como é o caso do *webhook* ou de uma chamada de API. Todos esses valores estão disponível no plano de dados da execução.

O primeiro módulo após o Gatilho dispõe das variáveis (Parâmetros de Fluxo) e dos eventuais dados que o Gatilho trás para serem utilizados como parâmetros. Esse módulo pode fazer manipulações de dados e eventualmente interagir com algum sistema externo e assim obter mais dados durante a sua execução.

O segundo módulo que vem na sequência de execução pode utilizar todos os dados obtidos pelo fluxo até então, o que inclui as variáveis (Parâmetros de Fluxo), as informações do Gatilho, bem como todos os dados obtidos pelo Módulo 01. Esse segundo módulo por sua vez pode interagir com sistemas externos e também receber dados adicionais que poderão ser utilizados por todos os módulos na sequência. Esse processo ocorre para todos os módulos de um fluxo.

{% hint style="info" %}
No caso de loops, apenas os valores da última execução estão disponíveis.
{% endhint %}

#### **Marcação de Parâmetros**

Os parâmetros podem ser especificados em diversas chamadas de módulos. Podemos ter uma URL de uma requisição REST que utiliza um parâmetro, assim como podemos ter uma *query* a um banco de dados que também esteja parametrizada.

Para identificarmos um parâmetro do **Skyone Studio** utilizamos símbolos específicos que funcionam como marcadores de início e fim. O conteúdo entre esses símbolos identifica o nome do parâmetro. Exemplo:

```
<>CityId</>
```

Neste caso, o nome do parâmetros chama-se **CityId** e os símbolos de marcação são os sinais de maior e menor. Toda vez que o **Skyone Studio** encontrar essa marcação, irá substituir esses símbolos pelo valor atual do parâmetro.

Por exemplo, no caminho de requisição REST abaixo encontramos a especificação desse parâmetro:

```
Cities/<>CityId</>
```

Para executar esse módulo, o Skyone Studio irá substituir o marcador do parâmetro pelo seu valor do dado que deve ser utilizado. Se por exemplo esse valor for igual a 999999, o produto utilizará o seguinte caminho:

```
Cities/999999
```

***

**Tipos de Marcação de Parâmetros e Dados**

Existem basicamente três tipos de marcação que identificam parâmetros e dados no **Skyone** **Studio**.

<table><thead><tr><th width="291">Marcadores</th><th>Descrição</th><th data-hidden></th></tr></thead><tbody><tr><td>&#x3C;>parameter&#x3C;/></td><td><strong>Parâmetro:</strong> Especificação de parâmetros utilizada durante a construção de módulos. É como especificamos que determinados valores deverão ser substituídos por valores fornecidos em tempo de execução.</td><td></td></tr><tr><td>{}module : parameter{/}</td><td><strong>Dado de Execução</strong>: Dados obtidos em tempo de execução de um fluxo. O <strong>Skyone</strong> <strong>Studio</strong> irá substituir esse marcador pelo valor do dado no momento da execução. O nome do dado é uma composição entre o identificador do módulo em que ele foi gerado e o nome da propriedade.</td><td></td></tr><tr><td>[]module : parameter[/]</td><td><strong>Variável</strong>: São valores que o operador pode definir em tempo de configuração através dos Parâmetros de Fluxo. São variáveis permanentes e portanto são mantidos entre execuções distintas de um fluxo. O módulo de "<strong>Update Parameter"</strong> também permite que um fluxo altere diretamente o valor de um parâmetros de fluxo.</td><td></td></tr></tbody></table>

**Substituição de Parâmetros**

É importante observar como os marcadores de parâmetros são substituídos pelos dados durante a execução de um fluxo. O produto utiliza apenas o conteúdo do dado especificado para preencher a posição do parâmetro.

Exemplos:

&#x20;**Parâmetro string em URL**

* Parameter Name: CityId
* Parameter Type: string
* Endpoint: baseURL/ Cities/<>CityId\</>
* Data: \[]GXpfha3Z : city\_id\[/]
* Data Type: string
* Data Content: “XXXXXXX”
* Replacement:

```
baseURL/ Cities/XXXXXXX
```

**Parâmetro string em body JSON**

* Parameter: CityId
* Parameter Type: string
* Body: { “city” : “<>CityId\</>” }
* Data: \[]GXpfha3Z : city\_id\[/]
* Data Type: string
* Data Content: “XXXXXXX”
* Replacement:

```
{ “city” : “XXXXXXX” }
```

{% hint style="warning" %}
Para que as strings do objeto final possuam aspas, é necessário incluí-las na definição do Body. O **Skyone Studio** não coloca aspas automaticamente em strings.
{% endhint %}

**Parâmetro object em Data Transformation**

* Parameter Name: DATA
* DATA Example:

```
{ “resp_body” : {}trigger : body{/} }
```

* Data: {}trigger : body{/}
* Data Type: object
* Data Content:

```
{ "city_id":"0987654321" }
```

Replacement:

```json
{ 
   “result” : {
      "resp_body" : {
         "city_id" : "0987654321"
      }
   }
}    
```

{% hint style="info" %}
O **Skyone Studio** insere uma propriedade chamada *result* como base dos dados referenciados
{% endhint %}

{% hint style="info" %}
Você pode passar múltiplos parâmetros para um *Data Transformation*. Basta montar um DATA utilizando um objeto com múltiplas propriedades, cada uma referenciando um parâmetro.
{% endhint %}


---

# 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/integracoes/operacoes-de-dados/regras-de-parametrizacao.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.
