Funções de atributo

É possível usar as amostras e a sintaxe da API de configuração para criar funções customizadas.

Visão geral

Use as funções para referenciar, transformar e combinar valores de atributos antes de serem transmitidos para um aplicativo na forma de um token de autenticação de conexão única ou quando provisionar contas. IBM® VerifyAs funções podem acessar as credenciais da fonte de identidade utilizadas para autenticação, o objeto de usuário (no formato SCIM) armazenado no Cloud Directory e qualquer ponto de extremidade de API externo. Por exemplo, um atributo que é chamado formalDisplayName pode ser criado como um atributo de valor fixo, e uma função que concatene user.name.givenName e user.name.familyName de maneira especificada pode ser especificada.
Nota: A sintaxe da função é semelhante à do C e do JavaScript™. No entanto, baseia-se em uma linguagem de expressões de linha única, a Extensão da Linguagem de Expressões Comuns ( Google ).

Para configurar atributos avançados de regras, no Console de administração, acesse Diretório > Atributos. Em seguida, mapeie esses atributos na configuração do aplicativo, da mesma forma que se faz com todos os outros tipos de atributos.

Objetos de domínio

O termo objetos de domínio é uma frase de catch-all que é usada para indicar todos os objetos possíveis que podem ser acessados em uma função customizada de um atributo.

Usuário do Cloud Directory

Para cada usuário que se autentica, Verify é criada uma conta de usuário no Cloud Directory. Esta conta é representada como um objeto SCIM. Nos exemplos a seguir, a conta do usuário do Cloud Directory a seguir é usada.

O objeto SCIM a seguir é a conta do usuário.
{
  "id": "600000A3DD",
  "userName": "google-oauth2|1033116550041553242@jke.samlfed.com",
  "emails": [
    {
      "type": "work",
      "value": "jessica@jke.com"
    }
  ],
  "meta": {
    "created": "2019-04-26T09:21:35Z",
    "location": "https://jke.cloudidentity.com/v2.0/Users/600000A3DD",
    "lastModified": "2019-04-26T09:21:35Z",
    "resourceType": "User"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
    "urn:ietf:params:scim:schemas:extension:ibm:2.0:User"
  ],
  "name": {
    "formatted": "Jessica Hill",
    "familyName": "Hill",
    "givenName": "Jessica"
  },
  "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
    "manager": {
      "value": "6030101TP6"
    }
  },
  "urn:ietf:params:scim:schemas:extension:ibm:2.0:User": {
    "userCategory": "federated",
    "twoFactorAuthentication": false,
    "realm": "jke.samlfed.com",
    "unqualifiedUserName": "google-oauth2|1033116550041553242",
    "customAttributes": [
        { 
          "name": "car",
          "values": [ "Ford Mustang Mach-E", "Maruti Suzuki 800" ]
        },
        {
          "name": "hobbies",
          "values": [ "Reading", "Running", "Gaming", "Star Wars" ]
        }
    ]
  },
  "active": true
}
Nota: No objeto SCIM, estão definidos dois atributos personalizados: car e hobbies. Esses atributos são extensões de esquema que podem ser configuradas por meio do Console Administrativo. É possível adicionar valores ao objeto de usuário por meio da Verify API de Usuários.
Sintaxe Descrição Exemplos
user.$property Acesse o $property. Ambos . e [".."] podem ser usados.
user.name.familyName + ", " + user.name["givenName"]

Resultado:

Hill, Jessica
user.$values.filter(x, $condition) $values: uma lista. A função filter extrai valores baseados em $condition.
user.emails.filter(x, x.type == "work")[0].value

Resultado:

jessica@jke.com
user.getCustomValues($attrName) Função para obter valores de atributos personalizados como uma lista. $attrName: O nome do atributo no objeto do usuário retorna null se o atributo não existir.
user.getCustomValues("car")

Resultado:

["Ford Mustang Mach-E","Maruti Suzuki 800"]
user.getCustomValue($attrName) Função para obter o valor do primeiro atributo personalizado da lista. $attrName: O nome do atributo no objeto do usuário. Retorna uma string vazia ("") se o atributo não existir.
user.getCustomValue("hobbies")

Resultado:

Reading
user.getManager() Função para obter as informações do gerente do usuário atual. A função retorna a conta de usuário do gerenciador (como um objeto SCIM). Se nenhum gerenciador for especificado para o usuário, ele retornará um objeto JSON vazio. Se for retornado um objeto gerenciador, ele pode ser usado da mesma forma que o objeto usuário, ou seja, é possível chamar as diversas funções desse objeto.
user.getManager().name.formatted

Resultado:

Jacob Jones
user.getRoles() Função para obter as permissões do usuário atual. A função retorna a lista de permissões do usuário como um objeto JSON. Se a lista de direitos for retornada, ela pode ser usada como um objeto JSON.
user.getRoles().resources[0].name

Resultado:

Basic access
user.getFIDO2Registrations($search) Função para obter os registros do FIDO2 do usuário atual. A função retorna a lista de registros do site FIDO2 que pertencem ao usuário. É possível fornecer parâmetros $search de pesquisa, se desejar. Os parâmetros de pesquisa compatíveis podem ser encontrados aqui: https://docs.verify.ibm.com/verify/reference/getfidoregistrations_v20
user.getFIDO2Registrations("enabled=true").fido2[0].enabled

Resultado:

true
user.getFIDO2RegistrationByID($id) Função para obter o registro do usuário atual no FIDO2 com o ID $id.
user.getFIDO2RegistrationByID("e8bf1dac-8245-452b-b7c4-8a700a1eb078").fido2[0].id

Resultado:

e8bf1dac-8245-452b-b7c4-8a700a1eb078
user.getDynamicGroups() Função para obter os grupos dinâmicos do usuário atual. A função retorna a lista de grupos dinâmicos do usuário como um objeto JSON.
user.getDynamicGroups().resources[0].name

Resultado :

Security department manager

Funções de gerenciamento de usuários

As seguintes funções estão disponíveis no CELx caso seja necessário realizar operações de leitura, criação e atualização em relação aos usuários do Cloud Directory.

A resposta dessas funções é um objeto `map`, conforme definido abaixo. Isso permite flexibilidade para realizar o tratamento de erros na função CELx. error Uma string vazia significa que a operação foi bem-sucedida.
{
"result": <result of the operation>,
"error": <error message, in case of failures>
}
Sintaxe Descrição Exemplos
findUsers($filter) A função retorna uma lista de usuários que correspondem ao filtro especificado.

