> For the complete documentation index, see [llms.txt](https://docs.digibee.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/utilities-functions.md).

# Funções de utilidades

As funções de utilidades realizam operações diversas, que não se enquadram em nenhuma das outras categorias e estão disponíveis para componentes que suportam expressões com *Double Braces*. Para saber como passar informações para os componentes utilizando esse recurso, leia a documentação [Funções *Double Braces*](/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions.md).

## BASEDECODE <a href="#basedecode" id="basedecode"></a>

Essa função em Double *Braces* decodifica uma *string* em um formato base64.

### **Sintaxe**

BASEDECODE(value:string, \[charset:string - optional])

* **value:** *string* a ser decodificada
* **charset:** *charset* para a decodificação (padrão = UTF-8) (opcional)

Digamos que você precise decodificar uma *string*. Você pode fazer o seguinte:

```
{
"test": {{ BASEDECODE("eHB0bw==", "UTF-8") }}
}
```

O resultado esperado será:

```
{
"test": "xpto"
}
```

## BASEENCODE <a href="#baseencode" id="baseencode"></a>

Essa função em *Double Braces* codifica uma *string* em um formato base64.

### **Sintaxe**

BASEENCODE(value:string, \[charset:string - optional])

* **value:** *string* a ser codificada
* **charset:** *charset* para a codificação (padrão = UTF-8) (opcional)

Digamos que você precise codificar uma *string*. Você pode fazer o seguinte:

```
{
"test": {{ BASEENCODE("xpto", "UTF-8") }}
}
```

O resultado esperado será:

```
{
"test": "eHB0bw=="
}
```

## BASEURLDECODE

Essa função em *Double Braces* decodifica uma *string* em um formato base64 no padrão de uso para URL.

### **Sintaxe**

BASEDECODE(value:string, \[charset:string - optional])

* **value:** string a ser decodificada
* **charset:** charset para a decodificação (padrão = UTF-8) (opcional)

Digamos que você precise decodificar uma *string*. Você pode fazer o seguinte:

```
{
 "test": {{ BASEURLDECODE("eHB0bw", "UTF-8") }}
}

```

O resultado será:

```
{
 "test": "xpto"
}

```

## BASEURLENCODE&#x20;

Essa função em Double Braces codifica uma string em um formato base64 para uso em URL's.

### **Sintaxe**

BASEENCODE(value:string, \[charset:string - optional])

* **value**: *string* a ser codificada&#x20;
* **charset**: *charset* para a codificação (padrão = UTF-8) (opcional)

Digamos que você precise codificar uma *string*. Você pode fazer o seguinte:

```
{
 "test": {{ BASEURLENCODE("xpto", "UTF-8") }}
}

```

O resultado será:

```
{
 "test": "eHB0bw"
}

```

## UUID <a href="#uuid" id="uuid"></a>

Essa função em *Double Braces* gera um identificador único universal - o número de 128 bits é utilizado para identificar informações em sistemas.

### **Sintaxe**

UUID()

Digamos que você precise gerar um identificador único. Você pode fazer o seguinte:

```
{
"test": {{ UUID() }}
}
```

O resultado esperado será:

```
{
"test": "4caad555-09b5-479c-98b4-ac72ffbb486c"
}
```

## TOBOOLEAN <a href="#h_8373c1f27d" id="h_8373c1f27d"></a>

Utilizando *Double Braces*, você pode combinar a função com o acesso ao elemento do JSON de entrada de um componente.

A função permite que você converta um valor *string* para booleano.

### **Sintaxe**

TOBOOLEAN(valor)

Vamos supor que você precise converter os valores abaixo para booleano:

```
{
"string": "false",
"stringUpperCase": "TRUE",
"boolean": true,
"integer": 1,
"nullValue": null,
"object": {
"string": "abc"
}
}
```

Convertendo os valores:

```
{
"string": {{ TOBOOLEAN(message.string) }},
"stringUpperCase": {{ TOBOOLEAN(message.stringUpperCase) }},
"boolean": {{ TOBOOLEAN(message.boolean) }},
"integer": {{ TOBOOLEAN(message.integer) }},
"nullValue": {{ TOBOOLEAN(message.nullValue) }},
"object": {{ TOBOOLEAN(message.object) }}
}
```

O resultado será:

```
{
"string": false,
"stringUpperCase": true,
"boolean": true,
"integer": false,
"nullValue": false,
"object": false
}
```

Se a função for aplicada em *strings* com valores diferentes de "true", "false", "TRUE" e "FALSE", campos numéricos, campos nulos, objetos e *arrays*, a função sempre retornará o resultado *false*.

## SIZE <a href="#h_3cd70ce23f" id="h_3cd70ce23f"></a>

Essa função em Double Braces permite que o tamanho de *strings*, *arrays* e *objects* seja obtido.

### **Sintaxe**

SIZE(value, \[throwErrorOnUnexpectedType:boolean - optional])

* **value:** valor a ser verificado o tamanho
* **throwErrorOnUnexpectedType:** indica se será retornada uma exceção quando o parâmetro *value* for de um tipo não esperado pela função. Caso não informado, será assumido valor *true* e, quando informado valor *false*, o retorno da função será *null*.

Digamos que você precise obter o tamanho de um texto de uma propriedade *comments* contida em seu *payload*. Você pode utilizar o seguinte trecho no componente ***JSON Generator***:

```
{
"commentsSize": {{ SIZE(message.comments) }}
}
```

O resultado será um valor numérico que corresponde à quantidade de caracteres contida no texto:

```
{
"commentsSize": 1000
}
```

Agora digamos que exista um *JSON object* na seguinte estrutura:

```
{
"body":{
"field1": "test",
"field2": {
"field2.1": "testing"
}
}
}
```

É preciso verificar o tamanho desse objeto. Utilizando o ***JSON Generator*** novamente, veja a configuração do seguinte trecho:

```
{
"bodySize": {{ SIZE(message.body) }}
}
```

O resultado é a quantidade de propriedades contidas no objeto *body*:

```
{
"bodySize": 2
}
```

Nesse caso, a função considera apenas propriedades diretamente pertencentes ao objeto *body* e não considera propriedades aninhadas.

Também é possível verificar o tamanho de um *array*:

```
{
"array": [
10,20,30
]
}
```

Assumindo que o *array* acima, o ***JSON Generator*** é utilizado mais uma vez para configurar o seguinte trecho:

```
{
"arraySize": {{ SIZE(message.array) }}
}
```

Ao executar a função, este é o resultado que representando a quantidade de elementos contidos no *array*:

```
{
"arraySize": 3
}
```

A função SIZE espera valores dos tipos *string*, *array* e *object*. Quando algum valor que não seja desses tipos é passado, uma exceção é lançada. Porém, existe a opção de informar para a função não lançar exceção e simplesmente retornar *null*. Para isso, basta configurar o segundo parâmetro da função com o valor *false*.

Considere o seguinte *payload*:

```
{
"elements": 13
}
```

E a configuração do ***JSON Generator*** conforme abaixo:

```
{
"elementsSize": {{ SIZE(message.elements, false) }}
}
```

Após a execução, o resultado será o seguinte:

```
{
"elementsSize": null
}
```

Dessa forma, não será lançada exceção e poderá ser adotada alguma lógica de verificação no seu fluxo de integração.

## URIDECODE

Essa função permite que você decodifique uma *URI* (*string*).

### **Sintaxe**

URIDECODE( uri:string, \[charset:string - optional ] )

* **uri**: *string* a ser decodificada
* **charset**: *charset* para decodificação ( padrão = UTF-8 ) ( opcional )

Digamos que você precise decodificar uma URI. Você pode fazer o seguinte:

```
{
 "test": {{ URIDECODE("http%3A%2F%2Flocalhost%3A8080", "UTF-8") }}
}

```

O resultado será:

```
{
 "test": "http://localhost:8080"
}

```

## URIENCODE

Essa função permite que você codifique uma URI (*string*).

### **Sintaxe**

* **uri:** string a ser codificada
* **charset:** charset para codificação ( padrão = UTF-8 ) ( opcional )

Digamos que você precise codificar uma URI . Você pode fazer o seguinte:

```
{
 "test": {{ URIENCODE("http://localhost:8080", "UTF-8") }}
}
```

O resultado será:

```
{
 "test": "http%3A%2F%2Flocalhost%3A8080"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/double-braces-functions/utilities-functions.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.
