# Como referenciar dados usando Double Braces

Você pode usar Double Braces de várias maneiras: para acessar os dados recebidos pelo componente no formato JSON, para fazer referência a Globals, contas ou metadados.

Veja como você pode fazer isso:

## Referenciando dados JSON <a href="#id-87tlux10inbm" id="id-87tlux10inbm"></a>

Suponha que um componente receba os seguintes dados JSON sobre um funcionário chamado João Silva:

```json
{
"primeiroNome": "João",
"sobrenome": "Silva",
"endereco": {
"rua": "Rua 123",
"cidade": "São Paulo",
"estado": "SP",
"CEP": "11111-111"
},
"telefone": "+5511999999999",
"email": "joaosilva@email.com",
"idade": 30,
"genero": "masculino",
"ocupacao": "Engenheiro de Software"
}
```

### Referenciando todos os dados <a href="#lx0q7rponynp" id="lx0q7rponynp"></a>

Para fazer referência a todos os dados JSON recebidos pelo componente, use a seguinte sintaxe:

```
{{ message.$ }}
```

Aqui:

* **message** é uma palavra reservada que se refere aos dados que foram recebidos pelo componente em questão, conhecido como *payload*.
* **$** indica que você está se referindo a todo o *payload*.

### Referenciando propriedades específicas <a href="#id-266jiko3l5ec" id="id-266jiko3l5ec"></a>

Use a seguinte sintaxe para fazer referência a propriedades específicas de um JSON, substituindo os termos entre símbolos de menor e maior que pelo valor desejado:

```
{{ message.<nome-da-propriedade> }}
```

Aqui:

* **message** é uma palavra reservada que se refere aos dados que foram recebidos pelo componente em questão, também chamado de *payload*.
* **nome-da-propriedade** refere-se ao nome da propriedade desejada.

Por exemplo, se você quiser referenciar o endereço de e-mail de João Silva, use a seguinte notação:

```
{{ message.email }}
```

Para acessar propriedades contidas em outras propriedades, use a notação de maneira recursiva. Por exemplo, para referenciar o CEP de João Silva, use a seguinte notação:

```
{{ message.endereco.CEP }}
```

## Referenciando etapas anteriores usando o Previous Steps Access

Você pode usar o Previous Steps Access para referenciar dados de etapas anteriores de um pipeline usando um alias customizado, facilitando e agilizando o gerenciamento de dados.

Se você ainda não configurou um Alias, consulte as [instruções na documentação](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/how-to-reference-data-using-double-braces/previous-steps-access).

Se já configurou um Alias no seu fluxo, utilize a seguinte sintaxe para referenciar os dados desejados:

```json
{{ step.step-alias }}
```

Onde:

* **step** é uma palavra reservada que se refere a uma etapa anterior do fluxo.
* **step-alias** é o nome personalizado definido no campo Alias do conector ou cápsula. Ele permite que você referencie essa etapa em partes posteriores do fluxo usando Double Braces.&#x20;

Exemplo: `{{ step.csv-to-json-v1-3 }}` .&#x20;

## Referenciando triggers

Você pode usar Double Braces para referenciar diretamente os dados de entrada do trigger. Para referenciar um trigger com Double Braces, utilize a seguinte sintaxe:

`{{ trigger.input }}`

Por exemplo:&#x20;

`{{ trigger.order.id }}`

Aqui:

* **trigger** é uma palavra reservada que se refere ao trigger no workflow.
* **order** é um objeto que corresponde a uma chave nos dados enviados ao trigger.
* **id** é um campo dentro do objeto `order`, apontando para um valor específico dentro da estrutura.

## Referenciando Globals <a href="#w40qqx1i9zyi" id="w40qqx1i9zyi"></a>

Globals são variáveis ​​criadas pelo usuário que podem ser referenciadas em vários *pipelines*. Para aprender mais sobre Globals, [leia esta documentação](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/settings/globals).

Para fazer referência a um Global usando Double Braces, use a seguinte sintaxe, substituindo os termos entre símbolos de menor e maior que pelo valor desejado:

```
{{global.<nome-do-global>}}
```

Aqui:

* **global** é uma palavra reservada.
* **nome-do-global** é o nome do Global desejado.

{% hint style="warning" %}
Embora seja possível fazer referência a Globals sem o prefixo `global`, é altamente recomendável usar o prefixo, uma vez que as expressões sem ele não serão mais suportadas no futuro.
{% endhint %}

Suponha que você queira referenciar um Global chamado “meu-global”. Use a notação:

```
{{global.meu-global}}
```

## Referenciando contas <a href="#id-6kg4o5xryfbp" id="id-6kg4o5xryfbp"></a>