$filter: String que define os critérios de correspondência no formato definido na API GET Users. É aplicado um limite máximo de 10 usuários para a resposta da pesquisa.

Se nenhum usuário for encontrado, será retornada uma lista vazia.

findUsers('emails ew "@jke.com"')
findUsers($filter, $attributes) A função retorna uma lista de usuários que correspondem ao filtro especificado. Cada usuário correspondido retorna os atributos especificados no $attributes argumento.

$filter: A sequência de caracteres que define os critérios de correspondência.

$attributes: A matriz de strings de ` scimNames ` que deve ser retornada no resultado.

Consulte o formato dos parâmetros de consulta definido na API GET Users. É aplicado um limite máximo de 10 usuários para a resposta da pesquisa.

Se nenhum usuário for encontrado, será retornada uma lista vazia.

findUsers('emails ew "@jke.com"', ["emails", "name.givenName"])
findUsers($filter, $attributes, $count) A função retorna uma lista de usuários que correspondem ao filtro especificado, com um limite máximo de $count. Cada usuário correspondido retorna apenas os atributos especificados no $attributes argumento.

$filter: A sequência de caracteres que define os critérios de correspondência.

$attributes: Uma matriz de strings do tipo ` scimNames ` que deve ser retornada no resultado.

$count: Número inteiro para especificar o número máximo de usuários a serem retornados, com um limite máximo de 10. Qualquer valor acima de 10 é ignorado e definido como 10. Consulte o formato dos parâmetros de consulta definido na API GET Users.

Se nenhum usuário for encontrado, será retornada uma lista vazia.

findUsers('emails ew "@jke.com"', ["emails", "name.givenName"], 3)
findUser($filter) A função retorna um único usuário que corresponde ao filtro especificado.

$filter: A string que define os critérios de correspondência no formato definido na API GET Users.

É retornado um erro se forem encontrados vários usuários correspondentes ou se nenhum usuário for encontrado.

findUser('emails eq "jessica@jke.com"')
findUser($filter, $attributes) A função retorna um único usuário que corresponde ao filtro especificado. O usuário retorna apenas os atributos especificados no $attributes argumento.

$filter: String que define os critérios de correspondência.

$attributes: Matriz de strings com os valores ` scimNames ` que devem ser retornados no resultado. Consulte o formato dos parâmetros de consulta definido na API GET Users.

É retornado um erro se forem encontrados vários usuários correspondentes ou se nenhum usuário for encontrado.

findUser('emails eq "jessica@jke.com"', ["emails", "name.givenName"])
getUser($uid) $uidA função retorna o usuário associado ao. É retornado um erro se o usuário não existir.
getUser("504K8664N6")
createUser($m) A função cria um usuário com os valores de atributos especificados.

$m: Uma tabela com o ID/nome do atributo e o valor desejado pelo usuário.

Os IDs dos atributos podem ser encontrados na resposta da API de Atributos GET. O ID e o nome do atributo podem ser usados indistintamente.

Os valores dos email atributos e username são obrigatórios. Os demais valores são opcionais.

Para definir a senha do novo usuário, inclua uma propriedade em $m com o nome password e a senha em texto simples como valor.

Se a operação for bem-sucedida, o objeto SCIM do usuário criado é retornado em result.

createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'})
createUser($m, $opts) A função cria um usuário com os valores de atributos especificados e opções adicionais.

$m: Uma tabela com o ID/nome do atributo e o valor desejado pelo usuário.

$opts: Um mapa das opções adicionais que podem ser especificadas ao criar um usuário.

Os IDs dos atributos podem ser encontrados na resposta da API de Atributos GET. O ID e o nome do atributo podem ser usados indistintamente.

Os valores dos email atributos e username são obrigatórios. Os demais valores são opcionais. Para definir a senha do novo usuário, inclua uma propriedade em $m com o nome password e a senha em texto simples como valor.

Atualmente, as seguintes propriedades são permitidas em $opts:

  • notifyType : A propriedade especifica o tipo de notificação a ser enviada ao usuário. O valor padrão é EMAIL.
  • notifyPassword : Booleano para indicar se a senha do usuário é incluída na notificação enviada a ele. O valor padrão é true. Este atributo não se aplica se notifyType estiver definido como NONE.
  • notifyManager : Booleano que indica se a notificação deve ser enviada ao gerente do usuário (caso haja um definido) quando a senha do usuário for definida ou alterada. O valor padrão é false. Este atributo não se aplica se notifyType estiver definido como NONE.
  • acceptInitialPassword : Se definido como true, o usuário não é obrigado a alterar a senha no primeiro login.

Se a operação for bem-sucedida, o objeto SCIM do usuário criado é retornado em result.

createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'}, {'notifyType':'NONE', 'acceptInitialPassword': 'true'})
updateUser($uid, $m)

A função atualiza o usuário indicado com os valores de atributos especificados.

$uid: O ID do usuário a ser atualizado.

$m: Uma tabela com o ID/nome do atributo e o valor desejado pelo usuário.

Os IDs dos atributos podem ser encontrados na resposta da API de Atributos GET. O ID e o nome do atributo podem ser usados indistintamente.

Uma atualização bem-sucedida retorna success uma string como resultado. O objeto do usuário não é retornado.

updateUser('6050007SGF', {'3':'jessica@redbank.com', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'President', 'mobile_number': '502513585', 'work_country': 'Singapore'})
Credencial de origem de identidade
Quando um usuário faz login no Verify, os atributos das credenciais da fonte de identidade são adicionados à sessão de login e podem ser acessados em uma função personalizada. Considere que o usuário efetue login com um provedor de identidade federado SAML e a asserção SAML contenha uma instrução de atributo que é chamada de userRoles e ela seja configurada como marketing e helpdesk.
O atributo idsuser está disponível como um mapa com uma chave de sequência e um valor de matriz de sequência. Por exemplo,
{
  "userRoles": ["marketing", "helpdesk"],
  "displayName": ["Jessica J. Hill"],
  "phone": ["+12324321234"],
  "employeeId": "eid1234"
}
Sintaxe Descrição Exemplos
idsuser.$property Acesse $property. O valor em idsuser é sempre uma matriz de sequências.
idsuser.userRoles[1]

