Couper Documentation

edge

Functions

This functions can be used and combined as standalone call with all kind of hcl expressions. But some of them requires a definitions reference.

NameTypeDescriptionArgumentsExample
base64_decodestringDecodes Base64 data, as specified in RFC 4648.encoded (string)base64_decode("Zm9v")
base64_encodestringEncodes Base64 data, as specified in RFC 4648.decoded (string)base64_encode("foo")
canboolTries to evaluate the expression given in its first argument.expression (expression){ for k in ["not_there", "method", "path"] : k => request[k] if can(request[k]) }
containsboolDetermines whether a given list contains a given single value as one of its elements.list (tuple or list), value (various)contains([1,2,3], 2)
defaultstringReturns the first of the given arguments that is not null or an empty string. If no argument matches, the last argument is returned.arg... (various)default(request.cookies.foo, "bar")
joinstringConcatenates together the string elements of one or more lists with a given separator.sep (string), lists... (tuples or lists)join("-", [0,1,2,3])
json_decodevariousParses the given JSON string and, if it is valid, returns the value it represents.encoded (string)json_decode("{\"foo\": 1}")
json_encodestringReturns a JSON serialization of the given value.val (various)json_encode(request.context.myJWT)
jwt_signstringCreates and signs a JSON Web Token (JWT) from information from a referenced JWT Signing Profile Block (or JWT Block with signing_ttl) and additional claims provided as a function parameter.label (string), claims (object)jwt_sign("myJWT")
keyslistTakes a map and returns a sorted list of the map keys.inputMap (object or map)keys(request.headers)
lengthintegerReturns the number of elements in the given collection.collection (tuple, list or map; no object)length([0,1,2,3])
lookupvariousPerforms a dynamic lookup into a map. The default (third argument) is returned if the key (second argument) is not found in the inputMap (first argument).inputMap (object or map), key (string), default (various)lookup({a = 1}, "b", "def")
mergeobject or tupleDeep-merges two or more of either objects or tuples. null arguments are ignored. An attribute value with a different type than the current value is set as the new value. merge() with no parameters returns null.arg... (object or tuple)merge(request.headers, { x-additional = "myval" })
oauth2_authorization_urlstringCreates an OAuth2 authorization URL from a referenced OAuth2 AC (Beta) Block or OIDC Block.label (string)oauth2_authorization_url("myOAuth2")
oauth2_verifierstringCreates a cryptographically random key as specified in RFC 7636, applicable for all verifier methods; e.g. to be set as a cookie and read into verifier_value. Multiple calls of this function in the same client request context return the same value.oauth2_verifier()
relative_urlstringReturns a relative URL by retaining path, query and fragment components. The input URL s must begin with /<path>, //<authority>, http:// or https://, otherwise an error is thrown.s (string)relative_url("https://httpbin.org/anything?query#fragment") // returns "/anything?query#fragment"
saml_sso_urlstringCreates a SAML SingleSignOn URL (including the SAMLRequest parameter) from a referenced SAML Block.label (string)saml_sso_url("mySAML")
set_intersectionlist or tupleReturns a new set containing the elements that exist in all of the given sets.sets... (tuple or list)set_intersection(["A", "B", "C"], ["B", D"])
splittupleDivides a given string by a given separator, returning a list of strings containing the characters between the separator sequences.sep (string), str (string)split(" ", "foo bar qux")
substrstringExtracts a sequence of characters from another string and creates a new string. The "offset" index may be negative, in which case it is relative to the end of the given string. The "length" may be -1, in which case the remainder of the string after the given offset will be returned.str (string), offset (integer), length (integer)substr("abcdef", 3, -1)
to_lowerstringConverts a given string to lowercase.s (string)to_lower(request.cookies.name)
to_numbernumberConverts its argument to a number value. Only numbers, null, and strings containing decimal representations of numbers can be converted to number. All other values will produce an error.num (string or number)to_number("1,23"), to_number(env.PI)
to_upperstringConverts a given string to uppercase.s (string)to_upper("CamelCase")
trimstringRemoves any whitespace characters from the start and end of the given string.str (string)trim(" foo ")
unixtimeintegerRetrieves the current UNIX timestamp in seconds.unixtime()
url_decodestringURL-decodes a given string according to RFC 3986.s (string)url_decode("abc%25%26%2C123")
url_encodestringURL-encodes a given string according to RFC 3986.s (string)url_encode("abc%&,123")