As contas são credenciais definidas pelo usuário que podem ser referenciadas em vários pipelines.Para saber mais, [leia nossa documentação sobre contas](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/settings/accounts).

Para fazer referência a uma conta, use a seguinte sintaxe, substituindo os termos entre símbolos de menor e maior que pelo valor desejado:

```
{{ account.<rotulo-da-conta>.<campo> }}
```

Aqui:

* **account** é uma palavra reservada que se refere às contas salvas na Digibee Integration Platform.
* **rotulo-da-conta** refere-se ao rótulo da conta exibido na página de contas.
* **campo** refere-se ao nome do campo da conta na página de contas, como, por exemplo, **username**,**password**, **token**, **header-value**, entre outros.

Suponha que você queira fazer referência ao *username* de uma conta salva chamada **conta-da-emily**. Para fazer isso, use a seguinte sintaxe:

```
{{ conta.conta-da-emily.username }}
```

## Referenciando metadados <a href="#ddcmojcg6oul" id="ddcmojcg6oul"></a>

Metadados podem se referir a vários tipos de dados, tais como informações sobre o próprio pipeline, a execução atual do pipeline, a configuração usada para executar o pipeline e o ambiente no qual o pipeline está sendo executado.

Para referenciar metadados, use a seguinte sintaxe, substituindo os termos entre símbolos de menor e maior que pelo valor desejado:

```
{{ metadata.<dados> }}
```

Aqui:

* **metadata** é uma palavra reservada.
* **dados** refere-se aos metadados que você deseja referenciar.

Por exemplo, use a seguinte sintaxe para referenciar o nome do pipeline no qual este código está sendo executado:

```
{{ metadata.pipeline.name }}
```

Estes são todos os metadados que você pode acessar com Double Braces:

### Metadados de pipeline <a href="#bnmd222uaqa0" id="bnmd222uaqa0"></a>

| data                      | Descrição                                                                                                |
| ------------------------- | -------------------------------------------------------------------------------------------------------- |
| pipeline.name             | Nome do *pipeline*                                                                                       |
| pipeline.versionMajor     | Versão *major* do *pipeline*                                                                             |
| pipeline.versionMinor     | Versão *minor* do *pipeline*                                                                             |
| pipeline.realm            | *Realm* do *pipeline*                                                                                    |
| pipeline.description      | Descrição do *pipeline*                                                                                  |
| pipeline.id               | ID do *pipeline*                                                                                         |
| metadata.pipeline.project | Nome do projeto do *pipeline* que está sendo implantado. Durante o test-mode, será retornado como *null* |

### Metadados de implantação <a href="#id-7cp8uzvvzlmg" id="id-7cp8uzvvzlmg"></a>

| Descrição                                                                               | data                         |
| --------------------------------------------------------------------------------------- | ---------------------------- |
| Quantidade máxima de consumidores, de acordo com o tamanho da implantação do *pipeline* | runtime.consumers            |
| Quantidade de consumidores, como definido pelo usuário                                  | runtime.actualConsumers      |
| Ambiente em que o *pipeline* está sendo executado                                       | metadata.runtime.environment |

### Metadados de execução de pipeline <a href="#wyxvj3wtt377" id="wyxvj3wtt377"></a>

| data                     | Descrição                                                                                                                                                                                                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| execution.key            | ID da execução do *pipeline* atual                                                                                                                                                                                                                                        |
| execution.timeout        | *Timeout* configurado do *pipeline*                                                                                                                                                                                                                                       |
| execution.startTimestamp | *Timestamp* do início da execução pipeline (em milissegundos, no formato UNIX Epoch)                                                                                                                                                                                      |
| execution.redelivery     | Booleano. *True* se esta execução for uma nova tentativa de execução. *False,* se não. Aprenda mais sobre reprocessamento em [nosso artigo sobre o *Pipeline Engine*](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/overview/runtime/pipeline-engine). |

## Referenciando propriedades de Cápsula

Na configuração da Cápsula, você pode definir propriedades para parâmetros e utilizá-los na configuração de componentes dentro do fluxo da Cápsula.

Use a seguinte sintaxe para fazer referência a uma propriedade da Cápsula:

```
{{ capsule.<property> }}
```

* **capsule** é uma palavra reservada que se refere às propriedades da Cápsula.
* **property** é a propriedade definida no parâmetro no formulário de configuração da Cápsula.

Por exemplo, se você criou uma propriedade chamada `mensagemErro` no formulário de configuração da Cápsula e quiser referenciá-la em um componente dentro da Cápsula, use a seguinte notação:

```
{{ capsule.mensagemErro }}
```