Resultado:

helpdesk
idsuser.getValue($property) Retorna o valor de $property como uma sequência. Se a matriz de valor tiver várias entradas, o primeiro item será retornado. Se o $property não existir, uma sequência vazia será retornada.
idsuser.getValue('userRoles') 

Resultado:

"Marketing"
idsuser.getValues($property) Retorna todos os valores de $property como uma matriz de sequência. Se o $property não existir, um objeto nil será retornado.
idsuser.getValues('userRoles') 

Resultado:

["Marketing", "helpdesk]"
Contexto de solicitação de HTTP

Quando um usuário faz login no IBM Verify, o contexto da solicitação recebida HTTP pode ser acessado em uma função personalizada. Se o usuário efetuar login com um fluxo OAuth, e o cliente enviar informações client-ip e user-agent, requestContext poderá extrair as informações. Ele pode ser usado para chamar um terminal externo para determinar a pontuação de risco para o usuário.

requestContext está disponível como um mapa com uma chave de sequência e um valor de matriz de sequência. Por exemplo,
{
  "User-Agent": ["Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"],
  "devicePlatform": ["MACOS"],
  "x-forwarded-for": ["116.15.12.181"]
}
Tabela 1. HTTP contexto da solicitação
Sintaxe Descrição exemplo
requestContext.$property Acesse $property. O valor em requestContext é sempre uma matriz de sequências.
requestContext.devicePlatform[1]

Resultado:

MACOS
requestContext.getValue($property) Retorna o valor de $property como uma sequência. Se a matriz de valor tiver várias entradas, o primeiro item será retornado. Se o $property não existir, uma sequência vazia será retornada.
requestContext.getValue('x-forwarded-for')

Resultado:

116.15.12.181
requestContext.getValues($property) Retorna todos os valores de $property como uma matriz de sequência. Se o $property não existir, um objeto inexistente será retornado.
requestContext.getValues('x-forwarded-for')

Resultado:

["116.15.12.181"]
Contexto de atributo
O objeto de contexto contém pares de chave e valor de determinadas propriedades do atributo que podem ser usadas ao escrever funções. Os valores dessas propriedades são válidos apenas no contexto da consulta desse atributo. Este objeto pode ser acessado com a chave ctx.
As propriedades a seguir estão disponíveis com o objeto de contexto:
Sintaxe Descrição Exemplos
ctx.currentValue Acesse o valor do atributo avaliado antes de executar esta função. O tipo de dados desse valor é especificado na configuração do atributo. Se o valor não puder ser exibido em cascata para o tipo de dados, esse valor será configurado como nulo.
ctx.currentValue.toUpper

Operadores padrão

Os operadores que são suportados em funções de atributo incluem a lista padrão disponível em qualquer linguagem de programação. Por exemplo, +, -, *, /, >, <. O + pode ser usado para concatenar sequências.
Operador Descrição Exemplos
== Comparação de igualdade
user.name.givenName == "Jessica"
!= Comparação de desigualdade
idsuser.myroles[0] == "marketing"
|| Comparação lógica OR
user.name.givenName == "Jessica" || user.name.formatted.startsWith("Hill")
&& Comparação lógica AND
1 == 1 && 2 == 2
[ ] Acesso ao mapa
user["name"]["givenName"]
+ Concatenação e inclusão, dependendo do tipo
"Hello" + " " + "World"
- Subtração
10 - 5
* Multiplicação
5 * 2
/ Divisão
20 / 4
> Condição de maior que
1 > 2
< Condição de menor que
1 < 2
>= Maior que ou igual a
1 >= 1
<= Menor que ou igual a
1 <= 1
? Ternário, se operador
a == b ? true : false

Funções Padrão

As funções de atributo podem usar funções padrão para executar tarefas, como manipulação de valores de atributos e acesso aos elementos em uma lista.
Tabela 2. Funções de cadeia de caracteres
Sintaxe Descrição Exemplos
$string.contains($fragment) Verifica se $fragmento está presente em $string.
"helloworld".contains("hello")

Resultado:

true
$string.endsWith($fragment) Verifica se $string termina com $fragment.
"hello world".endsWith("old")

Resultado:

false
$string.matches($regex) Verifica se o $regex corresponde ao padrão em $string.
"foo".matches("k.*")

Resultado:

false
$string.toUpper() Converte $string em maiúsculas.
"hello".toUpper()

Resultado:

HELLO
$string.toLower() Converte $string em minúsculas.
"HEllO".toLower()

Resultado:

hello
$string.base64Encode() Base64 codifica $string.
"hello".base64Encode()

Resultado:

aGVsbG8=
$string.base64Decode() Base64 decodifica $string.
"aGVsbG8=".base64Decode()

Resultado:

hello
$string.base64URLEncode() Base64URL codifica $string.
"hello_world!".base64URLEncode()

Resultado:

aGVsbG9fd29ybGQh

$string.base64URLDecode() Base64URL decodifica $string.
"aGVsbG9fd29ybGQh".base64URLDecode()

Resultado:

hello_world!

$string.size() Tamanho do $string
"hello".size()

Resultado:

5
$string.substring($begin,$end) Retorna a sequência entre $begin index (including) e $end index (excluding).
"hello".substring(1,4)

Resultado:

ell
$string.split($delim) Retorna a matriz de sequências que são divididas pelo $delim.
"hello".split("e")

Resultado:

["h","llo"]
$string.replaceAll($old,$new) Substitui todas as ocorrências de $old por $new.
"hello".replaceAll("l","p")

Resultado:

heppo
$string.matchAndReplaceAll($regex, $newStr) Substitui todas as correspondências de $regex por $newStr.
"some12#$text".matchAndReplaceAll("[^a-zA-Z]+", "-")

Resultado:

some-text
$string.indexOf($str) Retorna o índice da primeira ocorrência de $str.
"hello".indexOf("l")

Resultado:

2
$string.lastIndexOf($str) Retorna o índice da última ocorrência de $str.
"hello".lastIndexOf("l")

Resultado:

3
Tabela 3. Funções de lista
Sintaxe Descrição Exemplos
$values.size() Tamanho da lista $values
["hello", "world"].size()

Resultado:

2

$values.filter(x, $condition) Filtra $values por $condition.
["hello", "world", "helios"].filter(x,
            x.startsWith("hel"))

Resultado:

["hello", "helios"]

$values.all(x, $condition) Verifica se todos os $values atendem a $condition.
["hello", "world", "helios"].all(x,
            x.contains("hel"))

Resultado:

false

$values.exists(x, $condition) Verifica se algum valor atende a $condition.
["hello", "world", "helios"].exists(x,
            x.contains("hel"))

Resultado:

true

$values.exists_one(x, $condition) Verifica se exatamente um valor atende a $condition.
["hello", "world", "helios"].exists(x,
            x.contains("hel"))

Resultado:

false

$values.map(x, $op) Executa $op em cada valor.
["hello", "world", "helios"].map(x, x.toUpper())

Resultado:

["HELLO","WORLD","HELIOS"]

stringToJson($s) Converte a string $s em uma matriz JSON.
stringToJson('[{\"hello\":\"world\"},{\"key\":\"value\"}]')

Resultado:

[{"hello":"world"},{"key":"value"}]

jsonToString($json) Converta a lista $json em uma sequência.
jsonToString(["hello","world","helios"])

Resultado:

"[\"hello\",\"world\",\"helios\"]

joinStrings($values, $s) Junte as sequências na lista $values com o separador $s.
joinStrings(['hello','world','helios'], ' + ')

Resultado:

"hello + world + helios"

$values.flatten() Converte uma lista de listas $values em uma única lista.
[[1,2],["a","b","c"]].flatten()

Resultado:

[1,2,"a","b","c"]

Observação: você também pode aplicar funções de lista a objetos de mapa. A função é executada com relação a uma lista das chaves no Mapa. Por exemplo, se a entrada contiver:
{
idsuser: {
"attr1":"value1",
"attr2":"value2"
}
}
em seguida, para a função idsuser.exists(x, $condition), x é [ "attr1", "attr2" ].
Tabela 4. Funções hash
Sintaxe Descrição Exemplos
sha256($value) Calcula o valor do hash sha256 para a sequência especificada. O resultado é uma representação em forma de string de um valor hexadecimal.
sha256('hello')

Resultado:

`2cf24dba...`

sha512($value) Calcula o valor do hash sha512 para a sequência especificada. O resultado é uma representação em forma de string de um valor hexadecimal.
sha512('hello')

Resultado:

`9b71d224...`

hmacSha1($value, $key) Calcula o valor HMAC-SHA1 com a chave $key para a sequência determinada. O resultado é uma representação em forma de string de um valor hexadecimal.
hmacSha1('hello','key')

Resultado:b34ceac4516ff23a143e61d79d0fa7a4fbe5f266

Tabela 5. Hex/Base64 Funções
Sintaxe Descrição Exemplos
base64ToHex($value) Converte a string $value do tipo " base64-encoded " em um valor hexadecimal.
base64ToHex('Gis8Tw==')

Resultado:

1a2b3c4f

hexToBase64($value) Converte o valor hexadecimal $value em uma string do tipo ` base64-encoded `.
hexToBase64('1a2b3c4f')

Resultado:

Gis8Tw==

base64URLEncodedToHex($value) Converte a string $value do tipo " base64URL-encoded " em um valor hexadecimal.
base64URLEncodedToHex('Gis8TV5v')

Resultado:

1a2b3c4d5e6f

hexToBase64URLEncoded($value) Converte o valor hexadecimal $value em uma string do tipo ` base64URL-encoded `.
hexToBase64URLEncoded('1a2b3c4d5e6f')

Resultado:

Gis8TV5v

Tabela 6. Funções de mapeamento e de objeto
Sintaxe Descrição Exemplos
has($m.$p) Verifique se o mapa $m contém a propriedade $p.
has({ "hello": "world" }.hello)

Resultado:

true

has($m, $p) Verifica se o mapa $m contém a propriedade $p. Isso é útil para nomes de propriedades que contêm caracteres especiais (por exemplo, pontos).
has({ "email.address": "abc@email.com"}, "email.address")

Resultado:

true

jsonToString($m) Converta o mapa $m em uma string
jsonToString({"hello":"world"})

Resultado:

"{\"hello\":\"world\"}"

stringToJson($s) Converte a sequência de caracteres $s em um mapa.
stringToJson("{\"hello\":\"world\"}")

Resultado:

{"hello": "world"}

jsonToFormURLEncoded($m, $doUrlEncode) Converte o mapa $m em um formulário. Se $doUrlEncode estiver definido como true, o formulário é codificado em formato ` URL `.
jsonToFormURLEncoded({'hello':'world', 'key1':'value 1'}, true)

Resultado:

"hello=world&key1=value+1"

$m.put($k, $v) Inserir a chave $k do tipo string com o valor $v do tipo object no mapa $m. $v$kSe o mapa $m já continha um valor para a chave, o valor antigo é substituído pelo novo valor.
{"hello": "world"}.put("key1",
    "value1")

Resultado:

"{"hello": "world", "key1": "value1"}
$m.putAll($v) Inserir o conteúdo do mapa $v no mapa $m. $v$vSe o mapa $m já continha um valor para uma chave presente no mapa, o valor antigo no mapa $m é substituído pelo valor do mapa.
{"hello": "world"}.putAll({"key1": "value1", "test":
      true})

Resultado:

"{"hello": "world", "key1": "value1", "test": true}
$m.remove($k) Remove o mapeamento da chave $k do tipo string do mapa $m , caso exista.
{"hello": "world", "key1":
    "value1"}.remove("key1")

Resultado:

{"hello": "world"}
$m.removeAll($l) Remove todos os mapeamentos da lista de chaves $l do mapa $m , caso existam.
{"hello": "world", "key1": "value1", "test":
      true}.removeAll(["key1", "test"])

Resultado:

{"hello": "world"}
Observação: Para verificar se existe uma propriedade que reserve caracteres no nome, use a exists função List.
idsuser.exists(x, x == "ext:idsource_attr1")
Ela retorna true se a propriedade existe e false caso contrário.
Tabela 7. Funções de data e hora
Sintaxe Descrição Exemplos
now Retorna um objeto de registro de data e hora do horário atual.
now

Resultado:

"2021-08-17T08:24:58Z"
timestamp($s) Retorna um objeto de data e hora convertendo a string de entrada $s de acordo com RFC3339.
timestamp(1629188698)

Resultado:

"2021-08-17T08:24:58Z"

$t.getDate() Retorna o dia do mês a partir do registro de data e hora $t como uma indexação baseada em um, de número inteiro.
timestamp('2021-08-17T08:24:58Z').getDate()

Resultado:

17
$t.getDayOfMonth() Retorna o dia do mês a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro.
timestamp('2021-08-17T08:24:58Z').getDayOfMonth()

Resultado:

16
$t.getDayOfWeek() Retorna o dia da semana a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro, para domingo.
timestamp('2021-08-17T08:24:58Z').getDayOfWeek()

Resultado:

2
$t.getDayOfYear() Retorna o dia do ano a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro.
timestamp('2021-08-17T08:24:58Z').getDayOfYear()

Resultado:

228
$t.getMonth() Retorna o mês a partir do registro de data e hora $t como uma indexação baseada em zero, de número inteiro.
timestamp('2021-08-17T08:24:58Z').getMonth()

Resultado:

7
$t.getFullYear() Retorna o ano a partir do registro de data e hora $t como um número inteiro.
timestamp('2021-08-17T08:24:58Z').getFullYear()

Resultado:

2021
$t.getHours() Retorna as horas do carimbo de data/hora $t como um número inteiro.
timestamp('2021-08-17T08:24:58Z').getHours()

Resultado:

8
$t.getMinutes() Retorna os minutos a partir do registro de data e hora $t como um número inteiro.
timestamp('2021-08-17T08:24:58Z').getMinutes()

Resultado:

24
$t.getSeconds() Retorna os segundos a partir do registro de data e hora $t como um número inteiro.
timestamp('2021-08-17T08:24:58Z').getSeconds()

Resultado:

58
$t.getMilliseconds() Retorna os milissegundos a partir do registro de data e hora $t como um número inteiro.
timestamp('2021-08-17T08:24:58.642Z').getMilliseconds()

Resultado:

642
int($t) Converte o carimbo de data/hora int64 em segundos desde a época UNIX®.
int(timestamp('2021-08-17T08:24:58Z'))

Resultado:

1629188698
duration($d) A duração $d deve ser dada como uma sequência que termina com "s", o que denota a duração em segundos.
timestamp('2021-08-17T08:24:58Z') + duration('3600s')

Resultado:

"2021-08-17T09:24:58Z"
formatTime($t, $s) Retorna o registro de data e hora $t no formato $s. É $s necessário usar a data de referência "Segunda-feira, 02-January-06 15:04:05 MST" no formato desejado.
formatTime(timestamp('2021-08-17T08:24:58Z'), 'Monday, 02-Jan-06 15:04:05 MST')

Resultado:

"Tuesday, 17-August-21 08:24:58 UTC"

Tabela 8. Funções de codificação e decodificação de URI
Sintaxe Descrição Exemplos
encodeURI($uri) Retorna uma string que representa a string $uri fornecida, codificada como um URI. Este método escapa todos os caracteres, exceto: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #.
encodeURI('test.html?name=Jürgen&car=audi')

Resultado:

"test.html?name=J%C3%BCrgen&car=audi"
decodeURI($uri) $uriRetorna uma string que representa a versão decodificada do URI codificado.
decodeURI('test.html?name=J%C3%BCrgen&car=audi')

Resultado:

"test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi"
encodeURIComponent($uri) Retorna uma string que representa a string $uri fornecida, codificada como um componente de URI. Este método escapa todos os caracteres, exceto: A-Z a-z 0-9 - _ . ! ~ * ' ( ).
encodeURI('test.html?name=Jürgen&car=audi')

Resultado:

"test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi"
decodeURIComponent($uri) $uriRetorna uma string que representa a versão decodificada do componente URI codificado.
decodeURIComponent('test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi')

Resultado:

"test.html?name=Jürgen&car=audi"

Funções UUID

Sintaxe Descrição Exemplos
genUUID() Gera um UUID com base na RFC 4122 e nos Serviços de Autenticação e Segurança do DCE ( 1.1: ).
genUUID()

Resultado:

4eb1a3f3-5461-4b91-8d69-69e25f2a1b6a

Funções de tipo e conversão

Sintaxe Descrição Exemplos
type($value) Retorna o tipo de $value.
type(1234)

Resultado:"int"

type("hello")

Resultado:

"string"
bool($string) Converte a string $string em um valor booleano. Os valores válidos para true são "true", "True", e "TRUE".

Os valores válidos para false são "false", "False", e "FALSE".

bool("true")

Resultado:

true

bool("FALSE")

Resultado:

false
bytes($string) Converte a sequência de caracteres $string em bytes.
bytes("Hello")

Resultado:

"aGVsbG8="
double($value) Converte o valor $value em um número do tipo double. O tipo $value pode ser um dos seguintes: int, uint ou string.
double(10)/4.0

Resultado:

2.5

double("3.14")

Resultado:

3.14

int($value) Converte o valor $value em um inteiro. O tipo $value pode ser um dos seguintes: double, uint, string, enum ou timestamp. Se for fornecido um carimbo de data/hora, o valor retornado é o segundo em relação à Época d Unix.
int(10.0/4)

Resultado:

2

int(3.14)

Resultado:

3

int("123")

Resultado:

123

int(now)

Resultado:

1742801032
uint($value) Converte o valor $value em um inteiro sem sinal. O tipo $value pode ser um dos seguintes: double, int ou string.
uint(3.14)

Resultado:

3

uint("123")

Resultado:

123
string($value) Converte o valor $value em uma string. O tipo $value pode ser um dos seguintes: bool, int, uint, double, bytes, timestamp ou duration. Se for fornecida uma duração, o valor é convertido em segundos e frações de segundo, com o sufixo "s". Se for fornecido um carimbo de data/hora, o valor é convertido para o formato RFC3339.
string(true)

Resultado:

"true"

string(1234)

Resultado:

"1234"
string(b'helllo')

Resultado:

"hello"
string(duration('1m100ms'))

Resultado:

"60.1s"

string(now)

Resultado:

"2025-03-24T07:42:51Z"

Cliente HTTP

As funções de atributo podem ser escritas para chamar os terminais da API externa para obter valores.
Nota:
  • O token do Cabeçalho de autorização deve ser gerado pelo consumidor. Por exemplo, ele pode ser uma chave de API de longa duração que é integrada à função.
Sintaxe Descrição Exemplos
hc.Get($url, $headers)

Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta será retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma string para qualquer outro tipo de conteúdo. $url: URL O endereço do endpoint da API deve ser um URL completo URL

{"headerName":"headerVal"}$headers: JSON objeto no formulário.

hc.Get("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"})

Resultado:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"value":"someValue"}}

hc.GetAsString($url, $headers) Retorna a resposta como uma sequência serializada. $url: URL do terminal da API deve ser um objeto $headers: JSON de URL integral no formulário {"headerName":"headerVal"}.
hc.GetAsString("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"})

Resultado:

"{\"value\":\"someValue\"}"

hc.GetAsJson($url, $headers) Analisa a resposta como um objeto JSON. $url: URL do terminal da API deve ser um objeto $headers: JSON de URL integral no formulário {"headerName":"headerVal"}.
hc.GetAsJson("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"}).value

Resultado:

"someValue"

hc.Post($url, $headers, $body) Retorna o código de status, os cabeçalhos de resposta e o corpo de resposta. O corpo de resposta será retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma sequência para qualquer outro tipo de conteúdo.

$url - O parâmetro ` URL ` do endpoint da API deve ser um endereço URL completo.

$headers - objeto JSON no formulário {"headerName":"headerVal"}

$body - Solicitar o corpo na forma de uma sequência.

hc.Post("https://api.jke.com/resources", {"Authorization": "Some token"}, "{\"key\":\"value\"}")

Resultado:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Patch($url, $headers, $body) Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta é retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma string para qualquer outro tipo de conteúdo.

$url: O endereço URL do endpoint da API deve ser um endereço URL completo.

{"headerName":"headerVal"}$headers: Objeto JSON no formulário.

$body: corpo da solicitação na forma de uma string.

hc.Patch("https://api.jke.com/resources", {"Authorization": "Some token"}, "{\"key\":\"value\"}")

Resultado:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Put($url, $headers, $body) Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta será retornado como um objeto JSON se o tipo de conteúdo for application/json ou como uma string para qualquer outro tipo de conteúdo.

$url: O endereço URL do endpoint da API deve ser um endereço URL completo.

{"headerName":"headerVal"}$headers: Objeto JSON no formulário.

$body: corpo da solicitação na forma de uma string.

hc.Put("https://api.jke.com/resources", {"Authorization": "Some token"},
      "{\"key\":\"value\"}")

Resultado:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}
hc.Delete($url, $headers) Retorna o código de status, os cabeçalhos da resposta e o corpo da resposta. O corpo da resposta será retornado como um objeto JSON se o tipo de conteúdo for application/JSON, ou como uma string para qualquer outro tipo de conteúdo.

$url: O parâmetro ` URL ` do endpoint da API deve ser um endereço URL completo.

$headers: O objeto JSON no formulário

{"headerName":"headerVal"}
hc.Delete("https://api.jke.com/resources", {"Authorization": "Some token"})

Resultado:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Opts($options) $options: Oito sinalizações são suportadas atualmente:
  1. insecure: Indica que a conexão SSL pode ser insegura.
  2. certLabel: Rótulo do certificado de assinante que é transferido por upload para o locatário de CI.
  3. tlsMinVersion: A versão mínima do TLS que é suportada. As opções disponíveis são TLSv1.0, TLSv1.1, TLSv1.2. Se essa sinalização não for especificada, a versão mínima do TLS será configurada como TLSv1.2.
  4. followRedirects: Indica se o cliente HTTP segue redirecionamentos. Se um valor não for especificado, a configuração será padronizada para false.
  5. Booleano cache: indicando se a resposta está armazenada em cache. A configuração padroniza para true para chamadas GET e padroniza para false para outros métodos HTTP.
  6. cacheExpiry: O tempo de vida da resposta em cache em segundos, máximo de 1 hora (3.600 minutos). Se o tempo de vida não for especificado, a configuração será padronizada para 60 segundos.
  7. mtls: booleano indicando se o TLS mútuo deve ser ativado para a solicitação. Se o valor for configurado como true, os valores para as seguintes sinalizações serão ignorados: insecure, certLabel, tlsMinVersion, followRedirects.
  8. mtlsCert: o rótulo para um certificado pessoal existente a ser fornecido para a solicitação do MTLS.
Esta função responde com uma instância hc, portanto, GetAsJSON e GetAsString podem ser chamadas.
hc.Opts({"certLabel": "jkeCA","insecure":false,
"tlsMinVersion":"TLSv1.2", "followRedirects":true,"cache":true,
"cacheExpiry":"1200"}).GetAsString(...)
Observação: O tamanho máximo do corpo da resposta é limitado a 4 MB por solicitação.
URL Restrições
$protocol://$host[:$port]O endereço URL do endpoint da API fornecido ao cliente HTTP deve ser um endereço URL completo no formato.
  1. O $protocol deve ser 'http' ou 'https'.
  2. O nome $host deve ser um nome de domínio totalmente qualificado (FQDN). Não são permitidos endereços IP.
  3. O número $port da porta é opcional. As seguintes portas são compatíveis com o cliente HTTP. O uso de qualquer outra porta resulta em um tempo limite.
    • Portas 80, 443 e 8088
    • Intervalo de portas 7000-7050
    • Intervalo de portas 8000-8050
Armazenamento em cache de resposta do cliente HTTP

O armazenamento em cache de resposta HTTP é ativado por padrão para chamadas GET (GetAsString e GetAsJSON) com uma validade de cache padrão de 1 minuto. Ele é desativado por padrão para chamadas POST. Para substituir as configurações padrão para o armazenamento em cache de resposta do cliente HTTP, a sinalização cache deve ser incluída no hc.Opts com o valor de true ou false. O tempo de vida do cache é configurado para 60 segundos por padrão. Para substituir o tempo de vida do cache padrão, a sinalização cacheExpiry deve ser incluída no hc.Opts com o valor em segundos, até um máximo de 3.600 segundos (uma hora).

Risco adaptativo

Use as funções de risco de acesso adaptativo para acessar o nível de risco de sessão do usuário atual e os dados de autorização associados.

Uma política de acesso adaptativo deve ser avaliada pelo menos uma vez na sessão antes de usar o atributo customizado para garantir que os dados sejam preenchidos, caso contrário, o valor “NOT_AVAILABLE” será retornado.

As funções de risco do Acesso Adaptativo permitem acessar as condições da política de acesso correspondentes exibidas no Editor de Políticas, conforme descrito em Gerenciamento de regras de política do Acesso Adaptativo.

Os detalhes dos indicadores de risco estão descritos na seção “Indicações de risco ”.

Os indicadores-chave dos dados de risco são estruturados como JSON e podem ser vistos no exemplo a seguir. Essa estrutura JSON pode ser acessada usando a função risk.getAdaptiveSessionData().

A resposta de dados de risco adaptativo completo que está relacionada com a sessão do usuário pode ser acessada usando a função risk.getRawAdaptiveSessionData() .

{
  "riskLevel": "LOW", 
  "isNewDevice": false, 
  "isRiskyDevice": false, 
  "isRiskyConnection": false, 
  "remoteIP": "122.143.222.333", 
  "country": "ISR", 
  "city": "Jerusalem", 
  "isp": "013 Netvision", 
  "isNewLocation": false, 
  "behavioralAnomaly": false,
  "userBehavioralScore":"100"
}
Sintaxe Descrição Exemplos
risk.getAdaptiveSessionLevel() A função retorna o nível de risco adaptativo da sessão do usuário.
risk.getAdaptiveSessionLevel()

Resultado:

"LOW"

risk.getAdaptiveSessionData() Retorna uma matriz JSON dos dados de risco adaptativo relacionados à sessão do usuário. Propriedades que possuem o prefixo is retornam um valor booleano. Todas as outras retornam uma sequência.
risk.getAdaptiveSessionData()

Resultado:

"behavioralAnomaly":false, 
"city":"Bundall", 
"country":"AUS", 
"isNewDevice":false, 
"isNewLocation":false, 
"isRiskyConnection":false, 
"isRiskyDevice":false, 
"isp":"Network Technology (AUST) P/L", 
"remoteIP":"120.29.43.158", 
"riskLevel":"LOW",
"userBehavioralScore":"100"
risk.getAdaptiveSessionData().($p) A função retorna a propriedade $p específica do risk.getAdaptiveSessionData().
risk.getAdaptiveSessionData().isRiskyDevice

Resultado:

true
risk.getAdaptiveSessionData().isp

Resultado:

"Network Technology (AUST) P/L”

Observação: pode ser necessário realizar a conversão de tipos de dados ao utilizar atributos adaptativos extraídos no mapeamento de atributos para aplicativos ou em condições de atributos personalizados na avaliação de políticas de acesso, incluindo a conversão de JSON para string.

Por Exemplo:

Para retornar um valor de string do risk_score para avaliação em uma política de acesso, ele deve primeiro ser convertido para uma string.

 string(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score)

Para realizar uma operação de matemática ou lógica ou avaliação em uma regra avançada, um número JSON deve primeiro ser difundido para um int

 int(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score) > 900
ou avaliado como um duplo
 risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score > 900.0

Aplicativo

Para determinados casos de uso (provisionamento e reconciliação), o app objeto está disponível para uso nas regras do CELx. Este objeto representa o JSON do aplicativo que está sendo usado para a sincronização de contas.

O app objeto pode ser tratado como um mapa por si só na regra e também possui os seguintes métodos auxiliares.
Sintaxe Descrição Exemplos
app.getSupportingData() Retorna os dados de apoio do aplicativo.
app.getSupportingData()

Resultado:

<JSON object representing supporting data>

OAuth

Sintaxe Descrição Exemplos
oauth.GetBearerToken($url, $clientId, $clientSecret) $clientIdA função realiza uma chamada ao endpoint $url de token especificado utilizando o tipo de concessão `client_credentials`, fornecendo o ` clientId ` e o ` clientSecret$clientSecret `, e retorna o token de acesso em caso de sucesso.
oauth.GetBearerToken("https://api.jke.com/token", "123456-abcd-efgh-9876-q1w2e3r4t5y6", "secret")

Resultado:

15PSJF576qi2LF658k30I1WLTwGOw2Vzage2AtiS

Funções do JWT

Sintaxe Descrição Exemplos
jwt.sign($payload, $headers) A função gera um token JSON da Web (JWT) assinado. A função recebe dois parâmetros:
  • $payload: Isso contém a carga útil, que deve ser um objeto JSON.
  • $headers: Isso contém os cabeçalhos, como kid, typ, alg, etc. O kid é o nome do certificado pessoal carregado no locatário do Verify.
Nota: Comportamento padrão:
  • Se kid não for fornecido nos cabeçalhos, o certificado pessoal padrão do locatário será usado para assinar o JWT.
  • Se alg não for fornecido nos cabeçalhos, o sistema usa RS256 para assinar o JWT.
jwt.sign({'key1': 'value1', 'auth': ['lval3', 'lval4'], 'iat': 1696567390}, {'alg':'RS256','kid':'cert1'})

Resultado:

eyJhb...<truncated>...J6d5EzIU-ldnemMV75Q

Funções de depuração

As funções de depuração podem ser usadas para avaliar uma expressão e gerar um registro de rastreamento ao mesmo tempo. O log de rastreamento será gerado se uma regra for executada com o modo de rastreamento ativado. Para obter mais informações sobre como ativar o modo de rastreamento e visualizar os registros de rastreamento, consulte as configurações de rastreamento nas seções “Criação de um fluxo” e “Gerenciamento da visualização de rastreamento ”.

Sintaxe Descrição Exemplos
debug($expr, $logString) $logStringAvalia a expressão $expr e gera o log de depuração.

A função recebe dois parâmetros:

  • $expr: A expressão a ser avaliada.
  • $logString: A sequência de caracteres do log que será gerada. Pode ser uma expressão e deve sempre resultar em uma sequência de caracteres. $logString deve conter a sequência $value, que é usada para substituir o valor obtido a partir da avaliação de $expr.
debug("jessica@jke.com".split("@")[1], "The email domain is $value")

Resultado:

jke.com

Também será gerado o seguinte registro de rastreamento: "The email domain is jke.com".

debug($expr, $logString, $metadata) Avalia a expressão $expr e gera o log $logString de depuração com os metadados personalizados adicionais.

A função recebe três parâmetros:

  • $expr: A expressão a ser avaliada.
  • $logString: A sequência de caracteres do log que será gerada. Pode ser uma expressão e deve sempre resultar em uma sequência de caracteres. $logString deve conter a sequência $value, que é usada para substituir o valor obtido a partir da avaliação de $expr.
  • $metadata: Os metadados personalizados enviados junto com o log, que são fornecidos na forma de um mapa de pares chave-valor. O valor de cada par pode ser uma expressão, que deve resultar em uma sequência de caracteres.
debug("jessica@jke.com".split("@")[1], "The email domain is $value", {"flow":
      "login", "time": string(now)})

Resultado:

jke.com
Também será gerado o seguinte registro de rastreamento: "The email domain is jke.com" com os seguintes campos de metadados:
  • "flow": "login"
  • "time": "< timestamp >"

Funções de cache

As funções de cache podem ser usadas para utilizar o cache no serviço Rule. Existem dois tipos de funções de cache: baseadas em sessão e não baseadas em sessão. As funções de cache baseadas em sessão utilizam session, enquanto as funções de cache não baseadas em sessão utilizam cache. Os valores armazenados no cache por meio das funções de cache baseadas em sessão estão vinculados a uma sessão do usuário.

O cache geral (de sessão e fora de sessão) tem um limite máximo de tamanho. Esse limite pode variar de acordo com a configuração do locatário. Quando o cache estiver cheio, qualquer tentativa de adicionar uma entrada ao cache resultará em um erro.

O resultado das funções de cache está no seguinte formato -
{
  "isSuccessful": true/false, //indicates if the operation was successful or not
  "value": "<string>", // the value obtained from the operation
  "errorID": "<string>", // the error ID if any
  "errorMessage": "<string>", // the error message if any
}
Tabela 9. Funções de cache baseadas em sessão
Sintaxe Descrição Exemplos
session.Set($key, $value $ttlSec) Armazena um valor vinculado à sessão do usuário no cache.

Esta função recebe três parâmetros:

  • $key: a chave utilizada no cache. Pode ser uma expressão e deve sempre resultar em uma sequência de caracteres. O comprimento máximo desta chave é de 16 caracteres.
  • $value: o valor a ser armazenado. Pode ser uma expressão e deve sempre resultar em uma sequência de caracteres. O comprimento máximo desse valor é de 1.000.000 de caracteres.
  • $ttlSec: o tempo de vida do valor. O valor máximo é 28.800.
session.Set("computedID", "user1@web.com", "1200")
Resultado:

{"result":{"isSuccessful":true}}
session.Get($key) Obtém o valor associado à sessão do usuário armazenado $key no cache.
session.Get("computedID")
Resultado:

{"result":{"isSuccessful":true, "value": "user1@web.com"}}
session.Delete($key) Remove do cache o valor associado à sessão do usuário com o $key .
session.Delete("computedID")
Resultado:

{"result":{"isSuccessful":true}}
session.Exists($key) Verifica se o item $key vinculado a uma sessão do usuário existe no cache.
session.Exists("computedID")
Resultado:

{"result":{"isSuccessful":true, "value":"true"}}
session.GetAndDelete($key) $key Obtém o valor associado à sessão do usuário no cache e o remove do cache.
session.GetAndDelete("computedID")
Resultado:

{"result":{"isSuccessful":true, "value": "user1@web.com"}}
Tabela 10. Funções de cache não baseadas em sessão
Sintaxe Descrição Exemplos
cache.Set($key, $value $ttlSec) Armazena um valor no cache.
Esta função recebe 3 parâmetros:
  • $key: a chave utilizada no cache. Pode ser uma expressão e deve sempre resultar em uma sequência de caracteres. O comprimento máximo desta chave é de 16 caracteres.
  • $value: o valor a ser armazenado. Pode ser uma expressão e deve sempre resultar em uma sequência de caracteres. O comprimento máximo desse valor é de 1.000.000 de caracteres.
  • $ttlSec: o tempo de vida do valor. O valor máximo é 604.800.
cache.Set("companyName", "DunderMifflin", "1200")

Resultado:

{"result":{"isSuccessful":true}}
cache.Get($key) Recupera o valor armazenado $key no cache.
cache.Get("companyName")
Resultado:

{"result":{"isSuccessful":true, "value": "DunderMifflin"}}
cache.Delete($key) Remove o valor com o $key do cache.
cache.Delete("companyName")
Resultado:

{"result":{"isSuccessful":true}}
cache.Exists($key) Verifica se o item $key existe no cache.
cache.Exists("companyName")
Resultado:

{"result":{"isSuccessful":true, "value":"true"}}
cache.GetAndDelete($key) Obtém o valor armazenado $key no cache e o remove do cache.
cache.GetAndDelete("companyName")
Resultado:

{"result":{"isSuccessful":true, "value": "DunderMifflin"}}
Tabela 11. Condições de erro comuns
Erro Resultado
O comprimento da chave excede o limite
{"error":{"messageId":"CSIBU2000E","messageDescription":"The length of the
              key provided exceeds the character limit of [16]."}}}
O comprimento do valor excede o limite
{"error":{"messageId":"CSIBU2000E","messageDescription":The length of the
              value provided for the key [exampleKey] exceeds the character limit of
              [1000000]."}}}
A chave não foi encontrada ao tentar recuperá-la do cache
{"result":{"errorID":"CSIBU2040E","errorMessage":"Failed to get a value from
              the cache with the key [exampleKey].","isSuccessful":false}}
Quando o limite do cache é excedido
{"error":{"messageId":"CSIBU2000E","messageDescription":"Cache limit has
              been exceeded."}}

Funções secretas

Use as funções de segredos para acessar segredos existentes.
Observação: os segredos nas expressões CELx ( VDEV_66277 ) podem ser ativados mediante solicitação. Para solicitar esse recurso, entre em contato com seu representante de vendas da IBM ou com o contato da IBM e indique seu interesse em ativar essa funcionalidade. Se você tiver permissão para criar um ticket de suporte, crie um ticket com o nome "segredos nas expressões CELx". IBM Verify As assinaturas de avaliação não permitem a criação de tickets de suporte.
Sintaxe Descrição Exemplos
secrets.get($group, $name) Obter o segredo com o grupo $group e o nome especificados $name secrets.get("apiKeys", "testKey")

Resultado:

<the testKey secret in the apiKeys group>
secrets.get($name) $nameObtenha o segredo com o nome especificado. O grupo do segredo será o grupo padrão "default". secrets.get("testKey")

Resultado:

<the testKey secret in the default group>